OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6363|回复: 17

关于使用NFS挂载,测试根文件系统rootfs出现的问题,无法进入根文件系统目录

[复制链接]

3

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-3-27
在线时间
36 小时
发表于 2020-4-4 16:46:45 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 MrWeng 于 2020-4-4 17:15 编辑

在学习例程38.3 根文件系统初步测试时,参考例程的bootargs的格式,根据我的网络环境设定了bootargs,我的bootargs设置命令如下:
  1. setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.31.7:/home/mrweng/linux/nfs/rootfs ip=192.168.31.66:192.168.31.7:192.168.31.1:255.255.255.0::eth0:off'
复制代码
我的开发板ip:192.168.31.66
gatewayip:192.168.31.1
serverip:192.168.31.7
子网掩码:255.255.255.0
在Ubuntu 16.04下开启了NFS,其中
  1. /home/mrweng/linux/nfs
复制代码
是我的NFS文件夹,nfs的配置文件/etc/exports内容如下: QQ截图20200404163328.jpg
根据教程,设定完的bootargs变量如下:
QQ截图20200404164059.jpg
启动板子后,tftp能正常工作,linux内核能启动,但是会出现以下问题:
QQ截图20200404164425.jpg
网上找了很多解决办法都没有解决,请大神帮忙

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2020-4-4 18:34:43 | 显示全部楼层
ubuntu什么版本的呢?如果是18版本的,按照这个链接的文末最后提到的来改:
http://www.openedv.com/forum.php ... 2907&extra=page%3D2
最后检查一下bootargs,这个指令常常因为格式的问题挂载不上
回复

使用道具 举报

3

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-3-27
在线时间
36 小时
 楼主| 发表于 2020-4-4 20:10:43 | 显示全部楼层
仰望星空之云 发表于 2020-4-4 18:34
ubuntu什么版本的呢?如果是18版本的,按照这个链接的文末最后提到的来改:
http://www.openedv.com/forum ...

按照你的方法我通过emmc启动了板子能成功挂载Ubuntu服务器的nfs文件,换成SD卡启动,设置bootargs的命令我也检查过了,没有什么问题,但是还是没法挂载nfs,以下代码是我的环境打印输出的信息,其中boocmd是可以通过tftp读取得到Ubuntu服务器的zImage和dtb文件,但是最终还是没法挂载nfs根文件系统,我的Ubuntu版本号是16.04,通过网上的方式修改nfs版本兼容的方式还是解决不了
  1. baudrate=115200
  2. board_name=EVK
  3. board_rev=14X14
  4. boot_fdt=try
  5. bootargs=console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.31.7:/home/mrweng/linux/nfs/rootfs ip=192.168.31.66:192.168.31.7:192.168.31.1:255.255.255.0::eth0:off
  6. bootcmd=tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000
  7. bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
  8. bootdelay=3
  9. bootfile=imx6ull-14x14-evk.dtb
  10. bootscript=echo Running bootscript from mmc ...; source
  11. console=ttymxc0
  12. ethact=FEC1
  13. ethaddr=00:04:9f:04:d2:35
  14. ethprime=FEC
  15. fdt_addr=0x83000000
  16. fdt_file=imx6ull-14x14-evk.dtb
  17. fdt_high=0xffffffff
  18. findfdt=if test $fdt_file = undefined; then if test $board_name = EVK && test $board_rev = 9X9; then setenv fdt_file imx6ull-9x9-evk.dtb; fi; if test $board_name = EVK && test $board_rev = 14X1                                         4; then setenv fdt_file imx6ull-14x14-evk.dtb; fi; if test $fdt_file = undefined; then echo WARNING: Could not determine dtb to use; fi; fi;
  19. gatewayip=192.168.31.1
  20. get_cmd=dhcp
  21. image=zImage
  22. initrd_addr=0x83800000
  23. initrd_high=0xffffffff
  24. ip_dyn=yes
  25. ipaddr=192.168.31.66
  26. loadaddr=0x80800000
  27. loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};
  28. loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
  29. loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
  30. mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.file=/fat g_mass_storage.ro=1 g_mass_storage.idVendo                                         r=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" clk_ignore_unused
  31. mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot}
  32. mmcautodetect=yes
  33. mmcboot=echo Booting from mmc ...; run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; t                                         hen bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
  34. mmcdev=0
  35. mmcpart=1
  36. mmcroot=/dev/mmcblk0p2 rootwait rw
  37. netargs=setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp
  38. netboot=echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${image}; if test ${boot_fdt} = yes || test ${boot_fd                                         t} = try; then if ${get_cmd} ${fdt_addr} ${fdt_file}; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; f                                         i;
  39. netmask=255.255.255.0
  40. panel=TFT43AB
  41. script=boot.scr
  42. serverip=192.168.31.7

  43. Environment size: 2672/8188 bytes
复制代码


回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2020-3-28
在线时间
6 小时
发表于 2020-4-5 22:45:30 | 显示全部楼层
楼主,问题解决了吗我也是这个问题,nfs到文件系统后无法挂载上去
回复

使用道具 举报

0

主题

58

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2381
金钱
2381
注册时间
2017-1-15
在线时间
316 小时
发表于 2020-4-12 21:40:52 | 显示全部楼层
我也遇到了相同的问题,请问楼主解决了吗
回复

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2020-4-13 11:46:36 | 显示全部楼层
lf19880813 发表于 2020-4-12 21:40
我也遇到了相同的问题,请问楼主解决了吗

重启一下nfs服务
想思考的时候,有时还可以用屁股,QQ 1252699831
回复

使用道具 举报

0

主题

58

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2381
金钱
2381
注册时间
2017-1-15
在线时间
316 小时
发表于 2020-4-14 08:21:24 | 显示全部楼层

都试过了 还是没用 最近使用开发手册的源码去测试 发现还是有问题 我再试一下重启nfs服务看看
回复

使用道具 举报

18

主题

107

帖子

1

精华

高级会员

Rank: 4

积分
570
金钱
570
注册时间
2013-11-28
在线时间
51 小时
发表于 2020-4-17 02:23:02 | 显示全部楼层
看看是不是/etc/fstab文件的问题,以下供参考
#<file system> <mount point>         <type>         <options> <dump> <pass>
proc                 /proc                 proc         defaults   0       0
tmpfs                 /tmp                 tmpfs         defaults   0            0
sysfs                 /sys                 sysfs         defaults   0       0
学习只为了路程走得更远....!
回复

使用道具 举报

18

主题

107

帖子

1

精华

高级会员

Rank: 4

积分
570
金钱
570
注册时间
2013-11-28
在线时间
51 小时
发表于 2020-4-17 02:24:38 | 显示全部楼层
看看是不是/etc/fstab文件的问题,以下供参考:
#<file system> <mount point>         <type>         <options> <dump> <pass>
proc                 /proc                 proc         defaults   0       0
tmpfs                 /tmp                 tmpfs         defaults   0            0
sysfs                 /sys                 sysfs         defaults   0       0
学习只为了路程走得更远....!
回复

使用道具 举报

19

主题

49

帖子

0

精华

高级会员

Rank: 4

积分
728
金钱
728
注册时间
2015-8-20
在线时间
58 小时
发表于 2020-4-18 20:15:18 | 显示全部楼层
你的问题解决了吗,我也是这样的!
试了很多办法就是不通啊!
回复

使用道具 举报

19

主题

49

帖子

0

精华

高级会员

Rank: 4

积分
728
金钱
728
注册时间
2015-8-20
在线时间
58 小时
发表于 2020-4-19 23:53:05 | 显示全部楼层
NFS根文件系统挂不上 的根本原因算是找到了!!!
http://www.openedv.com/forum.php ... 6&fromuid=39713
(出处: OpenEdv-开源电子网)
回复

使用道具 举报

19

主题

49

帖子

0

精华

高级会员

Rank: 4

积分
728
金钱
728
注册时间
2015-8-20
在线时间
58 小时
发表于 2020-4-19 23:53:38 | 显示全部楼层
NFS根文件系统挂不上 的根本原因算是找到了!!!
http://www.openedv.com/forum.php ... 6&fromuid=39713
(出处: OpenEdv-开源电子网)
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2020-5-16
在线时间
5 小时
发表于 2020-5-18 20:33:42 | 显示全部楼层
哇, 网上找了半天资料,最后找到了楼上老哥的办法 http://www.openedv.com/forum.php ... 6&fromuid=39713 , 但我只是在原有bootargs参数中加了proto=tcp ,也就是从
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.31.112:/home/tim/linux/nfs/rootfs ip=192.168.31.111:192.168.31.112:192.168.31.1:255.255.255.0::eth0ff'
变成了
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.31.112:/home/tim/linux/nfs/rootfs proto=tcp ip=192.168.31.111:192.168.31.112:192.168.31.1:255.255.255.0::eth0ff'
就可以了,请各位尝试
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2020-5-16
在线时间
5 小时
发表于 2020-5-18 20:40:11 | 显示全部楼层
哇,在网上查了半天, 有说是NFS版本问题的,有说是防火墙的, 有说是什么端口大于1024的,都没解决,最后找到楼上老哥的http://www.openedv.com/forum.php ... 6&fromuid=39713, 但我没处理什么防火墙,就只加了他命令中标黄的 proto=tcp 就成功, 也就是说将
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.31.112:/home/tim/linux/nfs/rootfs ip=192.168.31.111:192.168.31.112:192.168.31.1:255.255.255.0::eth0ff'
变成
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.31.112:/home/tim/linux/nfs/rootfs proto=tcp ip=192.168.31.111:192.168.31.112:192.168.31.1:255.255.255.0::eth0ff'

请各位尝试
顺便一提我的Ubuntu版本是18.04
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2020-5-16
在线时间
5 小时
发表于 2020-5-18 21:02:25 | 显示全部楼层
恩, 刚刚又 测试了一下NFS版本是否会影响,答案是会影响。
网上提到说Ubuntu17版本之后, NFS默认启动 版本 3以上的版本,而uboot默认使用版本2,会导致无法连接。
你可以先通过
  1. sudo cat /proc/fs/nfsd/versions
复制代码

查看你的系统是否启用了NFS版本2
如果是
-2 +3 +4 +4.1 +4.2
说明没有。
所以可做如下修改
  1. sudo vi /etc/default/nfs-kernel-server
复制代码

在其中最后加上
  1. RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"
复制代码

然后重启NFS服务
  1. sudo vi /etc/default/nfs-kernel-server
复制代码

然后在查看
  1. sudo cat /proc/fs/nfsd/versions
复制代码

应该得到
+2 +3 +4 +4.1 +4.2
这时,在加上前面说的,需要使用 proto=tcp 协议,就 可以了, 至少我的可以了。
回复

使用道具 举报

0

主题

134

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2020-5-8
在线时间
20 小时
发表于 2020-5-19 20:03:13 | 显示全部楼层
楼主,你试试这个,这个总结的很好,这个链接里上面的一部分问题都总结出来了:
http://www.openedv.com/forum.php ... &extra=page%3D2
回复

使用道具 举报

2

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2020-1-15
在线时间
39 小时
发表于 2020-6-28 18:26:59 | 显示全部楼层
就是要加    proto=tcp   ,我这边解决了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 14:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表