linux内核的启动流程
时间: 2023-04-25 11:04:33 浏览: 132
Linux内核的启动流程大致如下:
1. BIOS自检:计算机开机后,首先进行的是BIOS自检,检查硬件设备是否正常。
2. 引导加载程序(bootloader):BIOS自检完成后,会从硬盘、光盘、USB等设备中读取引导加载程序,通常是GRUB或LILO。
3. 加载内核镜像:引导加载程序会读取内核镜像文件,将其加载到内存中。
4. 内核初始化:内核镜像加载完成后,内核开始初始化,包括初始化内存管理、进程管理、设备驱动等。
5. 用户空间初始化:内核初始化完成后,会启动init进程,进入用户空间,执行系统初始化脚本,启动各种系统服务。
6. 用户登录:系统初始化完成后,用户可以登录系统,开始使用计算机。
以上是Linux内核的启动流程的基本步骤,具体实现可能会因不同的Linux发行版而有所不同。
相关问题
linux内核启动流程
Linux内核启动流程主要分为以下几个步骤:
1. BIOS自检:当计算机启动时,BIOS会进行自检,检查硬件是否正常工作,然后加载引导程序。
2. 引导程序加载:引导程序通常存储在硬盘的MBR(Master Boot Record)中。当BIOS完成自检后,会将控制权交给MBR中的引导程序,引导程序再加载操作系统内核。
3. 内核初始化:内核从磁盘中加载后,会进行一系列的初始化操作,包括初始化内存管理、进程管理、设备驱动等。
4. 启动用户空间:内核初始化完成后,会启动一个特殊的进程——init进程,init进程会启动用户空间的所有进程和服务。
5. 运行用户程序:当用户程序启动后,内核会将CPU控制权交给用户程序,用户程序开始运行。
以上是Linux内核启动流程的基本步骤,当然,不同的Linux发行版可能会有一些特殊的启动流程和初始化操作。
linux内核启动流程详解
Linux内核的启动流程可以分为以下几个步骤:
1. 入口点确定:在链接文件vmlinux.lds中,通过ENTRY(stext)可以找到Linux内核的入口点,即stext。stext定义在arch/arm/kernel/head.S文件中。
2. 初始化设置:内核入口点stext首先会执行一些初始化设置,例如设置中断向量表、设置栈指针等。
3. 启动内核:接下来,stext会调用start_kernel函数,这是Linux内核的入口函数。start_kernel函数主要完成一些基本的系统初始化工作,例如初始化内核数据结构、设置页表等。
4. 创建init进程:在start_kernel函数中,会调用kernel_thread函数创建kernel_init进程,也就是init内核进程。init进程的PID为1。init进程最初是运行在内核态的,然后它会在根文件系统中查找名为"init"的程序,并通过运行这个程序实现从内核态到用户态的转变。
5. 初始化子系统:接下来,init进程会开始初始化各个子系统,例如内存管理子系统、进程管理子系统、设备驱动子系统等。每个子系统都有相应的初始化函数,用来初始化子系统的数据结构、注册设备驱动等。
6. 启动用户空间:在初始化子系统完成后,init进程会启动用户空间的第一个进程,通常是/bin/init或/sbin/init。这个进程会执行系统的初始化脚本,加载其他用户进程,并开始运行用户程序。
总之,Linux内核的启动流程包括入口点确定、初始化设置、启动内核、创建init进程、初始化子系统和启动用户空间等步骤。通过这些步骤,Linux内核能够完成系统的初始化和用户程序的加载,实现整个系统的正常运行。