NFS Boot
参考资料:
- TI官方 U-boot
- 基于AM5728 linux启动方法
- ubuntu搭建nfs服务器
- ubuntu 16.04下tftp服务搭建
- ubuntu 16.04上安装DHCP服务的详细过程
前提
- 使用 host PC 通过网口直接连接 AM5728主板
- Host PC 准备部分:搭建nfs服务器
NFS简介
- NFS(Netword File System) 网络文件系统,是Unix系统之间实现磁盘文件共享的一种方法,它支持应用程序在客户端通过网络访问位于服务器磁盘中数据的一种文件系统协议。
服务器端配置
安装服务器端软件
sudo apt-get install nfs-kernel-server
配置共享目录
sudo vim /etc/exports
添加共享目录配置
/home/pi/targetNFS *(rw,sync,no_subtree_check) 其中 /home/pi/targetNFS 为设置的共享目录绝对路径 *: 表示所有地址可以访问 (): 共享选项 rw: 客户端拥有读写权限(ro: 代码只有读权限) sync: 同步写入资料到内存和硬盘中 no_subtree_check: 不检测子目录权限 root_squash: 如果客户端使用root权限访问共享目录,则会被认为是匿名用户(权限缩小) no_root_squash: 如果客户端使用root权限访问共享目录,权限依旧为root
重启nfs-server服务
sudo /etc/init.d/nfs-kernel-server restart
搭建tftp服务器
- TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。 端口号为69。
服务器搭建
安装软件
1.sudo apt-get install tftpd tftp xinetd
建立配置文件
- 在/etc/xinetd.d/ 下建立一个配置文件 tftp
sudo vim /etc/xinetd.d/tftp
- 内容
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /home/pi/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }
建立tftp服务文件目录
- 如上配置中有 server_args = -s /home/pi/tftpboot, 这个地址就是上传和下载文件的位置
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot -R
- 重启tftp服务
sudo /etc/init.d/xinetd restart
搭建dhcp服务器
DHCP简介
- 动态主机设置协议(英语:Dynamic Host Configuration Protocol,缩写:DHCP)是一个用于局域网的网络协议,位于OSI模型的应用层,使用UDP协议工作。
- 用于内部网或网络服务供应商自动分配IP地址给用户
- 用于内部网管理员对所有电脑作中央管理
安装DHCP服务
sudo apt-get install isc-dhcp-server
环境搭建
- 查看主机的网卡和ip地址:ifconfig
- 配置文件
sudo vim /etc/default/isc-dhcp-server
- 将INTERFACES的内容补充为目标主机的网卡名称enp0s31f6。
sudo vim /etc/dhcp/dhcpd.conf
- 文件内容中需要配置的是域名和子网IP等信息,对于第一文件片段中的option domain-name “example.org” 不用修改,下一行的domain-name-server需要注释掉在第二文件片段中补充。对于第二文件片段中的白色部分,全是新添加的信息。目标主机的子网IP为192.168.0.10,因此subnet为192.168.0.0,DHCP分配范围设置为50-254,其余地址留给广播和静态IP。网关和DNS均设置为192.168.0.1,广播地址为192.168.0.255,ntp-servers和netbios-name-servers设置与DNS一致,netbios-node-type默认为8
- 重启DHCP服务
sudo service isc-dhcp-server restart
Uboot所需执行命令
恢复系统默认的U-Boot 环境变量,设置NFS服务器上的文件系统路径
env default -f -a
setenv rootpath /home/pi/targetNFS/
设置网络启动环境变量
setenv netboot 'echo Booting from network ...; run netloadimage; run netloadfdt; run netargs; bootz ${loadaddr} - ${fdtaddr}'
setenv autoload no
dhcp
setenv serverip 192.168.0.10
setenv fdtfile am572x-idk.dtb or am57xx-beagle-x15-revc.dtb
setenv bootcmd 'run netboot'
run netboot