玩转mini2440开发板之【使用nfs无法启动的问题(Virtualbox桥接网络)】

发布者:Joyful444Life最新更新时间:2022-05-10 来源: eefocus关键字:mini2440开发板  nfs  无法启动 手机看文章 扫描二维码
随时随地手机看文章

今天晚上研究了一下如何通过super-vivi来使用nfs网络文件系统来启动mini2440开发板,一开始一直无法成功,折腾了半天总算搞定了,总结一下:


1、首先,介绍一下我的开发环境。


物理机:win10;

虚拟机:ubuntu 12.04;

模拟器:virtualbox 5.20;

我的步骤是,按照用户手册的说明,先用super-vivi引导系统,输入q进入命令行模式,然后输入nfs启动命令(如下),最后输入boot启动系统。


param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.100.108:/opt/FriendlyARM/mini2440/rootfs ip=192.168.100.230:192.168.100.108:192.168.100.1:255.255.255.0:sbc2440.arm9.net:eth0:off"


但是,系统始终无法启动。每次都提示:


Copy linux kernel from 0x00060000 to 0x30008000, size = 0x00500000 ... done

zImage magic = 0x016f2818

Setup linux parameters at 0x30000100

linux command line is: "console=ttySAC0 root=/dev/nfs nfsroot=192.168.100.108:/opt/FriendlyARM/mini2440/rootfs ip=192.168.100.230:192.168.100.108:192.168.100.1:255.255.255.0:mini2440.arm9.net:eth0:off"

MACH_TYPE = 1999

NOW, Booting Linux......

Uncompressing Linux................................................................................................................................................... done, booting the kernel.

Linux version 2.6.32.2-FriendlyARM (root@LEON) (gcc version 4.4.3 (ctng-1.6.1) ) #1 Sat Jan 4 21:10:09 CST 2014


.......【此处略去N个字】.........


eth0: link down

IP-Config: Complete:

     device=eth0, addr=192.168.100.230, mask=255.255.255.0, gw=192.168.100.1,

     host=mini2440, domain=, nis-domain=arm9.net,

     bootserver=192.168.100.108, rootserver=192.168.100.108, rootpath=

Looking up port of RPC 100003/2 on 192.168.100.108

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

rpcbind: server 192.168.100.108 not responding, timed out

Root-NFS: Unable to get nfsd port number from server, using default

Looking up port of RPC 100005/1 on 192.168.100.108

rpcbind: server 192.168.100.108 not responding, timed out

Root-NFS: Unable to get mountd port number from server, using default

Root-NFS: Server returned error -5 while mounting /opt/FriendlyARM/mini2440/rootfs

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

VFS: Cannot open root device "nfs" or unknown-block(2,0)

Please append a correct "root=" boot option; here are the available partitions:

1f00             256 mtdblock0 (driver?)

1f01             128 mtdblock1 (driver?)

1f02            5120 mtdblock2 (driver?)

1f03           60032 mtdblock3 (driver?)

1f04           65536 mtdblock4 (driver?)

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


可以看到,上述log中最关键的地方就是”rpcbind: server 192.168.100.108 not responding, timed out“这句话了。它的意思就是,开发板尝试通过局域网连接到目标系统的nfs,但是目标无响应,超时了。这就意味着,要么就是ubuntu系统的nfs没有挂载成功,要么就是开发板没有连入局域网,要么就是ubuntu系统没有连入局域网。于是一个一个来排查吧。


2、首先排查第一个问题,确认一下ubuntu的nfs文件系统是否挂载成功了。这个问题,可直接参考我的另一篇博客(如何在ubuntu 12.04系统下开启nfs网络文件系统)中提到的第5点。我确认了我的系统,没有问题。


3、然后排查第二个问题,确认一下mini2440开发板是否成功连入局域网。可参见我的另一篇博客(mini2440开发板linux系统下的网络参数设置)中的第3点。我确认了我的开发板,没有问题。


4、上述两个方面都验证过了,都没问题,那问题肯定就出在第3个方面了。也就是说,是ubuntu系统没有连入到局域网中,导致开发板无法接入到nfs文件系统。换句话说,就是ubuntu系统和mini2440开发板并没有处于同一个局域网中。


一开始我意识到这一点时,我还怀疑是不是因为我的笔记本没有使用网线,而用的是无线网络。所以我把笔记本的无线网卡禁用掉,然后特地找了一根网线来试试。结果仍然一样。这就证明跟无线/有线并没有什么关系,应该是其他方面的问题。


然后我就去网上查阅各位大神的博客、论坛等。偶然间看到一篇文章里提到了virtualbox下的虚拟机网络模式配置,提到了桥接模式和ip地址设置,不然无法上网。我立马灵光一闪,感觉可能跟我的虚拟机网络模式和ip地址配置有点关系。


因为我在这之前只是确认了一下物理机的ip地址是192.168.100.108,然后就简单的以为我的虚拟机也是这个ip地址,然后就把这个ip地址写入到nfs的启动参数中,配置给mini2440。但是,物理机和虚拟机的IP地址是不一样的。我的nfs目录是挂载在虚拟机ubuntu的系统下,而不是物理机win10的系统下。因此我需要获取到虚拟机ubuntu系统的ip地址。可是此时在ubuntu系统下运行ifconfig命令时,得到的ip地址信息却是127.0.0.1之类的信息。这显然是不对的!而且,此时从虚拟机ping物理机是OK的,但是从物理机ping虚拟机是失败的,这样肯定是无法从外面挂载虚拟机里的nfs文件系统的。那该怎么办呢?


5、这就要回到virtualbox的网络模式的配置问题上面了。如下图,将virtualbox的网卡模式设置为桥接模式(至于具体原因,请自行百度)。

virtualbox网卡模式设置

6、重新启动虚拟机,输入ifconfig命令查询,发现其ip地址变成了:


leon@Ubuntu:~$ ifconfig

eth3      Link encap:以太网  硬件地址 08:00:27:ea:ba:41  

          inet 地址:192.168.100.104  广播:192.168.100.255  掩码:255.255.255.0

          inet6 地址: fe80::a00:27ff:feea:ba41/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1

          接收数据包:242 错误:0 丢弃:0 过载:0 帧数:0

          发送数据包:126 错误:0 丢弃:0 过载:0 载波:0

          碰撞:0 发送队列长度:1000 

          接收字节:42431 (42.4 KB)  发送字节:17387 (17.3 KB)


lo        Link encap:本地环回  

          inet 地址:127.0.0.1  掩码:255.0.0.0

          inet6 地址: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  跃点数:1

          接收数据包:24 错误:0 丢弃:0 过载:0 帧数:0

          发送数据包:24 错误:0 丢弃:0 过载:0 载波:0

          碰撞:0 发送队列长度:0 

          接收字节:3519 (3.5 KB)  发送字节:3519 (3.5 KB)


这就说明修改成功了。此时的虚拟机已经跟物理机一样并存于局域网中了,它的ip地址,就可以直接提供给mini2440使用了。


7、于是,将此时的虚拟机的ip地址,录入到mini2440的nfs启动参数中:


param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.100.104:/opt/FriendlyARM/mini2440/rootfs ip=192.168.100.230:192.168.100.104:192.168.100.1:255.255.255.0:sbc2440.arm9.net:eth0:off"


然后输入boot,便可以看到mini2440成功启动了!


Copy linux kernel from 0x00060000 to 0x30008000, size = 0x00500000 ... done

zImage magic = 0x016f2818

Setup linux parameters at 0x30000100

linux command line is: "console=ttySAC0 root=/dev/nfs nfsroot=192.168.100.108:/opt/FriendlyARM/mini2440/rootfs ip=192.168.100.230:192.168.100.108:192.168.100.1:255.255.255.0:mini2440.arm9.net:eth0:off"

MACH_TYPE = 1999

NOW, Booting Linux......

Uncompressing Linux................................................................................................................................................... done, booting the kernel.

Linux version 2.6.32.2-FriendlyARM (root@LEON) (gcc version 4.4.3 (ctng-1.6.1) ) #1 Sat Jan 4 21:10:09 CST 2014


................


eth0: link down

IP-Config: Complete:

     device=eth0, addr=192.168.100.230, mask=255.255.255.0, gw=192.168.100.1,

     host=mini2440, domain=, nis-domain=arm9.net,

     bootserver=192.168.100.104, rootserver=192.168.100.104, rootpath=

Looking up port of RPC 100003/2 on 192.168.100.104

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

Looking up port of RPC 100005/1 on 192.168.100.104

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

Freeing init memory: 156K

hwclock: settimeofday() failed: Invalid argument


Try to bring eth0 interface up......NFS root ...Done


Please press Enter to activate this console.


8、哈哈,搞定,收工!


篇后语:


1、开发板和目标系统一定要处于同一个局域网下。当然,所谓同一个局域网,可以是通过有线的网线连入同一个路由器,也可以是通过无线网卡连入同一个路由器。但是一定要保证二者的IP地址处于同一个网段,网关和掩码也是一样的。

2、nfs文件系统如果搭建于虚拟机下,则一定要将虚拟机的网络模式设置为桥接模式,否则虚拟机将无法满足上述第一点。

关键字:mini2440开发板  nfs  无法启动 引用地址:玩转mini2440开发板之【使用nfs无法启动的问题(Virtualbox桥接网络)】

上一篇:玩转mini2440开发板之【如何设置开发板的网络参数】
下一篇:玩转mini2440开发板之【编译烧录rootfs根文件系统全过程记录】

推荐阅读最新更新时间:2024-10-30 10:38

linux-2.6.32在mini2440开发板上移植 配置USB外设
编者:因为LINUX内核对S3C2440的Host驱动的已经支持,而且支持的外设相当的丰富,所以这一部分只是进行配置就可以使用。因为配置的东西较多,没有给出详细的截图,看手册上介绍的就很明白。需要手册的请留下邮箱索取。 1 配置和测试USB 键盘、扫描器和鼠标 在内核源代码目录的终端输入:make menuconfig,依次选择如下子菜单项: Device Drivers --- HID Devices --- 按空格键选中“USB Human Interface Device (full HID) support”,这样就配置好了USB键盘和鼠标项。 提示:这里的配置选项对应的内核源代码目录是:
[单片机]
能量密度160Wh/Kg、2C循环>6000次的NFS电池来了!
2023年被视为 钠离子电池 的元年,且市场一致认为钠离子 电池 市场空间广阔。 钠电市场是千亿市场 先看钠电池的市场趋势与市场规模。 市场趋势方面,2022年6月,国家发改委、国家能源局、工业和信息化部、科技部等国家九部委联合发布《“十四五”可再生能源发展规划》,其中提到,要研发储备钠离子电池、固态 锂离子电池 等高能量密度 储能技术 。 市场规模方面,由研究机构EVTank、伊维经济研究院联合中国电池产业研究院共同发布的《中国钠离子电池行业发展白皮书(2022年)》测算数据显示,钠离子电池2026年的市场空间可达到369.5GWh,理论市场规模达到1500亿元。 钠离子电池凭借其上游资源丰富、成本低等优势在
[汽车电子]
能量密度160Wh/Kg、2C循环>6000次的<font color='red'>NFS</font>电池来了!
预防酒驾新技术亮相 喝酒后无法启动汽车
酒驾的危险性是不言而喻的。为了有效阻止酒后驾驶这种不负责任的行为,不少汽车厂商和研究机构正在技术层面上探索新的可能。最近,美国国家公路交通安全管理局(NHTSA)就联合多家汽车制造商展示了一种独特的车内酒精检测系统。该系统可在不到1秒种的时间内检测司机血液当中的酒精含量,如果检测结果超过 0.08,汽车就不会启动。 研究者们目前正在探索两种不同的整合方案:一种可从司机的正常呼吸当中检测酒精含量,另一种则是通过对于指尖皮肤的红外扫描。NHTSA表示,他们想要让这种技术成为未来汽车的安全功能之一,就像是自动刹车和车道偏离预警系统。 “虽然还有大量的工作要做,但来自国会和汽车产业的支持帮助我们实现了重要的研发成就。”NHTSA
[嵌入式]
建立交叉编译环境——mini2440开发板
Ubuntu 64位 直接安装arm-linux-gcc-4.4.3 会出错 ~$ sudo apt-get install ia32-libs 装一些32位的库 ``` 开发环境:Fedora9 32位 注:vmbox桥接网络时 需要设置静态IP,否则无法联网 第一步:安装arm-linux-gcc-4.4.3 将光盘目录 linux中的 arm-linux-gcc-4.4.3.tgz 复制到某个目录下如 tmp,然后 进入到该目录,执行解压命令: #cd /tmp tar -xzvf arm-linux-gcc-4.4.3.tar.gz -C / 注意:C 后面有个空格,并且 C 是大写的,它是英文单词
[单片机]
建立交叉编译环境——<font color='red'>mini2440</font><font color='red'>开发板</font>
三相电机无法启动原因_三相电机故障排除方法
  三相电机无法启动原因   三相异步电机是感应电动机的一种,是靠同时接入380V三相交流电流(相位差120度)供电的一类电动机,由于三相异步电动机的转子与定子旋转磁场以相同的方向、不同的转速旋转,存在转差率,所以叫三相异步电动机。三相异步电动机转子的转速低于旋转磁场的转速,转子绕组因与磁场间存在着相对运动而产生电动势和电流,并与磁场相互作用产生电磁转矩,实现能量变换。   三相电机无法启动的原因可能有很多,以下是其中一些可能的原因:   电源故障:检查电源线路是否正常连接,电源电压是否在额定范围内。   电机电路故障:检查电机内部的电路,是否有短路、开路、接触不良等故障。   电机机械故障:检查电机机械部分是否有卡住、转子转
[嵌入式]
nfs启动最小文件系统
1.前言   开发环境 Ubuntu server 18.04,因为找到的资料使用的nand是64M的,而我手上的板子是256M,所以资料里的镜像bin文件不能直接用,会有个ecc的问题,因为他在64M的nand上用的是yaffs而256M的nand上只能用yaffs2,又由于水平不足,其实就是懒,所以不想去修改相关代码而选择从nfs上启动根文件系统,毕竟以后要移植驱动或者编写应用直接用nfs挂载方便,折腾了好几天终于把该踩得坑都填上了, 成功启动到shell,不过自学还是会走太多弯路呀。 2.网络环境配置   要实现从nfs启动开发板,首先要让虚拟机和开发板建立网络连接,因为我的虚拟机是通过vmnet8来net的方式连接外网,所
[单片机]
linux-2.6.32在mini2440开发板上移植 SD卡驱动移植
编者:这个驱动还是比较复杂的,先移植着,以后在分析吧。 SD卡驱动移植 1 在内核中注册SD 设备驱动 Linux-2.6.32.2 已经自带了S3C2440 芯片的SD 卡驱动,我们只需在初始化代码中加入SD 平台设备结构就可以,打开arch/arm/mach-s3c2440/mach-mini2440.c,在nand flash 平台结构后面添加如下红色代码: ;在mini2440.c 的顶部添加SD 卡设备结构所需的头文件 #include linux/mmc/host.h #include plat/mci.h static struct platform_device mini2440_device_eth = { .n
[单片机]
基于Linux网络文件系统(NFS)和S3C2440的Web
  随着数码相机和互联网的普及,越来越多的家庭拥有自己的媒体库。媒体库中既包含有自己拍摄的影像文件,也有从网络上下载的影像资料。然而展示影像资料的手段单一,主要通过PC来实现。因此未来构建以媒体库为中心的家庭多媒体网络,把多媒体资料在各式各样的家庭网络媒体终端上展示出来,将成为一种必然的趋势。媒体终端包括Web数码相框、网络数字电视等。   Web数码相框的提出正是为了设计一种家庭嵌入式网络媒体终端,但目前市场上常见的数码相框的网络可扩展性差,本设计方案的提出正是为了能够弥补这方面的不足,提高网络可扩展性。并在本设计方案的基础上构建网络数字电视等其他多功能终端实体。   1 技术方案   Web数码相框要具有JPEG图像文
[单片机]
基于Linux<font color='red'>网络</font>文件系统(<font color='red'>NFS</font>)和S3C2440的Web
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved