[make-initrd] Release make-initrd 2.14.0

Alexey Gladkov gladkov.alexey at gmail.com
Wed Mar 31 18:57:28 MSK 2021


On Wed, Mar 31, 2021 at 10:37:35PM +0700, Антон Мидюков wrote:
> 31.03.2021 22:22, Alexey Gladkov пишет:
> > On Wed, Mar 31, 2021 at 09:50:11PM +0700, Антон Мидюков wrote:
> >> 31.03.2021 21:40, Alexey Gladkov пишет:
> >>> On Wed, Mar 31, 2021 at 04:55:18PM +0300, Leonid Krivoshein wrote:
> >>>> Просто давали команду make-initrd, предварительно скармливая разными
> >>>> способами список модулей через /etc/initrd.mk. Перепробованы были разные
> >>>> директивы -- PUT_DIRS/PUT_FILES с указанием полных путей, директивы
> >>>> MODULES_LOAD и MODULES_PRELOAD с указанием только названий модулей. Во всех
> >>>> случаях модули попадают, но в основном не туда, куда надо. См. во вложении
> >>>> пример вывода initrd-ls и один из вариантов скриптов, которым это делается.
> >>>
> >>> PUT_DIRS с самого момента создания make-initrd копирует содержимое
> >>> каталога без самого каталога. Например так копируется:
> >>>
> >>> PUT_DIRS += /lib/initrd
> >>>
> >>
> >> Вот, именно в этом и проблема. Нужно найти все модули в целевых каталогах и добавить в список MODULES_LOAD.
> >> В MODULES_LOAD каталоги добавлять же нельзя?
> > 
> > Это список имён модулей. Он же потом будет использован modprobe.
> > Было бы отлично если бы я знал какую задачу вы хотите решить.
> > 
> 
> Решается задача упаковки при помощи make-initrd модулей, которые даны списком. В списке есть как каталоги, так и название модулей, вида <имя_модуля.ko>
> Список был изначально предназначен для mkmodpack.

Передайте всё в PUT_FILES. Если в списке будет каталог, то он скопируется
рекурсивно.

Например:

$ grep -v ^# /etc/initrd.mk
AUTODETECT = all
PUT_FILES += /lib/modules/5.8.0/kernel/fs

$ make-initrd -k 5.12.0-rc4 -c /etc/initrd.mk
...

$ initrd-ls /tmp/initrd-5.12.0-rc4.img | grep '5\.8\.0/.*\.ko'  |head -5
2 -rw-r--r-- 1 0 0   21264 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/zonefs/zonefs.ko.xz
2 -rw-r--r-- 1 0 0  666356 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/xfs/xfs.ko.xz
2 -rw-r--r-- 1 0 0   69816 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/ufs/ufs.ko.xz
2 -rw-r--r-- 1 0 0   98740 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/udf/udf.ko.xz
2 -rw-r--r-- 1 0 0   53596 Mar 31 17:47:53 2021 ./lib/modules/5.8.0/kernel/fs/squashfs/squashfs.ko.xz

> Конечная задача загрузка iso образа с initrd.img с использованием фичи pipeline вместо propagator.
> Если модули просто добавить в initrd то они не подгружаются. waitdev не находит устройство (файловую систему isofs) по UUID.
> Поэтому весь список модулей загружаем.

Почему бы не сделать 'MODULES_LOAD += isofs' ? Зачем грузить всё ?
Вы же знаете, что вы хотите ждать исошку.

Для исошки вам нужно подождать пока udev загрузит нужный модуль и пока не
появится условный /dev/cdrom. Для этого вообще не нужно ничего грузить
руками (см test-pipeline-iso-squash).

Возможно, понадобиться дополнительная команда, которая определит, что в
приводе есть диск и он правильный. Но это уже совсем другое.

-- 
Rgrds, legion



More information about the Make-initrd mailing list