Встраивать initramfs в существующее ядро

Можно ли встроить образ initramfs в существующее ядро, не перекомпилировав все это? У меня нет ресурсов для этого.

2 ответа

initramfs может быть встроен в ядро ​​во время сборки (конечно, это разрешено из меню конфигурации, выбрав дерево rootfs). И может быть полезен в некоторых конкретных обстоятельствах. Только обратите внимание, что после внедрения любой собственный инструмент rootfs в финальном двоичном файле может нарушить лицензию GPL. Но до тех пор, пока ваш initramfs не будет содержать только что-то из busybox, никаких проблем быть не должно.

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

initrd всегда представляет собой отдельный поток данных (файл), который загружается вместе с ядром для облегчения загрузки. Он не является обязательным, но почти всегда включается в современные дистрибутивы gnu/linux.

поэтому вам не нужно задавать себе вопрос о том, как его встроить, а как его изменить, поэтому посмотрите конфигурацию вашего загрузчика, обычно вы должны определить 3 вещи (также в основном в этом порядке)

  • образ ядра (что-то, что направляет ваш загрузчик к образу ядра (чаще всего к файлу) для загрузки его в оперативную память)
  • командная строка (строка, которая также записывается в оперативную память, чтобы ядро ​​могло получить к ней доступ и использовать ее (например, задавать параметры внутри ОС, но за ее пределами просто писать и вызывать (ассемблерный код))) (в большинстве случаев эта штука имеет некоторый корень =/dev/xy ro любой вариант
  • образ initrd (необязательный образ исходного виртуального диска, который загружается после ядра в оперативную память, затем ядро ​​использует его как виртуальный диск, который в основном используется (но, например, есть живые системы, которые полностью работают на нем) для помощи при загрузке перед root fs найден и смонтирован (например, диски работают медленно и плавно (порядок дисков, scsi-материалы, загрузка из сети, шифрование файловой системы, аварийная оболочка восстановления в случае сбоя fsck и т. д.)

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

Кстати, если вы используете grub2, не редактируйте конфигурацию напрямую, она генерируется update-grub с использованием данных в /etc/default/grub и /etc/default/grub.d/, в устаревшей версии grub вы все равно редактируете файл Menu.lst непосредственно загрузочный раздел, но grub2 для этого слишком сложен, вы все равно можете редактировать что-то напрямую, но, скорее всего, впоследствии он будет перезаписан, так что это не очень хорошая идея...

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