在Ubuntu上搭建tftp及nfs服务,并使用tftpboot启动内核使用nfs挂载根文件系统。
前几天闲来无事,调试驱动,因为开发学习使用的是SD卡启动,内核镜像和设备树文件都放在了SD中,每次调试都要插拔SD卡,略为麻烦。
忽然想到了之前移植大神的UBOOT是支持网络的,遂萌发tftp从ubuntu虚拟机中下载内核镜像和设备树,使用网络启动开发板的念头,如果能使用网络挂载根文件系统那更好了!
下面开始记录一下实现的过程
1、测试UBOOT驱动及网络环境正常
因为ITOP4412开发板的网卡是USB接口的,大神的UBOOT中要使用网卡,需要进行一些简单的操作,大致就是使网卡能正常工作。
依次输入如下命令:
usb start
usb reset
出现如下提示:
先是激活了usb驱动,然后枚举了USB总线上的设备
接下来我们准备测试网络,测试前,先要保证网卡的信息被配置正确,使用print命令查看:
MAC地址和IP地址要配置好,这里顺便我们把目标主机的地址也填好,也就是tftp服务器主机的IP。(使用setenv命令配置)
准备就绪后测试网络环境是否正常,我这里直接ping的是UBUNTU的主机IP。注意虚拟机要选择桥接模式,相当于路由器直接接了根网线到虚拟机,IP由路由器分配给虚拟机,如若ping不通,检查防火墙设置、客户端(开发板)服务器(虚拟机)是否在统一网段内。
ping主机ip。
ping 192.168.31.151
测试主机存在,网络正常,接下来就开始搭建tftp服务器。
2、配置tftp服务器
操作完成后,将内核镜像uImage和设备树dtb文件,放入tftp设置的存储目录下,准备通过UBOOT启动。
3、配置开发板uboot命令
使用以下前两个命令,可以将文件下载到内存对应地址中,使用bootm命令,可以启动镜像。这里我直接把命令写入了UBOOT的CMD中,开发板上电就能自动使用网络启动。注意,下载的文件名一定要保证是存在而且正确的…因为这个问题调试了很久。
tftpboot 0x41000000 exynos4412-itop-elite.dtb
tftpboot 0x40007000 uImage
bootm 0x40007000 - 0x41000000
UBOOT启动CMD