Linux内核启动流程
时间: 2023-11-30 13:46:38 浏览: 85
Linux内核启动流程可以分为两个阶段:第一阶段和第二阶段。
在第一阶段,当系统启动时,Bootloader(如U-Boot)会加载uImage到内存中,并根据头部信息将真正的内核解压到指定的地址。然后,内核启动第一阶段开始执行。在这个阶段,内核会校验Bootloader传递的机器ID等参数,并使能MMU(内存管理单元)等硬件。\[2\]
在第二阶段,内核启动第二阶段开始执行。在这个阶段,内核会解析Bootloader传递的内核启动参数,并进行内核初始化。接着,内核会挂载根文件系统,执行rest_init()函数,然后调用kernel_init()函数进行内核的初始化。最后,内核会运行init进程,通常是/sbin/init,来启动用户空间的进程。\[2\]
需要注意的是,内核源码中的所有函数都是在内核态下执行的,而应用程序必须在用户态下执行。因此,内核启动过程中的init程序是由根文件系统提供的,它是一个独立于内核的用户态程序。\[3\]
总结起来,Linux内核启动流程包括两个阶段:第一阶段是Bootloader加载内核并使能硬件,第二阶段是内核解析启动参数、初始化内核并启动用户空间进程。\[2\]
#### 引用[.reference_title]
- *1* *3* [linux内核启动过程分析](https://blog.csdn.net/linuxweiyh/article/details/83382154)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [linux内核启动流程](https://blog.csdn.net/u010743406/article/details/115053622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文