Как `initrd` для установщика Debian собирается?
Я хотел бы знать, как я мог бы создать кастом initrd
( как здесь) для установщика.
Я гуглил, как это сделать, и все, что я мог найти, это в основном, как вставить случайный модуль ядра или семя. Это не то, что мне нужно здесь (я знаю, как распаковать его, поиграть, а затем упаковать его снова).
Это не просто для того, чтобы делать простые настройки, которые я хотел бы знать.
Это из любопытства (каким-то образом канонический должен был сгенерировать их без необходимости перепаковывать существующий initrd), возможность вносить изменения в initrd
в здравом смысле (fx измените его, чтобы войти в RS232, добавив поддержку для других наборов, кроме основного / ограниченного / юниверса / мультиверса для обоих .deb
с и .udeb
s, чтобы изучить работу и неработающий установщик), возможность генерировать индивидуальные initrd
S для разных выпусков в здравом смысле. Возможно также в конечном итоге бросить initrd
содержащий что-то еще, кроме установщика (например, некоторые серверные программы).
1 ответ
Initrd для установщика debian - это обычная корневая файловая система, разделенная до компонентов, необходимых для установщика (т.е. используя udeb
пакеты, которые не содержат документации).
Обычная загрузка системы использует минимальный initrd, который загружает несколько модулей, а затем переключается на настоящую корневую файловую систему, но с точки зрения ядра, система уже работает на этом этапе, и переключение является совершенно необязательным.
Программа установки запускается с виртуального диска, который инициализируется с содержимым архива initrd. Единственное требование к ядру - наличие файла с именем init
либо в корне, либо ниже sbin
и этот файл будет вызван.
Вы можете, например, создать полную установку, используя debootstrap
создайте архив этого, используя cpio
и использовать это как initrd - так что процесс, используемый пакетом ядра для генерации маленького initrd, действительно особый случай.