报错代码
[ 2.678723] IP-Config: Complete:
[ 2.683406] device=eth0, hwaddr=42:bc:a7:d0:ff:c9, ipaddr=192.168.10.10, mask=255.255.255.0, gw=192.168.10.1
[ 2.693601] host=192.168.10.10, domain=, nis-domain=(none)
[ 2.699611] bootserver=192.168.10.100, rootserver=192.168.10.100, rootpath=
[ 2.707865] ALSA device list:
[ 2.709948] No soundcards found.
[ 2.716526] mmcblk1: p1 p2
[ 149.519106] VFS: Unable to mount root fs via NFS, trying floppy.
[ 149.524322] VFS: Cannot open root device "nfs" or unknown-block(2,0): error -6
[ 149.530953] Please append a correct "root=" boot option; here are the available partitions:
解决方法
1.查看NFS服务端是否配置正确
(1)使用showmount -e命令查看挂载目录是否正确
book@100ask:~$ showmount -e
Export list for 100ask:
/home/book/alientek_linux/nfs *
(2)ls -o 共享目录 命令查看共享目录是否赋予读写权限
book@100ask:~/alientek_linux$ ls -o nfs/
总用量 7872
-rwxrwxr-x 1 book 12332 Dec 21 10:02 ap3216cApp
-rw-rw-r-- 1 book 227324 Dec 21 05:17 ap3216c.ko
-rwxrwxr-x 1 book 12220 Dec 17 11:15 ledApp
-rw-rw-r-- 1 book 219780 Dec 18 00:04 led.ko
-rw-r--r-- 1 root 45 Jan 1 10:03 modules.alias
-rw-r--r-- 1 root 12 Jan 1 10:03 modules.alias.bin
-rw-r--r-- 1 root 0 Jan 1 10:03 modules.builtin.bin
-rw-r--r-- 1 root 20 Jan 1 10:03 modules.dep
-rw-r--r-- 1 root 108 Jan 1 10:03 modules.dep.bin
-rw-r--r-- 1 root 0 Jan 1 10:03 modules.devname
-rw-r--r-- 1 root 55 Jan 1 10:03 modules.softdep
-rw-r--r-- 1 root 49 Jan 1 10:03 modules.symbols
-rw-r--r-- 1 root 12 Jan 1 10:03 modules.symbols.bin
drwxrwxrwx 13 book 4096 Jan 30 21:10 rootfs
-rw-rw-r-- 1 book 74917 Dec 21 05:40 stm32mp157d-atk.dtb
-rw-rw-r-- 1 book 74357 Dec 21 05:40 stm32mp157d-atk-hdmi.dtb
-rw-rw-r-- 1 book 75209 Dec 21 09:42 stm32mp157d-atk-mipi.dtb
-rwxrw-rw- 1 book 7311904 Jan 30 2023 uImage
2.查看bootargs环境变量 命令是否写错
我的bootargs环境变量设置命令为:
setenv bootargs 'root=/dev/nfs nfsroot=192.168.10.100:/home/book/alientek_linux/nfs,proto=tcp rw ip=192.168.10.10:192.168.10.100:192.168.10.1:255.255.255.0::eth0:off'
uboot界面输入print bootargs命令查看
STM32MP> print bootargs
bootargs=root=/dev/nfs nfsroot=192.168.10.100:/home/book/alientek_linux/nfs/rootfs,proto=tcp rw ip=192.168.10.10:192.168.10.100:192.168.10.1:255.255.255.0::eth0:off
3.bootargs 环境变量没有传递给内核
bootargs 环境变量的值会传递给内核作为命令行(command line)参数, Linux 内核启动的时候会打印出命令行参数,有下图输出说明bootargs 环境变量已经正确传递给内核
4.根文件系统中dev文件下没有设置console和null节点(我遇到的)
使用下面命名在文件系统的/dev目录下生成console 和 null 节点
book@100ask:~/alientek_linux/nfs/rootfs/dev$ sudo mknod console c 5 1
[sudo] book 的密码:
book@100ask:~/alientek_linux/nfs/rootfs/dev$ sudo mknod null c 1 3
参考文章:Linux根文件之系统制作流程