推荐阅读顺序:
基本环境搭建:
【配置】在虚拟机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绿 7 白棕 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中,设置VMnet0为bridged,指向Realtek PCIe FE Family Controller网卡;没有这个网卡就先选别的,之后板子打开失败(就是一直黑屏,大概3、4分钟毫无反应)再回到Editor这里,就会发现有另外一块网卡识别出来,选择它再重启板子就可以了。将VMnet0设置为Host-only而不是bridge好像也可以自动识别。
|
//有需要可继续添加 |
以上子环境A配置完毕 |
注意事项 |
子环境配置B:虚拟机Ubuntu12.04的设置
配置步骤1 进入虚拟机,根据主机IP修改虚拟机IP |
在右上角的网络连接图标,里边有edit connection可以点进去设置,上网用的网卡不用管,但连板子用的网卡IP要设置好(可以通过关闭是否断网,看看哪个是本机上网用的网卡),一定要跟主机在同一个网段内(就是IP地址的前三个数字相同,最后一个不一样)。
我的eth0是本机网卡,NAT模式,因此采用DHCP自动分配。 eth1则是后加的网卡,bridged模式,因此需要手动分配ip:192.168.0.10。 192.168.0.10为宿主机(有虚拟机的就是虚拟机了)IP地址 192.168.0.255网关 开发板上设置和虚拟机上的一致! 255.255.255.0 掩码 另外两块网卡均不需使用漫游模式。 配好之后,就应该可以同时上网和连接开发板了。 顺便说说开发板的启动过程: 开发板(ip:192.168.0.232)从Windows(ip:192.168.0.2)获取linux内核,启动完毕后,从Ubuntu(ip:192.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
|
解决方法: 相互ping能ping通,就是到了那一步网不能连接上,服务器没有通。从网络这个方向找问题吧 1、http://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
2、http://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 判断,即可,我们最近计划发布的新版本已经解决了这个问题,着急的朋友们可以自己手动修改一下。
3、http://bbs.witech.com.cn/viewthread.php?tid=11818 告诉你一个简单暴力方法:把·pc机共享目录·(是ubuntu里边那个!)下的、etc/init.d/ifconfig-eth0 中的ifconfig eth0 down 改成ifconfig eth0 up 即可 不过这不是根本解决方法,正常的是不会执行这个的,你最好按照这里的条件找到原因
4、http://www.arm9home.net/simple/index.php?t3528.html 看起来像是·文件系统·(是ubuntu里边那个!)在初始化过程中重新配置了网卡的IP地址,造成原本的NFS的IP设置被覆盖了。这个动作默认是在文件系统的/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成功,期间遇到了很多的问题。今天挂载成功后,才觉得那些问题中有很多都是可以避免的。但也许从另一个角度来讲,也是在锻炼自己的能力。
先说一说主要的步骤,然后我就说说要挂载成功的几个关键地方吧,你挂载不成功,很有可能就是这几个关键地方没有做好。
首先第一步就是要为开发板烧写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,这个前提是你能够进入开发板环境,一般也就是你已经安装了类似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无法挂载。
4、http://apps.hi.baidu.com/share/detail/24305109
5、 我的主机配置情况。
6、 这个eth1的配置情况。eth1为bridge方式。
我在这里一直没有办法配置eth1。
后来干脆自己直接加了一个Auto eth1。令ip:192.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 开发板:arm11(Ok6410)
网络配置: 1.网络模型
2.开发板IP配置如下,192.168.0.232烧写系统时设置的,具体多少无所谓,只要配置主机IP和虚拟机IP在同一子网内即可(这里开发板、主机、虚拟机通过网卡2构建了子网) a)连接开发板和主机的网线必须是交叉网线,什么是交叉网线: i.一头是:1白橙 2橙 3白绿 4蓝 5白蓝 6绿 7 白棕 8棕 (568B标准) ii.一头是:1白绿 2绿 3白橙 4蓝 5白蓝 6橙 7白棕 8棕 (568A标准) iii.交叉网线用于同口连接(如两边都是pc,或两边都是hub) b)如果只有直连网线可以通过路由器连接
3. win7主机配置
手动配置win7主机网卡2对应Ip地址,设置“本地连接”属性:
4.虚拟机wmware设置:
选择WMNet0和WMNet1分别映射到真实的网卡1和玩卡2,这里net0映射到的时真实的无线网卡,net1映射到内网网卡 在wmware的“View”—>“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); 2)Virtual Netword Editor中设置VMnet0为8139网卡(图2); 3)进入虚拟机,进行网络配置(图3): 我的eth0是本机网卡,NAT模式,因此采用DHCP自动分配。 eth1则是后加的8139,bridged模式,因此需要手动分配ip:192.168.0.3。 另外两块网卡均不需使用漫游模式。 配好之后,就应该可以同时上网和连接开发板了。 最后说说开发板的启动过程: 开发板(ip:192.168.0.2)从Windows(ip:192.168.0.1)获取linux内核,启动完毕后,从Ubuntu(ip:192.168.0.3)挂载NFS网络文件系统。 非常方便,做开发的朋友可以试一下。
|
附件5
题目:实战:搭建OK6410NFS网络根文件系统--完结 |
来源:http://www.100ask.net/forum/showtopic-3946.aspx |
正文内容: |
根文件系统按照前面《搭建NFS网络根文件系统——内核和根文件系统制》中上传的文档制作的即可。我就是按照上述步骤制作的根文件系统。只要一步一步按照上述步骤,就没问题。 假设按照前面所说的方法移植的支持网络的uboot已经烧写进ok6410(怎么烧写uboot,ok6410手册很清楚) 那么启动开发板 瞬间按住空格键 输入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)、·············
|