现在的位置: 首页 > 综合 > 正文

关于u-boot for tiny210 NFS启动Android根文件系统(by liukun321 咕唧咕唧)

2013年08月24日 ⁄ 综合 ⁄ 共 2854字 ⁄ 字号 评论关闭

         离开了8个月,总算回来了,再看看以前的东西,发现忘得都差不多了。这几天看了一下信箱里的信,看到网友们的问题,发现凭目前那点残缺不全的记忆,大部分问题都没发回答。真是忘了很多东西。最近重新拿出开发板,做了点恢复性训练。有些网友的信已经发来几个月了,现在才开始动手解决朋友们的问题,可能也没什么价值了。所以,我打算挑几个经常出现的问题把解决方法写成blog,兴许还能帮到以后遇到这类问题的朋友。今天写第一个,也是最简单的一个:关于u-boot for tiny210 NFS启动Android根文件系统。

         碰到这个问题的朋友大多数是因为NFS配置不正确(内核及服务器部分配置不正确)。u-boot for tiny210网络部分已经完全没问题了。只需要按下面的步骤就完全OK:

     假设我的根文件系统放在/nfsroot/rootfs_android 目录下。

    1,配置好网络。这包括你的开发板uboot的ip和pc的ip地址要在同一个网段, 网关可以都不设置,如果设置两者的网关要设成相同的。

    2、内核的配置:        File systems  --->   

                                                                      [*] Network File Systems  --->

                                                                                                          --- Network File Systems                                         
                                                                                                        <*>   NFS client support                                         
                                                                                                │ │    [*]     NFS client support for NFS version 3                       
                                                                                                │ │    [ ]       NFS client support for the NFSv3 ACL protocol extension
                                                                                                │ │    [ ]     NFS client support for NFS version 4 (EXPERIMENTAL)      
                                                                                                │ │    [*]     Root file system on NFS   

配置完后重新编译。  

3、内核启动参数

       如果你的内核配置了DHCP,内核会在启动时会默认用DHCP获取IP,使内核启动到这一阶段时ip被换掉,最终导致NFS挂载失败,所以我们在写内核启动参数是要注意一下ip= 这个参数的写法,具体格式介绍如下:

ip参数的格式如下:

ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>

client-ip:

你正在使用的这块板子,你要为它设置的ip

server-ip:

提供nfs服务的服务器的ip地址。如不需要NFS服务于板子,则此项可以空置

gw-ip:

网关的ip地址,如果nfs与目标板在同一个网段内,则此项可以空置

netmask:

子网掩码,如此项为空,则子网掩码为默认值255.255.255.0

hostname:

你希望给目标板设置的主机名,在linux的shell中的如bash,命令行最开始有一个形如 blacksword@laptop2:~ $ 这样的一个提示符,blacksword指当前的用户,而laptop2就是一个hostname.此项可以留空

device:

如果目标板上仅一个网卡,且只接了一个PHY,同时电路的设计没有将PHY拉出两个地址来,则此项为空。 如果不指有一个网卡,则可以指定要设置的ip地址是作用于哪一个网卡的。 如指定给第一块网卡,则该参数为eth0. 第二块为eth1,依此类推。

autoconf:

自动配置未明确指定参数的方式,可以是dhcp, rarp, bootp。如果不希望使用自动配置则可以使用off值来关闭  autoconf参数可以独立作用于ip参数,如ip=dhcp即表示由dhcp服务器给内核的ip参数提供所有数据。 ip=off则表示所有参数都不配置,留待系统启动进行配置。

指定静态ip的方法为 ip=<clinet-ip>::::eth0:off  请注意中间冒号的个数。其他各项可以根据自己的实际情况来指定相应的值。

下面是我的启动参数:

CONFIG_CMDLINE="root=/dev/nfs nfsroot=192.168.186.30:/nfsroot/rootfs_androidip=192.168.186.13:192.168.186.30::255.255.255.0::eth0:off   rw   console=ttySAC0,115200 init=/linuxrc androidboot.console=s3c2410_serial0
mem=512M"

注意红字部分,配置后禁用了DHCP。

3.pc服务器端的配置

首先是nfs服务的配置文件: /etc/exports这个文件

内容:

/nfsroot/rootfs_android 
192.168.186.*(
rw,sync,no_root_squash)

当然内容要根据自己的pc配置,我只举个例子。记得配置完后要重启一下NFS服务  用下面命令即可

$service nfs restart

注意:遇到挂载失败时,首先看一下网络是否是通的,再就是看一下权限,如果用友善的根文件系统,要注意解压时的权限。

下图是成功启动后的打印信息:

抱歉!评论已关闭.