感谢支持
我们一直在努力

虚拟机中Ubuntu成功挂载NFS并为arm11烧录YAFFS2文件系统

为了在虚拟机Ubuntu中挂载nfs成功,期间遇到了很多的问题。今天挂载成功后,才觉得那些问题中有很多都是可以避免的。但也许从另一个角度来讲,也是在锻炼自己的能力。


先说一说主要的步骤,然后我就说说要挂载成功的几个关键地方吧,你挂载不成功,很有可能就是这几个关键地方没有做好。


首先第一步就是要为开发板烧写uboot和kernel。


1.先将SD卡格式化为FAT32格式。将启动代码固化到SD卡中。


  可能出现的问题:1 volume erro之类的。


   解决方法:重新插拔SD卡,某些情况下可能要换一张SD卡试一试。


2.下载Uboot到nandflash中并设置Uboot工作参数。注意的就是串口和波特率要设置对。


可能出现的问题:1.ARNING: OEMMultiBINNotify: Invalid BIN region descriptor(s).
                          Don’t support raw image


解决方法:这种情况请注意选这从USB Port–>UBOOT–>UBOOT”,注意是选Uboot,而不是选transmit。
                         2.无法将uboot写进nandflash


解决方法:请一直按着ENTER键,直到OK出现。(这一般是nand erase没有干净,一定要等到OK出现。如果不出现,说明没有擦除干净)


3.烧写Kernel。


 可能出现的问题一般同上面的2,注意我说的几点即可。


4.安装根文件系统,也是非常重要的一步。www.linuxidc.com如果你要安装yaffs2文件,这其中又会涉及要挂在NFS。


假设我们要安装的是yaffs2文件。


首先第一步:安装NFS


在主机(我是在虚拟机中的Ubuntu)上安装NFS服务软件,因为Debian/Ubuntu上默认是没有安装的。


1、安装端口映射器portmap(可选)
$ sudo apt-get install portmap


2、在终端提示符后键入以下命令安装NFS服务器
$ sudo apt-get install nfs-kernel-server


3、安装NFS客户端(可选)
$ sudo apt-get install nfs-common


注意:nfs- kernel-server和nfs-common都依赖于portmap。另外,www.linuxidc.com在一些文档中提出还需要使用apt-get来手动安装NFS的客户端 nfs-common,以及端口映射器portmap,但其实这是没有必要的,因为在安装nfs-kernel-server时,apt会自动把它们安装好。


这样,宿主机就相当于NFS Server。同样地,目标系统作为NFS的客户端,需要安装NFS客户端程序。如果是Debian/Ubuntu系统,则需要安装nfs- common(第3步)。

第二步:配置NFS


1、配置portmap
方法1:编辑/etc/default/portmap,将”-i 127.0.0.1″去掉;
方法2:$ sudo dpkg-reconfigure portmap,出现“正在设定portmap”软件包设置界面,对Should portmap be bound to the loopback address?选择“否(No)”。


第三步:创建共享目录


例如我们采用/home/localhost/arm6410/root作为NFS共享目


$ sudo mkdir arm6410


$ cd  arm6410


$ sudo mkdir root   


$ chmod 777 arm6410   (更改文件权限,这个一定要改,不然很可能后面会出问题)


$ chmod 777 root          (更改文件权限,这个一定要改,不然很可能后面会出问题)


第四步:配置共享目录及yaffs2文件


修改主机上/etc/exports文件的内容,添加一行:/home/localhost/arm6410/root    *(rw,sync,no_root_squash)
  $ sudo vim /home/localhost/arm6410/root    *(rw,sync,no_root_squash)   


注:后面设置uboot启动参数的时候,目录名要和这个一样。


其中:
/home/localhost/arm6410/root    表示NFS共享目录,它可以通过NFS挂接作为开发板的根文件系统;
* 表示所有的客户机都可以挂接此目录,当然你也可以指定具体的IP,如192.168.x.x;
rw 表示挂接此目录的客户机对该目录有读写的权力;
sync 表示所有数据在请求时写入共享,即数据同步写入内存和硬盘;
no_root_squash 表示允许挂接此目录的客户机享有该主机的root身份;


配置好文件共享目录后,将yaffs2文件放置在共享目录下,然后解压即可。


第五步:启动NFS服务


在完成前面的配置后,首先需要启动portmap和NFS这两个服务,并且 portmap服务一定要先于NFS服务启动。
$ sudo /etc/init.d/portmap start
$ sudo /etc/init.d/nfs-kernel-server start


其他可能要用到了:


停止NFS服务
在停止NFS服务的时候,需要先停止NFS服务再停止portmap服务,如果系统中还有其他服务需要使用portmap服务,则可以不停止 portmap服务。
$ sudo /etc/init.d/nfs-kernel-server stop
$ sudo /etc/init.d/portmap stop


重新启动portmap和NFS服务
$ sudo /etc/init.d/portmap restart
$ sudo /etc/init.d/nfs-kernel-server restart


检查portmap和NFS服务状态
$ sudo /etc/init.d/portmap status


$ sudo /etc/init.d/nfs-kernel-server status


第六步:配置目标板和主机(我的是虚拟机中Ubuntu)IP


这两个IP一定要在同一个网段内,否则会出现很多的问题,很多像Root-NFS: Server returned error -5 while mounting /forlinx/root的问题就是由此引起。


假设:


主机IP:192.168.1.20
目标板IP:192.168.1.10


关于怎么知道目标板的IP,在你设置uboot环境变量后,使用printenv,既可以查看到目标板的IP信息。


那么这一步就有两种选择:1是更改主机IP,这个相对简单。(当然以后为了上网可以再改回去)


  $ sudo vim  etc/network/interfaces


然后设置:


auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.1


保存后重启


sudo /etc/init.d/networking restart

2是更改目标板IP,这个前提是你能够进入开发板环境,一般也就是你已经安装了类似cramfs文件系统,但是你想要用yaffs2文件系统的。


进入开发板环境,进入到/etc/init.d/目录下会看到一个rcS文件,IP就是在这个文件修改的。
# vim /etc/init.d/rcS


加上一段:


/sbin/ifconfig eth0 192.168.1.10 netmask 255.255.255.0  broadcast 192.168.1.1  up


:wq 保存退出


(//也可以命令更改# ifconfig eth0 202.118.212.168 netmask 255.255.255.0 )
改完后就重启一下开发板。


第七步:在开发板上设定启动参数
通过u-boot设置启动参数
u-boot启动时,在命令提示符下设置启动参数如下:
setenv bootargs “root=/dev/nfs nfsroot=192.168.1.20:/home/localhost/arm6410/root/ ip=192.168.1.10:192.168.1.20:192.168.1.1:255.255.255.0:arm6410:eth0:off console=ttySAC0,115200”
其中:


192.168.1.20为主机IP地址


/home/localhost/arm6410/root为共享目录


192.168.1.10为开发板的IP地址


console=ttySAC0,115200为控制台参数。


保存参数:saveenv


第八部:烧写yaffs2文件


重启后在uboot命令中nand erase x  x 也即要烧写的区域


然后重启在开发板环境中,在终端输入writeyaffs即可(不同的开发板命令不同,请注意)


到此基本完成,yaffs2文件系统已经烧写好了。


最后一步:设置启动参数


重启开发板,将yaffs2文件配置为根文件系统。


在uboot命令行中输入以下参数:


setenv bootargs “root=/dev/mtdblock2 rootfstype=yaffs2 console=ttySAC0,115200”


saveenv


由此整个挂载NFS及配置yaffs2文件成功!

赞(0) 打赏
转载请注明出处:服务器评测 » 虚拟机中Ubuntu成功挂载NFS并为arm11烧录YAFFS2文件系统
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏