From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RP_MATCHES_RCVD autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1732384800; bh=fN8gFiDqlOpX8lpor6+7v52UwkRnCJMQ0A+3WaNhQZo=; h=Date:From:To:Subject:References:In-Reply-To:From; b=r1RREQjoTW1hIidUC2EFRv9SvV+b85eTMbzSetrExXGT39+vAS6QzjBMt31Uaj/pa 5S2fFDb9EDT1fBMl0C5PqBAzNcfEuEGwiT/2e5m0o8dO1y3CvtTHhBFWSLuCCubwLN Fv1+KEecbRT2f8TdPwl/SQMYJ9hrJ3ctiys806zxLqmNpEkEUu6Jo03HqotkhfYxTH X1nEM8Da6p4oBSxYmLDYdikc2cQ1QqhiV44glKMeZHbHCBDrgCaRGRYiZGVdVaa++y Y9zH3j7pKETUiJSOXgAsx54YUUoon4q06mu/WXbOuXcev2LPug7AUDcisFp8+sO1nc 5YayluByy5+Nw== Date: Sat, 23 Nov 2024 18:59:56 +0100 From: Alexey Gladkov To: make-initrd@lists.altlinux.org Message-ID: References: <20241116122309.df5fdad73578af49341206ad@basealt.ru> <8a849bcc-e792-40e5-a558-6c8693935278@basealt.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <8a849bcc-e792-40e5-a558-6c8693935278@basealt.ru> Subject: Re: [make-initrd] =?utf-8?b?0KDQsNGB0YjQuNGA0LXQvdC40LUg0YDQsNC30LQ=?= =?utf-8?b?0LXQu9CwINGBINC60L7RgNC90LXQvA==?= X-BeenThere: make-initrd@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: make-initrd@lists.altlinux.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 23 Nov 2024 18:00:07 -0000 Archived-At: List-Archive: 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