首先,kernel检查关键字是不是 ‘root=’, ‘nfsroot=’, ‘nfsaddrs=’, ‘ro’, ‘rw’, ‘debug’或’init’,然后内核在bootsetups数组里搜索于该关键字相关联的已注册的处理函数,如果找到相关的已注册的处理函数,则调用这些函数并把关键字后面的值作为参数传递给这些函数。比如,你在启动时设置参数name=a,...
kernel/printk.c中注册了‘console=’的解析函数console_setup(注册了obs_kernel_param),所以匹配成功,会调用console_setup来解析,如下: static int __init console_setup(char *str) { char buf[sizeof(console_cmdline[0].name) + 4]; /* 4 for index */ char *s, *options, *brl_options = NULL; ...
根据我之前写的博文可知,start_kernel中setup_arch中解析tags获取cmdline,拷贝到boot_command_line中。我们接着往下看start_kernel。 调用setup_command_line,将cmdline拷贝2份,放在saved_command_line static_command_line。 下面调用parse_early_param(),如下: 代码语言:javascript 复制 void__initparse_early_options(...
cmdline的初始化:start_kernel()->setup_arch()将 commad_line 指向boot_command_line。很明显,这个变量将记录 cmdline。 *cmdline_p = boot_command_line; 但是内核从哪里获取 bootloader 传递的 cmdline 以及在哪里对boot_command_line初始化呢? boot_command_line 定义在init/main.c文件中char __initdata boo...
Kernel启动时会解析cmdline,然后根据这些参数如console root来进行配置运行。 Cmdline是由bootloader传给kernel,如uboot,将需要传给kernel的参数做成一个tags链表放在ram中,将首地址传给kernel,kernel解析tags来获取cmdline等信息。 Uboot传参给kernel以及kernel如何解析tags可以看我的另一篇博文,链接如下: ...
接下来需要分析kernel启动时如何对传入的cmdline进行分析。三kernel对cmdline的解析根据我之前写的博文可知,start_kernel中setup_arch中解析tags获取cmdline,拷贝到boot_command_line中。我们接着往下看start_kernel。调用setup_command_line,将cmdline拷贝2份,放在saved_command_line static_command_line。下面调用parse_...
由bootloader进行参数配置,command line将做为atag_list的一个节点传递到Kernel。 2.2 Kernel静态配置 通过make menuconfig进行配置:运行后配置boot options->Default kernel command string。该配置将被静态编译到Kernel中,通过变量default_command_line访问。
由bootloader进行参数配置,command line将做为atag_list的一个节点传递到Kernel。 2.2 Kernel静态配置 通过make menuconfig进行配置:运行后配置boot options->Default kernel command string。该配置将被静态编译到Kernel中,通过变量default_command_line访问。
内核参数类型通过Kernel command line type来设置,可选值: ( ) Use bootloader kernel arguments if available ( ) Extend bootloader kernel arguments ( ) Always use the default kernel command string 如果设置为“Always use the default kernel command string”则只能使用默认内核启动参数,通常会设置为“Use bo...
[ 0.000000] Kernel command line: console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw [ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes, linear) [ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes, linear) ...