嵌入式Linux交叉开发环境建立-NFS

2019-07-13 00:56发布


本文转载于

ChineseBOY的专栏(CSDN)


一.系统配置
   主机:ubuntu8.04LTS桌面版 开发板:友善之臂QQ2440V3
   主机IP:192.168.1.10  子网掩码:255.255.255.0 广播地址:172.16.53.255
   开发板IP:192.168.1.10 广播地址:172.16.53.255 子网掩码 255.255.255.0

二.串口配置minicom
2.1安装
 UBUNTU默认未安装minicom
    sudo apt-get install minicom

2.2配置
 进入到minicom
   Ctrl+A:进入配置界面
   cOnfigure Minicom..O:配置串口
   Serial port setup :

 配置方法:
   A - Serial Device      : /dev/ttyS0   
   B - Lockfile Location     : /var/lock      
   C - Callin Program      :                
   D - Callout Program      :                
   E - Bps/Par/Bits       : 115200 8N1    
   F - Hardware Flow Control : No            
   G - Software Flow Control : No       
     

(回车进入上一级菜单)保存设置:
   Save setup as dfl

 重启minicom

三.建立NFS
3.1配置主机和开发板IP
  1.主机 (双网卡,下面是与开发板连接的网卡设置)
   $sudo ifconfig eth1 192.168.1.10 netmask 255.255.255.0
  设置主机IP地址:192.168.1.10,子网掩码:255.255.255.0

  重启网卡eth1,使配置生效
   $ sudo ifconfig eth1 down
   $ sudo ifconfig eth1 up

 2.开发板
 开发板IP和主机IP必须在同一个网段才能建立起网络连接

 进入到/etc/init.d/目录下会看到一个rcS文件,这个文件包含arm-linux系统启动时的初始化信息。
   [root@FriendlyARM init.d]# cd /etc/init.d/
 修改开发板IP地址的
   [root@FriendlyARM init.d]# ls #显示文件夹内容。
   rcS
   [root@FriendlyARM init.d]#cp rcS rcS.bak #备份rcS文件
   [root@FriendlyARM init.d]# vi rcS 

 修改以下字段,表示设置开机开发板IP是192.168.1.100与主机IP:192.168.1.10在一个网段内
   /sbin/ifconfig eth0 192.168.1.100 up   

 改完后就重启一下开发板
   [root@FriendlyARM /]# reboot

3.2配置NFS服务
 1.准备工作
   sudo chmod 777 /home/armnfs
   mkdir ~/arm
 在/home下建立armnfs目录,作为NFS的目录,为了开发的方便,把权限设为drwxrwxrwx
 
 把root_nfs.tgz (arm-linux的内核)解压到/home/armnfs目录下,开发板将从这里启动。

 2.安装NFS
 Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序:
   $ sudo apt-get install nfs-kernel-server
  安装nfs-kernel-server时,apt会自动安装nfs-common和portmap
  这样,宿主机就相当于NFS Server

 3.配置NFS
 (1)配置portmap (此断抄xhylyx兄弟的,我电脑里默认被注释掉了xhylyx兄弟文章中说为防止其他非法用户登录nfs,还对 /etc/hosts.deny 和 /etc/hosts.allow 进行了设置,其实没必要,可在后面 /etc/exports 里设置。xhylyx的设置好像也有问题,/etc/host.deny优先级高些,全部deny了,allow也没有用了
  方法1: 编辑/etc/default/portmap, 将 -i 127.0.0.1 去掉.
  方法2: $ sudo dpkg-reconfigure portmap , 对Should portmap be bound to the loopback address? 选N.

 (2)配置/etc/exports
  NFS挂载目录及权限由/etc/exports文件定义
  /home/armnfs 192.168.1.*(rw,sync,no_root_squash)
 让IP地址为192.168.1.*的nfs客户端都能访问/home/armnfs目录

 (3)查看NFS server的export list.
   $showmount -e
   miao@miao-desktop:/usr/local/arm$ showmount -e
   Export list for miao-desktop:
   /home/armnfs 192.168.1.*


 (4)更新 /etc/exports
  sudo exportfs -r

 (5)重启nfs服务
   $ sudo /etc/init.d/nfs-kernel-server restart  

 (6)测试NFS
 挂载本地磁盘
 主机IP是192.168.1.10,把/home/armnfs目录挂载到/mnt目录下
   $sudo mount -t nfs 192.168.1.10:/home/armnfs /mnt

 成功的挂载上的话你会在/mnt目录下看到root_nfs这个文件夹下的内容

3.3.通过NFS启动开发板
 当NFS 服务设置好并启动后,我们就可以把NFS 作为根文件系统来启动开发板了
 (1)设置目标板启动模式跳线J1 为Nand Flash 启动。

 (2)进入Supervivi菜单,按q进入shell命令模式。手动打开 vivi自动换行功能,先按ctrl+a键,再按W键,后面的命令很长不换行输不下。
 
(3)输入命令(红 {MOD}部分不用改)
param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.10:/home/armnfs ip=192.168.1.100:192.168.1.10:192.168.1.10:255.255.255.0:sbc2440.arm9.net:eth0:off"
说明:
nfsroot=192.168.1.10, 是主机IP ,/home/armnfs是nfs共享文件夹目录
ip=192.168.1.100:192.168.1.10:192.168.1.10:255.255.255.0
第一个IP是开发板的IP(开发板的IP不要与局域网内其它IP冲突),第二个是主机的IP,第三个也是主机的IP,第四个是开发板的子网掩码

(4)启动linux
Supervivi>boot

linux将从宿主机/home/armnfs目录下的内核,开始启动。

参考资料:
xhylyx
http://forum.ubuntu.org.cn/viewtopic.php?t=109904

water2007
http://forum.ubuntu.org.cn/viewtopic.php?t=138051