嵌入式成长轨迹61 【智能家居项目】【ARM 飞凌ok6410】【在虚拟机Ubuntu下NFS网络文件系统建立】

推荐阅读顺序:

 

基本环境搭建:

   【配置】在虚拟机Ubuntu下NFS网络文件系统建立

   《ok6410 Qt移植百科全书》

   【配置】QT&QWT&sqlite3安装配置 

这中间出现问题可查阅

   【调试】ARM QT 移植环境搭建问题---补充《ok6410 Qt移植百科全书》

 

 

日常使用:

  【配置】将PC端QT代码修改为ARM端可用

  【配置】SD卡一键烧写

这中间出现问题可查阅:

  【调试】智能家居代码移植时环境调试问题集锦 

 

环境配置人员

郑子木

 

硬件环境

虚拟机vm8.0.2 build-591240 

Ubuntu12.04

飞凌ok6410开发板,

win7 家庭版

 

网络模型:

 

 

 

子环境配置A:外部环境与主机

配置步骤1  准备网线//文字及截图

 

a)连接开发板和主机的网线必须是交叉网线,什么是交叉网线:

    i.一头是:1白橙 2橙 3白绿 4蓝 5白蓝 6绿 白棕 8棕 (568B标准)

    ii.一头是:1白绿 2绿 3白橙 4蓝 5白蓝 6橙 7白棕  8棕 (568A标准)

    iii.交叉网线用于同口连接(如两边都是pc,或两边都是hub

b)如果只有直连网线可以通过路由器连接

 

配置步骤2 虚拟机设置双网卡

 

我想要同时使用两块网卡,一块连接互联网(机器内置),另一块连接开发板。

1)在Ubuntu虚拟机(关机状态,上方VM菜单setting,打开后看左下角有个add)中添加Network Adapter。最后得到两块网卡,一块采用NAT模式,另一块采用custom模式(连接VMnet0);

 

 

 

2)在Ubuntu虚拟机上方Edit菜单的Virtual Network Editor中,设置VMnet0bridged,指向Realtek PCIe FE Family Controller网卡;没有这个网卡就先选别的,之后板子打开失败(就是一直黑屏,大概34分钟毫无反应)再回到Editor这里,就会发现有另外一块网卡识别出来,选择它再重启板子就可以了。将VMnet0设置为Host-only而不是bridge好像也可以自动识别。

 

 

 

 

//有需要可继续添加

以上子环境A配置完毕

注意事项

 

 

 

 

子环境配置B:虚拟机Ubuntu12.04的设置

配置步骤1  进入虚拟机,根据主机IP修改虚拟机IP

在右上角的网络连接图标,里边有edit connection可以点进去设置,上网用的网卡不用管,但连板子用的网卡IP要设置好(可以通过关闭是否断网,看看哪个是本机上网用的网卡),一定要跟主机在同一个网段内(就是IP地址的前三个数字相同,最后一个不一样)。

  

 

我的eth0是本机网卡,NAT模式,因此采用DHCP自动分配。

eth1则是后加的网卡,bridged模式,因此需要手动分配ip192.168.0.10

192.168.0.10为宿主机(有虚拟机的就是虚拟机了)IP地址

192.168.0.255网关 开发板上设置和虚拟机上的一致!

255.255.255.0 掩码

另外两块网卡均不需使用漫游模式。

配好之后,就应该可以同时上网和连接开发板了。

顺便说说开发板的启动过程:

开发板(ip192.168.0.232)从Windowsip192.168.0.2)获取linux内核,启动完毕后,从Ubuntuip192.168.0.10)挂载NFS网络文件系统。

 

 现在Ubuntu只连接了局域网还不能上网,需要win7下共享网卡1的外部网络

 

 

 

配置步骤2 安装NFS

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

在终端提示符后键入以下命令安装NFS服务器

$ sudo apt-get install nfs-kernel-server

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

这样,宿主机就相当于NFS Server

 

 

配置步骤3 创建共享目录

例如我们采用/forlinx/root作为NFS共享目录

$ sudo mkdir forlinx

$ cd  forlinx

$ sudo mkdir root    

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

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

 

配置步骤4 配置共享目录

修改主机上/etc/exports文件的内容,在最后添加一行:

/forlinx/root    *(rw,sync,no_root_squash)

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

 

其中:

/forlinx/root 表示NFS共享目录,它可以通过NFS挂接作为开发板的根文件系统

表示所有的客户机都可以挂接此目录,当然你也可以指定具体的IP,如192.168.x.x

rw 表示挂接此目录的客户机对该目录有读写的权力;

sync 表示所有数据在请求时写入共享,即数据同步写入内存和硬盘;

no_root_squash 表示允许挂接此目录的客户机享有该主机的root身份;

 

配置步骤5 解压yaffs2文件

配置好文件共享目录后,应将用户基础资料光盘中“linux2.6.28/filesystem/OK6410_yaffs2_v1.0.tgz”压缩文件拷贝到这个目录下并解压,作为开发板的文件系统。否则会出现错误。

 

配置步骤6 启动NFS服务

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

罗列一些备用命令:

停止NFS服务  $ sudo /etc/init.d/nfs-kernel-server stop

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

检查NFS服务状态 $ sudo /etc/init.d/nfs-kernel-server status

 

//有需要可继续添加

以上子环境B配置完毕

注意事项

连板子用的网卡IP要设置好(可以通过关闭是否断网,看看哪个是本机上网用的网卡),一定要跟主机在同一个网段内(就是IP地址的前三个数字相同,最后一个不一样)。

 

修改主机上/etc/exports文件的内容,在最后添加一行:

/forlinx/root    *(rw,sync,no_root_squash)

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

 

 

 

子环境配置C:开发板ARM11 ok6410的设置

配置步骤1  配置目标板IP

宿主机、目标板(或者有虚拟机的就是:虚拟机、本机、目标板三个)的IP一定要在同一个网段内,否则会出现很多的问题,很多像Root-NFS: Server returned error -5 while mounting /forlinx/root的问题就是由此引起。

 

更改目标板IP:进入开发板环境,进入到/etc/init.d/目录下会看到一个rcS文件,IP就是在这个文件修改的。在里边加上一段:/sbin/ifconfig eth0 192.168.0.232 netmask 255.255.255.0  broadcast 192.168.0.255  up-

注意网关(这里是那个broadcast)开发板上设置和虚拟机上的一致!

//也可以命令更改# ifconfig eth0 192.168.0.232 netmask 255.255.255.0 broadcast 192.168.0.255

改完后就重启一下开发板。

 

配置步骤2 检查网络连接情况

看是否虚拟机、本机、目标板三者可以两两ping通,要是不能就要重新看看IP设置是否正确、网线是否插牢

 

如果不行,就要查看虚拟机、本机、目标板三者的ip、网关等。注意本机应该修改“本地连接”(而非“无线连接”)的属性->协议TCP/ipv4项。

 

 

配置步骤3 在开发板上设定启动参数

 

通过u-boot设置启动参数(就是开发板打开后在超级终端按紧空格进入的模式)

u-boot启动时,输入printenv,显示了uboot的环境变量。会看到这个

printenv

bootargs=root=/dev/mtdblock2 rootfstype=cramfs console=ttySAC0,115200

bootcmd=nand read 0xc0008000 0x100000 0x500000;bootm 0xc0008000

bootdelay=1

baudrate=115200

ethaddr=00:40:5c:26:0a:5b

ipaddr=192.168.1.20

serverip=192.168.1.10

gatewayip=192.168.1.1

netmask=255.255.255.0

stdin=serial

stdout=serial

stderr=serial

 

最好把bootargs一项找地方复制起来,以后还能改回去!

如果你前面编译内核,只是按照飞凌默认配置,并没有做任何修改(但要设置使其支持nfs根文件系统这个,飞凌默认配置文件是支持这个的,所以可以不做任何修改),即没有修改相关启动代码(为了让其支持挂载nfs根文件系统而修改的代码),那么要用(太长就按下面的断行回车)

setenv bootargs "root=dev/nfs nfsroot=192.168.0.10:/forlinx/root rw noinitrd init=/linuxrc ip=192.168.0.232:192.168.0.10:192.168.0.255:255.255.255.0 console=ttySAC0,115200"

 

其中:

192.168.0.232为开发板的IP地址

192.168.0.10为宿主机(有虚拟机的就是虚拟机了)IP地址

192.168.0.255网关 开发板上设置和虚拟机上的一致!

255.255.255.0 掩码

/forlinx/root为共享目录

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

!最后记得记得保存参数!:saveenv

 

//有需要可继续添加

以上子环境B配置完毕

注意事项

宿主机、目标板(或者有虚拟机的就是:虚拟机、本机、目标板三个)的IP一定要在同一个网段内,否则会出现很多的问题

 

 

问题及解决方案

问题1 

dm9000 dm9000.0: eth0: link up, 100Mbps, full-duplex, lpa 0x41E1

VFS: Mounted root (nfs filesystem) on device 0:14.

devtmpfs: error mounting -2

Freeing init memory: 172K

Failed to execute /linuxrc.  Attempting defaults...

Kernel panic - not syncing: No init found.  Try passing init= option to kernel.

See Linux Documentation/init.txt for guidance.

[<c0039ca8>] (unwind_backtrace+0x0/0xfc) from [<c049fd9c>] (dump_stack+0x18/0x1c)

[<c049fd9c>] (dump_stack+0x18/0x1c) from [<c049fe00>] (panic+0x60/0x1ac)

[<c049fe00>] (panic+0x60/0x1ac) from [<c00335dc>] (init_post+0xc8/0x140)

[<c00335dc>] (init_post+0xc8/0x140) from [<c00084c8>] (kernel_init+0xf4/0x130)

[<c00084c8>] (kernel_init+0xf4/0x130) from [<c0034a34>] (kernel_thread_exit+0x0/

0x8) 

 

解决:

1、没有在指定目录下给个文件系统,应将用户基础资料光盘中“linux2.6.28/filesystem/OK6410_yaffs2_v1.0.tgz”压缩文件拷贝到这个目录下并解压

 

2、ARM启动参数bootargs设置错误,printenv应该有

bootargs =root=dev/nfs nfsroot=192.168.0.10:/forlinx/root rw noinitrd init=/linuxrc ip=192.168.0.232:192.168.0.10:192.168.0.255:255.255.255.0 console=ttySAC0,115200

 

问题2

IP-Config: Cannot add default route (-101).

Looking up port of RPC 100003/2 on 192.168.0.7

eth0: link up, 100Mbps, full-duplex, lpa 0x41E1

Looking up port of RPC 100005/1 on 192.168.0.7

VFS: Mounted root (nfs filesystem) on device 0:11.

Freeing init memory: 128K

FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will b

e case sensitive!

[14/Dec/2008:05:19:25 +0000] boa: server version Boa/0.94.13

[14/Dec/2008:05:19:25 +0000] boa: server built Mar 26 2009 at 15:28:42.

[14/Dec/2008:05:19:25 +0000] boa: starting server pid=508, port 80

Try to bring eth0 interface up......nfs: server 192.168.1.112 not responding, stil

l trying

nfs: server 192.168.1.112 not responding, still trying

 

解决:

http://blog.csdn.net/ayangke/article/details/6312429

 

PC机,目标板的linux_cmd_line和虚拟机内的linux网关全部设为一致,我的就全部设置为192.168.0.255

 

问题3

dm9000 dm9000.0: eth0: link down

IP-Config: Cannot add default route (-101).

dm9000 dm9000.0: eth0: link up, 100Mbps, full-duplex, lpa 0x41E1

dm9000 dm9000.0: eth0: link down

dm9000 dm9000.0: eth0: link up, 100Mbps, full-duplex, lpa 0x41E1

VFS: Mounted root (nfs filesystem) on device 0:14.

devtmpfs: mounted

Freeing init memory: 172K

/etc/rc.d/init.d/netd: line 16: /usr/sbin/inetd: not found

mkdir: cannot create directory '/mnt/disk': File exists

Try to bring eth0 interface up......nfs: server 192.168.0.10 not responding, still trying

 

解决方法:

相互pingping通,就是到了那一步网不能连接上,服务器没有通。从网络这个方向找问题吧

1http://hi.baidu.com/xdyang1986/item/527656778bd157285c1789ca

etc/下面有一个eth0-setting的文件,把它里面的设置改了,使启动ip固化

IP=192.168.0.232

Mask=255.255.255.0

Gateway=192.168.0.255

DNS=8.8.8.8

MAC=08:90:90:90:90:90

 

2http://bbs.witech.com.cn/viewthread.php?tid=11818

使用Linux3.0的朋友们可以这样,修改·NFS网络文件系统·(是ubuntu里边那个!)里面的 /etc/init.d/ifconfig-eth0文件,修改如下

             #if grep -q "^/dev/root / nfs " /etc/mtab ; then

              if grep -q "root=/dev/nfs" /proc/cmdline;then   

就是把 if grep -q "^/dev/root / nfs " /etc/mtab ; then 注释掉,然后使用 

if grep -q "root=/dev/nfs" /proc/cmdline;then  判断,即可,我们最近计划发布的新版本已经解决了这个问题,着急的朋友们可以自己手动修改一下。

 

3http://bbs.witech.com.cn/viewthread.php?tid=11818

告诉你一个简单暴力方法:把·pc机共享目录·(是ubuntu里边那个!)下的、etc/init.d/ifconfig-eth0 中的ifconfig eth0 down 改成ifconfig eth0 up 即可 不过这不是根本解决方法,正常的是不会执行这个的,你最好按照这里的条件找到原因

             

4http://www.arm9home.net/simple/index.php?t3528.html

看起来像是·文件系统·(是ubuntu里边那个!)在初始化过程中重新配置了网卡的IP地址,造成原本的NFSIP设置被覆盖了。这个动作默认是在文件系统的/etc/init.d/ifconfig-eth0脚本里完成的。

我刚刚在/etc/init.d/rcS 里面把 /sbin/ifconfig lo 127.0.0.1 和 /etc/init.d/ifconfig-eth0 delete了后 nfs启动成功了

 

问题4:

突然间主机、虚拟机、板子无论ping哪里都这样了

PING 192.168.0.110 (192.168.0.110) 56(84) bytes of data.

From 192.168.0.10 icmp_seq=1 Destination Host Unreachable

解决: 重启即可

 

问题5:

本来已经连上NFS了,本机(win7)开了网络查询东西,之后板子重新启动时出错

dm9000 dm9000.0: eth0: link down

dm9000 dm9000.0: eth0: link up, 100Mbps, full-duplex, lpa 0x41E1

VFS: Unable to mount root fs via NFS, trying floppy.

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

[<c0039ca8>] (unwind_backtrace+0x0/0xfc) from [<c049fd9c>] (dump_stack+0x18/0x1c)

[<c049fd9c>] (dump_stack+0x18/0x1c) from [<c049fe00>] (panic+0x60/0x1ac)

[<c049fe00>] (panic+0x60/0x1ac) from [<c0008fd0>] (mount_block_root+0x204/0x25c)

[<c0008fd0>] (mount_block_root+0x204/0x25c) from [<c00090b0>] (mount_root+0x88/0xd0)

[<c00090b0>] (mount_root+0x88/0xd0) from [<c0009204>] (prepare_namespace+0x10c/0x1a8)

[<c0009204>] (prepare_namespace+0x10c/0x1a8) from [<c00084c4>] (kernel_init+0xf0/0x130)

[<c00084c4>] (kernel_init+0xf0/0x130) from [<c0034a34>] (kernel_thread_exit+0x0/0x8)

解决:断开当前本机网络,重试

 

 

 

 

附件目录

附件一

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

附件二

虚拟机下在2440开发板挂载nfs文件系统

附件三

主机、虚拟机、开发板网络环境搭建小结备忘

附件四

如何在VM虚拟Ubuntu中同时使用双网卡

附件五

实战:搭建OK6410NFS网络根文件系统--完结

 

 

 

附件1

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

来源:http://www.linuxidc.com/Linux/2011-03/33927.htm

正文内容:

 

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

 

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

 

首先第一步就是要为开发板烧写ubootkernel

 

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

 

 

 

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

 

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

 

2.下载Ubootnandflash中并设置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-servernfs-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服务

 

在完成前面的配置后,首先需要启动portmapNFS这两个服务,并且 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

 

重新启动portmapNFS服务

$ sudo /etc/init.d/portmap restart

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

 

检查portmapNFS服务状态

$ sudo /etc/init.d/portmap status

 

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

 

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

 

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

 

是更改目标板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文件成功!

 

 

 

 

 

 

 

 

 

 

 

附件2

题目:虚拟机下在2440开发板挂载nfs文件系统

来源:http://hi.baidu.com/tianma33521/item/7a25f40b6e1535ed34990234

正文内容:

 

忙活了一晚上,终于在虚拟机下成功挂载了nfs文件系统

 

硬件平台:vm ubuntu10.10 micro2440

 

下面是我主要参考的文章链接。

 

 

 

1、在虚拟机下建立两块网卡,一块为nat方式,一块为bridge方式。其中,net方式用来连接上网,bridge为挂载虚拟机。

 

http://hi.baidu.com/yeqing0218/blog/item/08fee9175361ac19c93d6d8c.html

 

2、在ubuntu下安装nfs系统。

 

3、开发板命令root:# mount -o nolock -t nfs 192.168.100.21:/home/cnh01994/nfsroot /mnt/nfs则工作正常。 直接mount无法挂载。

 

4http://apps.hi.baidu.com/share/detail/24305109

 

5

我的主机配置情况。

 

6

这个eth1的配置情况。eth1bridge方式。

 

我在这里一直没有办法配置eth1

 

后来干脆自己直接加了一个Auto eth1。令ip192.168.1.3 netmask255.255.255.0 gateway192.168.1.255这是是参照我开发板上的来设置的。

 

就这些吧,详细过程自己百度吧。呵呵,中间小情况不断,还好,一个个都解决了。baidu+google,万能。

 

7

 

Build Options>

 

Build BusyBox as a static binary (no shared libs)

 

Build with Large File Support (for accessing file>2GB)

 

如果选择 Build BusyBox as a static binary (no shared libs) 方式进行编译时,所需的库已经与程序静态地链接在一起,这些程序不需要额外的库就可以单独运行,但是自己编写的程序在文件系统上运行必须采用静态编译,否则会报诸如:bin/sh: hello :not found的错误。

 

静态编译如:

 

arm-linux-gcc –static hello.c –o hello

 

 

 

 

 

 

 

 

附件3

题目:主机、虚拟机、开发板网络环境搭建小结备忘

来源:http://hi.baidu.com/wswxfwps/item/aede37c85a428801ac092f19

正文内容:

首先得声明,本文章属转载,个人觉得写得灰常好,图文并茂,详细,深刻,不仅让本来网络没学好的本人对网络这一块有了更深刻的理解,而且解决了我纠结了几天的 开发板 虚拟机  win7 之间的通信问题得到了解决!

最近学习QTE,搞了两晚上终于搭建好了QT编译环境(QTX86环境,QTEX86环境,QTEArm环境),但是还是不知道怎么让QT程序在开发板上跑起来,貌似有中方可选方案:

1.静态编译QT库和QT程序,使QT程序能独立发布,不依赖外部库,看来是很简单,但搞了一晚上没搞明白,于是暂时放弃了这种方案,等以后熟悉了在回头研究

2.移植QT库到开发板,又有两种选择,重新烧写文件系统或使用NFS网络文件系统

  a)重新烧写文件系统,不懂怎么加入QT库,暂时不选

  b)使用NFS文件系统,也不懂,貌似使用NFS开发调试是潮流,不懂也得学一下,使用NFS文件系统首先的保证开发板和主机/虚拟机处于同一网络下,能互访互通,于是有了后面的网络搭建过程

 

目的:

1.开发板主机虚拟机能互访互通

2.主机,虚拟机能同时上网

 

本人使用开发环境

主机:x86-win7 带双网卡

虚拟机:wmware7.0 + ubuntu9.10

开发板:arm11Ok6410

 

网络配置:

1.网络模型

 

 

2.开发板IP配置如下,192.168.0.232烧写系统时设置的,具体多少无所谓,只要配置主机IP和虚拟机IP在同一子网内即可(这里开发板、主机、虚拟机通过网卡2构建了子网)

  a)连接开发板和主机的网线必须是交叉网线,什么是交叉网线:

    i.一头是:1白橙 2橙 3白绿 4蓝 5白蓝 6绿 白棕 8棕 (568B标准)

    ii.一头是:1白绿 2绿 3白橙 4蓝 5白蓝 6橙 7白棕  8棕 (568A标准)

    iii.交叉网线用于同口连接(如两边都是pc,或两边都是hub

  b)如果只有直连网线可以通过路由器连接

 

3.       win7主机配置

 

 

手动配置win7主机网卡2对应Ip地址,设置本地连接属性:

 

4.虚拟机wmware设置:

 

选择WMNet0WMNet1分别映射到真实的网卡1和玩卡2,这里net0映射到的时真实的无线网卡,net1映射到内网网卡

wmwareView”—>settings下设置

 

设置Ubuntu的网络:---Edit Connections

 

 

设置Ubuntu ip地址

 

上面这些设置,Ubuntu就可以做外开发环境了,可以ping通主机和开发板了

 

 

5.       现在Ubuntu只连接了局域网还不能上网,需要win7下共享网卡1的外部网络

 

 

之后重启下ubuntu就可以上网了

 

By sheny  2010.12.11

 

 

 

 

 

 

 

 

 

附件1

题目:[ubuntu]如何在VM虚拟Ubuntu中同时使用双网卡

来源:http://hi.baidu.com/totty/item/6691303e37a82b80b711dbb3

正文内容:

[ubuntu]如何在VM虚拟Ubuntu中同时使用双网卡

因为开发需要,我的PC要同时使用两块网卡,一块连接互联网(机器内置),另一块连接开发板(PCI8139)。 那么,同时运行的虚拟Linux是否也可以安装两块网卡,一块上网,一块连接开发板呢? 答案是肯定的!下面来看看具体步骤: 1)在虚拟机中添加两块网卡,一块采用NAT模式,另一块采用bridged模式(图1);

2Virtual Netword Editor中设置VMnet08139网卡(图2);

3)进入虚拟机,进行网络配置(图3):

我的eth0是本机网卡,NAT模式,因此采用DHCP自动分配。 eth1则是后加的8139bridged模式,因此需要手动分配ip192.168.0.3 另外两块网卡均不需使用漫游模式。 配好之后,就应该可以同时上网和连接开发板了。

最后说说开发板的启动过程: 开发板(ip192.168.0.2)从Windowsip192.168.0.1)获取linux内核,启动完毕后,从Ubuntuip192.168.0.3)挂载NFS网络文件系统。 非常方便,做开发的朋友可以试一下。

 

 

 

 

 

 

 

 

 

附件5

题目:实战:搭建OK6410NFS网络根文件系统--完结

来源:http://www.100ask.net/forum/showtopic-3946.aspx

正文内容:

根文件系统按照前面《搭建NFS网络根文件系统——内核和根文件系统制》中上传的文档制作的即可。我就是按照上述步骤制作的根文件系统。只要一步一步按照上述步骤,就没问题。 假设按照前面所说的方法移植的支持网络的uboot已经烧写进ok6410(怎么烧写ubootok6410手册很清楚) 那么启动开发板 瞬间按住空格键 输入printenv 显示了uboot的环境变量。会看到这个 bootargs=root=/dev/mtdblock2 rootfstype=cramfs console=ttySAC0,115200 bootcmd=nand read 0xc0008000 0x100000 0x500000;bootm 0xc0008000 如果你前面编译内核,只是按照飞凌默认配置,并没有做任何修改(但要设置使其支持nfs根文件系统这个,飞凌默认配置文件是支持这个的,所以可以不做任何修改),即没有修改相关启动代码(为了让其支持挂载nfs根文件系统而修改的代码),那么要用 setenv bootargs "root=dev/nfs nfsroot=192.168.5.100:/home/rootfs ip=192.168.5.120:192.168.5.100:192.168.5.1:255.255.255.0:witech.com.cneth0:off console=ttySAC0,115200" 说明:root=dev/nfs nfsroot=192.168.5.100:/home/rootfs nfs根文件系统所在的目录,必须和前面配置的nfs环境时目录一致 192.168.5.100虚拟机ip 192.168.5.120是开发板uboot设置的ip 192.168.5.1 网关 虚拟机上设置和开发办上的一致 255.255.255.0 子网掩码 请根据自己的情况 填写。 最后 :savenv 如果不能挂载nfs系统(每设置一个服务,必须重启这个服务)

(1)、NFS服务配置是否正确 #vi /etc/exports

2)、防火墙是否关闭(3)、IP地址是否设置正确(4)、开发板网线直接连接交换机吧!(5)、·············

 

 

 

 

 

原文地址:https://www.cnblogs.com/zeedmood/p/2808376.html