rootfs根文件系统挂载uboot配置
开发板启动后,串口打印 Kernel panic - not syncing: VFS: Unable to mount root fs on unknownblock 以后就停止了,这个是开发板找不到文件系统报内核恐慌 Kernel panic 提示。
如果需要挂载文件系统,以下进行分情况讲解:
从 SD 卡或者 EMMC 启动 uboot,需要挂载 EMMC 里的文件系统:
如果挂载的是 EMMC 的文件系统,那么在 uboot 下执行以下指令,注意执行以下指令的前提是 EMMC 里已经烧录了文件系统了(原子出货的时候已经将 Linux 系统烧录到 EMMC 了):setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw' saveenv
从 SD 卡或者 EMMC 启动 uboot,需要挂载 SD 卡里的文件系统(前提是 SD 卡里已经有
文件系统)setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait rw' saveenv
从 SD 卡或者 EMMC 启动 uboot,需要挂载 NFS 里的文件系统(前提是 NFS 开发环境已经搭建好,文件系统已经在 ubuntu 的 NFS 目录里解压好)
setenv bootargs 'console=ttymxc0,115200 \ root=/dev/nfs rw \ nfsroot=192.168.1.25:/home/MY/NFS/rootfs \ ip=192.168.1.110:192.168.1.25:192.168.1.1:255.255.255.0::eth0:off' saveenv
以上指令中, ubuntu 的 IP 地址是 192.168.1.25,开发板的 IP 地址是 192.168.1.110,网关是192.168.1.1,子网掩码是 255.255.255.0, ubuntu 上 NFS 文件系统的目录是/home/MY/NFS/rootfs.
在 NFS 挂载文件系统操作上,要注意以上的 IP 地址不能写错,指令格式也不能写错, NFS文件系统目录要正确,如果不确定自己的NFS目录是什么,可以在ubuntu上执行指令showmount-e 查看。执行指令 showmount -e 查看 NFS 共享目录是/home/MY/NFS,在这个目录下的 myrootfs就存放我的文件系统,所以我的文件系统目录是/home/MY/NFS/myrootfs。
默认情况下,通过SDK卡启动的uboot中mmcroot参数如下:
=> printenv mmcroot
mmcroot=/dev/mmcblk0p2 rootwait r
=> printenv bootcmd
bootcmd=run findfdt;mmc dev ${mmcdev};mmc dev ${mmcdev}; if mmc rescan; then if run loadbootscript; then run bootscript; else if run loadimage; then run mmcboot; else run netboot; fi; fi; else run netboot; fi
根文件系统打包
zzmt@zzmt:~/Desktop/rootfs/installrootfs$ ls
bin lib linuxrc sbin usr
zzmt@zzmt:~/Desktop/rootfs/installrootfs$ tar -vcjf rootfs.tar.bz2 *
...
zzmt@zzmt:~/Desktop/rootfs/installrootfs$ ls
bin lib linuxrc rootfs.tar.bz2 sbin usr