本文主要是TFTP和NFS环境搭建的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
Windows windows11 Ubuntu Ubuntu16.04的64位版本 VMware® Workstation 16 Pro 16.2.3 build-19376536 SecureCRT Version 8.7.2 (x64 build 2214) - 正式版-2020年5月14日 Linux开发板 华清远见 底板: FS4412_DEV_V5 核心板: FS4412 V2 u-boot 2013.01
点击查看本文参考资料
点击查看相关文件下载
一、TFTP
环境搭建 1. TFTP
简介 TFTP
(Trivial File Transfer Protocol
,简单文件传输协议)是TCP/IP
协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,它的端口号为69
。我们可以使用TFTP
来加载内核镜像、设备树和其他较小的文件到开发板DDR
上,从而实现网络挂载。
TFTP
文件在服务器中,客户端将文件下载到本地,然后本地和服务器端都会有相同的这样一个文件。
2. TFTP
搭建 2.1 查看是否已安装 在终端执行以下命令检查 tftp
相关服务是否安装:
2.2 安装和配置xinetd
在终端执行以下命令安装 xinetd
:
1 sudo apt-get install xinetd
这里我们直接用下边的命令打开xinetd.conf
配置文件(不检查是否存在了,直接打开,没有的话就是空文件,配置完后边直接保存就可以了):
1 sudo vi /etc/xinetd.conf
打开后将文件修改为以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # Simple configuration file for xinetd # defaults { # Please note that you need a log_type line to be able to use log_on_success # and log_on_failure. The default is the following : # log_type = SYSLOG daemon info } includedir /etc/xinetd.d
最后直接保存即可。
2.3 TFTP
目录 接下来创建一个目录用作TFTP
服务器的站点,在终端执行以下命令:
1 2 mkdir -p /home/hk/3tftp sudo chmod 777 /home/hk/3tftp/
2.4 安装配置相关服务
在终端执行以下命令:
1 sudo apt-get install tftp-hpa tftpd-hpa
1 sudo vi /etc/default/tftpd-hpa # 打开配置文件
修改为以下内容:
1 2 3 4 5 6 7 # /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/home/hk/3tftp" TFTP_ADDRESS=":69" # TFTP_OPTIONS="--secure" TFTP_OPTIONS="-c -s -l"
只是修改了TFTP_DIRECTORY
的值,后边改为我们自己创建的TFTP
服务目录,后边客户端要下载的文件需要放到该目录下。
在终端执行以下命令打开相关配置文件,若没有xinetd.d
这个目录,我们可以自己手动创建):
1 sudo vi /etc/xinetd.d/tftp
打开后,一般应该是新文件,我们添加如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 server tftp { socket_type = dgram wait = yes disable = no user = root protocol = udp server = /usr/sbin/in.tftpd server_args = -s /home/hk/3tftp -c #log_on_success += PID HOST DURATION #log_on_failure += HOST per_source = 11 cps =100 2 flags =IPv4 }
【注意】server_args = -s
后面要添加自己的tftp
工作目录。
2.5 重启相关服务 在终端执行以下命令:
1 2 sudo service tftpd-hpa restart # 重启 tftpd-hpa sudo service xinetd restart # 重启 xinetd
【注意】看到有个资料上说,每次重新打开ubuntu
若要使用tftp
都需要重启,这里先记下,后边出现问题的话可以重启再试一下。
3. 本地测试是否安装成功
当我们本地登录成功后,命令提示符会变成如下形式:
退出tftp
服务后,我们就会回到刚所在的目录里,我们下载的文件也将会被保存到这里
若显示有test.txt
文件,那么表示我们的TFTP
服务安装配置成功。
4. 开发板使用测试 一般来说我们搭建TFTP
环境就是为了能将文件从Ubuntu
传输到我们的linux
开发板,当我们配置好Linux
开发板和ubuntu
的网络环境,两者之间互相可以ping
通的时候,我们可以这样来实现文件的传输,在开发板的终端(我一般使用SecureCRT
)中执行:
1 tftp -g -r <file_name> <Ubuntu_IP>
这样便会将Ubuntu
中TFTP
服务器目录下的文件下载到开发板的当前目录下。例如,
1 tftp -g -r test.c 192.168.10.100
二、NFS
环境搭建 1. NFS
简介 NFS
(Network File System
,网络文件系统),是由SUN
公司研制的UNIX
表示层协议(presentation layer protocol
),基于UDP/IP
,使用nfs
能够在不同计算机之间通过网络进行文件共享,能使使用者访问网络上别处的文件就像在使用自己的计算机一样。我们可以在Ubuntu
上制作开发板的根文件系统,然后使用NFS
来加载根文件系统到开发板的DDR
上。
NFS
可以将远程的计算机磁盘挂载到本地,像本地磁盘一样操作,文件还是在服务器中,只是服务器将文件共享给了客户端,客户端实际并没有这些文件。就像我们使用的网盘一样,文件在网盘中,在本地的电脑中实际并不存在,但是我们可以查看这些文件。
2. NFS
搭建 2.1 查看是否已安装 在终端执行以下命令:
1 dpkg -s nfs-kernel-server
若是没有安装的话则会有以下提醒:
1 2 dpkg-query: 系统没有安装软件包 nfs-kernel-server,因而没有相关的信息 使用 dpkg --info (= dpkg-deb --info) 来检测打包好的文件
2.2 安装NFS
在终端执行以下命令:
1 sudo apt-get install nfs-kernel-server
2.3 NFS
共享目录 接下来我们创建一个目录用于NFS
共享服务:
1 2 sudo mkdir -p /home/hk/4nfs sudo chmod -R 777 /home/hk/4nfs/
2.4 NFS
配置 在终端执行以下命令打开相关配置文件:
然后在文件的尾部添加以下内容:
1 /home/hk/4nfs *(rw,sync,no_subtree_check,no_root_squash)
/home/hk/4nfs
是nfs
服务器的工作目录,即客户端要访问的文件需要放到该目录下。
*
表示允许所有的网络段访问。
rw
表示访问者具有可读写权限。
sync
表示将缓存写入设备中,可以说是同步缓存的意思。
no_subtree_check
如果共享/usr/bin
之类的子目录时,NFS
不检查父目录的权限(默认)
no_root_squash
表示访问者具有root
权限。
【注意】
(1)ubuntu17.10
之后的版本nfs
默认只支持协议3
和4
,但后续我们使用的uboot(2013.01)
默认使用协议2
,所以需要在/etc/default/nfs-kernel-server
文件末尾加一句如下内容:
1 RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"
然后重启nfs
服务即可。
(2)配置文件权限的()
里面不能有空格。
2.5 重启NFS
在终端执行以下命令:
1 2 3 sudo /etc/init.d/nfs-kernel-server restart # 或者 sudo service nfs-kernel-server restart
【注意】在有的资料中看到以后每次重新打开ubuntu
若要使用nfs
都需要重启,在这里记录一下,后边遇到问题,可以首先尝试该种方法。
2.6 本地挂载与卸载共享目录
1 sudo mount -t nfs localhost:/home/hk/4nfs /mnt/nfs_temp/
1 sudo umount /mnt/nfs_temp/
2.7 查看NFS
共享目录 在终端执行以下命令:
若是前边配置没有问题,则会显示如下信息:
1 2 Export list for vm: /home/hk/4nfs *
点击查看可能出现的问题
执行这个命令的时候可能会有如下提示:
1 2 Command 'showmount' not found, but can be installed with: sudo apt install nfs-common
此时我们按照提示安装相关服务即可:
1 sudo apt install nfs-common
2.8 检查NFS
是否启动 1 sudo systemctl status nfs-server
若NFS
服务已经启动,则会有以下提示信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 ● nfs-server.service - NFS server and services Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor pr> Drop-In: /run/systemd/generator/nfs-server.service.d └─order-with-mounts.conf Active: active (exited) since Wed 2022-08-17 21:18:16 CST; 13min ago Process: 8515 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUC> Process: 8516 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS) Main PID: 8516 (code=exited, status=0/SUCCESS) CPU: 15ms 8月 17 21:18:16 vm systemd[1]: Starting NFS server and services... 8月 17 21:18:16 vm systemd[1]: Finished NFS server and services.
3. 本地测试是否安装成功
1 2 sudo mkdir -p /mnt/nfs_temp sudo mount -t nfs localhost:/home/hk/4nfs /mnt/nfs_temp
若显示有test.txt
文件,那么表示我们的NFS
服务安装配置成功。
4. 开发板使用测试 一般来说我们搭建NFS
环境也是为了能将文件从Ubuntu
传输到我们的linux
开发板,当我们配置好Linux
开发板和ubuntu
的网络环境,两者之间互相可以ping
通的时候,我们可以这样来实现文件的传输,在开发板的终端(我一般使用SecureCRT
)中执行:
1 2 3 4 mkdir -p ~/nfs_temp # 创建临时挂载目录 mount -t nfs -o nolock,nfsvers=3 <Ubuntu_IP>:<Ubuntu_NFS_dir> ~/nfs_temp/ df # 查看挂载目录 umount ~/nfs_temp/ # 卸载挂载目录
这样我们便可以将ubuntu
中的Ubuntu_NFS_dir
目录也就是NFS
共享目录下的文件挂载到Linux
开发板的~/nfs_temp/
中,我们可以直接在~/nfs_temp/
中拷贝我们需要的文件。