Linux启动过程详解:从内核到init阶段
需积分: 10 8 浏览量
更新于2024-09-12
收藏 915KB PDF 举报
"Linux启动过程详解"
Linux系统的启动过程是一个复杂而有序的序列,涉及多个阶段,从硬件初始化到用户空间服务的启动。以下是对Linux启动过程的详细解析:
1. **内核引导阶段**
- **bootsect阶段**: 这是启动过程的第一步,通常由引导装载程序(如GRUB或LILO)执行。引导装载程序负责从硬盘上的特定位置加载Linux内核到内存中。
- **setup阶段**: 内核被加载后,会执行`setup.s`汇编代码,它初始化必要的硬件,如内存管理、中断处理,并设置堆栈。
- **head.S阶段**: 接下来,`head.S`汇编程序接手,进行更复杂的硬件配置,如时钟、设备初始化,并为C语言代码准备环境。
- **main.c阶段**: 最后,C语言的`main.c`函数启动,这是内核初始化的开始,包括更多设备驱动的加载和系统设置。
2. **init阶段**
- **阶段1:确定用户登录模式**:根据`/etc/inittab`文件定义的运行级别,Linux决定启动哪种服务和桌面环境。运行级别0表示halt,1是单用户模式,2是多用户无NFS,3是全功能多用户(文本界面),4未使用,5是X11(图形界面),6是重启。默认运行级别通常是5,即X-Windows多用户模式。
- **阶段2:执行脚本/etc/rc.d/rc.sysinit**:在确定了运行级别后,系统执行`rc.sysinit`脚本,这一步初始化系统的基本环境,如设定默认路径、主机名,以及读取`/etc/sysconfig/network`中的网络配置。
- **阶段3:启动内核的外挂模块及各运行级的脚本**:接着,系统加载`/etc/modules.conf`或`/etc/modules-load.d/`目录下的模块,以及与当前运行级别相关的脚本,这些脚本通常位于`/etc/rc.d/rc.runlevel`目录下,例如`/etc/rc.d/rc3.d`对于运行级别3。
3. **运行级别服务启动**
- 系统根据选定的运行级别,运行对应的S开头的链接文件(如S99reboot或S01network)。这些链接指向`/etc/rc.d/init.d/`目录下的服务脚本,依次启动或停止服务。
4. **启动多用户环境**
- 如果运行级别是5(X-Windows),则启动X Window System,同时运行桌面环境,如Gnome或KDE。
5. **用户登录**
- 系统显示登录提示,用户输入用户名和密码后,系统会创建一个shell进程,让用户交互操作。
在整个启动过程中,Linux通过一系列精心设计的脚本和服务实现了从硬件到软件的全面初始化,确保系统以稳定且安全的方式启动。对于初学者来说,理解这个过程有助于更好地管理和优化Linux系统。
2011-01-26 上传
2014-12-18 上传
2010-01-19 上传
2023-06-06 上传
2023-06-06 上传
2023-07-14 上传
2023-03-16 上传
2023-07-12 上传
2023-05-24 上传
2024-03-09 上传
rp545768076
- 粉丝: 0
- 资源: 3
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍