您的位置:首页 > 运维架构 > Linux

Linux内核强制使用自配置的cmdline

2017-08-11 14:25 1906 查看
开发过程中遇到一些问题,需要改cmdline。cmdline在不同的平台上有不同的改法,有的单独存在于一个分区中,有的使用的是uboot,需要在启动过程中中断启动并进行手动修改,也有的平台上使用的是uboot的变种读取配置文件获取cmdline,更甚至还有一些平台在sdcard中跑系统和在emmc中跑系统的修改cmdline的方法都不一样,或许厂家还没有考虑到用户有改cmdline的需求。 

一些方法是不可用的: 

1. 需要改uboot源码才可以改cmdline的不可用; 

2. 需要手动中断uboot启动并手动改cmdline的不可用;
可用的方法: 

1. 将cmdline放到Android固件中,烧写android固件的同时cmdline也已经设置好,不需要再操作,这样就可以量产设备。
综上所述,如果厂家没有将cmdline放到一个单独的存储空间中且在烧写固件时就把cmdline设置好的话,目标就锁定在了kernel上,内核是第一个拿到cmdline的,也只有它主要在用,内核的配置项中有一个配置内核启动参数的选项
CONFIG_CMDLINE
,但是它只是一个备胎,一般情况下还是主要使用bootloader传递过来的cmdline。 

1. 强制内核使用自配置的cmdline 

现在需要因地制宜,内核强制使用
CONFIG_CMDLINE
不使用bootloader传递过来的cmdline,具体配置如下:
make menuconfig
->  Boot options
-> Kernel command line type (***)
( ) Use bootloader kernel arguments if available
( ) Extend bootloader kernel arguments
(X) Always use the default kernel command string
1
2
3
4
5
6
1
2
3
4
5
6
Kernel command line type (***)
配置成
Always
use the default kernel command string
。这样内核就会使用自己的命令行参数。 


 

2. 设置需要的CMDLINE 

比如下图我的CMDLINE中添加了
androidboot.selinux=permissive
 



另: 

可能使用
Extend bootloader kernel arguments
这个选项会更友善一些,下次有时间再作测试,这里就不作讨论了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux kernel cmdline