* [make-initrd] Расширение раздела с корнем
@ 2024-11-16 5:23 Egor Shestakov
2024-11-16 13:28 ` Alexey Gladkov
0 siblings, 1 reply; 23+ messages in thread
From: Egor Shestakov @ 2024-11-16 5:23 UTC (permalink / raw)
To: make-initrd
Всем привет!
Есть ли у initrd возможность штатными средствами расширить раздел
с корнем на всё свободное место? Это необходимо после установки образа
системы на sd-карточку. Фича kickstart вроде умеет создавать разделы, но
как с ним работать не понятно, и можно ли её использовать на уже
установленной системе?
--
Egor Shestakov <shestakovea@basealt.ru>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-16 5:23 [make-initrd] Расширение раздела с корнем Egor Shestakov
@ 2024-11-16 13:28 ` Alexey Gladkov
2024-11-23 14:18 ` Антон Мидюков
0 siblings, 1 reply; 23+ messages in thread
From: Alexey Gladkov @ 2024-11-16 13:28 UTC (permalink / raw)
To: make-initrd
On Sat, Nov 16, 2024 at 12:23:09PM +0700, Egor Shestakov wrote:
> Всем привет!
>
> Есть ли у initrd возможность штатными средствами расширить раздел
> с корнем на всё свободное место? Это необходимо после установки образа
> системы на sd-карточку. Фича kickstart вроде умеет создавать разделы, но
> как с ним работать не понятно, и можно ли её использовать на уже
> установленной системе?
Это можно сделать через kickstart. У команды partition есть опция --grow [1].
Вот тут [2] есть пример использования. Чтобы расширить существующий раздел
нужно использовать опцию --resize.
[1] https://github.com/osboot/make-initrd/wiki/feature-kickstart#part-or-partition
[2] https://github.com/osboot/make-initrd/blob/master/testing/test-root-efi-partition.cfg
--
Rgrds, legion
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-16 13:28 ` Alexey Gladkov
@ 2024-11-23 14:18 ` Антон Мидюков
2024-11-23 17:59 ` Alexey Gladkov
0 siblings, 1 reply; 23+ messages in thread
From: Антон Мидюков @ 2024-11-23 14:18 UTC (permalink / raw)
To: make-initrd
16.11.2024 16:28, Alexey Gladkov пишет:
> On Sat, Nov 16, 2024 at 12:23:09PM +0700, Egor Shestakov wrote:
>> Всем привет!
>>
>> Есть ли у initrd возможность штатными средствами расширить раздел
>> с корнем на всё свободное место? Это необходимо после установки образа
>> системы на sd-карточку. Фича kickstart вроде умеет создавать разделы, но
>> как с ним работать не понятно, и можно ли её использовать на уже
>> установленной системе?
>
> Это можно сделать через kickstart. У команды partition есть опция --grow [1].
> Вот тут [2] есть пример использования. Чтобы расширить существующий раздел
> нужно использовать опцию --resize.
>
> [1] https://github.com/osboot/make-initrd/wiki/feature-kickstart#part-or-partition
> [2] https://github.com/osboot/make-initrd/blob/master/testing/test-root-efi-partition.cfg
>
Я попробовал. Столкнулся с проблемами.
1. Какой-то не такой readlink используется в initrd, который не знает опцию -e.
Обошёл так:
diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
index 2cd7b12c..de9b9c1a 100644
--- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
+++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
@@ -820,7 +825,7 @@ part()
local partnum
read -r partnum < "/sys/class/block/$partdev/partition"
- dev="$(readlink -ev "/sys/class/block/$partdev")"
+ dev="$(readlink -v "/sys/class/block/$partdev")"
dev="${dev%/*}"
dev="${dev##*/}"
2. Есть потребность считать корневым разделом тот, что скрывается за переменной ROOT, чтобы не нужно было привязываться к конкретному UUID или LABEL и соответственно в случае их изменения пересобирать initrd. Поэтому сделал такой патчик:
diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
index 2cd7b12c..de9b9c1a 100644
--- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
+++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
@@ -12,6 +12,11 @@ ks_devname()
{
local devname=''
case "$1" in
+ root)
+ [ -n "$ROOT" ] || fatal "root is not specified"
+ ks_devname "$ROOT"
+ return
+ ;;
LABEL=*)
devname="$(blkid -o device -L "${1#LABEL=}")"
;;
kickstart файл у меня получился такой:
part --onpart=root --resize --grow --useexisting
3. Раздел увеличивается, но файловая система нет. Так и должно быть? Или я что-то делаю не так.
Сразу не заметил, так как в /etc/fstab был указан параметр монтирования x-systemd.growfs, благодаря чему файловая система расширялась systemd.
--
С уважением, Антон Мидюков <antohami@basealt.ru>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-23 14:18 ` Антон Мидюков
@ 2024-11-23 17:59 ` Alexey Gladkov
2024-11-24 10:34 ` Антон Мидюков
0 siblings, 1 reply; 23+ messages in thread
From: Alexey Gladkov @ 2024-11-23 17:59 UTC (permalink / raw)
To: make-initrd
On Sat, Nov 23, 2024 at 05:18:28PM +0300, Антон Мидюков wrote:
> 16.11.2024 16:28, Alexey Gladkov пишет:
> > On Sat, Nov 16, 2024 at 12:23:09PM +0700, Egor Shestakov wrote:
> >> Всем привет!
> >>
> >> Есть ли у initrd возможность штатными средствами расширить раздел
> >> с корнем на всё свободное место? Это необходимо после установки образа
> >> системы на sd-карточку. Фича kickstart вроде умеет создавать разделы, но
> >> как с ним работать не понятно, и можно ли её использовать на уже
> >> установленной системе?
> >
> > Это можно сделать через kickstart. У команды partition есть опция --grow [1].
> > Вот тут [2] есть пример использования. Чтобы расширить существующий раздел
> > нужно использовать опцию --resize.
> >
> > [1] https://github.com/osboot/make-initrd/wiki/feature-kickstart#part-or-partition
> > [2] https://github.com/osboot/make-initrd/blob/master/testing/test-root-efi-partition.cfg
> >
>
> Я попробовал. Столкнулся с проблемами.
>
> 1. Какой-то не такой readlink используется в initrd, который не знает опцию -e.
> Обошёл так:
> diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> index 2cd7b12c..de9b9c1a 100644
> --- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> +++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> @@ -820,7 +825,7 @@ part()
> local partnum
> read -r partnum < "/sys/class/block/$partdev/partition"
>
> - dev="$(readlink -ev "/sys/class/block/$partdev")"
> + dev="$(readlink -v "/sys/class/block/$partdev")"
> dev="${dev%/*}"
> dev="${dev##*/}"
Да, я с этим уже сталкивался. У меня даже есть враппер для этого:
https://github.com/osboot/make-initrd/blob/master/runtime/data/bin/readlink-e
В busybox readlink немного не совместимый с coreutils.
>
> 2. Есть потребность считать корневым разделом тот, что скрывается за
> переменной ROOT, чтобы не нужно было привязываться к конкретному UUID
> или LABEL и соответственно в случае их изменения пересобирать initrd.
> Поэтому сделал такой патчик:
>
> diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> index 2cd7b12c..de9b9c1a 100644
> --- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> +++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> @@ -12,6 +12,11 @@ ks_devname()
> {
> local devname=''
> case "$1" in
> + root)
> + [ -n "$ROOT" ] || fatal "root is not specified"
> + ks_devname "$ROOT"
> + return
> + ;;
> LABEL=*)
> devname="$(blkid -o device -L "${1#LABEL=}")"
> ;;
Ок. Можно такой алиас сделать.
> kickstart файл у меня получился такой:
> part --onpart=root --resize --grow --useexisting
>
> 3. Раздел увеличивается, но файловая система нет. Так и должно быть? Или
> я что-то делаю не так. Сразу не заметил, так как в /etc/fstab был
> указан параметр монтирования x-systemd.growfs, благодаря чему файловая
> система расширялась systemd.
Я это не реализовал так как в тот момент мне это не было нужно. Но считаю,
что раз возникла потребность, то это стоит сделать. Правда пока не не знаю
несколько это будет хлопотно.
--
Rgrds, legion
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-23 17:59 ` Alexey Gladkov
@ 2024-11-24 10:34 ` Антон Мидюков
2024-11-24 12:51 ` Alexey Gladkov
2024-11-24 13:21 ` Alexey Gladkov
0 siblings, 2 replies; 23+ messages in thread
From: Антон Мидюков @ 2024-11-24 10:34 UTC (permalink / raw)
To: make-initrd
23.11.2024 20:59, Alexey Gladkov пишет:
> On Sat, Nov 23, 2024 at 05:18:28PM +0300, Антон Мидюков wrote:
>> 16.11.2024 16:28, Alexey Gladkov пишет:
>>> On Sat, Nov 16, 2024 at 12:23:09PM +0700, Egor Shestakov wrote:
>>>> Всем привет!
>>>>
>>>> Есть ли у initrd возможность штатными средствами расширить раздел
>>>> с корнем на всё свободное место? Это необходимо после установки образа
>>>> системы на sd-карточку. Фича kickstart вроде умеет создавать разделы, но
>>>> как с ним работать не понятно, и можно ли её использовать на уже
>>>> установленной системе?
>>>
>>> Это можно сделать через kickstart. У команды partition есть опция --grow [1].
>>> Вот тут [2] есть пример использования. Чтобы расширить существующий раздел
>>> нужно использовать опцию --resize.
>>>
>>> [1] https://github.com/osboot/make-initrd/wiki/feature-kickstart#part-or-partition
>>> [2] https://github.com/osboot/make-initrd/blob/master/testing/test-root-efi-partition.cfg
>>>
>>
>> Я попробовал. Столкнулся с проблемами.
>>
>> 1. Какой-то не такой readlink используется в initrd, который не знает опцию -e.
>> Обошёл так:
>> diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>> index 2cd7b12c..de9b9c1a 100644
>> --- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>> +++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>> @@ -820,7 +825,7 @@ part()
>> local partnum
>> read -r partnum < "/sys/class/block/$partdev/partition"
>>
>> - dev="$(readlink -ev "/sys/class/block/$partdev")"
>> + dev="$(readlink -v "/sys/class/block/$partdev")"
>> dev="${dev%/*}"
>> dev="${dev##*/}"
>
> Да, я с этим уже сталкивался. У меня даже есть враппер для этого:
>
> https://github.com/osboot/make-initrd/blob/master/runtime/data/bin/readlink-e
>
> В busybox readlink немного не совместимый с coreutils.
>
То есть нужно заменить 'readlink -ev' на 'readlink-e -v'? Прислать патч?
>>
>> 2. Есть потребность считать корневым разделом тот, что скрывается за
>> переменной ROOT, чтобы не нужно было привязываться к конкретному UUID
>> или LABEL и соответственно в случае их изменения пересобирать initrd.
>> Поэтому сделал такой патчик:
>>
>> diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>> index 2cd7b12c..de9b9c1a 100644
>> --- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>> +++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>> @@ -12,6 +12,11 @@ ks_devname()
>> {
>> local devname=''
>> case "$1" in
>> + root)
>> + [ -n "$ROOT" ] || fatal "root is not specified"
>> + ks_devname "$ROOT"
>> + return
>> + ;;
>> LABEL=*)
>> devname="$(blkid -o device -L "${1#LABEL=}")"
>> ;;
>
> Ок. Можно такой алиас сделать.
>
Замечаний к коду нет? Тогда пришлю патч?
>> kickstart файл у меня получился такой:
>> part --onpart=root --resize --grow --useexisting
>>
>> 3. Раздел увеличивается, но файловая система нет. Так и должно быть? Или
>> я что-то делаю не так. Сразу не заметил, так как в /etc/fstab был
>> указан параметр монтирования x-systemd.growfs, благодаря чему файловая
>> система расширялась systemd.
>
> Я это не реализовал так как в тот момент мне это не было нужно. Но считаю,
> что раз возникла потребность, то это стоит сделать. Правда пока не не знаю
> несколько это будет хлопотно.
>
В принципе, пока можно и с x-systemd.growfs жить.
Но он привязан к systemd и не поддерживает, к примеру, f2fs, которая хорошо подходит для флешек (что акутально для планшетов, смартфонов, одноплатников).
--
С уважением, Антон Мидюков <antohami@basealt.ru>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-24 10:34 ` Антон Мидюков
@ 2024-11-24 12:51 ` Alexey Gladkov
2024-11-24 13:00 ` Антон Мидюков
2024-11-24 15:36 ` Антон Мидюков
2024-11-24 13:21 ` Alexey Gladkov
1 sibling, 2 replies; 23+ messages in thread
From: Alexey Gladkov @ 2024-11-24 12:51 UTC (permalink / raw)
To: make-initrd
On Sun, Nov 24, 2024 at 01:34:46PM +0300, Антон Мидюков wrote:
> 23.11.2024 20:59, Alexey Gladkov пишет:
> > On Sat, Nov 23, 2024 at 05:18:28PM +0300, Антон Мидюков wrote:
> >> 16.11.2024 16:28, Alexey Gladkov пишет:
> >>> On Sat, Nov 16, 2024 at 12:23:09PM +0700, Egor Shestakov wrote:
> >>>> Всем привет!
> >>>>
> >>>> Есть ли у initrd возможность штатными средствами расширить раздел
> >>>> с корнем на всё свободное место? Это необходимо после установки образа
> >>>> системы на sd-карточку. Фича kickstart вроде умеет создавать разделы, но
> >>>> как с ним работать не понятно, и можно ли её использовать на уже
> >>>> установленной системе?
> >>>
> >>> Это можно сделать через kickstart. У команды partition есть опция --grow [1].
> >>> Вот тут [2] есть пример использования. Чтобы расширить существующий раздел
> >>> нужно использовать опцию --resize.
> >>>
> >>> [1] https://github.com/osboot/make-initrd/wiki/feature-kickstart#part-or-partition
> >>> [2] https://github.com/osboot/make-initrd/blob/master/testing/test-root-efi-partition.cfg
> >>>
> >>
> >> Я попробовал. Столкнулся с проблемами.
> >>
> >> 1. Какой-то не такой readlink используется в initrd, который не знает опцию -e.
> >> Обошёл так:
> >> diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >> index 2cd7b12c..de9b9c1a 100644
> >> --- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >> +++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >> @@ -820,7 +825,7 @@ part()
> >> local partnum
> >> read -r partnum < "/sys/class/block/$partdev/partition"
> >>
> >> - dev="$(readlink -ev "/sys/class/block/$partdev")"
> >> + dev="$(readlink -v "/sys/class/block/$partdev")"
> >> dev="${dev%/*}"
> >> dev="${dev##*/}"
> >
> > Да, я с этим уже сталкивался. У меня даже есть враппер для этого:
> >
> > https://github.com/osboot/make-initrd/blob/master/runtime/data/bin/readlink-e
> >
> > В busybox readlink немного не совместимый с coreutils.
> >
>
> То есть нужно заменить 'readlink -ev' на 'readlink-e -v'? Прислать патч?
Враппер сам добавляет -v. Просто сделать:
dev="$(readlink-e "/sys/class/block/$partdev")"
>
> >>
> >> 2. Есть потребность считать корневым разделом тот, что скрывается за
> >> переменной ROOT, чтобы не нужно было привязываться к конкретному UUID
> >> или LABEL и соответственно в случае их изменения пересобирать initrd.
> >> Поэтому сделал такой патчик:
> >>
> >> diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >> index 2cd7b12c..de9b9c1a 100644
> >> --- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >> +++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >> @@ -12,6 +12,11 @@ ks_devname()
> >> {
> >> local devname=''
> >> case "$1" in
> >> + root)
> >> + [ -n "$ROOT" ] || fatal "root is not specified"
> >> + ks_devname "$ROOT"
> >> + return
> >> + ;;
> >> LABEL=*)
> >> devname="$(blkid -o device -L "${1#LABEL=}")"
> >> ;;
> >
> > Ок. Можно такой алиас сделать.
> >
>
> Замечаний к коду нет? Тогда пришлю патч?
У меня сомнения связанные с названием. В ks_devname проверяет LABEL=*,
UUID=*, /dev/* а остальное считается поддиректорией в /sys.
Без патча алиас `root` попадаёт в последнюю категорию. Скорее всего (я
практически уверен) не может быть такого имени в /sys/class/block/*.
Но может быть использовать `/dev/root` в качестве алиаса ?
https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/devices.rst#locally-defined-links
>
> >> kickstart файл у меня получился такой:
> >> part --onpart=root --resize --grow --useexisting
> >>
> >> 3. Раздел увеличивается, но файловая система нет. Так и должно быть? Или
> >> я что-то делаю не так. Сразу не заметил, так как в /etc/fstab был
> >> указан параметр монтирования x-systemd.growfs, благодаря чему файловая
> >> система расширялась systemd.
> >
> > Я это не реализовал так как в тот момент мне это не было нужно. Но считаю,
> > что раз возникла потребность, то это стоит сделать. Правда пока не не знаю
> > несколько это будет хлопотно.
> >
>
> В принципе, пока можно и с x-systemd.growfs жить. Но он привязан к
> systemd и не поддерживает, к примеру, f2fs, которая хорошо подходит для
> флешек (что акутально для планшетов, смартфонов, одноплатников).
Сначала хотел привести относительно простой патч для поддержки, но беглое
чтение документации превратило патч вот в это:
diff --git a/features/kickstart/data/bin/kickstart-sh-storage b/features/kickstart/data/bin/kickstart-sh-storage
index 2cd7b12c..5e794586 100644
--- a/features/kickstart/data/bin/kickstart-sh-storage
+++ b/features/kickstart/data/bin/kickstart-sh-storage
@@ -539,6 +539,59 @@ ks_get_dev_id()
printf '%s\n' "$1"
}
+ks_requires_ext4=("resizefs")
+ks_requires_xfs=("xfs_growfs")
+ks_requires_f2fs=("resize.f2fs")
+ks_growfs()
+{
+ local PROG
+ local fs="" requires="" ret=0
+
+ PROG="kickstart"
+ message "command: ${FUNCNAME[0]} $*"
+
+ fs="$(blkid --output value --match-tag TYPE -c /dev/null "$1")" ||
+ return 0
+
+ case "$fs" in
+ ext*) requires="ks_growfs_ext4" ;;
+ xfs) requires="ks_growfs_xfs" ;;
+ f2fs) requires="ks_growfs_f2fs" ;;
+ *)
+ # resize unsupported.
+ return 0
+ ;;
+ esac
+
+ ks_check_requires "$requires" ||
+ return 1
+
+ verbose "Increase filesystem to partition size: $1"
+
+ case "$fs" in
+ ext*)
+ resizefs "$1" ||
+ ret=1
+ ;;
+ xfs)
+ mount -n -o rw,X-mount.mkdir \
+ "$1" \
+ "$ks_datadir/xfs.dir"
+ xfs_growfs \
+ "$ks_datadir/xfs.dir" ||
+ ret=1
+ umount -f \
+ "$ks_datadir/xfs.dir"
+ ;;
+ f2fs)
+ resize.f2fs "$1" ||
+ ret=1
+ ;;
+ esac
+
+ return $ret
+}
+
ks_requires_part=("numfmt" "sfdisk")
part()
{
@@ -828,6 +881,8 @@ part()
printf ', %s\n' "$size" |
sfdisk -q -N "$partnum" "/dev/$dev"
+
+ ks_growfs "/dev/$dev$partnum"
fi
if [ -n "$encrypted" ]; then
--
Rgrds, legion
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-24 12:51 ` Alexey Gladkov
@ 2024-11-24 13:00 ` Антон Мидюков
2024-11-24 15:36 ` Антон Мидюков
1 sibling, 0 replies; 23+ messages in thread
From: Антон Мидюков @ 2024-11-24 13:00 UTC (permalink / raw)
To: make-initrd
24.11.2024 15:51, Alexey Gladkov пишет:
> On Sun, Nov 24, 2024 at 01:34:46PM +0300, Антон Мидюков wrote:
>> 23.11.2024 20:59, Alexey Gladkov пишет:
>>> On Sat, Nov 23, 2024 at 05:18:28PM +0300, Антон Мидюков wrote:
>>>> 16.11.2024 16:28, Alexey Gladkov пишет:
>>>>> On Sat, Nov 16, 2024 at 12:23:09PM +0700, Egor Shestakov wrote:
>>>>>> Всем привет!
>>>>>>
>>>>>> Есть ли у initrd возможность штатными средствами расширить раздел
>>>>>> с корнем на всё свободное место? Это необходимо после установки образа
>>>>>> системы на sd-карточку. Фича kickstart вроде умеет создавать разделы, но
>>>>>> как с ним работать не понятно, и можно ли её использовать на уже
>>>>>> установленной системе?
>>>>>
>>>>> Это можно сделать через kickstart. У команды partition есть опция --grow [1].
>>>>> Вот тут [2] есть пример использования. Чтобы расширить существующий раздел
>>>>> нужно использовать опцию --resize.
>>>>>
>>>>> [1] https://github.com/osboot/make-initrd/wiki/feature-kickstart#part-or-partition
>>>>> [2] https://github.com/osboot/make-initrd/blob/master/testing/test-root-efi-partition.cfg
>>>>>
>>>>
>>>> Я попробовал. Столкнулся с проблемами.
>>>>
>>>> 1. Какой-то не такой readlink используется в initrd, который не знает опцию -e.
>>>> Обошёл так:
>>>> diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>>>> index 2cd7b12c..de9b9c1a 100644
>>>> --- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>>>> +++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>>>> @@ -820,7 +825,7 @@ part()
>>>> local partnum
>>>> read -r partnum < "/sys/class/block/$partdev/partition"
>>>>
>>>> - dev="$(readlink -ev "/sys/class/block/$partdev")"
>>>> + dev="$(readlink -v "/sys/class/block/$partdev")"
>>>> dev="${dev%/*}"
>>>> dev="${dev##*/}"
>>>
>>> Да, я с этим уже сталкивался. У меня даже есть враппер для этого:
>>>
>>> https://github.com/osboot/make-initrd/blob/master/runtime/data/bin/readlink-e
>>>
>>> В busybox readlink немного не совместимый с coreutils.
>>>
>>
>> То есть нужно заменить 'readlink -ev' на 'readlink-e -v'? Прислать патч?
>
> Враппер сам добавляет -v. Просто сделать:
>
> dev="$(readlink-e "/sys/class/block/$partdev")"
>
Спасибо.
>>
>>>>
>>>> 2. Есть потребность считать корневым разделом тот, что скрывается за
>>>> переменной ROOT, чтобы не нужно было привязываться к конкретному UUID
>>>> или LABEL и соответственно в случае их изменения пересобирать initrd.
>>>> Поэтому сделал такой патчик:
>>>>
>>>> diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>>>> index 2cd7b12c..de9b9c1a 100644
>>>> --- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>>>> +++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>>>> @@ -12,6 +12,11 @@ ks_devname()
>>>> {
>>>> local devname=''
>>>> case "$1" in
>>>> + root)
>>>> + [ -n "$ROOT" ] || fatal "root is not specified"
>>>> + ks_devname "$ROOT"
>>>> + return
>>>> + ;;
>>>> LABEL=*)
>>>> devname="$(blkid -o device -L "${1#LABEL=}")"
>>>> ;;
>>>
>>> Ок. Можно такой алиас сделать.
>>>
>>
>> Замечаний к коду нет? Тогда пришлю патч?
>
> У меня сомнения связанные с названием. В ks_devname проверяет LABEL=*,
> UUID=*, /dev/* а остальное считается поддиректорией в /sys.
>
> Без патча алиас `root` попадаёт в последнюю категорию. Скорее всего (я
> практически уверен) не может быть такого имени в /sys/class/block/*.
>
> Но может быть использовать `/dev/root` в качестве алиаса ?
>
> https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/devices.rst#locally-defined-links
>
Хорошо. Давайте использовать `/dev/root`.
>>
>>>> kickstart файл у меня получился такой:
>>>> part --onpart=root --resize --grow --useexisting
>>>>
>>>> 3. Раздел увеличивается, но файловая система нет. Так и должно быть? Или
>>>> я что-то делаю не так. Сразу не заметил, так как в /etc/fstab был
>>>> указан параметр монтирования x-systemd.growfs, благодаря чему файловая
>>>> система расширялась systemd.
>>>
>>> Я это не реализовал так как в тот момент мне это не было нужно. Но считаю,
>>> что раз возникла потребность, то это стоит сделать. Правда пока не не знаю
>>> несколько это будет хлопотно.
>>>
>>
>> В принципе, пока можно и с x-systemd.growfs жить. Но он привязан к
>> systemd и не поддерживает, к примеру, f2fs, которая хорошо подходит для
>> флешек (что акутально для планшетов, смартфонов, одноплатников).
>
> Сначала хотел привести относительно простой патч для поддержки, но беглое
> чтение документации превратило патч вот в это:
>
> diff --git a/features/kickstart/data/bin/kickstart-sh-storage b/features/kickstart/data/bin/kickstart-sh-storage
> index 2cd7b12c..5e794586 100644
> --- a/features/kickstart/data/bin/kickstart-sh-storage
> +++ b/features/kickstart/data/bin/kickstart-sh-storage
> @@ -539,6 +539,59 @@ ks_get_dev_id()
> printf '%s\n' "$1"
> }
>
> +ks_requires_ext4=("resizefs")
> +ks_requires_xfs=("xfs_growfs")
> +ks_requires_f2fs=("resize.f2fs")
> +ks_growfs()
> +{
> + local PROG
> + local fs="" requires="" ret=0
> +
> + PROG="kickstart"
> + message "command: ${FUNCNAME[0]} $*"
> +
> + fs="$(blkid --output value --match-tag TYPE -c /dev/null "$1")" ||
> + return 0
> +
> + case "$fs" in
> + ext*) requires="ks_growfs_ext4" ;;
> + xfs) requires="ks_growfs_xfs" ;;
> + f2fs) requires="ks_growfs_f2fs" ;;
> + *)
> + # resize unsupported.
> + return 0
> + ;;
> + esac
> +
> + ks_check_requires "$requires" ||
> + return 1
> +
> + verbose "Increase filesystem to partition size: $1"
> +
> + case "$fs" in
> + ext*)
> + resizefs "$1" ||
> + ret=1
> + ;;
> + xfs)
> + mount -n -o rw,X-mount.mkdir \
> + "$1" \
> + "$ks_datadir/xfs.dir"
> + xfs_growfs \
> + "$ks_datadir/xfs.dir" ||
> + ret=1
> + umount -f \
> + "$ks_datadir/xfs.dir"
> + ;;
> + f2fs)
> + resize.f2fs "$1" ||
> + ret=1
> + ;;
> + esac
> +
> + return $ret
> +}
> +
> ks_requires_part=("numfmt" "sfdisk")
> part()
> {
> @@ -828,6 +881,8 @@ part()
>
> printf ', %s\n' "$size" |
> sfdisk -q -N "$partnum" "/dev/$dev"
> +
> + ks_growfs "/dev/$dev$partnum"
> fi
>
> if [ -n "$encrypted" ]; then
>
>
Попробую и отпишусь.
--
С уважением, Антон Мидюков <antohami@basealt.ru>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-24 10:34 ` Антон Мидюков
2024-11-24 12:51 ` Alexey Gladkov
@ 2024-11-24 13:21 ` Alexey Gladkov
2024-11-24 13:22 ` Антон Мидюков
1 sibling, 1 reply; 23+ messages in thread
From: Alexey Gladkov @ 2024-11-24 13:21 UTC (permalink / raw)
To: make-initrd
On Sun, Nov 24, 2024 at 01:34:46PM +0300, Антон Мидюков wrote:
> 23.11.2024 20:59, Alexey Gladkov пишет:
> > On Sat, Nov 23, 2024 at 05:18:28PM +0300, Антон Мидюков wrote:
> >> 16.11.2024 16:28, Alexey Gladkov пишет:
> >>> On Sat, Nov 16, 2024 at 12:23:09PM +0700, Egor Shestakov wrote:
> >>>> Всем привет!
> >>>>
> >>>> Есть ли у initrd возможность штатными средствами расширить раздел
> >>>> с корнем на всё свободное место? Это необходимо после установки образа
> >>>> системы на sd-карточку. Фича kickstart вроде умеет создавать разделы, но
> >>>> как с ним работать не понятно, и можно ли её использовать на уже
> >>>> установленной системе?
> >>>
> >>> Это можно сделать через kickstart. У команды partition есть опция --grow [1].
> >>> Вот тут [2] есть пример использования. Чтобы расширить существующий раздел
> >>> нужно использовать опцию --resize.
> >>>
> >>> [1] https://github.com/osboot/make-initrd/wiki/feature-kickstart#part-or-partition
> >>> [2] https://github.com/osboot/make-initrd/blob/master/testing/test-root-efi-partition.cfg
> >>>
> >>
> >> Я попробовал. Столкнулся с проблемами.
> >>
> >> 1. Какой-то не такой readlink используется в initrd, который не знает опцию -e.
> >> Обошёл так:
> >> diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >> index 2cd7b12c..de9b9c1a 100644
> >> --- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >> +++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >> @@ -820,7 +825,7 @@ part()
> >> local partnum
> >> read -r partnum < "/sys/class/block/$partdev/partition"
> >>
> >> - dev="$(readlink -ev "/sys/class/block/$partdev")"
> >> + dev="$(readlink -v "/sys/class/block/$partdev")"
> >> dev="${dev%/*}"
> >> dev="${dev##*/}"
> >
> > Да, я с этим уже сталкивался. У меня даже есть враппер для этого:
> >
> > https://github.com/osboot/make-initrd/blob/master/runtime/data/bin/readlink-e
> >
> > В busybox readlink немного не совместимый с coreutils.
> >
>
> То есть нужно заменить 'readlink -ev' на 'readlink-e -v'? Прислать патч?
>
> >>
> >> 2. Есть потребность считать корневым разделом тот, что скрывается за
> >> переменной ROOT, чтобы не нужно было привязываться к конкретному UUID
> >> или LABEL и соответственно в случае их изменения пересобирать initrd.
> >> Поэтому сделал такой патчик:
> >>
> >> diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >> index 2cd7b12c..de9b9c1a 100644
> >> --- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >> +++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >> @@ -12,6 +12,11 @@ ks_devname()
> >> {
> >> local devname=''
> >> case "$1" in
> >> + root)
> >> + [ -n "$ROOT" ] || fatal "root is not specified"
> >> + ks_devname "$ROOT"
> >> + return
> >> + ;;
> >> LABEL=*)
> >> devname="$(blkid -o device -L "${1#LABEL=}")"
> >> ;;
> >
> > Ок. Можно такой алиас сделать.
> >
>
> Замечаний к коду нет? Тогда пришлю патч?
>
> >> kickstart файл у меня получился такой:
> >> part --onpart=root --resize --grow --useexisting
> >>
> >> 3. Раздел увеличивается, но файловая система нет. Так и должно быть? Или
> >> я что-то делаю не так. Сразу не заметил, так как в /etc/fstab был
> >> указан параметр монтирования x-systemd.growfs, благодаря чему файловая
> >> система расширялась systemd.
> >
> > Я это не реализовал так как в тот момент мне это не было нужно. Но считаю,
> > что раз возникла потребность, то это стоит сделать. Правда пока не не знаю
> > несколько это будет хлопотно.
> >
>
> В принципе, пока можно и с x-systemd.growfs жить.
> Но он привязан к systemd и не поддерживает, к примеру, f2fs, которая
> хорошо подходит для флешек (что акутально для планшетов, смартфонов,
> одноплатников).
Я тут быстренько посмотрел как в systemd это реализовано и в принципе для
ext4, xfs, btrfs можно сделать также через ioctl.
Но если я ничего не упустил их решение не работает ни для чего другого.
--
Rgrds, legion
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-24 13:21 ` Alexey Gladkov
@ 2024-11-24 13:22 ` Антон Мидюков
2024-11-24 13:34 ` Alexey Gladkov
0 siblings, 1 reply; 23+ messages in thread
From: Антон Мидюков @ 2024-11-24 13:22 UTC (permalink / raw)
To: make-initrd
24.11.2024 16:21, Alexey Gladkov пишет:
> On Sun, Nov 24, 2024 at 01:34:46PM +0300, Антон Мидюков wrote:
>> 23.11.2024 20:59, Alexey Gladkov пишет:
>>> On Sat, Nov 23, 2024 at 05:18:28PM +0300, Антон Мидюков wrote:
>>>> 16.11.2024 16:28, Alexey Gladkov пишет:
>>>>> On Sat, Nov 16, 2024 at 12:23:09PM +0700, Egor Shestakov wrote:
>>>>>> Всем привет!
>>>>>>
>>>>>> Есть ли у initrd возможность штатными средствами расширить раздел
>>>>>> с корнем на всё свободное место? Это необходимо после установки образа
>>>>>> системы на sd-карточку. Фича kickstart вроде умеет создавать разделы, но
>>>>>> как с ним работать не понятно, и можно ли её использовать на уже
>>>>>> установленной системе?
>>>>>
>>>>> Это можно сделать через kickstart. У команды partition есть опция --grow [1].
>>>>> Вот тут [2] есть пример использования. Чтобы расширить существующий раздел
>>>>> нужно использовать опцию --resize.
>>>>>
>>>>> [1] https://github.com/osboot/make-initrd/wiki/feature-kickstart#part-or-partition
>>>>> [2] https://github.com/osboot/make-initrd/blob/master/testing/test-root-efi-partition.cfg
>>>>>
>>>>
>>>> Я попробовал. Столкнулся с проблемами.
>>>>
>>>> 1. Какой-то не такой readlink используется в initrd, который не знает опцию -e.
>>>> Обошёл так:
>>>> diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>>>> index 2cd7b12c..de9b9c1a 100644
>>>> --- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>>>> +++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>>>> @@ -820,7 +825,7 @@ part()
>>>> local partnum
>>>> read -r partnum < "/sys/class/block/$partdev/partition"
>>>>
>>>> - dev="$(readlink -ev "/sys/class/block/$partdev")"
>>>> + dev="$(readlink -v "/sys/class/block/$partdev")"
>>>> dev="${dev%/*}"
>>>> dev="${dev##*/}"
>>>
>>> Да, я с этим уже сталкивался. У меня даже есть враппер для этого:
>>>
>>> https://github.com/osboot/make-initrd/blob/master/runtime/data/bin/readlink-e
>>>
>>> В busybox readlink немного не совместимый с coreutils.
>>>
>>
>> То есть нужно заменить 'readlink -ev' на 'readlink-e -v'? Прислать патч?
>>
>>>>
>>>> 2. Есть потребность считать корневым разделом тот, что скрывается за
>>>> переменной ROOT, чтобы не нужно было привязываться к конкретному UUID
>>>> или LABEL и соответственно в случае их изменения пересобирать initrd.
>>>> Поэтому сделал такой патчик:
>>>>
>>>> diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>>>> index 2cd7b12c..de9b9c1a 100644
>>>> --- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>>>> +++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
>>>> @@ -12,6 +12,11 @@ ks_devname()
>>>> {
>>>> local devname=''
>>>> case "$1" in
>>>> + root)
>>>> + [ -n "$ROOT" ] || fatal "root is not specified"
>>>> + ks_devname "$ROOT"
>>>> + return
>>>> + ;;
>>>> LABEL=*)
>>>> devname="$(blkid -o device -L "${1#LABEL=}")"
>>>> ;;
>>>
>>> Ок. Можно такой алиас сделать.
>>>
>>
>> Замечаний к коду нет? Тогда пришлю патч?
>>
>>>> kickstart файл у меня получился такой:
>>>> part --onpart=root --resize --grow --useexisting
>>>>
>>>> 3. Раздел увеличивается, но файловая система нет. Так и должно быть? Или
>>>> я что-то делаю не так. Сразу не заметил, так как в /etc/fstab был
>>>> указан параметр монтирования x-systemd.growfs, благодаря чему файловая
>>>> система расширялась systemd.
>>>
>>> Я это не реализовал так как в тот момент мне это не было нужно. Но считаю,
>>> что раз возникла потребность, то это стоит сделать. Правда пока не не знаю
>>> несколько это будет хлопотно.
>>>
>>
>> В принципе, пока можно и с x-systemd.growfs жить.
>> Но он привязан к systemd и не поддерживает, к примеру, f2fs, которая
>> хорошо подходит для флешек (что акутально для планшетов, смартфонов,
>> одноплатников).
>
> Я тут быстренько посмотрел как в systemd это реализовано и в принципе для
> ext4, xfs, btrfs можно сделать также через ioctl.
>
> Но если я ничего не упустил их решение не работает ни для чего другого.
>
Да, в этом и проблема, что для других файловых систем не работает.
--
С уважением, Антон Мидюков <antohami@basealt.ru>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-24 13:22 ` Антон Мидюков
@ 2024-11-24 13:34 ` Alexey Gladkov
0 siblings, 0 replies; 23+ messages in thread
From: Alexey Gladkov @ 2024-11-24 13:34 UTC (permalink / raw)
To: make-initrd
On Sun, Nov 24, 2024 at 04:22:23PM +0300, Антон Мидюков wrote:
> 24.11.2024 16:21, Alexey Gladkov пишет:
> > On Sun, Nov 24, 2024 at 01:34:46PM +0300, Антон Мидюков wrote:
> >> 23.11.2024 20:59, Alexey Gladkov пишет:
> >>> On Sat, Nov 23, 2024 at 05:18:28PM +0300, Антон Мидюков wrote:
> >>>> 16.11.2024 16:28, Alexey Gladkov пишет:
> >>>>> On Sat, Nov 16, 2024 at 12:23:09PM +0700, Egor Shestakov wrote:
> >>>>>> Всем привет!
> >>>>>>
> >>>>>> Есть ли у initrd возможность штатными средствами расширить раздел
> >>>>>> с корнем на всё свободное место? Это необходимо после установки образа
> >>>>>> системы на sd-карточку. Фича kickstart вроде умеет создавать разделы, но
> >>>>>> как с ним работать не понятно, и можно ли её использовать на уже
> >>>>>> установленной системе?
> >>>>>
> >>>>> Это можно сделать через kickstart. У команды partition есть опция --grow [1].
> >>>>> Вот тут [2] есть пример использования. Чтобы расширить существующий раздел
> >>>>> нужно использовать опцию --resize.
> >>>>>
> >>>>> [1] https://github.com/osboot/make-initrd/wiki/feature-kickstart#part-or-partition
> >>>>> [2] https://github.com/osboot/make-initrd/blob/master/testing/test-root-efi-partition.cfg
> >>>>>
> >>>>
> >>>> Я попробовал. Столкнулся с проблемами.
> >>>>
> >>>> 1. Какой-то не такой readlink используется в initrd, который не знает опцию -e.
> >>>> Обошёл так:
> >>>> diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >>>> index 2cd7b12c..de9b9c1a 100644
> >>>> --- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >>>> +++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >>>> @@ -820,7 +825,7 @@ part()
> >>>> local partnum
> >>>> read -r partnum < "/sys/class/block/$partdev/partition"
> >>>>
> >>>> - dev="$(readlink -ev "/sys/class/block/$partdev")"
> >>>> + dev="$(readlink -v "/sys/class/block/$partdev")"
> >>>> dev="${dev%/*}"
> >>>> dev="${dev##*/}"
> >>>
> >>> Да, я с этим уже сталкивался. У меня даже есть враппер для этого:
> >>>
> >>> https://github.com/osboot/make-initrd/blob/master/runtime/data/bin/readlink-e
> >>>
> >>> В busybox readlink немного не совместимый с coreutils.
> >>>
> >>
> >> То есть нужно заменить 'readlink -ev' на 'readlink-e -v'? Прислать патч?
> >>
> >>>>
> >>>> 2. Есть потребность считать корневым разделом тот, что скрывается за
> >>>> переменной ROOT, чтобы не нужно было привязываться к конкретному UUID
> >>>> или LABEL и соответственно в случае их изменения пересобирать initrd.
> >>>> Поэтому сделал такой патчик:
> >>>>
> >>>> diff --git a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >>>> index 2cd7b12c..de9b9c1a 100644
> >>>> --- a/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >>>> +++ b/make-initrd/features/kickstart/data/bin/kickstart-sh-storage
> >>>> @@ -12,6 +12,11 @@ ks_devname()
> >>>> {
> >>>> local devname=''
> >>>> case "$1" in
> >>>> + root)
> >>>> + [ -n "$ROOT" ] || fatal "root is not specified"
> >>>> + ks_devname "$ROOT"
> >>>> + return
> >>>> + ;;
> >>>> LABEL=*)
> >>>> devname="$(blkid -o device -L "${1#LABEL=}")"
> >>>> ;;
> >>>
> >>> Ок. Можно такой алиас сделать.
> >>>
> >>
> >> Замечаний к коду нет? Тогда пришлю патч?
> >>
> >>>> kickstart файл у меня получился такой:
> >>>> part --onpart=root --resize --grow --useexisting
> >>>>
> >>>> 3. Раздел увеличивается, но файловая система нет. Так и должно быть? Или
> >>>> я что-то делаю не так. Сразу не заметил, так как в /etc/fstab был
> >>>> указан параметр монтирования x-systemd.growfs, благодаря чему файловая
> >>>> система расширялась systemd.
> >>>
> >>> Я это не реализовал так как в тот момент мне это не было нужно. Но считаю,
> >>> что раз возникла потребность, то это стоит сделать. Правда пока не не знаю
> >>> несколько это будет хлопотно.
> >>>
> >>
> >> В принципе, пока можно и с x-systemd.growfs жить.
> >> Но он привязан к systemd и не поддерживает, к примеру, f2fs, которая
> >> хорошо подходит для флешек (что акутально для планшетов, смартфонов,
> >> одноплатников).
> >
> > Я тут быстренько посмотрел как в systemd это реализовано и в принципе для
> > ext4, xfs, btrfs можно сделать также через ioctl.
> >
> > Но если я ничего не упустил их решение не работает ни для чего другого.
> >
>
> Да, в этом и проблема, что для других файловых систем не работает.
Ну значит можно продолжать пользоваться утилитами. Раз всё равно обвязку
эту придётся держать ради f2fs.
--
Rgrds, legion
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-24 12:51 ` Alexey Gladkov
2024-11-24 13:00 ` Антон Мидюков
@ 2024-11-24 15:36 ` Антон Мидюков
2024-11-24 17:17 ` Alexey Gladkov
1 sibling, 1 reply; 23+ messages in thread
From: Антон Мидюков @ 2024-11-24 15:36 UTC (permalink / raw)
To: make-initrd
24.11.2024 15:51, Alexey Gladkov пишет:
> On Sun, Nov 24, 2024 at 01:34:46PM +0300, Антон Мидюков wrote:
>> 23.11.2024 20:59, Alexey Gladkov пишет:
>>> On Sat, Nov 23, 2024 at 05:18:28PM +0300, Антон Мидюков wrote:
>>>> 3. Раздел увеличивается, но файловая система нет. Так и должно быть? Или
>>>> я что-то делаю не так. Сразу не заметил, так как в /etc/fstab был
>>>> указан параметр монтирования x-systemd.growfs, благодаря чему файловая
>>>> система расширялась systemd.
>>>
>>> Я это не реализовал так как в тот момент мне это не было нужно. Но считаю,
>>> что раз возникла потребность, то это стоит сделать. Правда пока не не знаю
>>> несколько это будет хлопотно.
>>>
>>
>> В принципе, пока можно и с x-systemd.growfs жить. Но он привязан к
>> systemd и не поддерживает, к примеру, f2fs, которая хорошо подходит для
>> флешек (что акутально для планшетов, смартфонов, одноплатников).
>
> Сначала хотел привести относительно простой патч для поддержки, но беглое
> чтение документации превратило патч вот в это:
>
Для ext4 утилита называется не resizefs, а resize2fs.
И перед тем, как делать резайц, требуется выполнить:
e2fsck -f "$1"
Также нужно будет сделать добавление утилит в initrd.
> diff --git a/features/kickstart/data/bin/kickstart-sh-storage b/features/kickstart/data/bin/kickstart-sh-storage
> index 2cd7b12c..5e794586 100644
> --- a/features/kickstart/data/bin/kickstart-sh-storage
> +++ b/features/kickstart/data/bin/kickstart-sh-storage
> @@ -539,6 +539,59 @@ ks_get_dev_id()
> printf '%s\n' "$1"
> }
>
> +ks_requires_ext4=("resizefs")
> +ks_requires_xfs=("xfs_growfs")
> +ks_requires_f2fs=("resize.f2fs")
> +ks_growfs()
> +{
> + local PROG
> + local fs="" requires="" ret=0
> +
> + PROG="kickstart"
> + message "command: ${FUNCNAME[0]} $*"
> +
> + fs="$(blkid --output value --match-tag TYPE -c /dev/null "$1")" ||
> + return 0
> +
> + case "$fs" in
> + ext*) requires="ks_growfs_ext4" ;;
> + xfs) requires="ks_growfs_xfs" ;;
> + f2fs) requires="ks_growfs_f2fs" ;;
> + *)
> + # resize unsupported.
> + return 0
> + ;;
> + esac
> +
> + ks_check_requires "$requires" ||
> + return 1
> +
> + verbose "Increase filesystem to partition size: $1"
> +
> + case "$fs" in
> + ext*)
Не
> + resizefs "$1" ||
а
+ e2fsck -f "$1" && resize2fs "$1" ||
> + ret=1
> + ;;
> + xfs)
> + mount -n -o rw,X-mount.mkdir \
> + "$1" \
> + "$ks_datadir/xfs.dir"
> + xfs_growfs \
> + "$ks_datadir/xfs.dir" ||
> + ret=1
> + umount -f \
> + "$ks_datadir/xfs.dir"
> + ;;
> + f2fs)
> + resize.f2fs "$1" ||
> + ret=1
> + ;;
> + esac
> +
> + return $ret
> +}
> +
> ks_requires_part=("numfmt" "sfdisk")
> part()
> {
> @@ -828,6 +881,8 @@ part()
>
> printf ', %s\n' "$size" |
> sfdisk -q -N "$partnum" "/dev/$dev"
> +
> + ks_growfs "/dev/$dev$partnum"
> fi
>
> if [ -n "$encrypted" ]; then
>
>
--
С уважением, Антон Мидюков <antohami@basealt.ru>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-24 15:36 ` Антон Мидюков
@ 2024-11-24 17:17 ` Alexey Gladkov
2024-11-24 17:29 ` Антон Мидюков
0 siblings, 1 reply; 23+ messages in thread
From: Alexey Gladkov @ 2024-11-24 17:17 UTC (permalink / raw)
To: make-initrd
On Sun, Nov 24, 2024 at 06:36:23PM +0300, Антон Мидюков wrote:
> 24.11.2024 15:51, Alexey Gladkov пишет:
> > On Sun, Nov 24, 2024 at 01:34:46PM +0300, Антон Мидюков wrote:
> >> 23.11.2024 20:59, Alexey Gladkov пишет:
> >>> On Sat, Nov 23, 2024 at 05:18:28PM +0300, Антон Мидюков wrote:
> >>>> 3. Раздел увеличивается, но файловая система нет. Так и должно быть? Или
> >>>> я что-то делаю не так. Сразу не заметил, так как в /etc/fstab был
> >>>> указан параметр монтирования x-systemd.growfs, благодаря чему файловая
> >>>> система расширялась systemd.
> >>>
> >>> Я это не реализовал так как в тот момент мне это не было нужно. Но считаю,
> >>> что раз возникла потребность, то это стоит сделать. Правда пока не не знаю
> >>> несколько это будет хлопотно.
> >>>
> >>
> >> В принципе, пока можно и с x-systemd.growfs жить. Но он привязан к
> >> systemd и не поддерживает, к примеру, f2fs, которая хорошо подходит для
> >> флешек (что акутально для планшетов, смартфонов, одноплатников).
> >
> > Сначала хотел привести относительно простой патч для поддержки, но беглое
> > чтение документации превратило патч вот в это:
> >
>
> Для ext4 утилита называется не resizefs, а resize2fs.
> И перед тем, как делать резайц, требуется выполнить:
> e2fsck -f "$1"
Да, я ошибся. Я не пробовал этот код.
> Также нужно будет сделать добавление утилит в initrd.
Да. Сделаешь патч ?
> > diff --git a/features/kickstart/data/bin/kickstart-sh-storage b/features/kickstart/data/bin/kickstart-sh-storage
> > index 2cd7b12c..5e794586 100644
> > --- a/features/kickstart/data/bin/kickstart-sh-storage
> > +++ b/features/kickstart/data/bin/kickstart-sh-storage
> > @@ -539,6 +539,59 @@ ks_get_dev_id()
> > printf '%s\n' "$1"
> > }
> >
> > +ks_requires_ext4=("resizefs")
> > +ks_requires_xfs=("xfs_growfs")
> > +ks_requires_f2fs=("resize.f2fs")
> > +ks_growfs()
> > +{
> > + local PROG
> > + local fs="" requires="" ret=0
> > +
> > + PROG="kickstart"
> > + message "command: ${FUNCNAME[0]} $*"
> > +
> > + fs="$(blkid --output value --match-tag TYPE -c /dev/null "$1")" ||
> > + return 0
> > +
> > + case "$fs" in
> > + ext*) requires="ks_growfs_ext4" ;;
> > + xfs) requires="ks_growfs_xfs" ;;
> > + f2fs) requires="ks_growfs_f2fs" ;;
> > + *)
> > + # resize unsupported.
> > + return 0
> > + ;;
> > + esac
> > +
> > + ks_check_requires "$requires" ||
> > + return 1
> > +
> > + verbose "Increase filesystem to partition size: $1"
> > +
> > + case "$fs" in
> > + ext*)
>
> Не
>
> > + resizefs "$1" ||
>
> а
>
> + e2fsck -f "$1" && resize2fs "$1" ||
> > + ret=1
> > + ;;
> > + xfs)
> > + mount -n -o rw,X-mount.mkdir \
> > + "$1" \
> > + "$ks_datadir/xfs.dir"
> > + xfs_growfs \
> > + "$ks_datadir/xfs.dir" ||
> > + ret=1
> > + umount -f \
> > + "$ks_datadir/xfs.dir"
> > + ;;
> > + f2fs)
> > + resize.f2fs "$1" ||
> > + ret=1
> > + ;;
> > + esac
> > +
> > + return $ret
> > +}
> > +
> > ks_requires_part=("numfmt" "sfdisk")
> > part()
> > {
> > @@ -828,6 +881,8 @@ part()
> >
> > printf ', %s\n' "$size" |
> > sfdisk -q -N "$partnum" "/dev/$dev"
> > +
> > + ks_growfs "/dev/$dev$partnum"
> > fi
> >
> > if [ -n "$encrypted" ]; then
> >
> >
>
>
> --
> С уважением, Антон Мидюков <antohami@basealt.ru>
> _______________________________________________
> Make-initrd mailing list
> Make-initrd@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/make-initrd
--
Rgrds, legion
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-24 17:17 ` Alexey Gladkov
@ 2024-11-24 17:29 ` Антон Мидюков
2024-11-25 19:02 ` Антон Мидюков
0 siblings, 1 reply; 23+ messages in thread
From: Антон Мидюков @ 2024-11-24 17:29 UTC (permalink / raw)
To: make-initrd
24.11.2024 20:17, Alexey Gladkov пишет:
> On Sun, Nov 24, 2024 at 06:36:23PM +0300, Антон Мидюков wrote:
>> 24.11.2024 15:51, Alexey Gladkov пишет:
>>> On Sun, Nov 24, 2024 at 01:34:46PM +0300, Антон Мидюков wrote:
>>>> 23.11.2024 20:59, Alexey Gladkov пишет:
>>>>> On Sat, Nov 23, 2024 at 05:18:28PM +0300, Антон Мидюков wrote:
>>>>>> 3. Раздел увеличивается, но файловая система нет. Так и должно быть? Или
>>>>>> я что-то делаю не так. Сразу не заметил, так как в /etc/fstab был
>>>>>> указан параметр монтирования x-systemd.growfs, благодаря чему файловая
>>>>>> система расширялась systemd.
>>>>>
>>>>> Я это не реализовал так как в тот момент мне это не было нужно. Но считаю,
>>>>> что раз возникла потребность, то это стоит сделать. Правда пока не не знаю
>>>>> несколько это будет хлопотно.
>>>>>
>>>>
>>>> В принципе, пока можно и с x-systemd.growfs жить. Но он привязан к
>>>> systemd и не поддерживает, к примеру, f2fs, которая хорошо подходит для
>>>> флешек (что акутально для планшетов, смартфонов, одноплатников).
>>>
>>> Сначала хотел привести относительно простой патч для поддержки, но беглое
>>> чтение документации превратило патч вот в это:
>>>
>>
>> Для ext4 утилита называется не resizefs, а resize2fs.
>> И перед тем, как делать резайц, требуется выполнить:
>> e2fsck -f "$1"
>
> Да, я ошибся. Я не пробовал этот код.
>
>> Также нужно будет сделать добавление утилит в initrd.
>
> Да. Сделаешь патч ?
>
Хорошо.
--
С уважением, Антон Мидюков <antohami@basealt.ru>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-24 17:29 ` Антон Мидюков
@ 2024-11-25 19:02 ` Антон Мидюков
2024-11-26 16:01 ` Alexey Gladkov
0 siblings, 1 reply; 23+ messages in thread
From: Антон Мидюков @ 2024-11-25 19:02 UTC (permalink / raw)
To: make-initrd
24.11.2024 20:29, Антон Мидюков пишет:
> 24.11.2024 20:17, Alexey Gladkov пишет:
>> On Sun, Nov 24, 2024 at 06:36:23PM +0300, Антон Мидюков wrote:
>>> 24.11.2024 15:51, Alexey Gladkov пишет:
>>>> On Sun, Nov 24, 2024 at 01:34:46PM +0300, Антон Мидюков wrote:
>>>>> 23.11.2024 20:59, Alexey Gladkov пишет:
>>>>>> On Sat, Nov 23, 2024 at 05:18:28PM +0300, Антон Мидюков wrote:
>>>>>>> 3. Раздел увеличивается, но файловая система нет. Так и должно быть? Или
>>>>>>> я что-то делаю не так. Сразу не заметил, так как в /etc/fstab был
>>>>>>> указан параметр монтирования x-systemd.growfs, благодаря чему файловая
>>>>>>> система расширялась systemd.
>>>>>>
>>>>>> Я это не реализовал так как в тот момент мне это не было нужно. Но считаю,
>>>>>> что раз возникла потребность, то это стоит сделать. Правда пока не не знаю
>>>>>> несколько это будет хлопотно.
>>>>>>
>>>>>
>>>>> В принципе, пока можно и с x-systemd.growfs жить. Но он привязан к
>>>>> systemd и не поддерживает, к примеру, f2fs, которая хорошо подходит для
>>>>> флешек (что акутально для планшетов, смартфонов, одноплатников).
>>>>
>>>> Сначала хотел привести относительно простой патч для поддержки, но беглое
>>>> чтение документации превратило патч вот в это:
>>>>
>>>
>>> Для ext4 утилита называется не resizefs, а resize2fs.
>>> И перед тем, как делать резайц, требуется выполнить:
>>> e2fsck -f "$1"
>>
>> Да, я ошибся. Я не пробовал этот код.
>>
>>> Также нужно будет сделать добавление утилит в initrd.
>>
>> Да. Сделаешь патч ?
>>
>
> Хорошо.
>
Спасибо за принятый пулл-риквест:
https://github.com/osboot/make-initrd/pull/41
При сборке пакета нужно будет добавить у make-initrd-kickstart зависимость на пакет f2fs-tools.
--
С уважением, Антон Мидюков <antohami@basealt.ru>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-25 19:02 ` Антон Мидюков
@ 2024-11-26 16:01 ` Alexey Gladkov
2024-11-26 16:06 ` Антон Мидюков
0 siblings, 1 reply; 23+ messages in thread
From: Alexey Gladkov @ 2024-11-26 16:01 UTC (permalink / raw)
To: make-initrd
On Mon, Nov 25, 2024 at 10:02:28PM +0300, Антон Мидюков wrote:
>
> Спасибо за принятый пулл-риквест:
> https://github.com/osboot/make-initrd/pull/41
>
> При сборке пакета нужно будет добавить у make-initrd-kickstart зависимость на пакет f2fs-tools.
Да, постараюсь не забыть.
Но не мог бы ты ещё чуть-чуть потестировать.
--
Rgrds, legion
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-26 16:01 ` Alexey Gladkov
@ 2024-11-26 16:06 ` Антон Мидюков
2024-11-26 16:32 ` Alexey Gladkov
2024-11-26 16:47 ` Alexey Gladkov
0 siblings, 2 replies; 23+ messages in thread
From: Антон Мидюков @ 2024-11-26 16:06 UTC (permalink / raw)
To: make-initrd
26.11.2024 19:01, Alexey Gladkov пишет:
> On Mon, Nov 25, 2024 at 10:02:28PM +0300, Антон Мидюков wrote:
>>
>> Спасибо за принятый пулл-риквест:
>> https://github.com/osboot/make-initrd/pull/41
>>
>> При сборке пакета нужно будет добавить у make-initrd-kickstart зависимость на пакет f2fs-tools.
>
> Да, постараюсь не забыть.
>
> Но не мог бы ты ещё чуть-чуть потестировать.
>
Да, конечно.
Тем более мы ещё одну проблему нашли.
На sd-картах и emmc зависает на цикле.
+ for f in $(set +f; printf '%s\n' /sys/block/*)
+ '[' -e /sys/block/mmcblk2 ']'
+ maj=
+ min=
+ IFS=:
+ read -r maj min
++ get_device_type 179
++ local id=179
++ shift
++ local block=
++ local maj type
++ read -r maj type
++ '[' -n '' ']'
++ '[' 'Character devices:' '!=' 'Block devices:' ']'
++ read -r maj type
++ '[' -n '' ']'
++ '[' '1 mem' '!=' 'Block devices:' ']'
++ read -r maj type
++ '[' -n '' ']'
++ '[' '4 /dev/vc/0' '!=' 'Block devices:' ']'
++ read -r maj type
++ '[' -n '' ']'
++ '[' '4 tty' '!=' 'Block devices:' ']'
++ read -r maj type
++ '[' -n '' ']'
++ '[' '4 ttyS' '!=' 'Block devices:' ']'
++ read -r maj type
И тому подобное бесконечно.
Я так понимаю, неправильно обрабатывает.
На них номер раздела буквой p отделяются от имени устройства.
Но код пока не изучал.
--
С уважением, Антон Мидюков <antohami@basealt.ru>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-26 16:06 ` Антон Мидюков
@ 2024-11-26 16:32 ` Alexey Gladkov
2024-11-26 16:47 ` Alexey Gladkov
1 sibling, 0 replies; 23+ messages in thread
From: Alexey Gladkov @ 2024-11-26 16:32 UTC (permalink / raw)
To: make-initrd
On Tue, Nov 26, 2024 at 07:06:43PM +0300, Антон Мидюков wrote:
> Тем более мы ещё одну проблему нашли.
> На sd-картах и emmc зависает на цикле.
>
> + for f in $(set +f; printf '%s\n' /sys/block/*)
> + '[' -e /sys/block/mmcblk2 ']'
> + maj=
> + min=
> + IFS=:
> + read -r maj min
> ++ get_device_type 179
> ++ local id=179
> ++ shift
> ++ local block=
> ++ local maj type
> ++ read -r maj type
> ++ '[' -n '' ']'
> ++ '[' 'Character devices:' '!=' 'Block devices:' ']'
> ++ read -r maj type
> ++ '[' -n '' ']'
> ++ '[' '1 mem' '!=' 'Block devices:' ']'
> ++ read -r maj type
> ++ '[' -n '' ']'
> ++ '[' '4 /dev/vc/0' '!=' 'Block devices:' ']'
> ++ read -r maj type
> ++ '[' -n '' ']'
> ++ '[' '4 tty' '!=' 'Block devices:' ']'
> ++ read -r maj type
> ++ '[' -n '' ']'
> ++ '[' '4 ttyS' '!=' 'Block devices:' ']'
> ++ read -r maj type
>
> И тому подобное бесконечно.
> Я так понимаю, неправильно обрабатывает.
> На них номер раздела буквой p отделяются от имени устройства.
> Но код пока не изучал.
Хм. Не очень понимаю как там в принципе бесконечный цикл может быть.
Можешь показать /sys/block/mmcblk2/dev и /proc/devices ?
--
Rgrds, legion
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-26 16:06 ` Антон Мидюков
2024-11-26 16:32 ` Alexey Gladkov
@ 2024-11-26 16:47 ` Alexey Gladkov
2024-11-26 17:22 ` Антон Мидюков
1 sibling, 1 reply; 23+ messages in thread
From: Alexey Gladkov @ 2024-11-26 16:47 UTC (permalink / raw)
To: make-initrd
On Tue, Nov 26, 2024 at 07:06:43PM +0300, Антон Мидюков wrote:
> 26.11.2024 19:01, Alexey Gladkov пишет:
> > On Mon, Nov 25, 2024 at 10:02:28PM +0300, Антон Мидюков wrote:
> >>
> >> Спасибо за принятый пулл-риквест:
> >> https://github.com/osboot/make-initrd/pull/41
> >>
> >> При сборке пакета нужно будет добавить у make-initrd-kickstart зависимость на пакет f2fs-tools.
> >
> > Да, постараюсь не забыть.
> >
> > Но не мог бы ты ещё чуть-чуть потестировать.
> >
>
> Да, конечно.
> Тем более мы ещё одну проблему нашли.
> На sd-картах и emmc зависает на цикле.
>
> + for f in $(set +f; printf '%s\n' /sys/block/*)
> + '[' -e /sys/block/mmcblk2 ']'
> + maj=
> + min=
> + IFS=:
> + read -r maj min
> ++ get_device_type 179
> ++ local id=179
> ++ shift
> ++ local block=
> ++ local maj type
> ++ read -r maj type
> ++ '[' -n '' ']'
> ++ '[' 'Character devices:' '!=' 'Block devices:' ']'
> ++ read -r maj type
> ++ '[' -n '' ']'
> ++ '[' '1 mem' '!=' 'Block devices:' ']'
> ++ read -r maj type
> ++ '[' -n '' ']'
> ++ '[' '4 /dev/vc/0' '!=' 'Block devices:' ']'
> ++ read -r maj type
> ++ '[' -n '' ']'
> ++ '[' '4 tty' '!=' 'Block devices:' ']'
> ++ read -r maj type
> ++ '[' -n '' ']'
> ++ '[' '4 ttyS' '!=' 'Block devices:' ']'
> ++ read -r maj type
>
> И тому подобное бесконечно.
> Я так понимаю, неправильно обрабатывает.
> На них номер раздела буквой p отделяются от имени устройства.
> Но код пока не изучал.
Ясно. Предположу, что у вас только mmc карта, тогда ясно почему мы висим.
kickstart ждёт блочные устройства, которые понимает.
Вот так, думаю, будет работать:
diff --git a/features/kickstart/data/bin/kickstart b/features/kickstart/data/bin/kickstart
index 360c485b..291b12d6 100755
--- a/features/kickstart/data/bin/kickstart
+++ b/features/kickstart/data/bin/kickstart
@@ -190,7 +190,7 @@ ks_block_devices()
blocktype="$(get_device_type "$maj")"
case "$blocktype" in
- sd|virtblk)
+ sd|virtblk|mmc)
;;
*)
continue
--
Rgrds, legion
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-26 16:47 ` Alexey Gladkov
@ 2024-11-26 17:22 ` Антон Мидюков
2024-11-26 17:32 ` Alexey Gladkov
0 siblings, 1 reply; 23+ messages in thread
From: Антон Мидюков @ 2024-11-26 17:22 UTC (permalink / raw)
To: make-initrd
26.11.2024 19:47, Alexey Gladkov пишет:
> On Tue, Nov 26, 2024 at 07:06:43PM +0300, Антон Мидюков wrote:
>> 26.11.2024 19:01, Alexey Gladkov пишет:
>>> On Mon, Nov 25, 2024 at 10:02:28PM +0300, Антон Мидюков wrote:
>>>>
>>>> Спасибо за принятый пулл-риквест:
>>>> https://github.com/osboot/make-initrd/pull/41
>>>>
>>>> При сборке пакета нужно будет добавить у make-initrd-kickstart зависимость на пакет f2fs-tools.
>>>
>>> Да, постараюсь не забыть.
>>>
>>> Но не мог бы ты ещё чуть-чуть потестировать.
>>>
>>
>> Да, конечно.
>> Тем более мы ещё одну проблему нашли.
>> На sd-картах и emmc зависает на цикле.
>>
>> + for f in $(set +f; printf '%s\n' /sys/block/*)
>> + '[' -e /sys/block/mmcblk2 ']'
>> + maj=
>> + min=
>> + IFS=:
>> + read -r maj min
>> ++ get_device_type 179
>> ++ local id=179
>> ++ shift
>> ++ local block=
>> ++ local maj type
>> ++ read -r maj type
>> ++ '[' -n '' ']'
>> ++ '[' 'Character devices:' '!=' 'Block devices:' ']'
>> ++ read -r maj type
>> ++ '[' -n '' ']'
>> ++ '[' '1 mem' '!=' 'Block devices:' ']'
>> ++ read -r maj type
>> ++ '[' -n '' ']'
>> ++ '[' '4 /dev/vc/0' '!=' 'Block devices:' ']'
>> ++ read -r maj type
>> ++ '[' -n '' ']'
>> ++ '[' '4 tty' '!=' 'Block devices:' ']'
>> ++ read -r maj type
>> ++ '[' -n '' ']'
>> ++ '[' '4 ttyS' '!=' 'Block devices:' ']'
>> ++ read -r maj type
>>
>> И тому подобное бесконечно.
>> Я так понимаю, неправильно обрабатывает.
>> На них номер раздела буквой p отделяются от имени устройства.
>> Но код пока не изучал.
>
> Ясно. Предположу, что у вас только mmc карта, тогда ясно почему мы висим.
> kickstart ждёт блочные устройства, которые понимает.
>
> Вот так, думаю, будет работать:
Помогло, но проблема с разделами теперь, пытается увеличить /dev/mmcblk11 вместо /dev/mmcblk1p1:
++ local partnum
++ read -r partnum
+++ readlink-e /sys/class/block/mmcblk1p1
++ dev=/sys/devices/platform/fe320000.mmc/mmc_host/mmc1/mmc1:59b4/block/mmcblk1/mmcblk1p1
++ dev=/sys/devices/platform/fe320000.mmc/mmc_host/mmc1/mmc1:59b4/block/mmcblk1
++ dev=mmcblk1
++ verbose 'increasing partition /dev/mmcblk11'
++ '[' -n -v ']'
++ message 'increasing partition /dev/mmcblk11'
++ local arg= prefix=
++ '[' -n '' ']'
++ '[' -z '' ']'
++ printf '%s\n' 'part: increasing partition /dev/mmcblk11'
part: increasing partition /dev/mmcblk11
++ printf ', %s\n' +
++ sfdisk -q -N 1 /dev/mmcblk1
++ ks_growfs /dev/mmcblk11
++ local PROG
++ local fs= requires= ret=0
++ PROG=kickstart
++ message 'command: ks_growfs /dev/mmcblk11'
++ local arg= prefix=
++ '[' -n '' ']'
++ '[' -z '' ']'
++ printf '%s\n' 'kickstart: command: ks_growfs /dev/mmcblk11'
kickstart: command: ks_growfs /dev/mmcblk11
+++ blkid --output value --match-tag TYPE -c /dev/null /dev/mmcblk11
++ fs=
++ return 0
--
С уважением, Антон Мидюков <antohami@basealt.ru>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-26 17:22 ` Антон Мидюков
@ 2024-11-26 17:32 ` Alexey Gladkov
2024-11-26 17:44 ` Alexey Gladkov
0 siblings, 1 reply; 23+ messages in thread
From: Alexey Gladkov @ 2024-11-26 17:32 UTC (permalink / raw)
To: make-initrd
On Tue, Nov 26, 2024 at 08:22:37PM +0300, Антон Мидюков wrote:
> > Ясно. Предположу, что у вас только mmc карта, тогда ясно почему мы висим.
> > kickstart ждёт блочные устройства, которые понимает.
> >
> > Вот так, думаю, будет работать:
>
> Помогло, но проблема с разделами теперь, пытается увеличить /dev/mmcblk11 вместо /dev/mmcblk1p1:
Ты прав. Проблема будет и с nvme0n1p1
Нужно подумать как лучше исправить.
> ++ local partnum
> ++ read -r partnum
> +++ readlink-e /sys/class/block/mmcblk1p1
> ++ dev=/sys/devices/platform/fe320000.mmc/mmc_host/mmc1/mmc1:59b4/block/mmcblk1/mmcblk1p1
> ++ dev=/sys/devices/platform/fe320000.mmc/mmc_host/mmc1/mmc1:59b4/block/mmcblk1
> ++ dev=mmcblk1
> ++ verbose 'increasing partition /dev/mmcblk11'
> ++ '[' -n -v ']'
> ++ message 'increasing partition /dev/mmcblk11'
> ++ local arg= prefix=
> ++ '[' -n '' ']'
> ++ '[' -z '' ']'
> ++ printf '%s\n' 'part: increasing partition /dev/mmcblk11'
> part: increasing partition /dev/mmcblk11
> ++ printf ', %s\n' +
> ++ sfdisk -q -N 1 /dev/mmcblk1
> ++ ks_growfs /dev/mmcblk11
> ++ local PROG
> ++ local fs= requires= ret=0
> ++ PROG=kickstart
> ++ message 'command: ks_growfs /dev/mmcblk11'
> ++ local arg= prefix=
> ++ '[' -n '' ']'
> ++ '[' -z '' ']'
> ++ printf '%s\n' 'kickstart: command: ks_growfs /dev/mmcblk11'
> kickstart: command: ks_growfs /dev/mmcblk11
> +++ blkid --output value --match-tag TYPE -c /dev/null /dev/mmcblk11
> ++ fs=
> ++ return 0
>
>
>
>
> --
> С уважением, Антон Мидюков <antohami@basealt.ru>
> _______________________________________________
> Make-initrd mailing list
> Make-initrd@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/make-initrd
--
Rgrds, legion
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-26 17:32 ` Alexey Gladkov
@ 2024-11-26 17:44 ` Alexey Gladkov
2024-11-26 17:56 ` Антон Мидюков
0 siblings, 1 reply; 23+ messages in thread
From: Alexey Gladkov @ 2024-11-26 17:44 UTC (permalink / raw)
To: make-initrd
On Tue, Nov 26, 2024 at 06:32:14PM +0100, Alexey Gladkov wrote:
> On Tue, Nov 26, 2024 at 08:22:37PM +0300, Антон Мидюков wrote:
> > > Ясно. Предположу, что у вас только mmc карта, тогда ясно почему мы висим.
> > > kickstart ждёт блочные устройства, которые понимает.
> > >
> > > Вот так, думаю, будет работать:
> >
> > Помогло, но проблема с разделами теперь, пытается увеличить /dev/mmcblk11 вместо /dev/mmcblk1p1:
>
> Ты прав. Проблема будет и с nvme0n1p1
>
> Нужно подумать как лучше исправить.
Скорее всего так будет работать. Сейчас прогоню тесты, чтобы проверить,
что старого ничего не сломал.
diff --git a/features/kickstart/data/bin/kickstart-sh-storage b/features/kickstart/data/bin/kickstart-sh-storage
index 76fee761..0ff372dc 100644
--- a/features/kickstart/data/bin/kickstart-sh-storage
+++ b/features/kickstart/data/bin/kickstart-sh-storage
@@ -883,11 +883,11 @@ part()
dev="${dev%/*}"
dev="${dev##*/}"
- verbose "increasing partition /dev/$dev$partnum"
+ verbose "increasing partition /dev/$partdev"
printf ', %s\n' "$size" |
sfdisk -q -N "$partnum" "/dev/$dev"
- ks_growfs "/dev/$dev$partnum"
+ ks_growfs "/dev/$partdev"
fi
if [ -n "$encrypted" ]; then
--
Rgrds, legion
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-26 17:44 ` Alexey Gladkov
@ 2024-11-26 17:56 ` Антон Мидюков
2024-11-26 18:16 ` Alexey Gladkov
0 siblings, 1 reply; 23+ messages in thread
From: Антон Мидюков @ 2024-11-26 17:56 UTC (permalink / raw)
To: make-initrd
26.11.2024 20:44, Alexey Gladkov пишет:
> On Tue, Nov 26, 2024 at 06:32:14PM +0100, Alexey Gladkov wrote:
>> On Tue, Nov 26, 2024 at 08:22:37PM +0300, Антон Мидюков wrote:
>>>> Ясно. Предположу, что у вас только mmc карта, тогда ясно почему мы висим.
>>>> kickstart ждёт блочные устройства, которые понимает.
>>>>
>>>> Вот так, думаю, будет работать:
>>>
>>> Помогло, но проблема с разделами теперь, пытается увеличить /dev/mmcblk11 вместо /dev/mmcblk1p1:
>>
>> Ты прав. Проблема будет и с nvme0n1p1
>>
>> Нужно подумать как лучше исправить.
>
> Скорее всего так будет работать. Сейчас прогоню тесты, чтобы проверить,
> что старого ничего не сломал.
>
Работает. Спасибо!
А поддержка nvme разве была в типах блочных устройств?
> diff --git a/features/kickstart/data/bin/kickstart-sh-storage b/features/kickstart/data/bin/kickstart-sh-storage
> index 76fee761..0ff372dc 100644
> --- a/features/kickstart/data/bin/kickstart-sh-storage
> +++ b/features/kickstart/data/bin/kickstart-sh-storage
> @@ -883,11 +883,11 @@ part()
> dev="${dev%/*}"
> dev="${dev##*/}"
>
> - verbose "increasing partition /dev/$dev$partnum"
> + verbose "increasing partition /dev/$partdev"
>
> printf ', %s\n' "$size" |
> sfdisk -q -N "$partnum" "/dev/$dev"
> - ks_growfs "/dev/$dev$partnum"
> + ks_growfs "/dev/$partdev"
> fi
>
> if [ -n "$encrypted" ]; then
>
--
С уважением, Антон Мидюков <antohami@basealt.ru>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем
2024-11-26 17:56 ` Антон Мидюков
@ 2024-11-26 18:16 ` Alexey Gladkov
0 siblings, 0 replies; 23+ messages in thread
From: Alexey Gladkov @ 2024-11-26 18:16 UTC (permalink / raw)
To: make-initrd
On Tue, Nov 26, 2024 at 08:56:25PM +0300, Антон Мидюков wrote:
> 26.11.2024 20:44, Alexey Gladkov пишет:
> > On Tue, Nov 26, 2024 at 06:32:14PM +0100, Alexey Gladkov wrote:
> >> On Tue, Nov 26, 2024 at 08:22:37PM +0300, Антон Мидюков wrote:
> >>>> Ясно. Предположу, что у вас только mmc карта, тогда ясно почему мы висим.
> >>>> kickstart ждёт блочные устройства, которые понимает.
> >>>>
> >>>> Вот так, думаю, будет работать:
> >>>
> >>> Помогло, но проблема с разделами теперь, пытается увеличить /dev/mmcblk11 вместо /dev/mmcblk1p1:
> >>
> >> Ты прав. Проблема будет и с nvme0n1p1
> >>
> >> Нужно подумать как лучше исправить.
> >
> > Скорее всего так будет работать. Сейчас прогоню тесты, чтобы проверить,
> > что старого ничего не сломал.
> >
>
> Работает. Спасибо!
Закинул оба фикса в master.
> А поддержка nvme разве была в типах блочных устройств?
Нет, но теперь будет :)
Я просто подумал про имена nvme и их нумерацию.
>
> > diff --git a/features/kickstart/data/bin/kickstart-sh-storage b/features/kickstart/data/bin/kickstart-sh-storage
> > index 76fee761..0ff372dc 100644
> > --- a/features/kickstart/data/bin/kickstart-sh-storage
> > +++ b/features/kickstart/data/bin/kickstart-sh-storage
> > @@ -883,11 +883,11 @@ part()
> > dev="${dev%/*}"
> > dev="${dev##*/}"
> >
> > - verbose "increasing partition /dev/$dev$partnum"
> > + verbose "increasing partition /dev/$partdev"
> >
> > printf ', %s\n' "$size" |
> > sfdisk -q -N "$partnum" "/dev/$dev"
> > - ks_growfs "/dev/$dev$partnum"
> > + ks_growfs "/dev/$partdev"
> > fi
> >
> > if [ -n "$encrypted" ]; then
> >
>
>
> --
> С уважением, Антон Мидюков <antohami@basealt.ru>
> _______________________________________________
> Make-initrd mailing list
> Make-initrd@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/make-initrd
--
Rgrds, legion
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2024-11-26 18:16 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-11-16 5:23 [make-initrd] Расширение раздела с корнем Egor Shestakov
2024-11-16 13:28 ` Alexey Gladkov
2024-11-23 14:18 ` Антон Мидюков
2024-11-23 17:59 ` Alexey Gladkov
2024-11-24 10:34 ` Антон Мидюков
2024-11-24 12:51 ` Alexey Gladkov
2024-11-24 13:00 ` Антон Мидюков
2024-11-24 15:36 ` Антон Мидюков
2024-11-24 17:17 ` Alexey Gladkov
2024-11-24 17:29 ` Антон Мидюков
2024-11-25 19:02 ` Антон Мидюков
2024-11-26 16:01 ` Alexey Gladkov
2024-11-26 16:06 ` Антон Мидюков
2024-11-26 16:32 ` Alexey Gladkov
2024-11-26 16:47 ` Alexey Gladkov
2024-11-26 17:22 ` Антон Мидюков
2024-11-26 17:32 ` Alexey Gladkov
2024-11-26 17:44 ` Alexey Gladkov
2024-11-26 17:56 ` Антон Мидюков
2024-11-26 18:16 ` Alexey Gladkov
2024-11-24 13:21 ` Alexey Gladkov
2024-11-24 13:22 ` Антон Мидюков
2024-11-24 13:34 ` Alexey Gladkov
Make-initrd development discussion
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/make-initrd/0 make-initrd/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 make-initrd make-initrd/ http://lore.altlinux.org/make-initrd \
make-initrd@lists.altlinux.org make-initrd@lists.altlinux.ru make-initrd@lists.altlinux.com
public-inbox-index make-initrd
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.make-initrd
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git