Linux系统启动过程解析:从BIOS到登录界面

一、BIOS启动阶段

在电脑开启的瞬间,计算机会首先加载主板上的BIOS固件,这部分程序负责硬件相关的初始化工作,比如检测内存、检测硬盘、检测显卡等。同时,BIOS还会从固定位置读取引导扇区(boot sector)的内容,将控制权交给引导扇区的程序,进入下一个阶段。

二、引导加载阶段

引导扇区中的程序通常是一个小型的引导加载程序(bootloader),最常见的引导加载程序是GRUB。引导程序首先会读取配置文件/grub/grub.cfg,这个文件包含了启动菜单和内核选项。

grub.cfg示例:

menuentry 'Ubuntu' {
    linux /vmlinuz-4.10.0-42-generic root=/dev/sda1 ro quiet splash
    initrd /initrd.img-4.10.0-42-generic
}

上面的示例中,menuentry定义了启动项的名称,linux行指定了内核文件的位置和内核启动参数,initrd行指定了初始内存盘(initrd)文件的位置,initrd里可以包含一些加载内核所必要的模块和设备驱动。

三、内核启动阶段

引导程序将控制权转交给内核,内核首先会进行硬件侦测,寻找所有可用的I/O设备,初始化中断、内存和各种驱动程序。

随后,内核会尝试挂载root文件系统,这个过程是通过读取fstab文件中的内容来完成的。

fstab示例:

/dev/sda1       /           ext4        errors=remount-ro 0       1
/dev/sda2       none        swap        sw                0       0

fstab文件中定义了已有的存储设备的挂载点。上面的实例定义了/dev/sda1作为根文件系统的挂载点,使用ext4文件系统,并启用错误日志、请求重新挂载等功能。

内核成功挂载文件系统后,会执行/sbin/init程序,这个程序是系统的初始化管理程序。

四、系统初始化阶段

初始化程序会启动各种守护进程和系统服务,比如控制台、网络、远程文件共享、系统日志等。这些服务会连接到本地或者远程的设备和网络,并开始提供各种服务。

最后系统加载登录管理器,等待用户登录。Linux系统中最常见的登录管理器是GDM和LightDM。

当用户输入用户名和密码后,系统开始启动用户的会话,并加载用户的首选项和设置。

五、总结

在Linux系统启动时,BIOS首先会启动并初始化硬件,然后将控制权交给引导扇区,引导程序会读取配置文件并引导内核启动。内核启动后会进行硬件侦测和文件系统挂载,接着会进入系统初始化阶段启动各种服务。最后启动登录管理器,等待用户登录。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/159515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-19 19:00
下一篇 2024-11-20 00:14

相关推荐

  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • 如何使用Python将print输出到界面?

    在Python中,print是最常用的调试技巧之一。在编写代码时,您可能需要在屏幕上输出一些值、字符串或结果,以便您可以更好地理解并调试代码。因此,在Python中将print输出…

    编程 2025-04-29
  • 如何使用Python执行Shell命令并获取执行过程信息

    本文将介绍如何使用Python执行Shell命令并获取执行过程信息。我们将从以下几个方面进行阐述: 一、执行Shell命令 Python内置的subprocess模块可以方便地执行…

    编程 2025-04-28
  • Python调用C代码过程用法介绍

    本文将从多个方面详细阐述Python调用C代码的过程,包括相关的知识点、实例代码以及注意事项等内容。 一、概述 Python作为一门高级语言,在很多情况下不能满足开发人员的需求。此…

    编程 2025-04-27
  • Python 如何进入编程界面?

    Python 是一种广泛应用于 Web、游戏、网络爬虫等领域的高级编程语言。Python 虽然易学易用,但还是需要一些工具和步骤来实际编写运行程序。 一、命令行模式 在命令行模式下…

    编程 2025-04-27
  • 如何在Linux中添加用户并修改配置文件

    本文将从多个方面详细介绍在Linux系统下如何添加新用户并修改配置文件 一、添加新用户 在Linux系统下创建新用户非常简单,只需使用adduser命令即可。使用以下命令添加新用户…

    编程 2025-04-27
  • 如何解决linux jar包 invalid or corrupt jarfile问题

    对于许多开发人员和系统管理员在Linux环境下使用Java开发过程中遇到的一个常见的问题是 invalid or corrupt jarfile(无效或损坏的jar文件)错误。当您…

    编程 2025-04-27
  • Python自动抢购代码实现过程

    本文将详细介绍使用Python实现自动抢购的代码实现过程。 一、安装selenium库 Selenium是一个自动化测试框架,可以在浏览器中模拟用户操作,可以用来实现自动抢购。 首…

    编程 2025-04-27
  • 在Linux上安装JRE并配置环境变量

    本文将从以下几个方面为您详细阐述如何在Linux系统上,通过自己账户安装JRE,并且配置环境变量。 一、安装JRE 在进行安装前,我们需要下载JRE的安装包并解压,可以从官方网站下…

    编程 2025-04-27
  • GTKAM:Linux下的照片管理器

    GTKAM是用于Linux操作系统的一款照片管理器,它支持多种相机及存储设备,并提供了一系列强大的工具,让用户可以方便地浏览、管理、编辑和导出照片。本文将从多个方面对GTKAM进行…

    编程 2025-04-27

发表回复

登录后才能评论