From: "Антон Мидюков" <antohami@basealt.ru>
To: make-initrd@lists.altlinux.org
Subject: Re: [make-initrd] Расширение раздела с корнем
Date: Sun, 24 Nov 2024 16:22:23 +0300
Message-ID: <91688614-bf00-4b6a-b68c-95171b0b954f@basealt.ru> (raw)
In-Reply-To: <Z0MoP23rxVJ1TMNx@example.org>
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>
next prev parent reply other threads:[~2024-11-24 13:22 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 ` Антон Мидюков [this message]
2024-11-24 13:34 ` Alexey Gladkov
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=91688614-bf00-4b6a-b68c-95171b0b954f@basealt.ru \
--to=antohami@basealt.ru \
--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