linux内核-使用一个静态编译的C文件作为rootfs



我想引导我的imx53-qsb板使用不是一个正常的rootfs,而是一个静态地编译的hello_world.c文件,换句话说,一个hello_world_static.out。为了实现这一点,我编写了一个hello_world.c文件,对其进行静态交叉编译,并将其放在sd卡的mmcblk0p1 ext4分区中。我把我的uImage和我的u-boot。Imx 中的mmcblk0。启动系统后,我得到了内核panic:

Kernel panic - not syncing: No init found。尝试将init= option传递给内核。参考Linux Documentation/init.txt获取指导。

有解决方案吗?由于

您应该为内核cmdline(从u-boot)提供init=参数。例如,如果您的二进制文件名是init,并且您已经将其放入/sbin目录(在您的rootfs分区上),那么您应该将init=/sbin/init添加到u-boot中的内核cmdline(在bootargs变量中)。

例如,您可以这样做(在u-boot shell中,在运行bootmbooti命令之前):

setenv bootargs root=/dev/mmcblk0p1 rw rootfstype=ext4 init=/sbin/init

另外,检查您是否真的在mmcblk0p1上有您的rootfs。通常mmcblk0p1是FAT32分区,其中包含要复制到RAM的引导加载程序文件和映像。Rootfs通常位于mmcblk0p2(并格式化为ext4)。

详细信息请参见:

[1] Documentation/kernel-parameters.txt(查找init=参数)

[2] u-boot README文件(查找Boot Linux:行)

[3]文档/init.txt

相关内容

  • 没有找到相关文章

最新更新