- 1
- 0
- 约1.48万字
- 约 12页
- 2019-07-06 发布于天津
- 举报
Linux 系统工程师 —— Linux 系统管理
第九章 系统启动与控制
Linux 系统是如何启动的?如果出现故障,应该在什么模式下修复?Linux 启动
时会会启动哪些服务?要回到这一系列的问题,就应该阅读本章的内容。
Linux 系统是一个可订制的系统,它非常灵活。要深入理解 Linux 系统,我们必
须要理解它的启动过程以及相关脚本。
本章目标:
学习完本章你将能够
理解 Linux 的运行级别
熟悉 Linux 的启动过程
配置在不同的运行级别下启动的
服务
GRUB 引导器的配置
115 Version :1.0
Linux 系统工程师 —— Linux 系统管理
1. Linux 系统的启动过程
图 9-1 显示了 Linux 系统的启动过程。
图9-1
具体的步骤为:
1、开机自检
2 、从硬盘的MBR 中读取引导程序LILO 或 GRUB
3、引导程序根据配置文件显示引导菜单
4 、如果选择进入Linux 系统,此时引导程序加载Linux 内核文件。以RedHat Enterprise Linux
AS4 为例,GRUB 程序将装载/boot/vmlinuz-2.6.9-22.EL 文件到内存中。
5、当内核全部载入内存后,GRUB 的任务完成,此时全部控制权限交给 Linux ,CPU 开
始执行 Linux 内核代码(初始化任务调度、分配内存、加载驱动等)。
6、内核代码执行完后,开始执行 Linux 系统的第一个进程 init 进程(如果在各个 Linux
发行版本中查看 Linux 进程,将会发现 init 进程的进程号都是 1)。
116 Version :1.0
Linux 系统工程师 —— Linux 系统管理
7、init 进程根据系统初始化配置文件/etc/inittab 文件,执行相应的系统初始化脚本(一般
都是/etc/rc.d/rc.sysinit )。
8、根据/etc/inittab 文件的配置,进入不同的运行级别。
9、启动或停止相应运行级别下的服务。
10、建立终端。
11、引导 login 进程,进入登录界面。
内核启动的参考(作为补充材料阅读):
当引导程序成功完成引导任务后,Linux 从它们手中接管了 CPU 的控制权,然
后 CPU 就开始执行 Linux 的核心映象代码,开始了 Linux 启动过程。这里使用了几
个汇编程序来引导 Linux ,这一步泛及到 Linux 源代码树中的“arch/i386/boot ”下的
这几个文件:bootsect.S 、setup.S 、video.S 等。
其中 bootsect.S 是生成引导扇区的汇编源码,它完成加载动作后直接跳转到
setup.S 的程序入口。setup.S 的主要功能就是将系统参数(包括内存、磁盘等,由
BIOS 返回)拷贝到特别内存中,以便以后这些参数被保护模式下的代码来读取。此
外,setup.S 还将 video.S 中的代码包含进来,检测和设置显示器和显示模式。最后,
setup.S 将系统转换到保护模式,并跳转到 0x100000 。
那么 0x100000 这个内存地址中存放的是什么代码?而这些代码又是从何而来
的呢?
0x100000 这个内存地址存放的是解压后的内核,因为 Red Hat 提供的内核包含
了众多驱动和功能而显得比较大,所以在内核编译中使用了“makebzImage ”方式,
从而生成
原创力文档

文档评论(0)