LINUX.ORG.RU
ФорумAdmin

Есть сведущие в make-initrd? Есть несколько вопросов...

 , ,


0

2

Здравствуйте, коллеги!

Есть такой инструмент https://github.com/osboot/make-initrd/

Он вшит в Altlinux, но, так же, может использоваться в других системах.

Если вы им когда-то пользовались, то подскажите, пожалуйста, по следующим вопросам:

  1. Как добавить нужные мне модули ядра? (например squashfs)

  2. Как добавить некоторые утилиты? (например fdisk)

  3. Можно ли оперируя свойствами загрузки ядра (/proc/cmdline) заставить initrd загружать систему из squashfs образа, накладывать на него overlay (rw layer) используя какой-то раздел?

Я добился нужного результата нагородив не хилый набор скриптов, которые разбирают имеющийся initrd из altlinux, напихивают в него нужные модули ядра (копирование из базовой системы), перегенерируют modules.dep, дальше подменяют в initrd /init своим скриптом.

Но, насколько понимаю, я занимаюсь изобретением велосипеда и большую часть можно сделать используя этот make-initrd.

Вроде, все прозрачно. Весь набор скриптов make-initrd это make и bash скрипты, но…

make я знаю из рук вон плохо. Можно сказать, что не знаю.

bash скрипты уже ближе, но написаны они не в моем стиле и разбирать их сСущее наказание. Потому оказалось проще написать самому скрипты, которые выполняют нужные действия.



Последнее исправление: HighMan (всего исправлений: 1)

Примерно в этом направлении, но по другому.

Пару дней назад, волею судеб, заглянул в исо-образ *бунту 23.10, в частности, обратил внимание на его squashfs. А сегодня попалась такая статья.

andytux ★★★★★
()
Последнее исправление: andytux (всего исправлений: 1)

Как добавить нужные мне модули ядра?

По аналогии с https://www.altlinux.org/AHCI

Но, насколько понимаю, я занимаюсь изобретением велосипеда

Вообще ещё вот https://www.altlinux.org/Make-initrd и там ссылки есть, тоже можно почитать.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 2)

В /etc/initrd.mk

MODULES_ADD += useless_module
PUT_FILES += /bin/useless_file
PUT_PROGS += /bin/another_useless_prog

не работают?

Судя по repology.org сей проект кроме альта никому не уперся, поэтому таки стоит не ссать, а повникать в Documentation и скрипты.

undef ★★
()
Ответ на: комментарий от undef
MODULES_ADD += useless_module
PUT_FILES += /bin/useless_file
PUT_PROGS += /bin/another_useless_prog

MODULES_ADD += useless_module список добавляемых модулей через пробел?

PUT_FILES += /bin/useless_file просто файлы, которые нужно положить в initrd в /bin? А откуда их брать?

PUT_PROGS += /bin/another_useless_prog чем отличается от PUT_FILES?

HighMan
() автор топика

У меня тоже нет подписки, но имеющегося в статье достаточно, чтобы понять, куда движется локомотив. Модули вынесли в отдельный блок, а значит, проще ими манипулировать, не затрагивая базу. Ещё раньше замечал, AMD-Intel-бинарники в *бунту в одном инитрд, а в арче (если не ошибаюсь), каждый бинарь в отдельном инитрд.

Не зря упомянул squashfs. Раньше это был один файл. Сейчас их туча и всё это монтируется в «бутерброд».

Разбираться придётся самому.

andytux ★★★★★
()

не встречал проблем mkinitrd, иногда возможно надо добавить нвидию отдельно(раньше скрипты были немного глючные в альте).
ну и под кастомное железо - кастомное ядро, и правки initrd.mk если драйвер в модулях, или не правки initrd.mk - если драйвер скомпилирован как часть ядра.

etwrq ★★★★★
()
Ответ на: комментарий от undef

Ага! Спасибо большое! Получилось добавить в initrd нужные модули ядра и даже единичный файл /sbin/fdisk :)

make-initrd незамысловатый и просто скопировал /sbin/fdisk из корневой системы в initrd не заморачиваясь с зависимостями.

Впрочем… Фигня! У меня есть самопальный скрипт, который сформирует зависимости.

Теперь осталось разобраться с параметрами загрузки, что бы не подменять /init, а он точно умеет как-то грЫзится из squasfs образа. Осталось понять, что ему нужно передать в параметрах

HighMan
() автор топика
Последнее исправление: HighMan (всего исправлений: 1)