使用静态编译的C文件作为rootfs

时间:2015-05-26 11:53:08

标签: linux-kernel cross-compiling u-boot rootfs

我想使用普通的rootfs而不是静态编译的 hello_world.c 文件启动我的imx53-qsb主板,换言之, hello_world_static.out < / em>的。 为了达到这个目的,我写了一个静态交叉编译的 hello_world.c 文件,并把它放在我的SD卡的 mmcblk0p1 ext4 分区中。我将 uImage 和我的 u-boot.imx 放在mmcblk0中。启动我的系统后,我得到了一个内核恐慌

  

内核恐慌 - 未同步:未找到初始化。尝试将init =选项传递给内核。有关指导,请参阅Linux Documentation / init.txt。

任何解决方案?感谢

1 个答案:

答案 0 :(得分:1)

您应该向内核cmdline提供init= param(来自u-boot)。例如,如果您的二进制文件名是init并且已将其放在/sbin目录(在rootfs分区上),则应在u-boot中将init=/sbin/init添加到内核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= param)

[2] u-boot README file(寻找Boot Linux:行)

[3] Documentation/init.txt