zoukankan      html  css  js  c++  java
  • bootargs常用属性项【转】

    转自:https://blog.csdn.net/weixin_42418557/article/details/89220785

    bootargs可以在DTS中生成,chosen里有属性项bootargs,启动linux时,内核会使用chosen中定义的bootargs,如果没有定义bootargs,linux会使用kernel默认的bootcmdline。
    如果bootcmdline为空,那么内核会使用UBOOT的环境变量bootargs。

    格式是
    由很多个键值对用空格隔开依次排列,
    每个参数中都是:
    参数名=参数值
    整个 Kernel command line会被内核启动时解析,
    解析成一个一个的参数名=参数值的字符串。
    这些字符串会被内核处理成启动参数列表,从而影响启动过程。

    bootargs=console=ttyPS0,115200n8 root=/dev/ram rw initrd=0x800000,8M earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=0
    这是zedboard最常用的启动参数字符串

    (1)console
    使用特定的串口,常见的有:
    console=ttyPS0,115200
    console=ttyS0,115200n8

    (2)earlyprintk
    打印早期启动信息。

    (3)root
    用来指定rootfs的位置, 常见的情况有:
    root=/dev/ram rw rootwait
    root=/dev/ram0 rw
    (请注意上面的这两种设置情况是通用的.)
    root=/dev/mtdblockx rw rootwait
    root=/dev/mtdblock/x rw
    (mtdblock是块设备)
    root=/dev/mtdblockx只是告诉内核,root fs从第x个(x=0,1,2…)MTD分区挂载,mtdblock0对应第一个分区,mtdblock1对应第二个分区,以此类推.
    rootwait
    指定内核在所有设备节点都加载后,再检查rootfs的合法性。

    (4)rootfstype
    跟root一起配合使用,常见的情况有:
    rootfstype=jffs2
    rootfstype=squashfs
    (如果是jffs2,squashfs等文件系统的话,就需要rootfstype指明文件系统的类型,不然会无法挂载根分区.一般如果根文件系统是ext2的话,有没有这个选项是无所谓的)

    (5)mem=xxM
    指定内存的大小,不是必须的
    例如:
    mem=64M
    mem=1G

    (6)ramdisk_size
    ramdisk_size=xxM
    告诉ramdisk 驱动,创建的ramdisk的size,默认情况下是4M,
    例如:
    ramdisk_size=8M

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

    ramdisk: 是一种基于内存的虚拟磁盘技术,采用ext2文件系统, 把内存当磁盘用。
    initrd是另外单独编译生成的,是一个独立的文件,它由bootloader单独加载到ram中内核空间外的地址,
    例如
    加载的地址为0x800000(是物理地址而非虚拟地址),大小为8MB,
    那么只要在命令行加入
    initrd=0x800000,8M
    系统就可以找到 initrd。

    initrd依赖ram disk,需要配置
    CONFIG_BLK_DEV_RAM
    CONFIG_BLK_DEV_INITRD选项 – 支持initrd,
    1。配置initrd
    General setup —>
    [] Initial RAM filesystem and RAM disk (initramfs/initrd) support
    () Initramfs source file(s) //清空根文件系统的目录配置
    2。配置ramdisk
    Block devices —>
    <
    > RAM disk support
    (16) Default number of RAM disks // 内核在/dev/目录下生成16个ram设备节点
    (4096) Default RAM disk size (kbytes)
    (1024) Default RAM disk block size (bytes)

    例如:
    使用 initrd的内 核启动参数:
    initrd=addr,0x400000 root=/dev/ram rw
    注:
    addr是根文件系统的下载地址;
    0x400000是根文件系统的大小,该大小需要和内核配置的ramdisk size 4096 kbytes相一致;
    /dev/ram是ramdisk的设备节点,rw表示根文件系统可读、可写;

    (8)init
    init指定的是内核启起来后,进入系统中运行的第一个脚本,一般是
    init=/linuxrc

    (9)ip
    指定系统启动之后网卡的ip地址,如果你使用基于nfs的文件系统,那么必须要有这个参数,其他的情况下就看你自己的喜好了。设置ip有两种方法:
    ip = ip_addr
    ip=ip_addr:server_ip_addr:gateway:netmask:[<hostname>]:which netcard:off

    例如:
    ip=192.168.0.5:192.168.0.3:192.168.0.3:255.255.255.0::eth0:off’
    省略了hostname,所以两个冒号之间保留为空。

    (10)mtdparts,blkdevparts
    要想这个参数起作用,内核中的mtd驱动必须要支持,
    即内核配置时需要选上
    Device Drivers
    —> Memory Technology Device (MTD) support
    —> Command line partition table parsing y

    mtdparts的格式如下:
    使用的时候需要按照下面的格式来设置:
    mtdparts=mtd-id:<size1>[@<offset1>](<name1>)[ro],<size2>[@<offset2>](<name2>)[ro]…,-(others)

    这里面有几个必须要注意的:
    a. mtd-id 必须要跟你当前平台的flash的mtd-id一致,不然整个mtdparts会失效
    b. size在设置的时候可以为实际的size(xxM,xxk,xxG),也可以为’-’,这表示剩余的所有空间。

    例如:
    I)mtdparts=sa1100:-
    flash 的mtd-id是sa1100,只有一个分区。

    II)mtdparts=sa1100:256k(ARMboot)ro,-(root)
    flash 的mtd-id是sa1100,有两个分区。其中第一个分区是readonly的。

    III)mtdparts=fc000000.nor_flash:1920k(linux),128k(fdt),20M(ramdisk),4M(jffs2),38272k(user),256k(env),384k(uboot)
    flash有七个分区。

    如果是FLASH,按照FLASHTYPE来进行描述。
    mtdparts=flashtype1:size(name),size(name),
    …,-(others);flashtype2:size(name),size(name),
    …,-(others);flashtype3:size(name),size(name),…,-(others);…

    flashtype表示Flash类型。
    SPI Flash对应取值hi_sfc,
    Nand Flash对应取值hinand,

    例如:mtdparts=hi_sfc:1M(boot);hinand:4M(baseparam),4M(pqparam),4M(logo),8M(kernel),96M(rootfs),-(others)
    系统中的MTD,一块是SPIFLASH,一块是NANDFLASH。

    如果是eMMC,那么分区划分格式是: blkdevparts=mmcblk0:size(name),size(name),…,-(others)
    系统中有一个块设备,可以找到的设备名是/dev/block/mmcblk0。
    这个mmcblk0,我们需要描述它的分区,那么就是用上述语句来描述。
    分区的设备名就是/dev/block/mmcblk0p1,/dev/block/mmcblk0p2,/dev/block/mmcblk0p1…
    以此类推。

    注意:
    当rootfstype为ext3/ext4时, rootfs分区的大小必须与文件系统镜像大小保持完全一致。

    我们来讨论平常我经常使用的几种组合
    (a)bootargs=initrd=0x800000,0xa00000 console=ttySAC0
    root=/dev/ram0 rw mem=64M init=/linuxrc
    启动盘是RAMDISK格式镜像,且直接就在内存中,位置在0x800000,大小是10M。
    控制台使用ttySAC0,默认波特率。
    rootfs挂载点是/dev/ram0,也就是我们的memory image。可读可写。
    kernel mem限制为64M。
    启动后,从rootfs中寻找第一个初始化脚本执行,文件是/linuxrc。

    (b) bootargs=mem=32M console=ttyS0,115200n8
    root=/dev/ram rw init=/linuxrc
    kernel mem限制为32M。
    控制台使用ttyS0,波特率115200。
    rootfs挂载点是/dev/ram。可读可写。由于没有指定initrd,所以这个RAMDISK镜像存在FLASH中。
    启动后,从rootfs中寻找第一个初始化脚本执行,文件是/linuxrc。
    注意,这种情况下你应该要在bootm命令中指定ramdisk镜像在flash中的地址。

    (c)bootargs=mem=32M console=ttyS0,115200n8
    noinitrd root=/dev/mtdblock2 rw rootfstype=jffs2 init=/linuxrc
    kernel mem限制为32M。
    控制台使用ttyS0,波特率115200。
    启动盘不是ramdisk格式镜像,而是别的文件系统类型。
    rootfs挂载点是/dev/mtdblock2。可读可写。文件系统是jffs2类型的。
    启动后,从rootfs中寻找第一个初始化脚本执行,文件是/linuxrc。

    (d)bootargs=console=ttyPS0,115200n8 noinitrd
    root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait
    控制台使用ttyPS0,波特率115200,无校验,8比特。
    启动盘不是ramdisk格式镜像,而是别的文件系统类型。
    rootfs挂载点是/dev/mmcblk0p2,eMMC的第二个分区,文件系统是ext4。启动时,等待设备节点启动后,再挂载rootfs。

    (e)bootargs=mem=64M console=ttySAC0
    noinitrd root=/dev/nfs nfsroot=192.168.0.3:/nfs ip=192.168.0.5:192.168.0.3:192.168.0.3:255.255.255.0::eth0:off
    kernel mem限制为64M。
    控制台使用ttySAC0,波特率默认。
    启动盘不是ramdisk格式镜像,而是别的文件系统类型。
    rootfs挂载点是/dev/nfs。nfsroot地址是192.168.0.3:/nfs。
    IP是192.168.0.5
    SERVERIP是192.168.0.3
    GATEWAY是192.168.0.3
    NETMASK是255.255.255.0
    HOSTNAME是NULL
    NETIF是eth0
    off描述结束

    (f)bootargs=noinitrd mem=64M console=ttySAC0
    root=/dev/nfs nfsroot=192.168.0.3:/nfs
    ip=192.168.0.5
    同上,简化版,只设置IP,其他未设置。

    (g)bootargs=noinitrd mem=64M console=ttySAC0
    root=/dev/nfs nfsroot=192.168.0.3:/nfs
    ip=:::::eth0:dhcp
    同上,简化版,设置IP获取方式为DHCP。

    (h)bootargs=noinitrd console=ttySAC0
    root=/dev/nfs nfsroot=192.168.1.88:/home/le/workspace/rootfs ip=192.168.1.70:192.168.1.88:192.168.1.88:255.255.255.0:linux.arm9.net:eth0:off
    各参数的含义如下:
    nfsroot 是开发主机的NFS服务文件夹。
    “ip=”后面:
    第一项(192.168.1.70)是目标板的临时 IP(注意不要和局域网内其他 IP 冲突);
    第二项(192.168.1.104)是开发主机的 IP;
    第三项(192.168.1.104)是目标板上网关(GW)的设置;
    第四项(255.255.255.0)是子网掩码;
    第五项是开发主机的名字(一般无关紧要,可随便填写)
    eth0 是网卡设备的名称。

  • 相关阅读:
    Centos安装VMware
    centos7下javac:未找到命令的问题
    Runtime
    JVM构架、GC垃圾回收机制的理解
    onsubmit校验表单时利用ajax的return false无效解决方法
    request和response的中文乱码问题
    Ajax,Json数据格式
    Oracle数据库对象,同义词、序列、视图、索引
    动态页面技术JSP/EL/JSTL
    会话技术Cookie&Session
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/13750875.html
Copyright © 2011-2022 走看看