一. 简介
本文总结一下目前遇到的开发板根文件系统起不来的一些原因。以方便以后遇到问题解决。
二. 开发板的根文件系统启动不了的原因
在学习 正点原子ALPHA开发板时,遇到根文件系统起不来的问题
具体问题:uboot正常启动,内核镜像(zImage)也正常启动了,最后到根文件系统起不来。
串口打印如下:
Starting kernel ...
Booting Linux on physical CPU 0x0
Linux version 4.1.15 (wangtian@wangtian-virtual-machine) (gcc version 4.9.4 (Linaro GCC 4.9-2017.01) ) #3 SMP PREEMPT Tue Nov 14 00:31:58 CST 2023
CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
....................................................
Kernel command line: console=ttymxc0,115200 ubi.mtd=5 root=ubi0:rootfs rootfstype=ubifs mtdparts=gpmi-nand:4m(u-boot),128k(env),1m(logo),1m(dtb),8m(kernel),-(rootfs);
PID hash table entries: 1024 (order: 0, 4096 bytes)
....................................................
Registering SWP/SWPB emulation handler
UBI error: cannot open mtd 5, error -19
snvs_rtc 20cc000.snvs:snvs-rtc-lp: setting system clock to 1970-01-01 16:22:45 UTC (58965)
VSD_3V3: disabling
can-3v3: disabling
ALSA device list:
No soundcards found.
UBIFS error (pid: 1): cannot open "ubi0:rootfs", error -19VFS: Cannot open root device "ubi0:rootfs" or unknown-block(0,0): error -19
Please append a correct "root=" boot option; here are the available partitions:
0100 65536 ram0 (driver?)
......................................................
1f00 524288 mtdblock0 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
random: nonblocking pool is initialized
其中关键信息如下:
UBIFS error (pid: 1): cannot open "ubi0:rootfs", error -19VFS: Cannot open root device "ubi0:rootfs" or unknown-block(0,0): error -19
因为之前在 uboot命令模式下,手动设置 bootcmd与 bootargs参数,而 bootargs参数正好是设置了nand-Flash的各个文件的分区大小,其中包括 根文件系统的。怀疑可能是设置参数命令出错。
经过验证,设置 bootargs参数的命令出错,命令的最后多输入了一个分号 ";" 所导致的。
正确设置 bootargs参数的命令如下(命令的最后没有分号):
setenv bootargs 'console=ttymxc0,115200 ubi.mtd=5 root=ubi0:rootfs rootfstype=ubifs mtdparts=gpmi-nand:4m(u-boot),128k(env),1m(logo),1m(dtb),8m(kernel),-(rootfs)'