### Linux系统启动过程详解 #### 一、BIOS与自检阶段 Linux系统的启动始于**基本输入输出系统(BIOS)**。BIOS是计算机硬件的一部分,存储在ROM芯片上,负责在系统加电后执行一系列初始化操作。BIOS进行**加电自检(POST,Power On Self Test)**,检查硬件设备是否正常工作,如内存、硬盘、键盘等,确保系统的基本硬件组件处于可操作状态。 #### 二、MBR与Bootloader 完成自检后,BIOS读取主引导记录(MBR)——硬盘的第一个扇区(512字节),通常位于逻辑地址0xFFFF0处。MBR包含了**主引导程序**,负责加载操作系统内核。在这个阶段,两个常见的Bootloader——**GRUB**和**LILO**起到了关键作用。 ##### GRUB与LILO的区别: - **GRUB**(GRand Unified Bootloader)支持多操作系统环境,提供图形化菜单选择不同的操作系统或内核版本。 - **LILO**(LInux LOader)较旧,功能相对简单,主要用于单个Linux内核的加载。 GRUB和LILO都会将操作系统内核从硬盘复制到RAM中,但GRUB提供了更多的灵活性和控制选项,例如在多操作系统环境中选择启动顺序和参数。 #### 三、内核加载与解压 当Bootloader成功读取MBR并启动后,它会加载Linux内核。现代Linux内核通常被压缩存储,在加载时会被解压。例如,使用`bzImage`格式的内核,其大小通常小于512KB。解压后的内核被放置在RAM中,准备运行。 #### 四、Init进程与初始化 一旦内核被加载并解压,系统启动进入下一个关键阶段:创建第一个用户空间进程——**init**。这个进程的PID为1,是所有其他用户空间进程的父进程。在Unix和Linux系统中,init进程根据`/etc/inittab`文件的配置执行系统初始化任务,包括设置运行级别、启动守护进程和服务、设置系统环境等。 ##### 运行级别与服务启动: Linux系统通过运行级别来确定系统启动后的状态。运行级别的设置主要通过`/etc/inittab`文件实现,不同的运行级别对应不同的系统状态,如单用户模式、多用户模式、完全图形界面等。在系统启动过程中,`init`进程会根据当前设定的运行级别执行相应的初始化脚本,这些脚本位于`/etc/rc.d/rcX.d`目录下,其中`X`代表运行级别的数字。 #### 五、系统初始化脚本 系统初始化脚本主要位于`/etc/rc.d/rc.sysinit`中,它负责执行以下任务: - 设置系统环境变量,如`$PATH`。 - 检测并挂载根文件系统。 - 执行必要的硬件初始化和检测。 - 启动网络服务。 - 清理临时文件和锁文件。 在`/etc/rc.d/rc.sysinit`执行完成后,根据运行级别,系统会进一步执行`/etc/rc.d/rcX.d`下的脚本来启动相应服务。 #### 六、系统服务与守护进程 系统服务和守护进程是Linux系统的重要组成部分,它们提供了各种系统功能和应用服务。在系统启动过程中,`init`进程会根据`/etc/inittab`文件中的配置,启动或停止这些服务。每个服务通常由一个或多个脚本控制,这些脚本位于`/etc/rc.d/init.d`目录下,并链接到`/etc/rc.d/rcX.d`目录中,带有特定的前缀“K”或“S”。 - “K”开头的脚本用于停止服务。 - “S”开头的脚本用于启动服务。 脚本的执行顺序由其名称中的数字决定,较小的数字优先执行。 #### 结论 Linux系统的启动过程涉及多个层次和组件,从硬件初始化到内核加载,再到系统初始化和服务启动,每一步都是为了最终构建一个稳定、安全、高效的操作系统环境。理解这一过程对于深入掌握Linux系统管理至关重要。
- 粉丝: 5
- 资源: 20
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Java多线程的并发任务管理系统.zip
- C#在线网校考试系统源码 在线学习云服务平台源码数据库 SQL2008源码类型 WebForm
- com.sun.net.httpserver安卓HTTP服务器jar包最新版2.2.1
- Python基础学习-06字典Dict
- 测试用例及测试计划.zip
- PHP安卓苹果APP在线封装打包制作源码 H5手机网站转APP 免签封装绿标
- C#ASP.NET手机终端进销存系统源码数据库 SQL2008源码类型 WebForm
- 8款不同的404页面,告诉用户“页面未找到”
- 通过@property实现可控进度条 vue 进度条
- (源码)基于C和Java的网络通信与数据处理系统.zip