利用NFS服务挂载NFS根文件系统

2019-07-13 05:00发布

  嵌入式Linux根文件系统,简单地说,根文件系统就是一种目录结构 注意根文件系统和普通的文件系统的区别。   常见的Linux根文件系统有: (1)NFS(网络根文件系统),主要用于 产品调试阶段 。 (2)YAFFS,主要用于产品的发布阶段。大量生产直接写入NandFlash。   搭建NFS根文件系统 这个过程包括 1、设置NFS共享目录   2、启动NFS服务 3、重新设置开发板的环境变量 4、挂载根文件系统   具体步骤如下: 1、解压根文件系统源码包到 /home/lwb/目录下 #tar  xvzf  root_qtopia.tar.gz  /home/lwb 解压后则在/home/lwb/目录下生成了一个root_qtopia目录 2、cd root_qtopia 进入该目录 3、pwd 显示当前目录  /home/lwb/qtopia 这个目录下面要用到 4、vim /etc/exports    //编辑导出目录    在exports文件末尾添加: /home/lwb/root_qtopia  *(rw,sync,no_root_squash)  //导出/home/lwb/root_qtopia目录  可读可写属性  同步  root权限挂载的。    保存退出 5、使生效: #exportfs ra 6、#exportfs v 查看是否真的已导出    显示:/home/lwb/root_qtopia  (rw,wdelay,no_root_squash,anonuid=65534,anongid=65534)  显然导出成功    导出成功 、服务器设置好啦。 7、重启NFS服务 #/etc/init.d/nfs start //启动nfs服务         开始挂载NFS(网络根文件系统): 1、重新设置环境变量: [u-boot@SMDK2440A]# setenv bootargs console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.108:/home/lwb/root_qtopia ip=192.168.1.226:192.168.1.108:192.168.1.108:255.255.255.0:SMDK2440A.arm9.net:eth0:off   2、保存环境变量: [u-boot@SMDK2440A]# saveenv    //执行保存环境变量结果如下: Saving Environment to NAND... Erasing Nand... Erasing at 0x4000000000002 --   0% complete. Writing to Nand... done   3、查看环境变量: [u-boot@SMDK2440A]# printenv bootcmd=nand read 0x30008000 60000 500000;bootm 0x30008000 bootdelay=1 baudrate=115200 ethaddr=08:08:11:18:12:27 netmask=255.255.255.0 embedclub=bmp d 70000  stdin=serial stdout=serial stderr=serial lcdtype=w ethact=dm9000 serverip=192.168.1.108 ipaddr=192.168.1.266 gatewayip=192.168.1.1 bootargs=console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.108:/home/lwb/root_qtopia ip=192.168.1.226:192.168.1.108:192.168.1.108:255.255.255.0:SMDK2440A.arm9.net:eth0:off Environment size: 459/131068 bytes   1、挂在文件系统 [u-boot@SMDK2440A]#boot 结果如下: [u-boot@SMDK2440A]# boot   NAND read: device 0 offset 0x60000, size 0x500000  5242880 bytes read: OK ## Booting kernel from Legacy Image at 30008000 ...    Image Name:   Linux kernel Image by embedclub    Created:      2013-05-27   8:52:50 UTC    Image Type:   ARM Linux Kernel Image (uncompressed)    Data Size:    2286764 Bytes =  2.2 MB    Load Address: 30008000    Entry Point:  30008040    Verifying Checksum ... OK    XIP Kernel Image ... OK OK   Starting kernel ...   Uncompressing Linux..................................................................................................................................................... done, booting the kernel. Linux version 2.6.32.2-FriendlyARM (root@localhost.localdomain) (gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) ) #1 Sun May 19 10:37:56 CST 2013 CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177   此处省略很多………………………………   Looking up port of RPC 100003/2 on 192.168.1.108 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1 Looking up port of RPC 100005/1 on 192.168.1.108 nfs: server 192.168.1.108 not responding, still trying nfs: server 192.168.1.108 OK VFS: Mounted root (nfs filesystem) on device 0:11. Freeing init memory: 160K [06/Jul/2005:01:37:10 +0000] boa: server version Boa/0.94.13 [06/Jul/2005:01:37:10 +0000] boa: server built Mar 26 2009 at 15:28:42. [06/Jul/2005:01:37:10 +0000] boa: starting server pid=680, port 80                         Try to bring eth0 interface up......NFS root ...Done   Please press Enter to activate this console.   按回车键:出现如下结果: Please press Enter to activate this console. [root@FriendlyARM /]# ls bin      etc      lib      mnt      proc     sbin     tmp      var dev      home     linuxrc  opt      root     sys      usr      www [root@FriendlyARM /]#   成功,哈哈!开发板和PC上的Linux是同步的。 测试一下:在PC上的/home/lwb/root_qtopia/目录下:#touch hello 在SecureCRT 上#ls一下 是会出现 hello目录的。   来个多线程的多生产者、多消费者的程序在开发板上运行运行,哈哈 把已写好的程序pc3.c通过arm-linux-gcc pc3.c o pc3.o 把pc3.o 拷贝到/home/lwb/root_qtopia/bin目录下 在secureCRT下的/bin目录下执行 ./pc3.o 成功   各种兴奋,哈哈!因为之前有过: (1)        和开发板连接的网线的另一端没和PC连接,但我一直以为是连啦! (2)        连好网线后,还是没挂接上NFS根文件系统。在PC上的Linux重启一下NFS服务之后一切OK,哈哈!