内核启动参数cmdline详解

Posted 正在起飞的蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内核启动参数cmdline详解相关的知识,希望对你有一定的参考价值。

1、cmdline介绍

cmdline是uboot引导内核启动时传递给内核的,作用是指导内核启动。内核启动阶段会去解析cmdline,并根据cmdline去指导内核启动。

2、cmdline格式简介

(1)格式就是由很多个项目用空格隔开依次排列,每个项目中都是项目名=项目值;
(2)整个cmdline会被内核启动时解析,解析成一个一个的项目名=项目值的字符串。这些字符串又会被再次解析从而影响启动过程。

3、mdline常用参数

例如:mem=1408M console=ttyS0,115200 root=/dev/mmcblk0p7 rootfstype=squashfs mtdparts=xxx
(1)mem=
用来告诉内核当前系统的内存有多少;
(2)console=
指定控制台使用的串口已经波特率;
(3)root=
根文件系统的位置,比如上面就是指定根文件系统在mmcblk0p7分区,内核挂载根文件系统时会用到;
根文件系统也可以通过nfs远程挂载:
root=/dev/nfs nfsroot=192.168.1.141:/root/s3c2440/build_rootfs/aston_rootfs ip=192.168.1.10:192.168.1.141:192.168.1.1:255.255.255.0::eth0:off
(4)rootfstype=
指明文件系统的格式和权限;
(5)mtdparts=
指明存储设备的分区情况;
如:mtdparts=nand0:0x140000@0x000000(param),4m(uboot),2m(env),49408k(romfs),2m(custom),25m(web),2m(logo),512k(dgs),31m(ext_usr),2m(config_fw),-(config)

4、uboot向内核传递cmdline

uboot是通过在启动内核时,向内核传递tag参数,其中就包括cmdline。具体见博客:《uboot以tag方式给内核传参》

5、内核解析cmdline

5.1、内核解析tag参数

参考博客:《内核中对uboot传参tags的校验》

5.2、内核解析cmdline参数

参考博客:《内核中对cmdline的解析》

以上是关于内核启动参数cmdline详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核__setup()宏介绍

linux内核启动参数解析及添加

如何查看内核memory and swap accounting

kexec 内核快速启动流程分析

Android 逆向Android 系统文件分析 ( cmdline 系统启动参数文件 | crypto 密码算法信息文件 | devices 设备信息文件 )

Android 逆向Android 系统文件分析 ( cmdline 系统启动参数文件 | crypto 密码算法信息文件 | devices 设备信息文件 )