首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux的引导启动过程

Linux的引导启动过程是指从计算机加电到操作系统内核加载并运行的整个过程。这个过程可以分为以下几个主要阶段:

1. BIOS/UEFI 初始化

  • 基础概念:BIOS(Basic Input/Output System)或UEFI(Unified Extensible Firmware Interface)是固化在主板上的固件,负责硬件的初始化和启动设备的检测。
  • 应用场景:计算机加电后,BIOS/UEFI会执行自检(POST),检测硬件状态,并根据启动顺序选择启动设备(如硬盘、USB设备或光驱)。

2. 引导加载程序(Bootloader)

  • 基础概念:引导加载程序是位于启动设备上的小程序,负责加载操作系统内核到内存中。
  • 类型:常见的Linux引导加载程序包括GRUB(Grand Unified Bootloader)、LILO(Linux Loader)等。
  • 应用场景:BIOS/UEFI加载引导加载程序到内存中,引导加载程序再加载操作系统内核。

3. 内核初始化

  • 基础概念:操作系统内核加载到内存后,开始初始化系统硬件、设置进程管理、内存管理等核心功能。
  • 优势:内核初始化确保系统的基本运行环境稳定,为后续的系统服务和用户程序运行打下基础。
  • 示例代码
  • 示例代码

4. 系统初始化(Init System)

  • 基础概念:内核加载完成后,会启动第一个用户空间进程,通常是init系统(如Systemd、SysVinit)。
  • 类型:Systemd是目前较新的init系统,提供了更强大的服务管理和并行启动能力。
  • 应用场景:init系统负责启动系统服务、挂载文件系统、启动用户登录界面等。

5. 系统服务和用户登录

  • 基础概念:系统服务在init系统启动后按需启动,提供各种系统功能。用户可以通过登录界面登录系统。
  • 应用场景:常见的系统服务包括网络服务、数据库服务、Web服务器等。

常见问题及解决方法

问题:系统启动时卡在引导加载程序界面

  • 原因:可能是引导加载程序配置错误、启动设备损坏或内核文件丢失。
  • 解决方法
    • 检查引导加载程序配置文件(如GRUB的/etc/default/grub)。
    • 使用启动盘进行系统修复或重新安装引导加载程序。
    • 检查启动设备是否损坏,必要时更换硬盘。

问题:内核初始化失败

  • 原因:可能是内核文件损坏、硬件兼容性问题或内核参数配置错误。
  • 解决方法
    • 使用启动盘检查内核文件完整性。
    • 更新或回滚内核版本。
    • 调整内核参数(如通过GRUB的kernel命令行参数)。

参考链接

通过了解这些基础概念和常见问题,可以更好地理解和解决Linux系统启动过程中的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux学习笔记之Linux启动引导过程

尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行必要的简化。 让我们先从高级的视角来查看 Linux 引导过程,这样就可以看到整个过程的全貌了。...这就是 Linux 引导的整个过程。现在让我们深入挖掘一下这个过程,并深入研究一下 Linux 引导过程的一些详细信息。 系统启动 系统启动阶段依赖于引导 Linux 系统上的硬件。...除了可以存储并引导 Linux 映像之外,这些引导监视器还执行一定级别的系统测试和硬件初始化过程。在嵌入式平台中,这些引导监视器通常会涉及第一阶段和第二阶段的引导加载程序。...然后该例程会调用内核,并开始启动内核引导的过程。 当 bzImage(用于 i386 映像)被调用时,我们从 ....结束语 与 Linux 本身非常类似,Linux 的引导过程也非常灵活,可以支持众多的处理器和硬件平台。最初,加载引导加载程序提供了一种简单的方法,不用任何花架子就可以引导 Linux。

10.5K41

Linux启动引导程序(GRUB)加载内核的过程

我们知道启动引导程序(Boot Loader,也就是 GRUB)会在启动过程中加载内核,之后内核才能取代 BIOS 接管启动过程。如果没有启动引导程,那么内核是不能被加载的。...本节,我们就来看看启动引导程序加载内核的过程,当然 initramfs 这个虚拟文件系统也是要靠启动引导程序调用的。...在 CentOS 6.x 中,启动引导程序默认是 GRUB,GRUB 是现在最为流行的启动引导程序,我们也用 GRUB 来说明启动引导程序的作用。...GRUB加载内核的过程GRUB 的作用有以下几个:加载操作系统的内核;拥有一个可以让用户选择的的菜单,来选择到底启动哪个系统;可以调用其他的启动引导程序,来实现多系统引导。...答案是空间不够,GRUB 的功能非常强大,MBRM 空间是不够使用的。那么 Linux 的解决办法是把 GRUB 的程序分成了三个阶段来执行。

54720
  • Linux启动引导参数grub

    内核引导参数精选 由于引导参数多如牛毛,本文不可能涉及全部,因此本文只基于 X86_64 平台以及 Linux-3.13.2 精选了一些与设备无关的引导参数以及少部分与设备有关的引导参数,过时的参数、非...是一个内核启动参数 BOOT 是一个引导程序参数 标记为"BOOT"的参数实际上由引导程序(例如GRUB)使用,对内核本身没有直接的意义。...[KNL] ignore_loglevel 忽略内核日志等级的设置,向控制台输出所有内核消息。仅用于调试目的。 [KNL] debug 将引导过程中的所有调试信息都显示在控制台上。...[KNL] initcall_debug 跟踪所有内核初始化过程中调用的函数。有助于诊断内核在启动过程中死在了那个函数上面。...[HIBERNATION] hibernate={noresume|nocompress} 设置休眠/唤醒属性: noresume 表示禁用唤醒,也就是在启动过程中无视任何已经存在的休眠镜像,完全重新启动

    9.6K20

    Android启动流程——1序言、bootloader引导与Linux启动

    从系统角度看,Android的启动程序可分为: 1、bootloader引导 2、装载与启动Linux内核 3、启动Android系统 3.1、启动Init进程 3.1、启动Zygote 3.1、...手机系统不像其他的嵌入式系统,它还需要在启动的过程中关心CP的启动,这个时候就涉及到CP的image和唤醒时刻,而一般的嵌入式系统的uboot只负责引导OS内核。...关于这块详细资料,我也不是很熟悉,就不误人子弟了,大家可以自行查询 相关资料如下: bootloader 二、Linux系统启动 Linux系统的启动过程由很多阶段组成,但是无论你是启动标准的x86...从初始化引导到第一个用户空间来研究Linux启动进程。...BootLoader完成系统的引导以后并将Linux内核调入内核之后,调用do_bootm_linux(),这个函数将跳转到kernel的其实位置。如果kernel没有被压缩,就可以启动了。

    5.2K21

    linux启动过程解析

    在自检完成后,BIOS会寻找可引导的设备,通常是硬盘或光盘驱动器。如果找到了可引导设备,则BIOS将把控制权交给该设备中的引导程序。...Boot Loader阶段: 引导程序是一段特殊的代码,通常被称为Boot Loader,它负责加载操作系统内核并初始化系统环境。常见的Boot Loader有GRUB、LILO和SYSLINUX等。...在Linux中,Boot Loader通常安装在硬盘的MBR (Master Boot Record)或EFI系统分区。...当Boot Loader加载时,它会在引导选项菜单中显示可用的内核版本,用户可以选择要引导的内核。 Kernel初始化阶段: 内核是操作系统的核心,它控制着系统的各种操作。...内核初始化的过程包括以下几个步骤: 加载驱动程序:内核会加载与硬件设备对应的驱动程序,并初始化这些设备。驱动程序通常存储在内核模块中,可以在运行时加载和卸载。

    1.3K30

    linux aarch64启动不了,引导AArch64 Linux

    这篇文章基于Russell King所写的《the ARM booting document》,并与AArch64 Linux kernel的所有公开版本相关。...在本文中,我们使用术语“boot loader”来简单地定义在控制权传递给Linux kernel之前,在CPU上执行的所有软件,这可能包括Secure Monitor和hypervisor代码,或者仅仅是一小段预备好最小引导环境的指令代码...会跳回code0处来恢复正常引导过程。...该基地址一下的内存目前Linux并没有使用,因此强烈建议基地址就是于RAM的开始地址,从映像开始,必须保证有image_size大小可用空间给kernel映像使用。...根据编号为ARM DEN 0022A的ARM文档所描述的,kernel起来时将发起CPU_ON调用来将这些CPU引导起来进入kernel。

    4.9K10

    基于Linux的pc启动过程

    要了解Android手机启动过程,我们先来了解一下基于linux系统的电脑从按下电源键的那一刻起,发生了什么,这样类比可以更好的理解Android手机的启动过程。...基于Linux的pc启动过程 我们都知道,所有的程序软件包括操作系统都是运行在内存中的,然而我们的操作系统一般是存放在硬盘上的,当我们按下开机键的时候,此时内存中什么程序也没有,因此需要借助某种方式,将操作系统加载到内存中...随后,在引导程序的作用下,陆续将操作系统的其他程序载入内存,完成实模式到保护模式的转变,为执行操作系统的入口函数main做准备,后面就是操作系统的初始化工作了,最后完成计算机的启动。...Android手机的启动过程 Android系统虽然也是基于linux系统的,但是由于Android属于嵌入式设备,并没有像pc那样的BIOS程序。取而代之的是Bootloader——系统启动加载器。...当linux内核启动后会初始化各种软硬件环境,加载驱动程序,挂载根文件系统,并开始执行根文件系统的init程序,init程序是Android启动过程中最重要的核心程序。

    2K00

    Linux 系统启动过程

    Linux 系统启动过程 linux启动时我们会看到许多启动信息。 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导。 运行 init。 系统初始化。...---- 内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。...运行级别 许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。 init进程的一大任务,就是去运行这些开机启动的程序。...但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。 Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。...Linux系统有7个运行级别(runlevel): 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 运行级别

    2.8K00

    Linux 系统启动过程

    linux启动时我们会看到许多启动信息。 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导。 运行 init。 系统初始化。 建立终端 。 用户登录系统。...---- 内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。...运行级别 许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。 init进程的一大任务,就是去运行这些开机启动的程序。...但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。 Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。...---- Linux 关机 在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

    2.6K30

    Linux 系统启动过程

    IOS/UEFI阶段计算机通电,BIOS或UEFI启动。进行硬件初始化、POST(Power-On Self-Test)自检,检查设备的可用性。BIOS/UEFI查找启动设备,并加载引导加载程序。...引导加载程序阶段引导加载程序(如GRUB)加载内核映像文件到内存。提供引导菜单,用户可以选择不同的内核或操作系统。引导加载程序将控制权交给操作系统内核。...内核启动阶段内核被加载到内存中,解压缩,并进行初始化。内核初始化系统硬件、建立内存管理、设置中断服务等。内核创建第一个用户空间进程(init或者其他初始化管理器如systemd)。...用户空间初始化阶段初始化管理器接管控制,启动系统服务和守护进程。系统初始化阶段可能包括加载共享库、配置网络、挂载文件系统。...用户输入凭据,登录管理器验证身份,启动用户会话。用户登录阶段登录后,系统加载用户配置文件、启动用户级别的进程。图形界面或命令行界面最终,系统进入用户的桌面环境或命令行终端。

    16821

    Linux 系统启动过程

    linux启动时我们会看到许多启动信息。 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导。 运行 init。 系统初始化。 建立终端 。 用户登录系统。...---- 内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。...运行级别 许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。 init进程的一大任务,就是去运行这些开机启动的程序。...但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。 Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。...---- Linux 关机 在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

    2.6K20

    Linux系统启动过程

    原文:https://www.runoob.com/linux/linux-system-boot.html Linux 系统启动过程 linux 启动时我们会看到许多启动信息。...linux 启动时我们会看到许多启动信息。 Linux 系统的启动过程并不是大家想象中的那么复杂,其过程可以分为 5 个阶段: 内核的引导。 运行 init。 系统初始化。 建立终端 。...内核引导 当计算机打开电源后,首先是 BIOS 开机自检,按照 BIOS 中设置的启动设备(通常是硬盘)来启动。 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。...Linux 允许为不同的场合,分配不同的开机启动程序,这就叫做 "运行级别"(runlevel)。也就是说,启动时根据 "运行级别",确定要运行哪些程序。...---- Linux 关机 在 linux 领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

    3.3K30

    arm linux启动过程_项目冷启动和热启动的区别

    所谓冷启动,也就是一般所说的上电复位,冷启动后片内外RAM的内容是随机的,通常是0x00或0xFF;单片机的热启动是通过外部电路给运行中的单片机的复位端一复位电平而实现的,也就是所说的按键复位或看门狗复位...常用的方法是:确定某内存单位为标志位(如0x40003FF4~0x40003FF7 RAM单元),启动时首先读该内存单元的内容,如果它等于一个特定的值(例如为0xAA55AA55),就认为是热启动,否则就是冷启动.../冷启动处理 unStartFlag=0xAA55AA55; } 然而实际调试中发现,无论是热启动还是冷启动,开机后所有内存单元的值都被复位为0,当然也实现不了热启动的要求。...通过看keil MDK自带的启动代码Startup.s,在这个启动代码中也并没有发现将整个RAM区域清零的语句。...反汇编程序,发现从启动代码执行结束到跳转到main函数过程中,编译器还执行了很多库函数,其中__scatterload_zeroinit函数将所有W/R RAM都初始化为0(默认设置下)。

    2.2K30

    SpringBoot 通过SpringApplication 引导启动

    文章目录 通过SpringApplication开始引导启动 SpringApplication类是用来执行Spring框架启动的引导类。...有两种方式可以进行启动引导: 通过静态方法 SpringApplication.run启动。 先创建 SpringApplication实例,在调用的实例方法 run进行启动。...new SpringApplication——创建引导启动的实例 在创建SpringApplication实例的时候,会根据用户输入和工程环境做一些基础配置,供之后引导启动中使用。...run()——开始引导启动 new StopWatch()——创建计时器 StopWatch是springframework.util中提供的一个工具类,在启动过程中使用StopWatch是为了记录启动花费的时间...SpringApplicationRunListener.start()——获取监听器,启动监听 监听器可以用来监听SpringApplication启动过程中的各个阶段。

    19510

    Linux 系统启动过程 原

    linux启动时我们会看到许多启动信息。 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导。 运行 init。 系统初始化。 建立终端 。 用户登录系统。...它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。 init进程的一大任务,就是去运行这些开机启动的程序。...但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。 Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。...Linux的账号验证程序是login,login会接收mingetty传来的用户名作为用户名参数。...Linux 关机 在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

    2.9K20

    Linux 系统启动过程(一)

    linux启动时我们会看到许多启动信息。 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导。 运行 init。 系统初始化。 建立终端 。 用户登录系统。...内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。...linux1.png 运行init init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。...linux2.png 运行级别 许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。...Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。

    2.4K20

    Linux From Scratch(LFS11.0)使 LFS 系统可引导 - 使用 GRUB 设定引导过程

    这里不属于任何文件系统,在启动时,第一个物理磁道中的程序从引导分区加载 GRUB 模块,默认在 /boot/grub 中查找模块。...引导分区的位置由负责进行配置的用户自己决定,作者推荐创建一个小的 (建议大小为 200 MB) 分区,专门存放引导信息。...这样,不同的 Linux 系统 (无论是 LFS 还是商业发行版) 在启动时和启动后都能访问相同的引导文件。...直接使用 LFS 分区也是可以的,但这样在配置多系统启动时比较麻烦。 根据以上信息,确定 LFS 根分区 (或 boot 分区,如果使用了独立的 boot 分区) 的名称。...sda3 ro } EOF GRUB 是一个很强大的程序,它提供了非常多的选项,可以支持多种设备、操作系统和分区类型,还有很多用于定制启动屏幕、声音、鼠标输入等的选项。

    2.3K50
    领券