Linux initrd环境设置-无法执行/init

Linux initrd环境设置-无法执行/init

我正在寻求帮助来建立和运行基本的 initrd 环境。我的目标是增强我对如何创建基本 Linux 环境的了解。理想情况下,我想稍后转向嵌入式 Linux 系统,这似乎是最好的起点。

我还没有找到关于这个主题的良好的基本操作方法,因此我大部分都遵循了一些关于这个主题的半完成或不完整的教程。

以下是操作方法的链接,供您参考我迄今为止所做的工作。

目前,当我启动环境时,我会收到 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,正如我之前告诉过您的

相关内容