Linux下bootargs引导参数说明
作者:互联网
原文链接:http://blog.csdn.net/peng_apple/article/details/54315218
=========================================设置系统启动参数========================================= 必须正确设置bootargs参数或者烧写bootargs镜像才能保证系统正常启动 这个参数设置要传递给内核的信息,主要用来告诉内核分区信息和根文件系统所在的分区
核心理解:内核和文件系统启动的理解:1、内核的启动时uboot按照存储器地址(实际烧写的物理地址)找的,所以在bootargs中的kernel分区的作用只是提供kernel大小的一个范围!2、文件系统是纯粹按分区找的,根据分区找到实际文件系统存放的地址
内核是被读到ram上运行的然后内核根据分区去找到文件系统
1. bootargs变量介绍 以下面bootargs为例说明各个变量的含义
'mem=1G console=ttyAMA0,115200(内核启动后的首选控制台) root=/dev/mtdblock5(对应mtdparts的rootfs分区) rootfstype=yaffs2 mtdparts=hi_sfc:1M(boot);hinand:4M(baseparam),4M(pqparam),4M(logo),8M(kernel),96M(rootfs),-(others) mmz=ddr,0,0,300M' ① ② ③ ④ ⑤ ⑥
注:root=/dev/mtdblock5:为什么是5? 解:因为root=/dev/mtdblock5 对应 mtdparts的第5分区(rootfs分区)。
各变量含义如下
mem: 整个DDR被划分为两部分:系统内存和mmz。mem表示整个DDR大小,mmz表示mmz区域大小。 需要根据单板配置及内存占用情况合理配置mem和mmz大小。
mmz: 格式ddr,0,0,size size表示整个DDR中预留给MMZ使用的空间大小。 例如mmz=ddr,0,0,300M表示在整个mem中预留300M供MMZ使用,其余分配给系统内存使用
console: 控制台参数。console=ttyAMA0,115200表示使用串口0作为控制台设备 波特率为115200
root: 表示根文件系统所在的设备分区 例如/dev/mtdblock5表示/dev/mtdblock5为根文件系统对应mtdparts中的rootfs分区 rootfstype: 根文件系统类型,请根据烧写的文件系统类型配置,此处为yaffs2
这个选项需要跟root一起配合使用: 一般如果根文件系统是ext2的话,有没有这个选项是无所谓的, 但是如果是jffs2,squashfs等文件系统的话,就需要rootfstype指明文件系统的类型,不然会无法挂载根分区.
mtdparts: SPI Flash和Nand Flash的分区划分 格式 mtdparts=flashtype:size(name),size(name),...,-(others);flashtype:size(name),size(name),...,-(others) flashtype表示Flash类型 SPI Flash对应取值hi_sfc,Nand Flash对应取值hinand size表示分区大小 name表示分区名称/------------------------------------------------要想这个参数起作用,内核中的mtd驱动必须要支持, 即内核配置时需要选上 Device Drivers ---> Memory Technology Device (MTD) support ---> Command line partition table parsing y/------------------------------------------------
blkdevparts: eMMC的分区划分,格式 blkdevparts=mmcblk0:size(name),size(name),...,-(others) size表示分区的大小 当rootfstype为ext3/ext4时, rootfs分区的大小必须与文件系统镜像大小保持一致 name表示分区名称
2. 启动参数的设置 假设bootargs的内容为'mem=1G console=ttyAMA0,115200 root=/dev/mtdblock5 rootfstype=yaffs2 mtdparts=hi_sfc:1M(boot);hinand:4M(baseparam),4M(pqparam),4M(logo),8M(kernel),96M(rootfs),-(others) mmz=ddr,0,0,300M'
(在使用mtdparts分区划分时,boot和kernel在什么地方就得对应设置相应的mtdparts或者是blkdevparts 例子: boot在spi flash, kernel和文件系统在nand flash mtdparts=hi_sfc:1M;hinand:........................................)
设置启动参数的命令如下 setenv bootargs 'mem=1G console=ttyAMA0,115200 root=/dev/mtdblock5 rootfstype=yaffs2 mtdparts=hi_sfc:1M(boot);hinand:4M(baseparam),4M(pqparam),4M(logo),8M(kernel),96M(rootfs),-(others) mmz=ddr,0,0,300M'
setenv bootcmd 'nand read 1000000 c00000 800000;bootm 1000000' //bootcmd命令加载内核(物理起始地址为0xc00000,长度为0x800000),到内存0x1000000,然后跳转到0x1000000执行 saveenv 执行了saveenv之后,环境变量会第一次保存到flash中,之后你对环境变量的修改,保存都是基于保存在flash中的环境变量的操作。
核心理解:内核和文件系统启动的理解:1、内核的启动时uboot按照存储器地址(实际烧写的物理地址)找的,所以在bootargs中的kernel分区的作用只是提供kernel大小的一个范围!2、文件系统是纯粹按分区找的,根据分区找到实际文件系统存放的地址
内核是被读到ram上运行的然后内核根据分区去找到文件系统
1. bootargs变量介绍 以下面bootargs为例说明各个变量的含义
'mem=1G console=ttyAMA0,115200(内核启动后的首选控制台) root=/dev/mtdblock5(对应mtdparts的rootfs分区) rootfstype=yaffs2 mtdparts=hi_sfc:1M(boot);hinand:4M(baseparam),4M(pqparam),4M(logo),8M(kernel),96M(rootfs),-(others) mmz=ddr,0,0,300M' ① ② ③ ④ ⑤ ⑥
注:root=/dev/mtdblock5:为什么是5? 解:因为root=/dev/mtdblock5 对应 mtdparts的第5分区(rootfs分区)。
各变量含义如下
mem: 整个DDR被划分为两部分:系统内存和mmz。mem表示整个DDR大小,mmz表示mmz区域大小。 需要根据单板配置及内存占用情况合理配置mem和mmz大小。
mmz: 格式ddr,0,0,size size表示整个DDR中预留给MMZ使用的空间大小。 例如mmz=ddr,0,0,300M表示在整个mem中预留300M供MMZ使用,其余分配给系统内存使用
console: 控制台参数。console=ttyAMA0,115200表示使用串口0作为控制台设备 波特率为115200
root: 表示根文件系统所在的设备分区 例如/dev/mtdblock5表示/dev/mtdblock5为根文件系统对应mtdparts中的rootfs分区 rootfstype: 根文件系统类型,请根据烧写的文件系统类型配置,此处为yaffs2
这个选项需要跟root一起配合使用: 一般如果根文件系统是ext2的话,有没有这个选项是无所谓的, 但是如果是jffs2,squashfs等文件系统的话,就需要rootfstype指明文件系统的类型,不然会无法挂载根分区.
mtdparts: SPI Flash和Nand Flash的分区划分 格式 mtdparts=flashtype:size(name),size(name),...,-(others);flashtype:size(name),size(name),...,-(others) flashtype表示Flash类型 SPI Flash对应取值hi_sfc,Nand Flash对应取值hinand size表示分区大小 name表示分区名称/------------------------------------------------要想这个参数起作用,内核中的mtd驱动必须要支持, 即内核配置时需要选上 Device Drivers ---> Memory Technology Device (MTD) support ---> Command line partition table parsing y/------------------------------------------------
blkdevparts: eMMC的分区划分,格式 blkdevparts=mmcblk0:size(name),size(name),...,-(others) size表示分区的大小 当rootfstype为ext3/ext4时, rootfs分区的大小必须与文件系统镜像大小保持一致 name表示分区名称
2. 启动参数的设置 假设bootargs的内容为'mem=1G console=ttyAMA0,115200 root=/dev/mtdblock5 rootfstype=yaffs2 mtdparts=hi_sfc:1M(boot);hinand:4M(baseparam),4M(pqparam),4M(logo),8M(kernel),96M(rootfs),-(others) mmz=ddr,0,0,300M'
(在使用mtdparts分区划分时,boot和kernel在什么地方就得对应设置相应的mtdparts或者是blkdevparts 例子: boot在spi flash, kernel和文件系统在nand flash mtdparts=hi_sfc:1M;hinand:........................................)
设置启动参数的命令如下 setenv bootargs 'mem=1G console=ttyAMA0,115200 root=/dev/mtdblock5 rootfstype=yaffs2 mtdparts=hi_sfc:1M(boot);hinand:4M(baseparam),4M(pqparam),4M(logo),8M(kernel),96M(rootfs),-(others) mmz=ddr,0,0,300M'
setenv bootcmd 'nand read 1000000 c00000 800000;bootm 1000000' //bootcmd命令加载内核(物理起始地址为0xc00000,长度为0x800000),到内存0x1000000,然后跳转到0x1000000执行 saveenv 执行了saveenv之后,环境变量会第一次保存到flash中,之后你对环境变量的修改,保存都是基于保存在flash中的环境变量的操作。
标签:mtdparts,mmz,分区,文件系统,4M,参数,Linux,size,bootargs 来源: https://blog.csdn.net/u012577474/article/details/100980309