1.用户空间的调用
insmod是Linux系统中用于加载内核模块的工具,Android中谷歌通过编写自己的命令解释器来实现bash,源码的位置在system\core\init\builtins.cpp
命令行解释器的映射表,对应的函数是do_insmod函数
// Builtin-function-map start
const BuiltinFunctionMap::Map& BuiltinFunctionMap::map() const {
constexpr std::size_t kMax = std::numeric_limits<std::size_t>::max();
// clang-format off
static const Map builtin_functions = {
{"bootchart", {1, 1, {false, do_bootchart}}},
{"chmod", {2, 2, {true, do_chmod}}},
{"chown", {2, 3, {true, do_chown}}},
{"class_reset", {1, 1, {false, do_class_reset}}},
{"class_reset_post_data", {1, 1, {false, do_clas
本文详细解析了Linux系统中insmod命令加载内核模块的过程,从用户空间的调用开始,包括Android中insmod的实现,以及insmod如何通过系统调用__NR_finit_module进入内核空间。在内核空间,加载模块涉及权限校验、文件读取、安全检测、ko文件解析和模块加载,最终调用驱动模块的初始化函数。
订阅专栏 解锁全文
227

被折叠的 条评论
为什么被折叠?



