SSH、NFS、TFTP的区别
SSH:远程连接工具,可以用来连接服务器,然后在客户端操作。可以跨系统连接,win和linux。只要你一连接到了服务器,服务器上所有的东西你都可以用。
NFS:文件共享服务。通常是linux和linux之间使用。只能共享特定的文件,不能随心所欲地去访问另一台机器上的所有东西。通常作为挂载根文件系统,具有交互性,可以两台nfs机器一起修改。
TFTP:没用交互性,只能传文件,相当于复制了一份文件到另一台机器上。
FTP
Windows 和 Ubuntu 下的文件互传需要使用 FTP 服务
总共需要三步
- 开启 Ubuntu 下的 FTP 服务
sudo apt-get install vsftpd
安装FTP
sudo vi /etc/vsftpd.conf
打开以后 vsftpd.conf 文件以后找到如下两行:
local_enable=YES
write_enable=YES
确保上面两行前面没有“#”,有的话就取消掉
sudo /etc/init.d/vsftpd restart
重启 FTP 服务:
- Windows 下 FTP 客户端安装
下载地址如下:https://www.filezilla.cn/download
注意事项:若filezilla显示的文件是乱码,这是因为编码方式没有选对,先断开连接,点击:服务器(S)->断开连接,然后打开站点管理器,选中要设置的站点“Ubuntu”,选择“字符集”
SSH
开启 Ubuntu 的 SSH 服务以后我们就可以在 Windwos 下使用终端软件登陆到 Ubuntu。
例如可以用vscode远程连接linux虚拟机。
这个用处主要是,linux虚拟机一般在远程服务器上运行,使用ssh后,就可以通过笔记本电脑对服务器操作。
sudo apt-get install openssh-server 安装即可
NFS
nfs是网络文件系统,可以理解为通过网络将东西下载到DRAM中(所以如果开机时没有打开ubuntu,没有ping,开发板将不能执行nfs,也就没有相应的文件)
本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样
sudo apt-get install nfs-kernel-server rpcbind
安装nfs服务
在用户目录下新建一个目录,命令如下:
mkdir /home/glj/linux/nfs
sudo vi /etc/exports
配置 nfs,打开 nfs 配置文件/etc/exports:
在后面添加如下所示内容:
/home/glj/linux/nfs *(rw,sync,no_root_squash)
其中/home/glj/linux/nfs
是自己建立的nfs文件夹,以后要传输的文件,都放在这个文件夹下
*:代表允许所有的网络段访问;
rw:是可读写权限;
sync:是资料同步写入内存和硬盘;
关于开发板uboot如何使用nfs,示例
nfs [loadAddress] [[hostIPaddr:]bootfilename]
使用 nfs 命令来将 zImage 下载到开发板 DRAM 的 0X80800000 地址处
nfs 80800000 192.168.3.21:/home/glj/linux/nfs/zImage
TFTP
使用的协议是TFTP协议
他没有交互的功能,也就是说可以通过nfs挂在根文件系统,但是不能通过tftp挂载根文件系统
交互意味着:比如我通过nfs可以在开发板里修改根文件系统,同时ubuntu中也就同时修改了。
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
在用户目录下新建一个目录,命令如下:
mkdir /home/glj/linux/tftpboot
chmod 777 /home/glj/linux/tftpboot 注意需要给文件夹读写权限
安装完成以后新建文件/etc/xinetd.d/tftp,如果没有/etc/xinetd.d 目录的话自行创建,输入如下内容
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/glj/linux/tftpboot/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
启动 tftp 服务
sudo service tftpd-hpa start
打开/etc/default/tftpd-hpa 文件,将其修改为如下所示内容
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/glj/linux/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
最后输入如下命令, 重启 tftp 服务器:
sudo service tftpd-hpa restart
关于开发板uboot如何使用tftp,示例
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
但是和 nfs 命令的区别在于, tftp 命令不需要输入文件在 Ubuntu 中的完整路径和虚拟机IP地址(因为之前的文件里设置过IP),只需要输入文件名即可
例如:将 tftpboot 文件夹里面的 zImage 文件下载到开发板 DRAM 的 0X80800000 地址处,
tftp 80800000 zImage