记住引导你系统的进程对排除引导进程故障是至关重要的。
1:BIOS
a.计算机的BIOS从某个驱动器的主引导记录(MBR)中装载引导装载程序的第一阶段。
2:GRUB引导装载程序
a.引导装载程序的第一阶段访问你的/boot分区,并载入引导装载程序的第二阶段。
b.引导装载程序的第二阶段显示所有可用的内核菜单。
c.当用户作出选择后,引导装载程序的第二阶段会将选择的初始ram盘(initrd)解压缩为RAM,并用指定的内核命令行装载选择的内核。
3.内核
a.在需要的地方内核会使用initrd中的程序库和驱动程序,侦测底层设备,比如系统的PCI总线、CPU和硬盘。
b. 内核挂载只读的根分区,并运行第一个进程(通常是/sbin/init).
4./sbin/init
a.init进程读取/etc/inittab并(默认)运行/etc/rc.d/rc.sysinit.
b./etc/rc.d/rc.sysinit启动脚本启动初始化RAID、LVM和配额,挂载在/etc/fstab中列出的其它分区,重新挂载根分区,将其权限为“读-写”,并执行其他可令系统准备提供服务的有关任务。
c.当运行完rc.sysinit后,init查看inittab中定的默认运行级别,并使用/etc/rc.d/rc脚本启动所有该运行级别的目录(例如:运行级别3中的/etc/rc.d/rc3.d)中所有“S”服务。
d.当rc完成运行后,init最后启动六个虚拟控制台和一个X显示管理程序(如果系统是在运行级别5),并提示用户登录。
这个进程虽然复杂,如果你了解要查找什么的话,也不难说清每一个阶段的起址点。当装载内核时,你会看到黑色背景的灰色文本。当运行rc.sysinit时,在每一行的末尾你会开始看到绿色的[OK]状态更新,(有时也是红色的"[FAILED]"出现。有一处会显示如下信息:“Entering non-interactive startup”。这标志着从rc.sysinit到rc的过渡。你还将注意到自这时起,服务开始从RAID、LVM和配额等底层组件转换到高层服务,如httpd、sendmail和nfs,
了解在引导过程的哪一部份发生问题对查找问题是很有用的,例如:如果问题发生在运行rc.sysinit之前,那么根本就不用考虑要检查服务或根分区以外的分区,因为它们在rc.sysinit完成前还没有出现。
紧急模式
在紧急模式中启动进程被极大地简化了,一旦载入内核,会马上提示用户输入根口令。如果口令正确,那么就会生成一个根shell。然后让用户自己完成其它操作,因为没有运行rc.sysinit,所以除根分区外没有挂载其它任何分区,也没有启动底层服务。因为没有运行rc,所以没有启动高层服务。这显然不是日常所需的运行级别,但因为它绕过了启动进程的很多步骤,所以在进入紧急模式时只需要具备几个条件:
1:必须有用来装载内核的引导装载程序
2:必须有内核可供装载
3:根分区必须可以挂载
4:/etc/passwd文件必须完整
5:/sbin/sulogin命令(及其相关程序库)必须可用以便提供密码提示符。
6:认证的用户必须有有效的shell
和正常启动所需条件相比,这确实是个简短的列表,如果你可以进入紧急模式,那么你就知道问题不是出现在上述几个方面,就可以寻找其它故障,也许从rc.sysinit和rc开始。如果你无法进入紧急模式,那么你也已经有效的缩小了故障范围。
通过引导装载程序将参数传递给内核就可以进入紧急模式,当出现GRUB菜单时,选择你想要引导的内核,按“a”在内核命令行后添加内容,添加一个新参数“emergency”,然后按回车,再按“b”引导系统。
另外,还可以使用内核引导参数init=/bin/sh ,这样不要口令,就可以跳过init。
单用户模式
在单用户模式下,系统装载内核,运行rc.sysinit,然后让用户绕过所有认证进入根shell。取决于单用户模式的调用方法,可能还需要运行/etc/rc.d/rc1.d/目录中的初始化脚本,
进入单用户模式的方式和进入紧急模式相同,都是通过引导装载程序。在GRUB菜单中,选择你想要引导 的内核,按“a”附加内核参数,如果你附加了数字'1',那么系统将进入单用户模式并运行/etc/rc.d/rc1.d中的初始化脚本,如果你附加了字母“S”,那么系统就进入单用户模式,并不启动任何高层服务。
为了装载需要,单用户模式要求紧模式所要求的所有条件(内核,shell等),但不要求可读的passwd文件和运行的sulogin.所以如果发生了根用户口令丢失,很容易就可以在单用户模式下更改密码。
阅读(1595) | 评论(0) | 转发(0) |