Как `initrd` для установщика Debian собирается?

Я хотел бы знать, как я мог бы создать кастом initrd ( как здесь) для установщика.

Я гуглил, как это сделать, и все, что я мог найти, это в основном, как вставить случайный модуль ядра или семя. Это не то, что мне нужно здесь (я знаю, как распаковать его, поиграть, а затем упаковать его снова).

Это не просто для того, чтобы делать простые настройки, которые я хотел бы знать.

Это из любопытства (каким-то образом канонический должен был сгенерировать их без необходимости перепаковывать существующий initrd), возможность вносить изменения в initrd в здравом смысле (fx измените его, чтобы войти в RS232, добавив поддержку для других наборов, кроме основного / ограниченного / юниверса / мультиверса для обоих .debс и .udebs, чтобы изучить работу и неработающий установщик), возможность генерировать индивидуальные initrdS для разных выпусков в здравом смысле. Возможно также в конечном итоге бросить initrd содержащий что-то еще, кроме установщика (например, некоторые серверные программы).

1 ответ

Initrd для установщика debian - это обычная корневая файловая система, разделенная до компонентов, необходимых для установщика (т.е. используя udeb пакеты, которые не содержат документации).

Обычная загрузка системы использует минимальный initrd, который загружает несколько модулей, а затем переключается на настоящую корневую файловую систему, но с точки зрения ядра, система уже работает на этом этапе, и переключение является совершенно необязательным.

Программа установки запускается с виртуального диска, который инициализируется с содержимым архива initrd. Единственное требование к ядру - наличие файла с именем init либо в корне, либо ниже sbinи этот файл будет вызван.

Вы можете, например, создать полную установку, используя debootstrapсоздайте архив этого, используя cpioи использовать это как initrd - так что процесс, используемый пакетом ядра для генерации маленького initrd, действительно особый случай.

Другие вопросы по тегам