![如何在没有 initramfs 的情况下启动 linux?](https://linux22.com/image/73482/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%20initramfs%20%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%90%AF%E5%8A%A8%20linux%EF%BC%9F.png)
我正在寻找一种无需 initramfs 即可启动现有 Linux 内核的方法。根据这个链接只需编辑即可/boot/grub2/grub.cfg
。但如果我尝试这个配置
menuentry 'Fedora Linux, no initramfs' {
set root='hd0,msdos1'
linux /vmlinuz-3.3.4-5.fc17.i686.PAE rootfstype=ext4 root=/dev/sda2 rd.md=0 rd.lvm=0 rd.dm=0 SYSFONT=True KEYTABLE=us rd.luks=0 LANG=en_US.UTF-8
}
引导过程在内核尝试挂载 initramfs 时停止并出现内核恐慌。我是否必须在编译过程中告诉我我不需要 initramfs?我发现的唯一配置选项是CONFIG_INITRAMFS_SOURCE
已经设置为CONFIG_INITRAMFS_SOURCE=""
.
我知道有一个类似的问题但它缺乏对如何在实践中做到这一点的解释。
答案1
Initramfs 具有操作系统启动系统所需的所有信息。它具有所有文件系统信息(例如来自哪些设备以及哪些设备具有系统启动时需要安装的 root fs)以及内容是特定于内核生成的。您可以从另一个应该包含所有需要信息的映像启动。
您尝试使用的 Vmlinux 是静态链接映像。它无法用于系统启动。据我所知,它主要用于符号生成和调试。
并不是说它不能用于启动,但在使用它之前需要将其设置为可启动。因为它没有启动扇区信息。