1、 nfs命令
在uboot中使用nfs命令将Ubuntu中的Linux镜像和设备树下载到DRAM中,然后直接运行。也就是网络调试,通过网络调试时Linux开发最常用的方法之一。
在量产的时候,半导体商一般提供一个烧写固话的软件,一般这个是产品发布固化程序用。在开发调试阶段可以nfs命令
2、在uboot挂载根文件系统root_nfs,下载更新板子的内核、zmage、设备树dtb文件
sudo apt-get install nfs-kernel-server
# 安装 NFS服务器端
ifconfig eth0 up
启动网卡。
sudo ifconfig eth0 192.168.1.119 up
(ifconfig 查看eth0 是否有ip 没有则手动设置ip)
这里有必要关闭下ubuntu的防火墙:
sudo ufw disable
命令来关闭防火墙 ,测试完成后开启sudo ufw enable
命令来开发防火墙
查看防火墙sudo ufw status
命令查看当前防火墙状态
sudo gedit /etc/exports
(修改NFS的配置文件,文件在主目录下的/etc/exports)
在文件末尾里面添加我们的根文件系统自定义名为目录root_nfs (这个文件名可以自定义)和定义访问权限。根文件系统的路径也是可以自定义的。只要在exports填写路径即可。
/home/用户名/root_fs *(rw,sync,no_root_squash)
修改NFS的配置文件,重启NFS 服务器sudo /etc/init.d/nfs-kernel-server restart
测试服务器是否能背挂载
sudo mount -t nfs 192.168.1.119:/home、用户名/root_fs /mnt
(挂载自己)
192.168.1.119 ubuntu自己自身IP地址
通过终端板子设置
进入uboot设置板子ip 192.168.1.2 setenv ipaddr 192.168.1.2
在uboot下敲入以下命令,下载更新板子的内核、zmage、设备树dtb文件
=> ping 192.168.1.119
#ping ubuntu
Using ethernet@020b4000 device
host 192.168.1.119 is alive #alive说明通信成功
=>
=>
=> setenv serverip 192.168.1.119 #/设置服务器的 IP 地址,这里指的是 Ubuntu 主机 IP
=> setenv ipaddr 192.168.1.2 #设置开发板的 IP 地址。
=> setenv nfsroot /home/用户名/fs_rootfs #设置 nfs 文件系统所在目录。
=> run netboot #设置完成后,运行网络启动系统命令
=>
3、根文件系统root_nfs挂载在某个目录下,更新传输板子文件系统的文件
在内核运行起来后,更新传输板子文件系统的文件
将ubuntu/home/用户名/root_fs的root_fs挂载在mnt目录下。如果板子没有mnt目录需要手动创建mkdir mnt
或者传输文件比如hello.c到test目录下
[root@imx6ull:~]# mkdir mnt
[root@imx6ull:~]# mount -t nfs -o nolock,vers=3 192.168.1.199:/home/用户名/root_fs /mnt
[root@imx6ull:~]# cp /mnt/hello.c ./test
注意:确认板子和ubuntu是否是同一个网段,板子和ubuntu要设置成在一个网段才能通信。
不是用ifconfig 网卡名 ip up 进行设置比如
ifconfig eth0 192.168.1.119 up
4、板子使用ubuntu里面根文件系统root_nfs
直接去挂载NFS:
重启开发板进入u-boot命令行。
输入 setenv bootargs noinitrd root=/dev/nfs
nfsroot=192.168.1.119:/home/用户名/root_fs ip=192.168.1.119:192.168.1.2:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
saveenv 保存 reboot重启。
ok NFS启动完成。