OpenEdv-开源电子网

标题: linux uboot启动nfs,tftp下载loading T T T [打印本页]

作者: liuyibo    时间: 2020-2-4 18:50
标题: linux uboot启动nfs,tftp下载loading T T T
本帖最后由 liuyibo 于 2020-2-4 19:31 编辑

Linux小白最近在学习uboot移植,卡在了nfs tftp

参考《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.130章 以及 正点原子教程 还有 各种网上资料,但是依旧遇到了问题。

硬件搭建:pc机用网线直连阿尔法开发板,虚拟机桥接主机网络。虚拟机用的ubuntu 16.04


主机网络配置:设置IP地址192.168.1.2
1.关闭Window防火墙
2.禁用WIFI
3.配置主机以太网IP地址,并把IP地址写死:192.168.1.2

(, 下载次数: 0)

4.主机cmd,ipconfig如下
(, 下载次数: 0)



虚拟机网络配置:设置IP地址192.168.1.3
1.关闭防火墙 sudo ufw disable
2.虚拟机网络IP地址在 /etc/network/interfaces 文件中写死了
(, 下载次数: 0)
3.配置 /etc/resolv.conf 文件如下
(, 下载次数: 0)
4.配置 /etc/rc.local文件如下
(, 下载次数: 0)
5.终端ifconfig如下
(, 下载次数: 0)



开发板配置:设置IP地址为192.168.1.4
setenv ipaddr 192.168.1.4
setenv gatewayip 192.168.1.1
setenv ethaddr 00:04:9f:04:d2:35
setenv netmask 255.255.255.0
setenv serverip 192.168.1.3  (ubuntu地址)
saveenv
然后print,如下配置成功
(, 下载次数: 0)



网络测试:
虚拟机ping主机,测试OK
(, 下载次数: 0)
主机ping虚拟机,测试OK
(, 下载次数: 0)
开发板ping主机(192.168.1.2),测试OK
开发板ping虚拟机(192.168.1.3),测试OK
(, 下载次数: 0)

虚拟机NFS环境搭建
1. 创建NFS目录(给了所有权限):/home/lyb/linux/nfs
2. 安装sudo apt-get install nfs-kernel-server rpcbind
3. 配置 /etc/exports 文件
(, 下载次数: 0)


虚拟机TFTP环境搭建
1. 创建TFTP目录,给所有权限:/home/lyb/linux/tftpboot
2. 安装sudo apt-get install tftp-hpa tftpd-hpa
3. 配置 /etc/xinetd.d/tftp 文件
(, 下载次数: 0)
4. 配置 /etc/default/tftpd-hpa 文件
(, 下载次数: 0)



所有东东都搭建好了,然后进行nfs和tftp下载
nfs如下,loading T T T T
(, 下载次数: 0)
TFTP如下,loading T T T
(, 下载次数: 0)


然后接下来的几天一直在找为什么出错,一个出错还好说,但是两个都出错,就可能是网络传输的问题,考虑到以下几个原因:
1. 虚拟机和主机防火墙都关闭了
2. NFS和TFTP相关服务没启动
所以启动查看了相关服务的状态
sudo /etc/init.d/nfs-kernel-server start
sudo service tftpd-hpa start
sudo service xinetd start
3. 单独调试了nfs挂载,确认是成功的
sudo mount -t nfs  192.168.1.3:/home/lyb/linux/nfs  /mnt
(, 下载次数: 0)
4. 网上很多人说ubuntu18.04只支持nfs3,nfs4,而uboot默认是nfs2,于是修改
/etc/default/nfs-kernel-server文件
(, 下载次数: 0)

5. 最后考虑到是不是WINDOW的问题,我用的Win10家庭版是没有NFS服务的,
(, 下载次数: 0)
6. 也尝试了用路由器来连接开发板和笔记本,但是依然失败
最后试了好久,还是没成功,可能还是不熟悉这块,一直
LOADING: T T T T T T T T T T T T T T T T T T T
广大的网友们,有没有什么办法
小白只能继续学下去了,有空回过头来再看。









作者: 中本韭菜    时间: 2020-2-4 18:50
本帖最后由 中本韭菜 于 2020-2-14 00:13 编辑

和楼主一样的问题,另外我也试了通过主机和虚拟机ping板子是ping不通的
----------------------------------------------------
我的可以了,FYI:
我用的是centos7 修改前查看支持的版本 发现不支持 版本2:

[root@cent7-1 ~]# cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2
修改/etc/nfs.conf文件 的nfsd 段:
vers2=y

重启nfs服务:
[root@cent7-1 ~]# service nfs restart
[root@cent7-1 ~]# cat /proc/fs/nfsd/versions
+2 +3 +4 +4.1 +4.2

然后在板子上:
nfs 80800000 192.168.199.191:/home/nfs/zImage
就可以了。







作者: hejiang177    时间: 2020-2-8 21:06
兄弟,我问题跟你一样,在开发板上单独mount时可以挂载到板子上nfs,但在uboot里用nfs下载或挂根文件系统就不行,你的问题 解决了么
作者: liuyibo    时间: 2020-2-9 15:37
hejiang177 发表于 2020-2-8 21:06
兄弟,我问题跟你一样,在开发板上单独mount时可以挂载到板子上nfs,但在uboot里用nfs下载或挂根文件系统就 ...

没有    死活不行,,顶一波
作者: hejiang177    时间: 2020-2-9 16:33
liuyibo 发表于 2020-2-9 15:37
没有    死活不行,,顶一波

兄弟,我的好了,setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw -o nolock nfsroot=192.168.1.108:/home/hejiang/Develop/nfs_root/alpha_imx6ull ip=192.168.1.10:192.168.1.108:192.168.1.1:255.255.255.0::eth0ff'                  
另外你可以先启动开发板后mount ubuntu的nfs到开发板的Mnt目录下看看能不能成功
作者: 仰望星空之云    时间: 2020-2-11 20:01
本帖最后由 仰望星空之云 于 2020-2-11 20:05 编辑

看整个操作过程没什么问题。可以用原子编译好的uboot试试。要是原子的可以,那么应该是自己移植的uboot有问题了,可以给出uboot文件,大家试试

作者: liuyibo    时间: 2020-2-21 16:48
中本韭菜 发表于 2020-2-4 18:50
和楼主一样的问题,另外我也试了通过主机和虚拟机ping板子是ping不通的
-------------------------------- ...

老哥,试了下还是不行。。。
+2 +3 +4 +4.1 +4.2
作者: liuyibo    时间: 2020-2-21 16:50
仰望星空之云 发表于 2020-2-11 20:01
看整个操作过程没什么问题。可以用原子编译好的uboot试试。要是原子的可以,那么应该是自己移植的uboot有问 ...

用的就是原子的uboot,也移植了下NXP的UBOOT,试了mfg_tool下进去的uboot,都不行(苦笑)
作者: liuyibo    时间: 2020-2-21 16:53
hejiang177 发表于 2020-2-9 16:33
兄弟,我的好了,setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw -o nolock nfsroot=192.168 ...

兄dei,你的意思是说bootargs变量要配置嘛,我试了下还是不行欸,感觉就是我哪里的网络出了问题,我现在在用EMMC启动,那你有试过tftp之前可以吗,现在呢
作者: liuyibo    时间: 2020-2-21 16:54
中本韭菜 发表于 2020-2-4 18:50
和楼主一样的问题,另外我也试了通过主机和虚拟机ping板子是ping不通的
-------------------------------- ...

哥们,你有试过tftp下载吗,之前可以吗,现在呢
作者: liuyibo    时间: 2020-2-22 22:25
       后续:在小梁姐姐的帮助下,终于发现了问题所在,由于之前不知道在做什么项目的时候,下载了iptables。
       查贴吧看到:在ubuntu中,为了简化iptables的规则添加,在上层封装了UFW的防火墙,但是这个只涉及到防火墙的规则,而不涉及到路由转发等功能。也就是说ufw是管理Linux防火墙的,旨在为用户提供易于使用的界面,而iptables用于设置,维护和检查Linux内核中IPv4包过滤规则的表。
       我在做的时候,使用的是iptables -F命令清除了所有规则,但是每次启动开机他又会复位,上网查了下iptables的规则修改,发现还挺麻烦的,索性直接apt-get remove删掉了。现在终于可以开始通过网路下载东西到uboot和linux了。
       因为我用的时候是开发板和电脑直连,后来做了这么久,发现用路由器他不香嘛。
       最后感谢小梁姐!


作者: aixin35    时间: 2020-2-23 18:46
我的可以了

用路由器连接的


U-Boot 2016.03 (Feb 17 2020 - 20:49:01 +0800)

CPU:   Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 42C
Reset cause: POR
Board: MX6ULL 14x14 EVK
I2C:   ready
DRAM:  512 MiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
unsupported panel ATK-LCD-7-1024x600
In:    serial
Out:   serial
Err:   serial
switch to partitions #0, OK
mmc0 is current device
Net:   FEC1
Normal Boot
Hit any key to stop autoboot:  0
=> tftp 80800000 zImage
FEC1 Waiting for PHY auto negotiation to complete... done
Using FEC1 device
TFTP from server 192.168.31.175; our IP address is 192.168.31.50
Filename 'zImage'.
Load address: 0x80800000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ##########################################################
         1.9 MiB/s
done
Bytes transferred = 5615712 (55b060 hex)
=> tftp imx6ull-alientek-emmc.dtb
Using FEC1 device
TFTP from server 192.168.31.175; our IP address is 192.168.31.50
Filename 'imx6ull-alientek-emmc.dtb'.
Load address: 0x80800000
Loading: ###
         796.9 KiB/s
done
Bytes transferred = 36727 (8f77 hex)
=> bootz 80800000 - 83000000









作者: woleiyayaya    时间: 2020-2-24 15:26
u-boot NFS下载文件报错:Loading: *** ERROR: File lookup fail解决方法(亲测有效)
https://blog.csdn.net/polaris_zgx/article/details/103571725
作者: hejiang177    时间: 2020-2-29 21:48
liuyibo 发表于 2020-2-22 22:25
后续:在小梁姐姐的帮助下,终于发现了问题所在,由于之前不知道在做什么项目的时候,下载了iptable ...

我的后来发现是要设置为tftp启动内核才可以挂nfs文件系统
作者: 仰望星空之云    时间: 2020-3-19 13:01
hejiang177 发表于 2020-2-29 21:48
我的后来发现是要设置为tftp启动内核才可以挂nfs文件系统

可以不用TFTP加载内核也行的,加载EMMC里的或者SD卡里的内核都行只是uboot下bootcmd指令要改一下
作者: hejiang177    时间: 2020-3-20 09:19
仰望星空之云 发表于 2020-3-19 13:01
可以不用TFTP加载内核也行的,加载EMMC里的或者SD卡里的内核都行只是uboot下bootcmd指令要改一下

是哎,反正后来可以了,就没管他,你是怎么设置bootcmd的呢?
作者: 仰望星空之云    时间: 2020-3-21 12:51
本帖最后由 仰望星空之云 于 2020-3-27 20:09 编辑
hejiang177 发表于 2020-3-20 09:19
是哎,反正后来可以了,就没管他,你是怎么设置bootcmd的呢?

大概可以这样设置,其中指令里的路径和IP是我的环境里的,IP地址和路径就根据自己的来
EMMC启动,uboot、内核和设备树加载的是EMMC里的,文件系统挂载的是NFS里的:
  1. setenv mmcargs 'setenv bootargs console=${console},${baudrate} root=/dev/nfs rw nfsroot=192.168.1.185:/home/MY/NFS/rootfs ip=192.168.1.110:192.168.1.185:192.168.1.1:255.255.255.0::eth0:off'
复制代码
不分从NAND或者TF卡启动uboot:TFTP加载内核、设备树,挂载的是NFS的文件系统:
  1. setenv bootcmd 'tftp ${loadaddr} zImage;tftp ${fdt_addr} imx6ull-14x14-nand-4.3-800x480-c.dtb; bootz ${loadaddr} - ${fdt_addr};'

  2. setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.1.185:/home/MY/NFS/rootfs ip=192.168.1.110:192.168.1.185:192.168.1.1:255.255.255.0::eth0:off'
复制代码



作者: hejiang177    时间: 2020-3-27 15:54
仰望星空之云 发表于 2020-3-21 12:51
大概可以这样设置,其中指令里的路径是真多我的环境里的。
EMMC启动,uboot、内核和设备树加载的是EMMC里 ...

好的,谢谢我这边试一下
作者: kongqingxin    时间: 2020-12-11 19:53
我的也是,按照手册 tftp可以将zImage下载到开发板
nfs 就不行 一直显示 loading T T T T T T
作者: 橙子熊    时间: 2020-12-11 22:38
kongqingxin 发表于 2020-12-11 19:53
我的也是,按照手册 tftp可以将zImage下载到开发板
nfs 就不行 一直显示 loading T T T T T T

这里有个搭建网络环境的文档,可以根据自己的环境,按照文档对应的章节搭建nfs

作者: kongqingxin    时间: 2020-12-12 17:14
橙子熊 发表于 2020-12-11 22:38
这里有个搭建网络环境的文档,可以根据自己的环境,按照文档对应的章节搭建nfs

我修改完exports之后,利用showmount -e 命令查看显示配置不成功?

作者: cool3777612    时间: 2021-1-29 20:06
橙子熊 发表于 2020-12-11 22:38
这里有个搭建网络环境的文档,可以根据自己的环境,按照文档对应的章节搭建nfs

按照这个操作
作者: 钟美华    时间: 2021-2-9 15:51
liuyibo 发表于 2020-2-21 16:48
老哥,试了下还是不行。。。
+2 +3 +4 +4.1 +4.2

有可能udp和tcp没打开,反正我在用arch的时候,默认是没有打开的,在nfs.conf这个文件的nfsd段可能会把有 #tcp=y和#udp=y,这两个注释取消掉就可以了

作者: cjhk    时间: 2021-2-13 11:18
请问   我手头上有4套正点原子的开发板,挂载根文件系统,提示IP冲突
这个怎么解决呢?
作者: pdwdzz    时间: 2021-3-5 21:00
kongqingxin 发表于 2020-12-11 19:53
我的也是,按照手册 tftp可以将zImage下载到开发板
nfs 就不行 一直显示 loading T T T T T T

我也一样。tftp没问题 nfs一直loading T T T. 老哥解决了吗?

作者: 永巷24号    时间: 2021-3-7 20:20
pdwdzz 发表于 2021-3-5 21:00
我也一样。tftp没问题 nfs一直loading T T T. 老哥解决了吗?

应该是你的ubuntu支持的nfs的版本里咩有uboot使用的V2版本,只需要去修改ubuntu配置文件即可
  1. sudo vi /etc/default/nfs-kernel-server
复制代码
,然后去里面把V2添加进去,具体操作去搜一搜把 不好写
作者: lwb1    时间: 2021-5-9 15:05
中本韭菜 发表于 2020-2-4 18:50
和楼主一样的问题,另外我也试了通过主机和虚拟机ping板子是ping不通的
-------------------------------- ...

老哥,改完配置文件还是显示
-2 +3 +4 +4.1 +4.2
仍然不能通过nfs下载
作者: buhui    时间: 2021-8-18 11:33
也是遇到了   
作者: zhancheng11    时间: 2022-2-21 21:39
可以使用 sudo service nfs-kernel-server status 命令先确认是哪一部分问题。如果是第一个红框fail,应该是etc/exports中的共享目录填写错了。
如果是第二个红框failed.应该是 /etc/default/nfs-kernel-server文件中的配置信息错了。反复检查一下。

见附件

使用sudo gedit /etc/default/nfs-kernel-server命令进行编辑。配置完后,用sudo service nfs-kernel-server restart重启。
参考:https://blog.csdn.net/polaris_zgx/article/details/103571725
我是因为RPCNFSDCOUNT="-V 2 8"输入错误所致。
作者: pzw90h    时间: 2022-4-29 09:56
中本韭菜 发表于 2020-2-4 18:50
和楼主一样的问题,另外我也试了通过主机和虚拟机ping板子是ping不通的
-------------------------------- ...

........大哥我用的也是centos,但是修改了nfs.conf文件之后重启nfs,在查询版本还是-2,很郁闷,求解
作者: kongbai123    时间: 2023-3-9 14:55
我也这样,现在按照这个方法解决了https://blog.csdn.net/baidu_3959 ... tm_relevant_index=3

作者: SimonFu    时间: 2023-12-11 19:46
kongbai123 发表于 2023-3-9 14:55
我也这样,现在按照这个方法解决了https://blog.csdn.net/baidu_39594043/article/details/128638251?spm=1 ...

这个方法对我的系统也有效。希望不要沉底
作者: xh680    时间: 2024-7-7 14:57
https://blog.csdn.net/Acetylchol ... -blog-111322212.235^v43^pc_blog_bottom_relevance_base3&spm=1001.2101.3001.4242.1&utm_relevant_index=1
作者: 13913310764    时间: 2024-7-20 08:30
我也遇到了该问题,应该是ubuntu内核版本不兼容造成的,我试过18.04版本以后的都有可能出现该问题,用老版本我电脑的N卡又不兼容,卡顿,我的处理方式:
ubuntu 22.04版本:
tftp出现T T T ,关闭防火墙后可以正常挂在:sudo ufw disable
nfs 无法 nfs 808000000 192.168.1.100:/home/user/linux/zImage
但是可以在bootargs中使用,用这个命令可以正常挂在setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.100:/home/user/linux/nfs/bootfs,v3,proto=tcp rw ip=192.168.1.110:192.168.1.100:192.168.1.1:255.255.255.0::eth0ff'
所以我挂在方式:zImage+设备树  采用tftp挂载   根文件采用nfs挂在。







欢迎光临 OpenEdv-开源电子网 (http://openedv.com/) Powered by Discuz! X3.4