#linux下FTP与NFS环境搭建
#nfs环境搭建
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
##主机配置
安装NFS服务:
sudo apt-get install nfs-kernel-server rpcbind
在主机下创建文件夹以存放要发送的文件:
mkdir /home/hg/linux/nfs
chmod 777 /home/hg/linux/nfs
配置NFS服务:
打开 nfs 配置文件/etc/exports:
sudo vi /etc/exports
在最后一行添加如下内容:
/home/hg/linux/nfs *(rw,sync,no_root_squash)
重启NFS服务之后就可以使用了:
sudo /etc/init.d/nfs-kernel-server restart
##开发板配置
root=/dev/nfs nfsroot=[:][,] ip=::::::::
<server-ip>:服务器 IP 地址
<root-dir> :根文件系统的存放路径
<nfs-options>:NFS 的其他可选选项,一般不设置
<client-ip> :客户端 IP 地址
<server-ip> :服务器 IP 地址
<gw-ip> :网关地址
<netmask>:子网掩码
<hostname>:客户机的名字
<device> :设备名,也就是网卡名,一般是 eth0,eth1….
<autoconf> :自动配置,一般不使用,所以设置为 off
<dns0-ip> :DNS0 服务器 IP 地址,不使用
<dns1-ip> :DNS1 服务器 IP 地址,不使用
我的配置如下:
setenv bootargs 'console=tty1 console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.0.121:/home/hg/linux/nfs/rootfs,proto=tcp rw ip=192.168.0.50:192.168.0.121:192.168.0.1:255.255.255.0::eth0:off'
配置好环境变量后可以实现开发板与主机文件的传输,直接下载命令:nfs [loadAddress] [[hostIPaddr:]bootfilename]
#TFTP环境搭建
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
##主机配置
通过网络下载东西到 DRAM 中,tftp 命令使用的 TFTP 协议,Ubuntu 主机作为 TFTP 服务器。在 Ubuntu 上搭建 TFTP 服务器,需要安装 tftp-hpa 和 tftpd-hpa。
安装命令:
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
在主机下创建文件夹以存放要发送的文件:
mkdir /home/hg/linux/tftpboot
chmod 777 /home/hg/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/hg/linux/tftpboot/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
使用如下命令启动tftp服务:
sudo service tftpd-hpa start
修改/etc/default/tftpd-hpa 文件内容如下:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/hg/linux/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
最后重启tftp服务器:
sudo service tftpd-hpa restart
##开发板配置
setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000'
使用boot命令即可实现通过tftp协议从主机下载内核文件与设备文件到开发板中。
直接下载命令:
tftp [loadAddress] [[hostIPaddr:]bootfilename](跟nfs不用的是,tftp不需要输入完整的路径,只组要输入文件名即可)