Как установить initrd.gz
Собственно, моя задача - модификация initramfs. Как минимум, я хотел бы на первых этапах запуска системы, ещё до тех этапов, когда система может вылететь в emergency mode из-за кривого fstab или SELinux, загружать некоторые модули, дабы в случае чего не включать их вручную. Разобрал /boot/initrd.img-$(uname -r) - но там папка kernel. Ни тебе init, ни /dev, ни /mnt. Уж извините, я как-то привык к классическому initrd (.cpio) .gz, из мира Android и QEMU aarch64 (я запускаю Debian arm64 так: qemu-system-aarch64 -kernel vmlinuz -initrd initrd.gz...). У меня возникла мысль: "перевести" Linux на initrd.gz. Да, заменить initrd.img (по факту cpio), содержащий папку kernel (не совсем понятно, что там. Возможно, какой-нибудь firmware), на привычный initramfs с init-ом и т д. Чтобы уже его модифицировать на свой лад. Не подскажете, куда копать? Да и я хотел бы использовать что-то в духе two_stage init: kernel -> ramdisk init -> switch_root -> systemd
Правда ещё тут я подумал: а может Linux-у на ПК и не нужен ramdisk? Сами подумайте: ramdisk нужен для нахождения и монтирования root. Так есть, по крайней мере, на ARM устройствах. А в GRUB передаётся значение root, т е rootfs уже известна заранее, а значит смысл в initrd отпадает:
set root (hd0, msdos0)
linux /boot/vmlinuz ro quiet splash
initrd /boot/initrd