Linux启动过程详解:从BIOS到/sbin/init
需积分: 9 115 浏览量
更新于2024-08-25
收藏 235KB PPT 举报
本文主要介绍了Linux系统的启动过程,特别是从BIOS引导到/sbin/init程序运行的各个阶段。在启动过程中,涉及到了硬件初始化、MBR加载、GRUB引导加载程序、内核引导以及最终的系统初始化。
Linux启动过程通常分为以下几个步骤:
1. **BIOS引导**:
- **加电自检(POST)**:开机时,计算机硬件进行自我检查,确保所有组件正常工作。
- **设备枚举和初始化**:识别和设置系统中的硬件设备。
- **MBR加载**:BIOS找到硬盘上的主引导记录(MBR),将其加载到内存特定位置并执行。
2. **主引导记录(MBR)**:
- MBR包含512字节,存储了分区表和一个小型引导加载程序。
- 可以使用`dd`命令复制MBR内容,如`dd if=/dev/hda of=mbr bs=512 count=1`,然后使用`hexdump`或`cfdisk`查看MBR信息。
3. **GRUB引导加载程序**:
- GRUB是一个两阶段引导加载程序,stage1驻留在MBR中,可加载stage2。
- stage2负责显示引导菜单,用户可以选择要启动的操作系统或内核版本。
- GRUB支持多种文件系统,可以引导多操作系统环境。
4. **Linux内核引导**:
- 内核的引导开始于汇编语言编写的_start()函数,它会将自身移动到内存的特定位置并继续执行。
- 接下来,setup()函数负责硬件初始化,设置内核运行环境,如内存管理、显示器设置等。
- startup_32()函数进一步初始化系统,解压bzImage内核镜像到内存,并开始执行用户空间程序。
5. **/sbin/init程序**:
- 内核启动的第一个进程,PID为1,PPID为0,它是所有其他进程的起点。
- /etc/inittab是init的配置文件,定义了不同运行级别(run levels)下的动作和命令,每个条目由"id": "run levels": "action": "command"四个部分组成。
- 例如,init根据运行级别启动getty进程,如agetty,以提供终端登录服务;还会执行/etc/init.d下的脚本,如boot和rc脚本,进行系统服务的启动。
6. **系统服务启动**:
- /etc/init.d目录下的脚本按特定顺序执行,启动各种系统服务。
- 最后,用户通过/bin/login程序进行身份验证,进入shell环境,此时系统准备就绪,用户可以开始使用Linux了。
理解这个启动过程对于系统管理员来说至关重要,因为这有助于诊断和解决启动问题,同时也有助于理解如何配置和管理Linux系统服务。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-11-29 上传
2023-09-06 上传
2023-07-12 上传
2023-11-06 上传
2023-06-13 上传
2023-04-28 上传
小炸毛周黑鸭
- 粉丝: 25
- 资源: 2万+
最新资源
- WordPress作为新闻管理面板的实现指南
- NPC_Generator:使用Ruby打造的游戏角色生成器
- MATLAB实现变邻域搜索算法源码解析
- 探索C++并行编程:使用INTEL TBB的项目实践
- 玫枫跟打器:网页版五笔打字工具,提升macOS打字效率
- 萨尔塔·阿萨尔·希塔斯:SATINDER项目解析
- 掌握变邻域搜索算法:MATLAB代码实践
- saaraansh: 简化法律文档,打破语言障碍的智能应用
- 探索牛角交友盲盒系统:PHP开源交友平台的新选择
- 探索Nullfactory-SSRSExtensions: 强化SQL Server报告服务
- Lotide:一套JavaScript实用工具库的深度解析
- 利用Aurelia 2脚手架搭建新项目的快速指南
- 变邻域搜索算法Matlab实现教程
- 实战指南:构建高效ES+Redis+MySQL架构解决方案
- GitHub Pages入门模板快速启动指南
- NeonClock遗产版:包名更迭与应用更新