文章目录


★★★ 友情链接 : 个人博客导读首页—点击此处 ★★★

Kernel command line: earlycon androidboot.selinux=permissive uart_dma keep_dbgclk_on clk_ignore_unused initrd=0xd0000000,38711808 rw crash_page=0x8f040000 initrd=/recoveryrc boot_reason=0x2000 ota_status=0x1001

1、在linux kernel中解析cmdline参数

(以init,rdinit为例)
vim kernel/linux/init/main.c (即kernel_init函数所在的文件)

如代码所示__setup是一个宏,如果cmdline中有这个参数,则会执行对应的后面的函数。
下面这两个函数,会将cmdline中解析到的“init=”、“rdinit=”后面的字串写入到execute_command和ramdisk_execute_command全局变量中.
然后在kernel的代码中,就可以使用这两个变量了.

static int __init init_setup(char *str)
{unsigned int i;execute_command = str;/** In case LILO is going to boot us with default command line,* it prepends "auto" before the whole cmdline which makes* the shell think it should execute a script with such name.* So we ignore all arguments entered _before_ init=... [MJ]*/for (i = 1; i < MAX_INIT_ARGS; i++)argv_init[i] = NULL;return 1;
}
__setup("init=", init_setup);static int __init rdinit_setup(char *str)
{unsigned int i;ramdisk_execute_command = str;/* See "auto" comment in init_setup */for (i = 1; i < MAX_INIT_ARGS; i++)argv_init[i] = NULL;return 1;
}
__setup("rdinit=", rdinit_setup);

2、在android中解析cmdline参数
(以androidboot.selinux=permissive为例)

如下列代码所示,android的应用程序会读取"/proc/cmdline"中的字符串,然后解析相应的字段,报错到变量中。

vim system/core/init/selinux.cpp
v

oid import_kernel_cmdline(bool in_qemu,const std::function<void(const std::string&, const std::string&, bool)>& fn) {std::string cmdline;android::base::ReadFileToString("/proc/cmdline", &cmdline);for (const auto& entry : android::base::Split(android::base::Trim(cmdline), " ")) {std::vector<std::string> pieces = android::base::Split(entry, "=");if (pieces.size() == 2) {fn(pieces[0], pieces[1], in_qemu);}}
}

vim system/core/init/util.cpp

EnforcingStatus StatusFromCmdline() {EnforcingStatus status = SELINUX_ENFORCING;import_kernel_cmdline(false,[&](const std::string& key, const std::string& value, bool in_qemu) {if (key == "androidboot.selinux" && value == "permissive") {status = SELINUX_PERMISSIVE;}});return status;
}

在linux kernel或android中解析cmdline参数相关推荐

  1. Linux Kernel and Android 休眠与唤醒(中文版)

    Linux Kernel and Android 休眠与唤醒(中文版) 四月 18th, 2010 0 Comments/1664 hits Table of Contents 简介 国际化 版本信息 ...

  2. 华为在 Linux Kernel 5.10 中代码贡献排名第一,中国 AI 足球队夺冠 | 开发者周刊

    整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) CSDN开发者周刊:只为传递"有趣/有用"的开发者内容! 本周热门项目 0.国人抢茅台项目霸榜 Github 近日, ...

  3. Android中解析XML

    Android中解析XML 转载于:https://www.cnblogs.com/zhujiabin/p/5868993.html

  4. android 如何实现无限列表,在Android中解析和创建无限/无限级别的List /子列表中的XML...

    在我的Android Application的服务器端应用程序也由我开发.在这个应用程序Android应用程序从服务器请求一些XML并解析它. XML包含描述应用程序中应该有多少标签的信息,并且每个标 ...

  5. Android解析xml的方法,Android中解析XML格式数据的方法

    XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...

  6. Linux kernel内存管理之OOM相关参数

    一.OOM概念 OOM是Out Of Memory(内存溢出)的缩写,虽然linux kernel的内存管理有很多机制(从cache中回收.swap out等)可以满足用户空间的各种虚拟内存需求,但是 ...

  7. android webview参数,Android webView解析URL参数

    2015年6月18日 13:56:21 星期四 又当爹又当娘啊............ public void onPageFinished(WebView view, String url) { s ...

  8. Android笔记-Linux Kernel Ftrace (Function Trace)解析

    from : http://blog.csdn.net/hlchou/article/details/6441272 [ ftrace 简介 http://www.ibm.com/developerw ...

  9. Android 核心已经从 Linux kernel 代码库中删除

    Greg Kroah-Hartman Novell 的开发人员,他主要负责维护 Linux 操作系统的启动,USB和驱动核心,近日他表示谷歌 Android 系统的驱动核心 已经从 Linux ker ...

最新文章

  1. Instagram允许用户管理评论 网络骚扰评论一扫空
  2. 笨办法学python3 pdf 脚本之家_解决python3输入的坑——input()
  3. Python中map的使用方法
  4. SQL不重复查找数据及把一列多行内容拼成一行
  5. redux-actions入门
  6. nginx学习笔记 nginx 配置文件位置 常用命令
  7. m3u8格式的视频链接怎么在自己电脑上播放
  8. FGUI使用方法(四):List列表的详细使用方式,包括List嵌套List
  9. Ubuntu16.04火狐浏览器问题汇总
  10. Pix4Dmapper系列教程(一):Pix4D模型成果导出OSGB并加载到CASS3D进行三维测图
  11. 非极大值抑制(NMS)讲解
  12. 元器件及测量基础实验
  13. QQ聊天记录统计可视化分析
  14. pvp服务器有什么项目,N服PVP服率先回归!压测后未来3-4周正式开服
  15. python爬取网易云音乐飙升榜音乐_python爬取网易云音乐热歌榜 python爬取网易云音乐热歌榜实例代码...
  16. python开发简历自我介绍范文_你们简历上的自我介绍怎么写的?
  17. 关系图d3、封装js
  18. Oracle数据库基本知识与SQL操作(1)
  19. 古典问题(兔子生崽)
  20. 如何在 Windows 中重新安装或修复 Internet Explorer

热门文章

  1. 综合布线管理系统之智能配线架的过去与将来
  2. 图解机房空调制冷系统
  3. 数据中心发电机组的选择及控制
  4. mysql 1084_[LeetCode]1084. 销售分析III(Mysql,having+聚合函数)
  5. AI:百度飞桨EasyDL多门视频课程,手把手教你如何定制高精度AI模型
  6. CV:Visual Studio 2015版本+CUDA8.0+Cudnn8.0+OpenCV 3.1.0版本完美解决的详细攻略
  7. DL之CNN:自定义SimpleConvNet【3层,im2col优化】利用mnist数据集实现手写数字识别多分类训练来评估模型
  8. Winform 导出成Excel打印代码
  9. C++ Primer 有感(类)
  10. 对于58同城自动登陆的补充【主要是代码】