如何防止内核旋转并覆盖初始文件系统?

如何防止内核旋转并覆盖初始文件系统?

如何防止内核旋转并覆盖初始文件系统?
我将哪些开关传递给内核?
我需要向 initramfs 添加任何代码吗?

我交叉编译busybox并将其安装到_install.
然后我在内核menuconfig中指向这个目录(CONFIG_INITRAMFS_SOURCE)。
我的 zImage 现在包含名为 initramfs 的 cpio 文件。
当我启动 ( u-boot bootm 0xkernel - 0xdtbBlob) 时,内核将出错并显示“无法在未知块设备上安装 rootfs”。
据我了解,内核正在寻找“真实文件系统”来覆盖“初始文件系统”。我认为这被称为'枢'
我想我想保持我的初始文件系统完好无损,至少现在是这样。
我想使用我创建并包含在 zImage 中的 initramfs。

到目前为止,我读到的所有内容似乎都是:
ramdisk(块设备)。我不想使用,因为我只有 8M 内存。
真正的文件系统。没有可用的 mmc、sd、网络。我将所有文件加载到包装成 sb 文件的内存中。
较旧的内核或做事方式。我正在使用内核 4.x 和 u-boot 2015.x

硬件:
* 嵌入式飞思卡尔 imx233
* 8M sdram
* 通过恢复模式将零键控 sb 文件加载到 sdram。
* 无 mmc、sd、网络

目标:
仅使用所需的工具创建一个小型内核和文件系统:
* 调试并使其余硬件正常工作,例如 LCD 屏幕和 USB 端口。
* 到闪存与 USB 中的文件。

谢谢

答案1

在 initramfs 的根目录中,创建一个指向 busybox 二进制文件的符号链接,名为init.例如,如果根目录是目录_install并且 busybox 二进制文件位于_install/bin/busybox

cd _install
ln -s bin/busybox init
(re-compile and copy kernel)

不需要内核命令行。内核默认/init在 initramfs 中运行*。 Busybox 作为一个多调用库,将模拟它所调用的实用程序的行为。这意味着,它现在将模拟init通常执行的inittab.如果您没有在 Busybox 构建中禁用它,它会有一个默认inittab编译进去。这个默认的将为tty您设置具有 shell 访问权限的 。

*) 内核实际上默认为linuxrcinit,但它们对于 Busybox 来说是相同的。

相关内容