Linux command line详细解析

全局变量

1.command_line

2.default_command_line

3.saved_command_line

内核参数的解析一共有两处,一处是setup_arch()->parse_cmdline()用于解析内核参数中关于内存的部分,另外一处是start_kernel()->parse_option()用于解析其余部分。

解析配置

根据执行的先后顺序,可以将处理函数分为三个大类,他们分别存在于下面三个段:

__setup_start = .; *(.init.setup) __setup_end = .;
__early_begin = .; *(.early_param.init) __early_end = .;
__start___param = .; *(__param) __stop___param = .;

这三个段存储的不是参数,而是command line参数所需要的处理函数。

1 .early_param.init段

它所处理的参数例如:initrd=, cachepolicy=, nocache, nowb, ecc=, vmalloc=, mem=等等。

这些处理函数是通过__early_param宏来定义的,例如:

static void __init early_initrd(char **p)
{ …… }
__early_param("initrd=", early_initrd);

2 .init.setup段

它所处理的参数例如:nfsroot=, ip=等等。

这些处理函数是通过__setup宏来定义的。

static int __init nfs_root_setup(char *line)
{ …… }
__setup("nfsroot=", nfs_root_setup);

相关变量

1. default_command_line:

保存menuconfig配置的参数,如果bootloader传入了命令行参数,那么这个新的配置将被更新到该变量中。

2. command_Line

存在于.init.data段,在parse_cmdline()中被赋值,数据来源是default_command_line

3. saved_command_line

用于保存没有处理过的命令行参数,是boot_command_line的拷贝

4. static_command_line

是command_line的拷贝。

 

最后欢迎大家访问我的个人网站:1024s​​​​​​​

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值