U-boot使用NFS文件系统的bootargs总结

转载 2012年03月25日 00:56:01

#setenv bootargs noinitrd console=ttySAC0,115200 init=/linuxrc mem=64M root=/dev/nfs nfsroot=192.168.2.125:/home/hufei/nfsrootip=192.168.2.6:192.168.2.125:192.168.2.125:255.255.255.0:hufei.cublog.cn:eth0:off

initrd, noinitrd:
当你没有使用ramdisk启动系统的时候,你需要使用noinitrd这个参数,但是如果使用了的话,就需要指定initrd=r_addr,size, r_addr表示initrd在内存中的位置,size表示initrd的大小。

console:

console=tty  使用虚拟串口终端设备 .
console=ttyS[,options] 使用特定的串口,options可以是这样的形式bbbbpnx,这里bbbb是指串口的波特率,p是奇偶位(从来没有看过使用过),n是指的bits。
console=ttySAC[,options] 同上面。

看你当前的环境,有时用ttyS,有时用ttySAC,网上有人说,这是跟内核的版本有关,2.4用ttyS,2.6用ttySAC,但实际情况是官方文档中也是使用ttyS,所以应该是跟内核版本没有关联的。可以查看Documentation/serial-console.txt找到相关描述。

init:

init指定的是内核启起来后,进入系统中运行的第一个脚本,一般init=/linuxrc, 或者init=/etc/preinit,preinit的内容一般是创建console,null设备节点,运行init程序,挂载一些文件系统等等操作。请注意,很多初学者以为init=/linuxrc是固定写法,其实不然,/linuxrc指的是/目录下面的linuxrc脚本,一般是一个连接罢了。如果内核找不到linurc文件,将会依次搜索/sbin/init,/etc/init,/bin/init,/bin/sh.

mem:

指定内存大小,不是必须的

root:

用来指定rootfs的位置, 常见的情况有: 
    root=/dev/ram rw   
    root=/dev/ram0 rw
请注意上面的这两种设置情况是通用的,我做过测试甚至root=/dev/ram1 rw和root=/dev/ram2 rw也是可以的,网上有人说在某些情况下是不通用的,即必须设置成ram或者ram0,但是目前还没有遇到,还需要进一步确认,遇到不行的时候可以逐一尝试。

    root=/dev/mtdx rw
    root=/dev/mtdblockx rw
    root=/dev/mtdblock/x rw
    root=31:0x

上面的这几个在一定情况下是通用的,当然这要看你当前的系统是否支持,不过mtd是字符设备,而mtdblock是块设备,有时候你的挨个的试到底当前的系统支持上面那种情况下,不过root=/dev/mtdblockx rw比较通用。此外,如果直接指定设备名可以的话,那么使用此设备的设备号也是可以的。

root=/dev/nfs,并非真的设备,而是一个告诉内核经由网络取得根文件系统的旗标。 
在文件系统为基于nfs的文件系统的时候使用。当然指定root=/dev/nfs之后,还需要指定nfsroot,

nfsroot这个参数告诉内核以哪一台机器,哪个目录以及哪个网络文件系统选项作为根文件系统使用。参数的格式如下:

nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]

如果指令列上没有给定 nfsroot 参数,则将使用‘/tftpboot/%s’预设值。其它选项如下:

<server-ip> –指定网络文件系统服务端的互联网地址(IP address)。如果没有给定此栏位,则使用由 nfsaddrs 变量(见下面)所决定的值。此参数的用途之一是允许使用不同机器作为反向地址解析协议(RARP)及网络文件系统服务端。通常你可以不管它(设为空白)。

<root-dir> – 服务端上要作为根挂入的目录名称。如果字串中有个‘%s’ 符记(token),此符记将代换为客户端互联网地址之ASCII 表示法。

<nfs-options> – 标准的网络文件系统选项。所有选项都以逗号分开。如果没有给定此选项栏位则使用下列的预设值:

        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)以找出这些参数。其格式如下:

ip:

下面是U-boot官方文档提供的IP参数解析:

setenv bootargs ${bootargs}

ip=${ipaddr}:${serverip}:\

${gatewayip}:${netmask}:\

${hostname:${netdev}:off

注意,上面换行的地方均有空格。其中 192.168.2.6是开发板的IP,192.168.2.125

是PC端(或虚拟机)的 IP,上面的IP根据自己的实际情况修改,不要弄错了。

nfsaddrs=<my-ip>:<serv-ip>:<gw-ip>:<netmask>:<name>:<dev>:<auto>

<my-ip> – 客户端的互联网地址。如果没设,此地址将由反向地址解析协议(RARP)或启动协议来决定。使用何种协议端视配置核心时打开的选项以及 参数而定。如果设定此参数,就不会使用反向地址解析协议或启动协议。

<serv-ip> – 网络文件系统服务端之互联网地址。如果使用反向地址解析协议来决定客户端地址并且设定此参数,则只接受从指定之服务端传来的回应。要使用不同的机器作为反向地址解析与网络文件系统服务端的话,在此指定你的反向地址解析协议服务端(保持空白)并在 nfsroot 参数(见上述)中指定你的网络文件系统服务端。如果此项目空白则使用回答反向地址解析协议或启动协议之服务端的地址。

<gw-ip> – 网关(gateway)之互联网地址,若服务端位於不同的子网络上时。如果此项目空白则不使用任何网关并假设服务端在本地的(local)网络上,除非由启动协议接收到值。

<netmask> – 本地网络界面的网络掩码。如果为空白,则网络掩码由客户端的互联网地址导出,除非由启动协议接收到值。

<name> – 客户端的名称。如果空白,则使用客户端互联网地址之 ASCII-标记法,或由启动协议接收的值。

<dev> – 要使用的网络设备名称。如果为空白,所有设备都会用来发出反向地址解析请求,启动协议请求由最先找到的设备发出。网络文件系统使用接收到反向地址解析协议或启动协议回应的设备。如果你只有一个设备那你可以不管它。

<suto> – 用以作为自动配置的方法。如果是 `rarp’ 或是 `bootp’ 则使用所指示的协议。如果此值为`both’ 或空白,若配置核心时有打开这两种协议则都使用。 `none’ 表示不使用自动配置。这种情况下你必须指定前述栏位中所有必要的值。

此参数可以作为 nfsaddrs 的参数单独使用(前面没有任何 `:` 字符),这种情况下会使用自动配置。然而,此种情况不能使用 `none’作为值。

 原文地址 http://blogold.chinaunix.net/u3/114978/showart_2262992.html

常用的uboot的bootargs设置

说完常见的几种bootargs,那么我们来讨论平常我经常使用的几种组合: 1). 假设文件系统是ramdisk,且直接就在内存中,bootargs的设置应该如下: setenv bootargs ...
  • conjimmy
  • conjimmy
  • 2012年09月11日 15:59
  • 14309

u-boot下配置挂载NFS根文件系统

一、在linux系统主机下安装NFS服务器        在ubuntu10.04下安装命令为:        sudoapt-get  install nfs-kernel-server 二、...
  • liuhuahan
  • liuhuahan
  • 2014年09月01日 16:38
  • 2724

nfs方式启动rootfs配置过程

这里使用nfs主要是做rootfs挂载。开发板中运行kernel做nfs客户端,宿主机中运行nfs服务。在宿主机的nfs服务器中导出文件夹形式的rootfs目录,在客户端中去挂载这个文件夹形式的roo...
  • Ultraman_hs
  • Ultraman_hs
  • 2016年11月17日 18:57
  • 1796

uboot 用 yaffs、nfs 引导linux命令行,u-boot,bootargs,arm

yaffs:setenv bootargs mem=64M console=ttyS0,115200n8 noinitrd  root=/dev/mtdblock3 rootfstype=yaffs ...
  • lanmanck
  • lanmanck
  • 2010年03月30日 11:55
  • 3491

uboot 无法通过nfs下载服务器某个文件夹下面的内核

uboot 无法通过nfs下载服务器某个文件夹下面的内核: 比如在uboot中执行nfs下载命令:nfs 32000000 192.168.1.102:/work/QT_project/uImage;...
  • sinat_31500569
  • sinat_31500569
  • 2016年11月10日 20:14
  • 671

嵌入式 hi3518平台uboot引导nfs文件系统

uboot启动ramdisk和nfs文件系统,Ubuntu 配置nfs
  • skdkjxy
  • skdkjxy
  • 2014年10月08日 15:49
  • 1876

挂载nfs网络文件系统小结

一个破NFS网络文件系统挂了我整整三天,现在终于挂上了,总结下经验教训。基本的平台是电脑上直接安装的fedrora 8+TE2440。 挂在NFS文件系统,需要几个步骤: 一,修改/etc/exp...
  • gqb666
  • gqb666
  • 2012年11月05日 15:41
  • 1218

如何修改bootargs参数使u-boot从网络引导内核

如何修改bootargs参数使u-boot从网络引导内核?开发板上电运行u-boot后,不按下空格键,将会自动从flash引导内核。但现在我想从通过通过网络自动从TFTP SERVER下载并启动内核,...
  • menuconfig
  • menuconfig
  • 2008年04月18日 10:02
  • 3547

U-boot使用NFS文件系统的bootargs总结

#setenv bootargs noinitrd console=ttySAC0,115200 init=/linuxrc mem=64M root=/dev/nfs nfsroot=192.1...
  • happygongzhuo
  • happygongzhuo
  • 2012年03月25日 00:56
  • 866

uboot如何设置nfs的启动参数

在uboot中设置环境变量: setenv nfsroot "/dev/nfs" setenv nfsip  "192.192.192.201" setenv nfsdir  "/home/xu...
  • dropping_1979
  • dropping_1979
  • 2014年03月06日 14:59
  • 1110
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:U-boot使用NFS文件系统的bootargs总结
举报原因:
原因补充:

(最多只允许输入30个字)