Linux启动过程详解:从BIOS到/sbin/init
需积分: 9 143 浏览量
更新于2024-08-25
收藏 235KB PPT 举报
本文将深入探讨Linux系统的启动过程,特别是关注/sbin/init程序的运行流程。在启动过程中,涉及的关键步骤包括BIOS引导、GRUB加载、内核启动、init进程的初始化以及用户登录等环节。
1. BIOS引导:
- 加电自检(POST):系统上电后,BIOS会对硬件进行检测,确保所有部件正常工作。
- 设备枚举和初始化:BIOS识别并初始化连接的硬件设备。
- 寻找驱动器和启动扇区:BIOS读取硬盘的MBR(主引导记录),这是系统启动的关键。
- MBR加载:MBR包含446字节的stage1引导加载程序,负责加载stage2,或者如果支持文件系统,则加载stage1.5。
2. GRUB加载:
- GRUB是一个多阶段引导加载程序,通常stage1安装在MBR中,加载并执行stage2。
- stage2显示引导菜单,允许用户选择要启动的操作系统或内核,并能提供一个简单的Shell环境来指定内核位置。
3. Linux内核引导:
- _start():引导扇区的汇编代码首先执行,然后将自身移动到内存中的特定位置,并加载setup。
- setup():初始化硬件设备,如内存、磁盘等,并设置保护模式运行环境。
- startup_32():进入保护模式,解压缩bzImage内核到内存,并继续执行。
4. /sbin/init启动:
- /etc/inittab:这是init的配置文件,定义了系统启动时的不同运行级别和服务。
- init进程:作为PID 1的进程,它是系统的第一个进程,负责启动系统服务、终端会话和初始化网络等。
- /etc/init.d/*:启动脚本,如/etc/init.d/boot和/etc/init.d/rc,这些脚本按特定顺序执行,启动系统服务。
5. 用户登录及后续流程:
- agetty:在终端上创建登录提示,让用户输入用户名和密码。
- /bin/login:验证用户凭证,成功后启动用户的shell环境。
- shell:用户获得命令行界面,可以开始执行各种命令。
Linux启动过程是一个复杂的过程,涉及多个层次的引导加载程序、内核初始化以及用户空间服务的启动。理解这个过程有助于我们更好地管理和维护Linux系统,特别是在故障排除和性能优化时。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-11-29 上传
2021-12-05 上传
2011-05-23 上传
2022-08-03 上传
2009-03-23 上传
2023-08-02 上传
xxxibb
- 粉丝: 19
- 资源: 2万+
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建