linux 启动加载内核的流程
时间: 2023-08-05 20:03:50 浏览: 62
Linux启动加载内核的流程可以大致分为以下几个步骤:
1. BIOS/UEFI启动:计算机开机后,会首先执行计算机的基本输入输出系统(BIOS)或统一扩展固件接口(UEFI),进行硬件初始化和自检。
2. 引导加载程序(Bootloader):BIOS/UEFI会在启动设备(如硬盘、光盘、USB等)中查找引导加载程序。常见的引导加载程序有GRUB、LILO和SYSLINUX等。引导加载程序负责读取内核映像文件和初始化内存等操作。
3. 内核加载:引导加载程序会读取内核映像文件(通常是vmlinuz或bzImage格式),并将其加载到内存中。
4. 内核初始化:内核被加载后,会进行一系列的初始化操作,包括设置页表、初始化中断处理、初始化设备驱动等。
5. 用户空间初始化:内核完成初始化后,会启动第一个用户空间进程,通常是init进程(或Systemd等)。用户空间进程负责进一步初始化系统环境,加载用户级别的进程和服务。
这些步骤是Linux启动加载内核的基本流程,不同的Linux发行版可能会有细微的差异,但整体流程大致相同。
相关问题
linux内核启动流程
Linux内核启动流程主要分为以下几个步骤:
1. BIOS自检:当计算机启动时,BIOS会进行自检,检查硬件是否正常工作,然后加载引导程序。
2. 引导程序加载:引导程序通常存储在硬盘的MBR(Master Boot Record)中。当BIOS完成自检后,会将控制权交给MBR中的引导程序,引导程序再加载操作系统内核。
3. 内核初始化:内核从磁盘中加载后,会进行一系列的初始化操作,包括初始化内存管理、进程管理、设备驱动等。
4. 启动用户空间:内核初始化完成后,会启动一个特殊的进程——init进程,init进程会启动用户空间的所有进程和服务。
5. 运行用户程序:当用户程序启动后,内核会将CPU控制权交给用户程序,用户程序开始运行。
以上是Linux内核启动流程的基本步骤,当然,不同的Linux发行版可能会有一些特殊的启动流程和初始化操作。
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 ]