Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60982326
  • 博文数量: 173
  • 博客积分: 10400
  • 博客等级: 上将
  • 技术积分: 5973
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-03 22:08
文章分类

全部博文(173)

文章存档

2013年(2)

2012年(1)

2011年(17)

2010年(28)

2009年(76)

2008年(49)

分类: LINUX

2010-07-16 15:25:48

嵌入式linux的开发中,内核移植及根文件系统的建立过程 中,为了验证内核移植是否成功,根文件系统的建立是否可行,需要将它们的映像文件烧写到Flash中反复试验。如此频繁地烧写Flash,既浪费时间,减 低了开发效率,还会对Flash造成损伤。因此在内核移植及根文件系统的建立过程中一般采用网络引导。具体操作过程如下:
一 Boot Loader环境变量及内核参数设置
我的开发板的boot loader采用的是U-boot,其环境变量设置如下:
Uboot> printenv
bootdelay=3
baudrate=115200
ethaddr=00:12:34:56:78:9a
ipaddr=192.168.0.9          
serverip=192.168.0.1        
netmask=255.255.255.0
rootpath=/home/zht/rfsys      
stdin=serial
stdout=serial
stderr=serial
bootcmd=tftp 21000000 uImage;bootm 21000000    
bootargs=root=/dev/nfs rw nfsroot=192.168.0.1:/home/zht/rfsys nfsaddrs=192.168.0.48: 192.168.0.1:192.168.0.1:255.255.255.0 console=ttyS0,115200 mem=32M  
 
① 设置目标板IP地址
② 设置服务器IP地址
③ 设置根文件系统在服务器上的路径,注意该路径一定要设定为服务器上的nfs目录。
④ bootcmd是u-boot启动后执行的命令,命令之间用分号分隔。
   tftp 21000000 uImage 表示通过tftp 将内核映像下载到RAM中地址为0x21000000;
   bootm 21000000 启动linux操作系统
⑤ 定义u-boot传送给linux内核的命令行参数,该命令行指定以网络文件系统 作为根文件系统。
其中root=/dev/nfs,并非真的设备,而是一个告诉内核经由 网络取得根文件系统的旗标。
参数nfsroot这个参数告诉内核以那一台机器,那个目录以及那个网 络文件系统选项作为根文件系统使用。参数的格式如下:
nfsroot=[:][,]
如果指令列上没有给定 nfsroot 参数,则将使用‘/tftpboot/%s’预设值。其它选项如下:
--指定网络文件系统服务端的互联网地址(IP address)。如果没有给定此栏位,则使用由 nfsaddrs 变量(见下面)所决定的值。此参数的用途之一是允许使用不同机器作为反向地址解析协议(RARP) 及网络文件系统服务端。通常你可以不管它(设为空白)。
-- 服务端上要作为根挂入的目录名称。如果字串中有个‘%s’ 符记(token),此符记将代换为客户端互联网地址之 ASCII 表示法。
-- 标准的网络文件系统选项。所有选项都以逗号分开。如果没有给定此选项栏位则使用下列的预设值:
        port            = as given by server portmap daemon
        rsize           = 1024
        wsize           = 1024
        timeo           = 7
        retrans         = 3
        acregmin        = 3
        acregmax        = 60
        acdirmin        = 30
        acdirmax        = 60
        flags           = hard, nointr, noposix, cto, ac
参数nfsaddrs设定网络通讯所需的各种网络接口地址。如果没有给定这个参数,则 内核核会试著使用反向地址解析协议以及/或是启动协议(BOOTP)以找出这些参数。其格式如下:
        nfsaddrs=::::::
-- 客户端的互联网地址。如果没设,此地址将由反向地址解析协议或启动协议来决定。使用何种协议端视配置核心时打开的选项以及 参数而定。如果设定此参数,就不会使用反向地址解析协议或启动协议。
-- 网络文件系统服务端之互联网地址。如果使用反向地址解析协议来决定客户端地址并且设定此参数,则只接受从指定之服务端传来的回应。要使用不同的机器作为反 向地址解析与网络文件系统服务端的话,在此指定你的反向地址解析协议服务端(保持空白)并在 nfsroot 参数(见上述)中指定你的网络文件系统服务端。如果此项目空白则使用回答反向地址解析协议或启动协议之服务端的地址。
-- 网关(gateway)之互联网地址,若服务端位 於不同的子网络上时。如果此项目空白则不使用任何网关并假设服务端在本地的(local)网络上,除非由启动协议接收到值。
-- 本地网络界面的网络掩码。如果为空白,则网络掩码由客户端的互联网地址导出,除非由启动协议接收到值。
-- 客户端的名称。如果空白,则使用客户端互联网地址之 ASCII-标记法,或由启动协议接收的值。
-- 要使用的网络设备名称。如果为空白,所有设备都会用来发出反向地址解析请求,启动协议请求由最先找到的设备发出。网络文件系统使用接收到反向地址解析协议 或启动协议回应的设备。如果你只有一个设备那你可以不管它。
-- 用以作为自动配置的方法。如果是 `rarp' 或是 `bootp' 则使用所指示的协议。如果此值为 `both' 或空白,若配置核心时有打开这两种协议则都使用。 `none' 表示不使用自动配置。这种情况下你必须指定前述栏位中所有必要的值。
参数可以作为 nfsaddrs 的参数单独使用(前面没有任何 `:` 字符),这种情况下会使用自动配置。然而,此种情况不能使用 `none'作为值。
 
二 内核配置要求
 
添加内核对NFS的支持:
选中networking options-》IP:kernel level auloconfiguralion项
选中file systems-》network file systems-》下的root file system on nfs 和nfs file system support
阅读(1384) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~