Linux内核启动流程详细说明
时间: 2023-11-30 16:13:37 浏览: 32
Linux内核启动流程可以大致分为如下几个步骤:
1. BIOS/UEFI启动
当计算机启动时,首先执行BIOS/UEFI固件,它会进行硬件自检(POST),并加载MBR(Master Boot Record)或GPT(GUID Partition Table)分区表。
2. Bootloader加载
MBR/GPT会指向一个可引导分区(bootable partition),这个分区里存放着bootloader。常见的bootloader有GRUB、LILO、SYSLINUX等。Bootloader的主要任务是加载内核映像(vmlinuz)和初始化内核参数。
3. 内核初始化
内核映像被加载到内存中后,就会执行内核代码。内核在初始化过程中会进行如下操作:
- 初始化页表,建立虚拟地址和物理地址之间的映射关系;
- 初始化中断和异常处理机制;
- 初始化系统调用;
- 初始化进程管理机制;
- 初始化文件系统和设备驱动等。
4. 用户空间初始化
内核初始化完成后,就会执行init进程,创建用户空间,启动用户空间的各种服务和进程。init进程通常是systemd或者upstart。这些服务和进程包括网络、文件系统、用户管理、日志等等。
5. 用户登录
用户空间初始化完成后,就可以进行用户登录了。用户可以通过命令行或者图形界面登录系统。
整个启动过程涉及的细节非常复杂,包括硬件初始化、内存管理、中断处理、文件系统等等。上述只是一个大致的流程说明。
相关问题
Linux内核启动流程
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 ]
linux内核启动流程
Linux内核启动流程主要分为以下几个步骤:
1. BIOS自检:当计算机启动时,BIOS会进行自检,检查硬件是否正常工作,然后加载引导程序。
2. 引导程序加载:引导程序通常存储在硬盘的MBR(Master Boot Record)中。当BIOS完成自检后,会将控制权交给MBR中的引导程序,引导程序再加载操作系统内核。
3. 内核初始化:内核从磁盘中加载后,会进行一系列的初始化操作,包括初始化内存管理、进程管理、设备驱动等。
4. 启动用户空间:内核初始化完成后,会启动一个特殊的进程——init进程,init进程会启动用户空间的所有进程和服务。
5. 运行用户程序:当用户程序启动后,内核会将CPU控制权交给用户程序,用户程序开始运行。
以上是Linux内核启动流程的基本步骤,当然,不同的Linux发行版可能会有一些特殊的启动流程和初始化操作。