[make-initrd] Расширение раздела с корнем

Alexey Gladkov legion at kernel.org
Sun Nov 24 20:17:17 MSK 2024


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 at basealt.ru>
> _______________________________________________
> Make-initrd mailing list
> Make-initrd at lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/make-initrd

-- 
Rgrds, legion



More information about the Make-initrd mailing list