一、tftp服务
1)安装tftp-hpa,tftpd-hpa
sudo apt-get install tftp-hpa tftpd-hpa
tftp-hpa是client,tftpd-hpa是server
2) 配置tftpd-hpa
sudo vim /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/jw/tftproot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS=" -l -c -s"
TFTP_DIRECTORY="/home/jw/tftproot"意味着tftp服务器将把可以下载的文件都放在这里面。而客户端发起的下载申请就会对接到这个目录。
这句话的意思是,PC机的ubuntu将作为服务器,开发板将作为客户端,在开发板上执行tftp命令时,会连接到该文件夹。
3)设置tftproot文件夹的权限
mkdir /home/jw/tftproot
sudo chmod 777 /home/jw/tftproot
4)重启tftpd-hpa服务
sudo service tftpd-hpa restart
ps -ef |grep tftp能看到tftpd-hpa进程
jw@pc:~$ ps -ef | grep tftp
root 5245 1 0 14:47 ? 00:00:00 /usr/sbin/in.tftpd --listen --user tftp --address :69 -c -s -l /home/jw/tftproot
jw 5251 5028 0 14:48 pts/1 00:00:00 grep --color=auto tftp
5)测试,下载get,上传put
重新打开一个终端,在tftproot下建立a.txt
touch /home/jw/tftproot/a.txt
在其他目录下操作(注意是当前用户可以操作的目录,否则get是会提示permission denied):
cd ~
tftp localhost
tftp>get a.txt
tftp>quit
下载完成后,可以在当前目录找到该文件。
但是出现一个bug–>
如果get 的对象b不存在,客户端报错,但是仍然在当前目录创建了一个空文件b。
tftp> get b
Error code 1: File not found
tftp> quit
jw@pc:~$ ls
a Desktop Downloads Pictures Templates Videos
b Documents Music Public tftproot w
jw@pc:~$
6)开发板与虚拟机Ubuntu建立连接
物理连接:开发板—网线—笔记本
若想让开发板也能上网:
无需路由器实现虚拟机、物理机、开发板互相ping通+上网
笔记本电脑有2块网卡,虚拟机也2块网卡。
笔记本无线网卡连接wifi,有线网卡连接开发板。
笔记本有线网卡作为一个网关(192.168.8.1),连接虚拟机的ens38网卡(192.168.8.10)和开发板的eth0网卡(192.168.8.20),这3个地址同在一个子网,网关都是笔记本的有线网卡(192.168.8.1),因此实现开发板与虚拟机的网络连接。
配置本地连接
配置虚拟机
虚拟机添加双网卡,一个是NAT模式,一个是桥接模式(自动)。然后启动虚拟机,在Ubuntu中配置IP
配置Ubuntu的IP地址
为了防止重启后失效,ubuntu的ens38网卡ip设置被写进了文件中,配置后重启即可:
sudo vim /etc/network/interfaces
文件中的内容
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto ens38
iface ens38 inet static
address 192.168.8.10
gateway 192.168.8.1
netmask 255.255.255.0
配置后重启
reboot
配置开发板
开发板在uboot命令行中设置ip,通过minicom发送:
setenv ipaddr 192.168.8.20 // 开发板IP
setenv serverip 192.168.8.10 //虚拟机Linux IP
setenv gatewayip 192.168.8.1 // 网关
saveenv
有个小bug,虚拟机与开发板都ping不到window(网关192.168.8.1),但是并不影响虚拟机与开发板的互连。
二、nfs服务
1.按照nfs服务器
sudo apt-get install nfs-kernel-server
2.配置/etc/exports文件
sudo mkdir -p /home/jw/nfs/rootfs
sudo chmod 777 /home/jw/nfs/rootfs
sudo vim /etc/exports
#修改内容如下:
/home/jw/nfs/rootfs *(rw,sync,no_root_squash)
共享的目录 所有用户(读写,同步,不降低root用户的权限)其他选项man 5 exports 查看。
重启nfs
sudo /etc/init.d/nfs-kernel-server restart
3.客户端挂载nfs共享目录
客户端查看服务器的共享目录,可以使用showmount -e + 主机IP
下面还是使用回环测试本机的nfs服务
jw@pc:~$ showmount -e localhost
Export list for localhost:
/home/jw/nfs/rootfs *
将共享目录挂载到客户端上:
sudo mkdir /mnt/nfs
sudo chmod 777 /mnt/nfs
sudo mount -t nfs -o nolock localhost:/home/jw/nfs/rootfs /mnt/nfs
说明:mount nfs时,默认选项包括文件锁,依赖于portmap提供的动态端口分配功能,因此需要解锁,因此一般直接在指令中直接加上-o nolock
4.卸载共享目录:
sudo umount /mnt/nfs