* [make-initrd] Расширение раздела с корнем @ 2024-11-16 5:23 Egor Shestakov 2024-11-16 13:28 ` Alexey Gladkov 0 siblings, 1 reply; 4+ 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] 4+ 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; 4+ 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] 4+ 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; 4+ 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] 4+ messages in thread
* Re: [make-initrd] Расширение раздела с корнем 2024-11-23 14:18 ` Антон Мидюков @ 2024-11-23 17:59 ` Alexey Gladkov 0 siblings, 0 replies; 4+ 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] 4+ messages in thread
end of thread, other threads:[~2024-11-23 17:59 UTC | newest] Thread overview: 4+ 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
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