服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - Linux操作系统引导的过程

Linux操作系统引导的过程

2019-12-21 22:04今日头条Linux学习教程 Linux

在本文中我们将回顾Linux操作系统中的引导过程。操作系统如何通过不同的启动状态阶段。本文是为那些刚刚接触Linux的读者编写的。

1. 前言

在本文中我们将回顾Linux操作系统中的引导过程。操作系统如何通过不同的启动状态阶段。本文是为那些刚刚接触Linux的读者编写的。了解Linux如何启动对于在系统出现故障时有效地进行故障排除非常重要。当系统打开,几分钟后,我们得到一个登录提示。我们有没有试着找出启动序列的所有阶段都发生了什么,以及系统启动过程中幕后发生了什么。

2. 启动电源

BIOS基本输入输出系统是一个预置在主板芯片组中的软件程序。

BIOS加载并扫描诸如硬盘、CD-ROM、RAM等设备。

BIOS搜索主硬盘驱动器的MBR(主引导记录:第一扇区),扫描第一阶段加载程序(在我们的示例中,启动加载程序是(GRUB LILO),并将职责移交给MBR。

Boot PROM/FLASH/BIOS能够熟练地将MBR加载到RAM中并执行它。

3. MBR (Master Boot Record)

512bytesofspace–>MBR

MBR包含了大多数操作系统的加载器信息。比如UNIX, Linux和WINDOWS。

MBR存储加载程序第阶段的二进制信息。

MBR包括第一个磁盘驱动器的物理扇区(通常是512bytes),它不是任何分区的一部分。

放置在主磁盘驱动器上,磁道第一柱面的主扇区为0,磁头为0(这整个路径通常是为引导程序预订的)

MBR包括一个小型可执行程序和一个指定主分区的表。

Linux操作系统引导的过程

BootCode(GRUB)446bytespartition1:16bytespartition2:16bytespartition3:16bytespartition4:16bytesmagicNumber:2bytes

MBR还记录哪个主分区是活动的。

BIOS向第一阶段引导加载程序提交权限,第一阶段启动加载程序并随后扫描分区表,并在配置为可引导的分区上找到第二阶段启动加载程序。

4. Linux操作系统引导器Boot Loader

引导加载程序从第一阶段加载程序中定义,并将自身加载到RAM中。所有这些都是在几毫秒内发生的。

默认的第二阶段引导加载程序是GRUB (Grand Unified boot loader)或LILO (Linux加载程序)

一旦GRUB加载到RAM中,它就会搜索内核的位置。

GRUB将仔细检查映射文件,以找到位于(/boot)下的内核映像并加载它。

GRUB从/boot分区加载内核(vmlinux -version)

Linux操作系统引导的过程

Linux操作系统引导器Boot Loader

5. Linux操作系统引导器之grub

GRUB为initrd - >组织RAMDISK (RAMDISK是从RAM中保留的空间)。此外,它还将initrd驱动到RAM中,以使内核准备好将自己加载到内存和依赖的模块中,这样它就可以将系统留给“init”进程

Linux操作系统引导的过程

Linux操作系统引导器之grub

在Linux中,大多数驱动程序都是预先构建为模块的,这些模块是初始ram驱动器(initrd.img),它可以保存附加模块的所有信息。因此,当内核引导时,它创建ramdrive并加载initrd.img及其相关模块。

GRUB读取/boot/grub/grub.conf 为用户选择操作系统提供了一个干净的接口。

一旦内核加载了它所依赖的模块,它就会移交给“init”进程。内核映像有一个小的、未打包的程序,它解压缩内核并运行它。

6. Linux操作系统引导过程之LILO

为了在硬盘上定位操作系统,LILO需要指示MBR。对/etc/lilo.conf进行的任何修改,它必须在MBR中更新,但是在GRUB的情况下不需要更新,它直接从文件/boot/grub/grub.conf中读取。

在/etc/lilo.conf进行更改之后,我们必须手动更新MBR

Linux操作系统引导的过程

Linux操作系统引导过程之LILO

/sbin/lilo-v

7. Linux操作系统引导过程之第二阶段

GRUB第二阶段加载程序驻留在MBR和/boot分区中。一旦GRUB加载到内存中,它就变成了第二阶段加载器。

8. Linux操作系统引导过程之第三阶段

不应该删除/initrd目录,它是内核快速访问启动系统模块所需的模块(包括设备驱动程序)的临时占位符。

9. Linux内核初始化的关键点包括:

初始化CPU组件,如MMU

初始化调度器(PID 0)

以rw模式挂载根文件系统

派生init进程(PID 1)

本质上,内核初始化做了两件事:

启动共享资源管理器(RAM、处理器和大容量存储)的核心系统。

启动单个进程/sbin/init

Init进程(sbin/init)是第一个进程,它加载所有不同的守护进程,并挂载/etc/fstab下列出的所有分区。

10. 关于/etc/fstab

/sbin/init读取/etc/inittab文件

设置默认运行级别(telinit命令允许管理员告诉init进程更改其当前运行级别)

调用/etc/rc.d/rc.sysinit和/etc/rc.d/rc x(其中“x”是一个运行级)

在/etc/rc.d/rc5.d目录文件以字母K表示杀进程的脚本。文件以字母S开头代表启动脚本。

启动tty流程和xdm (X display manager)

启动用户登录屏幕

延伸 · 阅读

精彩推荐
  • Linux理解 Linux/Unix 登录脚本的技巧

    理解 Linux/Unix 登录脚本的技巧

    有一些常见的情况,例如从Debian的包管理程序到Iaas的管理中,很多任务需要设置环境变量才能正常运行。 有时,程序通常只需要在 登陆时运行一次,例如...

    未知1042023-05-12
  • Linuxlinux top命令详解

    linux top命令详解

    这篇文章主要介绍了linux top命令详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    sparkdev5622022-03-01
  • Linuxlinux驱动程序开发详细介绍

    linux驱动程序开发详细介绍

    前提,一般来说内核代码的错误可能会引起一个用户进程的死亡,或者整个系统的瘫痪,更严重的后果,可能导致磁盘损伤~因此建议最好有一台实验机进行...

    Linux教程网5392019-12-17
  • Linuxlinux设置tomcat自启动的方法

    linux设置tomcat自启动的方法

    这篇文章主要介绍了linux设置tomcat自启动的方法,需要的朋友可以参考下...

    Linux教程网8512021-10-10
  • Linux在Linux系统中创建新的亚马逊AWS访问密钥的方法

    在Linux系统中创建新的亚马逊AWS访问密钥的方法

    如何在Linux系统中创建新的亚马逊AWS访问密钥?我在配置一个需要访问我的亚马逊AWS帐号的应用时被要求提供AWS访问密钥ID和秘密访问密钥,我怎样创建一个...

    Linux教程网6182019-10-30
  • Linux将 Linux 终端与 Nautilus 文件管理器结合起来

    将 Linux 终端与 Nautilus 文件管理器结合起来

    Nautilus 是 GNOME 桌面环境中的图形化文件浏览器。你可以使用它来访问和管理系统中的文件和文件夹。 尽管并非所有人都喜欢使用终端来管理文件和目录,...

    未知812023-08-08
  • Linuxssh 登录很慢该如何解决

    ssh 登录很慢该如何解决

    这篇文章主要介绍了ssh 登录很慢该如何解决的相关资料,这里提供了两种方法,DNS反向解析及关闭ssh的gssapi认证的解决办法,需要的朋友可以参考下...

    linuxeye9922021-12-16
  • LinuxLinux系统下无法卸载挂载的目录怎么办?

    Linux系统下无法卸载挂载的目录怎么办?

    我们在日常运维中经常性会遇到需要进行磁盘的扩容、卸载、挂载等操作,但是有时候这个系统上跑的应用并没有停止或者有其他的运维同事在操作这个目...

    今日头条10302020-12-30