一:问题描述
如果挂载NFS时卡死在这里:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
random: nonblocking pool is initialized
二,解决方案
如果你使用的是Ubuntu16.04版本挂载NFS失败,首先检查你
的bootcmd和bootargs是否配置正确,ping Ubuntu是否是成功如下图:
我的配置如下:注意IP地址和文件目录需要根据自己的具体设置进行修改。目录格式为
setenv bootargs 'console=开发板串口,波特率 root=挂载方式 nfsroot=虚拟机 IP 地址:文件系统路径,proto=传输协议 读写权限 ip=开发板 IP 地址:虚拟机 IP 地址:网关地址:子网掩码::开发板网口:off'
saveenv
setenv bootcmd 'tftp 80800000 zImage;tftp 83000000 imx6ull-alientek-emmc.dtb;bootz 80800000 - 83000000'
saveenv
setenv bootargs 'console=ttymxc0,115200 rw nfsroot=192.168.1.66:/home/alientek/linux/nfs/rootfs ip=192.168.1.50:192.168.1.66:192.168.1.1:255.255.255.0::eth0:off'
saveenv
然后在正点原子的如下文件夹:
正点原子阿尔法Linux开发板(A盘)-基础资料\08、系统镜像.zip\08、系统镜像\02、教程系统镜像\02、V2.4版本及以后的底板\02、kernel镜像
将里面的imx6ull-alientek-emmc.dtb和zImage把Ubuntu里面的linux/tftp下面的imx6ull-alientek-emmc.dtb和zImage替换掉。即可编译成功。
注意:以上挂载的是 Ubuntu16 系统下的共享目录,如果是挂载 Ubuntu18 系统及更高版本
的系统下的 nfs 共享目录, uboot 无法通过 nfs 启动 Ubuntu 系统内的共享目录。 需要在
/etc/default/nfs-kernel-server 文件进行修改,改好了保存退出,然后重启一下 nfs 就可以了, 或
者报错 Loading:*ww ERROR:File lookup fail 的也是按照下面的方法来解决。
然后配置完重新启动nfs服务。
sudo service nfs-kernel-server restart
或者修改内核配置,在bootargs中指定nfs版本,加上v3。
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.1.66:/home/alientek/linux/nfs/rootfs,nfsvers=3 proto=tcp ip=192.168.1.50:192.168.1.66:192.168.1.1:255.255.255.0::eth0:off'
也可解决问题。