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

Alexey Gladkov legion at kernel.org
Fri Nov 29 19:07:39 MSK 2024


On Fri, Nov 29, 2024 at 05:01:58PM +0100, Alexey Gladkov wrote:
> On Fri, Nov 29, 2024 at 06:15:12PM +0300, Антон Мидюков wrote:
> > 28.11.2024 16:04, Alexey Gladkov пишет:
> > > On Wed, Nov 27, 2024 at 03:32:02PM +0100, Alexey Gladkov wrote:
> > >> On Tue, Nov 26, 2024 at 05:47:15PM +0100, Alexey Gladkov wrote:
> > >>>> И тому подобное бесконечно.
> > >>>> Я так понимаю, неправильно обрабатывает.
> > >>>> На них номер раздела буквой 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
> > >>
> > >> Весь этот код был выдуман, чтобы отфильтровать именно блочные устройства с
> > >> дисками, а не все подряд. Я решил _пока_ сделать вот такой белый список.
> > >>
> > >> Можно смотреть на partscan, но атрибут появился только в этом году [1].
> > >>
> > >> $ grep ^ /sys/block/*/partscan
> > >> /sys/block/loop0/partscan:0
> > >> /sys/block/loop1/partscan:0
> > >> /sys/block/loop2/partscan:0
> > >> /sys/block/nvme0n1/partscan:1
> > >>
> > >> В принципе можно посмотреть на systemd [2], где решается, кажется похожая
> > >> задача.
> > >>
> > >> [1] https://lore.kernel.org/all/20240502130033.1958492-1-hch@lst.de/
> > >> [2] https://github.com/systemd/systemd/blob/main/src/shared/blockdev-util.c#L359
> > > 
> > > Антон, не мог бы ты, если будет время, проверить изменения в for-master ?
> > > Я попробовал переписать этот кусок а-ля systemd.
> > > 
> > 
> > На aarch64 при загрузке с SD-карты, когда файловая система корня ext4, резайц файловой системы происходит только при второй загрузке.
> > kicstart_not_resizefs.txt первая загрузка. Раздел увеличился.
> > kicstart_resizefs_success.txt вторая загрузка. Файловая система увеличилась.
> 
> А без патчей из for-master работает или проблема есть и в master ?

Понятно. Это общая проблема:

Из kicstart_not_resizefs.txt:

++ e2fsck -yf /dev/mmcblk1p2
e2fsck 1.47.1 (20-May-2024)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mmcblk1p2: 36511/263472 files (0.3% non-contiguous), 603579/1051904 blocks
++ resize2fs /dev/mmcblk1p2
resize2fs 1.47.1 (20-May-2024)
Please run 'e2fsck -f /dev/mmcblk1p2' first.

++ ret=1
++ return 1


Из kicstart_resizefs_success.txt:

++ e2fsck -yf /dev/mmcblk1p2
e2fsck 1.47.1 (20-May-2024)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mmcblk1p2: 36535/263472 files (0.3% non-contiguous), 605515/1051904 blocks
++ resize2fs /dev/mmcblk1p2
resize2fs 1.47.1 (20-May-2024)
Resizing the filesystem on /dev/mmcblk1p2 to 7567872 (4k) blocks.
The filesystem on /dev/mmcblk1p2 is now 7567872 (4k) blocks long.

++ return 0

-- 
Rgrds, legion



More information about the Make-initrd mailing list