[make-initrd] Release make-initrd 2.14.0

Leonid Krivoshein klark.devel at gmail.com
Wed Mar 31 19:20:58 MSK 2021



31.03.2021 18:57, Alexey Gladkov пишет:
> 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' ? Зачем грузить всё ?
> Вы же знаете, что вы хотите ждать исошку.

Видимо здесь надо MODULES_ADD += ... т.е. чтобы он просто попал в initrd.
И конечно теперь пойдём ещё раз по пути PUT_FILES += ...


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

Как раз хочу сделать cdrom вместо waitdev, чтобы там же было сразу и 
mountfs, но ещё не приступал.

А что вообще думаешь об аналогии всяких rootonly=, roottype=, rootro=, 
итп для waitdev? Ведь сейчас waitdev позволяет указать только само 
устройство, подобно root=, но указать дополнительные параметры не получится.


-- 
Best regards,
Leonid Krivoshein.



More information about the Make-initrd mailing list