* [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 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
* 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
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