• 嵌入式成长轨迹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)、·············

     

     

     

     

     

  • 相关阅读:
    elasticsearch _bulk api
    elasticsearch _update api 更新部分字段内容
    elasticsearch _create api创建一个不存在的文档
    sql之left join、right join、inner join的区别
    Eclipse FreeMarker 插件安装
    Linux下Tomcat服务器重启与关闭
    SQL JOIN的用法
    HttpClient请求
    Struts2学习笔记
    Tomcat长出现的内存溢出问题
  • 原文地址:https://www.cnblogs.com/zeedmood/p/2808376.html
Copyright © 2020-2023  润新知