我正在寻求帮助来建立和运行基本的 initrd 环境。我的目标是增强我对如何创建基本 Linux 环境的了解。理想情况下,我想稍后转向嵌入式 Linux 系统,这似乎是最好的起点。
我还没有找到关于这个主题的良好的基本操作方法,因此我大部分都遵循了一些关于这个主题的半完成或不完整的教程。
以下是操作方法的链接,供您参考我迄今为止所做的工作。
- http://web.archive.org/web/20120601223451/http://blog.nasirabed.com/2012/01/minimal-linux-filesystem.html
- http://revcode.wordpress.com/2012/02/25/booting-a-minimal-busybox-based-linux-distro/
目前,当我启动环境时,我会收到 GRUB 提示符,我尝试向其中添加 grub.cfg 文件,但当系统启动并直接进入 grub 提示符时,它会被忽略。
目前要启动 initrd 环境,我必须为其提供以下命令:
set root=(hd0,msdos1)
linux /boot/bzImage
initrd /boot/rootfs.cpio.gz
boot
这将启动迷你操作系统,但会出现无法找到初始化文件(这是我的 rootfs.cpio.gz 文件的一部分,位于其结构的根目录中)的错误
。
我怎样才能解决这个 initrd 环境的问题?
答案1
当 linux 内核启动到 initramfs 文件系统时,它不会运行/sbin/init
,而是运行/init
.解决方案是将 /sbin/init 符号链接到 /init。
更新:我尝试重现您的问题,我发现您可能编译了 64 位 busybox 和 32 位 Linux 内核。因此,linux内核不知道如何执行该/init
程序,因为它是64位的。重新编译 linux,启用 64 位选项,并用它替换旧版本。另外,您需要将 /init 符号链接到 /sbin/init,正如我之前告诉过您的