Linux启动流程详解:从BIOS到SysVinit
需积分: 7 19 浏览量
更新于2024-09-23
1
收藏 150KB PDF 举报
"Linux启动流程详解"
Linux系统的启动过程是一个复杂且有序的序列,涉及多个阶段,从硬件初始化到操作系统核心的加载,再到用户空间服务的启动。以下是对这些阶段的详细解析:
### 第一阶段:BIOS启动引导阶段
当计算机接通电源,基本输入/输出系统(BIOS)开始执行。BIOS会执行自检(POST - Power-On Self Test),检查硬件是否正常。POST结束后,BIOS会根据用户在CMOS中的设置,从预设的启动设备(通常是硬盘)中寻找主引导记录(MBR)。
### 第二阶段:GRUB启动引导阶段
MBR中包含的是GRUB(GRand Unified Bootloader)的stage1部分。GRUB是多引导管理器,能够引导多个操作系统。GRUB stage1加载stage1.5,然后是stage2。stage1.5和stage2的作用是找到GRUB的配置文件`/boot/grub/grub.conf`,并显示启动菜单,允许用户选择要启动的内核版本。
### 第三阶段:内核阶段
一旦用户选择好内核,GRUB将加载选定的内核映像(例如`/boot/vmlinuz-<version>`)和初始 RAM 磁盘(initrd,例如`/boot/initrd-<version>`)到内存中。内核开始运行,加载必要的驱动程序,初始化硬件,进行网络配置,以及挂载根文件系统。
### 第四阶段:SysVinit初始化阶段
内核成功启动后,它会调用`/sbin/init`作为第一个用户级进程,这是系统启动的核心。`/sbin/init`读取`/etc/inittab`配置文件,决定系统进入哪个运行级别(runlevel,通常为3或5,分别对应多用户命令行和多用户图形界面)。接着,`/etc/rc.d/rc<#>.d`目录下的脚本开始执行,初始化相应运行级别的服务。
`rc.sysinit`脚本负责基础系统设置,如设置时区、网络、挂载文件系统,以及启动交换分区。随后,根据`/etc/inittab`配置,运行级别特定的服务脚本在`/etc/rc.d/init.d/`目录下被启动。对于图形界面,系统会打开X Window System,即控制台7号。
在整个启动过程中,涉及到的关键文件包括:
- `/boot/grub/grub.conf`: GRUB的配置文件
- `/boot/vmlinuz-<version>`: Linux内核镜像
- `/boot/grub/stage1`, `/boot/grub/stage1_5`, `/boot/grub/stage2`: GRUB的各个阶段文件
- `/etc/rc.d/rc.sysinit`: 系统初始化脚本
- `/etc/inittab`: 控制`/sbin/init`行为的配置文件
- `/etc/rc.d/rc<#>.d`: 运行级别服务初始化脚本的目录
了解Linux启动流程有助于系统管理员在遇到启动问题时进行诊断和修复,同时也能更好地理解系统运行的基础架构。
2011-01-26 上传
2022-05-25 上传
2023-04-05 上传
2023-03-16 上传
2023-08-23 上传
2023-06-06 上传
2023-03-16 上传
2023-08-09 上传
ltomuno
- 粉丝: 0
- 资源: 16
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析