嵌入式之路--内核启动参数解析

 

内核启动参数解析

原创声明:作者保留一切权力,转载请注明出处。

所有资料均来源于互联网,若侵犯了您的权利,请告知,作者一定修正之。

一、内核获得启动参数的四种形式

>>>>>>>>> 引用

[1]Linux系统 kernel参数传递方式详细解析

1、最常用的方式,就是在 make config里修改“ General Setup”子菜单中的“ Defaultkernel command string”选项,通过修改这个选项来修改 include/linux/autoconf.h文件中的 CONFIG_CMDLINE宏。

 

2、有的时候为了省去 make menuconfig的时间,并且内核命令也是固定的,就可以写死内核 arch/arm/setup.c文件 default_command_line,这个变量本来是初始化为 CONFIG_CMDLINE的。

 

3、除了方法 1之外,另外一种正规的方法就是将内核命令写入内核参数表中,然后通过 start_kernel()->setup_arch()->parse_tags()->parse_tag()->parse_tag_cmdline()函数来将内核参数表中的内核命令覆盖 default_command_line变量(当然你首先得有内核参数表)。

 

4、最后,有的板子会采取直接将内核命令通过 bootloader传递给内核

<Q001>怎样传递呢?

<A001>[2]内核参数问题

    UBOOT中使用 bootm命令可以将参数传递给内核(其实就是将参数放到 DRAM_BASE+0x00000100处,然后内核从此处读取)。

     DRAM_BASE+0x00000100处是否有 TAG LIST,有的话从此处读取;

若没有,则使用 default_command_line,这个就是在配置内核 make menuconfig的时候设置的,即 CONFIG_CMDLINE

>>>>>>>>> 引用

 

二、内核启动参数的格式与含义

命令行的格式类似于下面的样子

CONFIG_CMDLINE="mem=64M console=ttySAC0 root=/dev/ram initrd=0xc0800000,0x00800000 ramdisk_size=2048 rw"

 

<Q002>每个关键字分别代表什么含义,系统怎样解析呢?

<A002>从原理上,简单地讲,内核是做字符串解析。首先对整个字符串按空格分隔开,每个子串又由等号分隔。等号左边是系统预定义的关键字,等号右边是对应关键字解析函数的参数。

>>>>>>>>> 引用

[3]Linux内核启动参数详解

所有型如“ name value”参数,如果没有被上面所述的设置函数 [指系统预定义关键字的解析函数 ]接收,将被解释为系统启动后的环境变量,

比如“ TERM=vt100”就会被作为一个启动时参数。

 

所有没有被内核设置函数接收也没又被设置成环境变量的参数都将留给 init进程处理,比如“ single”。

>>>>>>>>> 引用

 

<Q003> 系统已经支持哪些关键字,即其含义是什么?

<A003>

最详尽的解释无疑来自《 Linux Kernel in a Nutshell》 一书,第九章。

下面是国内博客转载的一个连接地址。

[4]Linux Kernel in a Nutshell  

 

 

你还可以添加自定义的启动参数和对应的解析函数。

[5]增加自定义的内核启动参数

三、参考资料

[1]Linux系统 kernel参数传递方式详细解析

http://www.bitscn.com/os/linux/200710/116553.html

 

[2]内核参数问题 http://linux.chinaunix.net/techdoc/system/2007/08/25/966304.shtml

 

[3]Linux内核启动参数详解 http://edu.codepub.com/2009/1213/18715.php

 

[4]Linux Kernel in a Nutshell   http://blog.chinaunix.net/u2/76263/showart_1212604.html

 

[5]增加自定义的内核启动参数 http://linux.chinaunix.net/techdoc/install/2009/08/31/1133192.shtml

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值