共计 2234 个字符,预计需要花费 6 分钟才能阅读完成。
Linux 操作系统引导的过程是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
1. 前言
我们将回顾 Linux 操作系统中的引导过程。操作系统如何通过不同的启动状态阶段。了解 Linux 如何启动对于在系统出现故障时有效地进行故障排除非常重要。当系统打开,几分钟后,我们得到一个登录提示。我们有没有试着找出启动序列的所有阶段都发生了什么,以及系统启动过程中幕后发生了什么。
2. 启动电源
BIOS 基本输入输出系统是一个预置在主板芯片组中的软件程序。
BIOS 加载并扫描诸如硬盘、CD-ROM、RAM 等设备。
BIOS 搜索主硬盘驱动器的 MBR(主引导记录: 第一扇区),扫描第一阶段加载程序(在我们的示例中,启动加载程序是(GRUB LILO),并将职责移交给 MBR。
Boot PROM/FLASH/BIOS 能够熟练地将 MBR 加载到 RAM 中并执行它。
3. MBR (Master Boot Record)
512 bytes of space ndash; MBR
MBR 包含了大多数操作系统的加载器信息。比如 UNIX, Linux 和 WINDOWS。
MBR 存储加载程序第阶段的二进制信息。
MBR 包括第一个磁盘驱动器的物理扇区(通常是 512bytes),它不是任何分区的一部分。
放置在主磁盘驱动器上,磁道第一柱面的主扇区为 0,磁头为 0(这整个路径通常是为引导程序预订的)
MBR 包括一个小型可执行程序和一个指定主分区的表。
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 操作系统引导器 Boot Loader
5. Linux 操作系统引导器之 grub
GRUB 为 initrd – 组织 RAMDISK (RAMDISK 是从 RAM 中保留的空间)。此外,它还将 initrd 驱动到 RAM 中,以使内核准备好将自己加载到内存和依赖的模块中,这样它就可以将系统留给“init”进程
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 操作系统引导过程之 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 操作系统引导的过程是怎么样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!