[make-initrd] Расширение раздела с корнем
Антон Мидюков
antohami at basealt.ru
Sun Nov 24 18:36:23 MSK 2024
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 at basealt.ru>
More information about the Make-initrd
mailing list