Make-initrd development discussion
 help / color / mirror / Atom feed
* [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 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

* 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

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