网上各种做法扑朔迷离,一般来说有这么两种方式:
1、通过在主机/虚拟机、开发板上分别布置服务器、客户端,使用mount命令直接加载·开发板上的已有·的
文件系统;
2、只在主机/虚拟机上安装nfs服务器,在开发板的内核支持nfs的前提下,通过修改启动参数,让开发板挂载
主机/虚拟机上·的文件系统。
因为不清楚在开发板上布置客户端的步骤(网上这种做法的没找到提及开发板的操作,多数只说明了主机/虚
拟机上的环境搭建),所以我最后是采用了第二种做法。
这里用ifconfig eth0 192.168.1.68配置宿主机ip,开发板的ip配置为192.168.1.66,
主机ip可以配置为192.168.1.67,两两可以互ping。(主要是宿主机和板子可以互ping)
ubuntu10.4 开启NFS/TFTP
涉及文件
portmap hosts.deny hosts.allow
涉及操作(按顺序如下)
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nfs-common restart
sudo /etc/init.d/nfs-kernel-server restart
安装server 和client
Ubuntu 上默认是没有安装NFS 服务器的, 首先要安装NFS 服务程序:
$ sudo apt-get install nfs-kernel-server
( 安装nfs-kernel-server 时,apt 会自动安装nfs-common 和 portmap)
这样, 宿主机就相当于NFS Server。
同样地, 目标系统作为NFS 的客户端, 需要安装NFS 客户端程序。如果是Debian/Ubuntu 系统
则需要安装nfs-common。(这里我的开发板不止ubuntu系统导致后面我用
mount -t nfs -o nolock 192.168.1.68:/opt/nfs /mnt 一直不能挂载,有谁知道可以和我说下)
$ sudo apt-get install nfs-commmon
nfs-common 和nfs-kernel-server 都依赖于portmap!
这样就安装完了,下面进行配置
配置NFS
配置portmap(默认的配置也可以)
方法1: 编辑/etc/default/portmap, 将最后一行注释掉.
方法2: $ sudo dpkg-reconfigure portmap , 对Should portmap be bound to theloopback address? 选N.
配置/etc/hosts.deny
( 禁止任何host(主机) 能和你的NFS 服务器进行NFS 连接),加入:
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
配置/etc/hosts.allow
允许那些你想要的主机和你的NFS 服务器建立连接。下列步骤将允许任何IP 地址以192.168.197
开头的主机( 连接到NFS 服务器上), 也可以指定特定的IP 地址。参看man 页
hosts_access(5), hosts_options(5)。加入:
### NFS DAEMONS
portmap: 192.168.1.
lockd: 192.168.1.
rquotad: 192.168.1.
mountd: 192.168.1.
statd: 192.168.1.
/etc/hosts.deny 和/etc/hosts.allow 设置对portmap 的访问. 采用这两个配置文件有点类
似"mask"的意思. 现在/etc/hosts.deny 中禁止所有用户对portmap 的访问. 再
在/etc/hosts.allow 中允许某些用户对portmap 的访问.
配置/etc/exports
NFS 挂载目录及权限由/etc/exports 文件定义
比如我要将将我的home 目录中的/opt/nfs 目录让192.168.1.* 的IP 共享,则在该文件末尾添加下列语句:
/opt/nfs *(rw,sync,no_root_squash)
*表示所有ip地址可以访问此文件夹
至此配置完成, 下面启动NFS
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nfs-common restart
sudo /etc/init.d/nfs-kernel-server restart
测试NFS
Ubuntu 下
sudo mount localhost:/opt/nfs /mnt
ls /mnt
看是否已经挂载成功(我这里可以挂载成功)
开发板下
mount -t nfs -o nolock 192.168.1.68:/opt/nfs /mnt;这里ip为宿主机,
ls /mnt
看是否已经挂载成功(192.168.1.68 是Ubuntu 的IP 地址)
/mnt是开发板的目录(我这里测试不成功,应该是开发板这边没有配置好吧)
换另一种方法,直接从ubuntu宿主机里加载文件系统到板子:
测试NFS
在断电情况下连接ICETEK-OMAPL138-KB-AZ 板:ICETEK-OMAPL138-KBA 板的串
口J13 到开发主机COM1;连接ICETEK-OMAPL138-KBA 板的网口J5 到开发主机网
卡,拨码开关U15 的状态拨为1000。
在开发主机的Windows 系统中启动超级终端【Davinci】
接通ICETEK-OMAPL138-KB-AZ 板电源
按回车键暂停linux 的起动
输入setenv bootcmd 'nand read.e 0xc0700000 0x200000 0x400000; bootm'
输入setenv bootargs 'console=ttyS2,115200n8 noinitrd rw ip=192.168.1.3 root=/dev/nfs
nfsroot=192.168.1.103:/opt/nfs,nolock mem=32M@0xc0000000
mem=64M@0xc4000000'
输入boot
观察【Davinci】中的输出的起动信息。
输入root 登录
输入cd / 进入根目录输入cd / 进入根目录
输入ls 列出根目录文件, 列出的即为/opt/nfs 目录下的
TFTP 安装配置
1:sudo apt-get install tftp tftpd openbsd-inetd
特别指出很多文章里用的是netkit-inetd,但是实际下载时发现
这个软件是下不到的,特改用openbsd-inetd,实验效果不错。
2:在根目录下创建文件夹 tftpboot
cd /
sudo mkdir tftpboot 建立文件夹
sudo chmod 777 tftpboot 更改文件夹权限
3: sudo gedit /etc/inetd.conf 修改成如下样子
tftp dgram udp wait nobody /usr/sbin/tcpd
/usr/sbin/in.tftpd /tftpboot
4: sudo gedit /etc/xinetd.d/tftp 修改成如下样子(如果没有tftp文件就创建它)
service tftp
{
disable =no
socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /tftpboot -c
source = 11
cps = 100 2
}
5: sudo gedit /etc/default/tftpd-hpa 修改成如下样子
RUN_DAEMON="no"
OPTIONS="-s /tftpboot -c -p -U tftpd"
6:sudo /etc/init.d/openbsd-inetd reload
sudo /etc/init.d/xinetd restart
sudo in.tftpd -l /tftpboot
7: 在tftpboot文件夹下新建测试文件 aaa
cd /tftpboot
sudo touch aaa
sudo chmod 777 aaa
9: 开始测试tftp服务
cd /home
tftp 192.168.1.68
get /tftpboot/aaa
如果没有出现错误代码且在home目录下出现aaa文件则证明tftp服务建立成功
10.开始测试目标板
ubuntu里输入
gedit /tftpboot/test.txt
目标板输入
tftp -g -r test.txt 192.168.1.68
-l 是local的缩写,后跟存在于Client的源文件名,或下载Client后重命名的文件名。
-r 是remote的缩写,后跟Server即PC机tftp服务器根目录中的源文件名,或上传Server后重命名后的文件名。
-g 是get的缩写,下载文件时用,
-p 是put的缩写,上传文件时用,
tftp 默认占用的是69端口。
注意: 1:如果出现permission denied 错误 则是操作者权限不够,
需要提升权限
su root
输入密码后就可以正常进行tftp传输操作了
2:如果出现Access violation错误 则是文件权限没有解开,
将要操作的文件操作权限全解开就可以了
chmod 777 文件名
1、通过在主机/虚拟机、开发板上分别布置服务器、客户端,使用mount命令直接加载·开发板上的已有·的
文件系统;
2、只在主机/虚拟机上安装nfs服务器,在开发板的内核支持nfs的前提下,通过修改启动参数,让开发板挂载
主机/虚拟机上·的文件系统。
因为不清楚在开发板上布置客户端的步骤(网上这种做法的没找到提及开发板的操作,多数只说明了主机/虚
拟机上的环境搭建),所以我最后是采用了第二种做法。
这里用ifconfig eth0 192.168.1.68配置宿主机ip,开发板的ip配置为192.168.1.66,
主机ip可以配置为192.168.1.67,两两可以互ping。(主要是宿主机和板子可以互ping)
ubuntu10.4 开启NFS/TFTP
涉及文件
portmap hosts.deny hosts.allow
涉及操作(按顺序如下)
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nfs-common restart
sudo /etc/init.d/nfs-kernel-server restart
安装server 和client
Ubuntu 上默认是没有安装NFS 服务器的, 首先要安装NFS 服务程序:
$ sudo apt-get install nfs-kernel-server
( 安装nfs-kernel-server 时,apt 会自动安装nfs-common 和 portmap)
这样, 宿主机就相当于NFS Server。
同样地, 目标系统作为NFS 的客户端, 需要安装NFS 客户端程序。如果是Debian/Ubuntu 系统
则需要安装nfs-common。(这里我的开发板不止ubuntu系统导致后面我用
mount -t nfs -o nolock 192.168.1.68:/opt/nfs /mnt 一直不能挂载,有谁知道可以和我说下)
$ sudo apt-get install nfs-commmon
nfs-common 和nfs-kernel-server 都依赖于portmap!
这样就安装完了,下面进行配置
配置NFS
配置portmap(默认的配置也可以)
方法1: 编辑/etc/default/portmap, 将最后一行注释掉.
方法2: $ sudo dpkg-reconfigure portmap , 对Should portmap be bound to theloopback address? 选N.
配置/etc/hosts.deny
( 禁止任何host(主机) 能和你的NFS 服务器进行NFS 连接),加入:
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
配置/etc/hosts.allow
允许那些你想要的主机和你的NFS 服务器建立连接。下列步骤将允许任何IP 地址以192.168.197
开头的主机( 连接到NFS 服务器上), 也可以指定特定的IP 地址。参看man 页
hosts_access(5), hosts_options(5)。加入:
### NFS DAEMONS
portmap: 192.168.1.
lockd: 192.168.1.
rquotad: 192.168.1.
mountd: 192.168.1.
statd: 192.168.1.
/etc/hosts.deny 和/etc/hosts.allow 设置对portmap 的访问. 采用这两个配置文件有点类
似"mask"的意思. 现在/etc/hosts.deny 中禁止所有用户对portmap 的访问. 再
在/etc/hosts.allow 中允许某些用户对portmap 的访问.
配置/etc/exports
NFS 挂载目录及权限由/etc/exports 文件定义
比如我要将将我的home 目录中的/opt/nfs 目录让192.168.1.* 的IP 共享,则在该文件末尾添加下列语句:
/opt/nfs *(rw,sync,no_root_squash)
*表示所有ip地址可以访问此文件夹
至此配置完成, 下面启动NFS
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nfs-common restart
sudo /etc/init.d/nfs-kernel-server restart
测试NFS
Ubuntu 下
sudo mount localhost:/opt/nfs /mnt
ls /mnt
看是否已经挂载成功(我这里可以挂载成功)
开发板下
mount -t nfs -o nolock 192.168.1.68:/opt/nfs /mnt;这里ip为宿主机,
ls /mnt
看是否已经挂载成功(192.168.1.68 是Ubuntu 的IP 地址)
/mnt是开发板的目录(我这里测试不成功,应该是开发板这边没有配置好吧)
换另一种方法,直接从ubuntu宿主机里加载文件系统到板子:
测试NFS
在断电情况下连接ICETEK-OMAPL138-KB-AZ 板:ICETEK-OMAPL138-KBA 板的串
口J13 到开发主机COM1;连接ICETEK-OMAPL138-KBA 板的网口J5 到开发主机网
卡,拨码开关U15 的状态拨为1000。
在开发主机的Windows 系统中启动超级终端【Davinci】
接通ICETEK-OMAPL138-KB-AZ 板电源
按回车键暂停linux 的起动
输入setenv bootcmd 'nand read.e 0xc0700000 0x200000 0x400000; bootm'
输入setenv bootargs 'console=ttyS2,115200n8 noinitrd rw ip=192.168.1.3 root=/dev/nfs
nfsroot=192.168.1.103:/opt/nfs,nolock mem=32M@0xc0000000
mem=64M@0xc4000000'
输入boot
观察【Davinci】中的输出的起动信息。
输入root 登录
输入cd / 进入根目录输入cd / 进入根目录
输入ls 列出根目录文件, 列出的即为/opt/nfs 目录下的
TFTP 安装配置
1:sudo apt-get install tftp tftpd openbsd-inetd
特别指出很多文章里用的是netkit-inetd,但是实际下载时发现
这个软件是下不到的,特改用openbsd-inetd,实验效果不错。
2:在根目录下创建文件夹 tftpboot
cd /
sudo mkdir tftpboot 建立文件夹
sudo chmod 777 tftpboot 更改文件夹权限
3: sudo gedit /etc/inetd.conf 修改成如下样子
tftp dgram udp wait nobody /usr/sbin/tcpd
/usr/sbin/in.tftpd /tftpboot
4: sudo gedit /etc/xinetd.d/tftp 修改成如下样子(如果没有tftp文件就创建它)
service tftp
{
disable =no
socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /tftpboot -c
source = 11
cps = 100 2
}
5: sudo gedit /etc/default/tftpd-hpa 修改成如下样子
RUN_DAEMON="no"
OPTIONS="-s /tftpboot -c -p -U tftpd"
6:sudo /etc/init.d/openbsd-inetd reload
sudo /etc/init.d/xinetd restart
sudo in.tftpd -l /tftpboot
7: 在tftpboot文件夹下新建测试文件 aaa
cd /tftpboot
sudo touch aaa
sudo chmod 777 aaa
9: 开始测试tftp服务
cd /home
tftp 192.168.1.68
get /tftpboot/aaa
如果没有出现错误代码且在home目录下出现aaa文件则证明tftp服务建立成功
10.开始测试目标板
ubuntu里输入
gedit /tftpboot/test.txt
目标板输入
tftp -g -r test.txt 192.168.1.68
-l 是local的缩写,后跟存在于Client的源文件名,或下载Client后重命名的文件名。
-r 是remote的缩写,后跟Server即PC机tftp服务器根目录中的源文件名,或上传Server后重命名后的文件名。
-g 是get的缩写,下载文件时用,
-p 是put的缩写,上传文件时用,
tftp 默认占用的是69端口。
注意: 1:如果出现permission denied 错误 则是操作者权限不够,
需要提升权限
su root
输入密码后就可以正常进行tftp传输操作了
2:如果出现Access violation错误 则是文件权限没有解开,
将要操作的文件操作权限全解开就可以了
chmod 777 文件名