我想使用普通的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。
任何解决方案?感谢
答案 0 :(得分:1)
您应该向内核cmdline提供init=
param(来自u-boot)。例如,如果您的二进制文件名是init
并且已将其放在/sbin
目录(在rootfs分区上),则应在u-boot中将init=/sbin/init
添加到内核cmdline(在bootargs
变量中。
例如,您可以执行下一步操作(在u-boot shell中,在运行bootm
或booti
命令之前):
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:
行)