Make-initrd development discussion
 help / color / mirror / Atom feed
From: Alexey Gladkov <legion@kernel.org>
To: make-initrd@lists.altlinux.org
Subject: Re: [make-initrd] Расширение раздела с корнем
Date: Sun, 24 Nov 2024 14:34:51 +0100
Message-ID: <Z0Mre7O4zd2QOleR@example.org> (raw)
In-Reply-To: <91688614-bf00-4b6a-b68c-95171b0b954f@basealt.ru>

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



      reply	other threads:[~2024-11-24 13:34 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-16  5:23 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 [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Z0Mre7O4zd2QOleR@example.org \
    --to=legion@kernel.org \
    --cc=make-initrd@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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