linux必学知识

系统的启动流程(破环修复实验)

2017-09-02  本文已影响0人  不知岁月惜

这章简单描述下系统的启动流程,主要以破环修复实验为主:

系统启动基本过程:

Linux系统启动过程大致按照如下步骤进行(这是一个简述):
第一阶段:BIOS启动引导阶段;
在该过程中实现硬件的初始化以及查找启动介质;
从MBR中装载启动引导管理器(GRUB)并运行该启动引导管理         
第二阶段:GRUB启动引导阶段;
装载stage1 
装载stage1.5     
装载stage2  读取/boot/grub.conf文件并显示启动菜单;    
装载所选的kernel和initrd文件到内存中         
第三阶段:内核阶段:
 运行内核启动参数;
解压initrd文件并挂载initd文件系统,装载必须的驱动;
挂载根文件系统        
第四阶段:Sys V init初始化阶段:
启动/sbin/init程序;
运行rc.sysinit脚本,设置系统环境,启动swap分区,检查和挂载文件系统;
 读取/etc/inittab文件,运行在/et/rc.d/rc(N).d中定义的不同运行级别的服务初始化脚本;
打开字符终端1-6号控制台/打开图形显示管理的7号控制台
同时在上述过程中各阶段所需要读取的文件和操作的对象:
BIOS启动引导阶段 GRUB启动引导阶段 :内核阶段 /init/sysinit阶段
None /boot/grub/grub.conf /boot/vmlinuz-<version> /etc/rc.d/rc.sysinit
/boot/grub/stage1_5 /boot/initrd-<version> /etc/inittab
/boot/grub/stage2 /etc/rc.d/rc<#>.d /etc/rc.d/init.d/*

实验一:如果开机启动时发现某服务出错导致无法启动,进行排错?

步骤:1、开机启动读秒后按esc键,进入GUN GRUB 窗口,按a进行内核参数修改。

2、chkconfig –list testsrv 查看服务所有模式下的启动状态
3、mount -o remount,rw / 用读写方式重新挂载/
4、chkconfig testsrv off 关闭服务,不制定级别,默认2,3,4,5级别下服务关闭
5、chkconfig –level 1 testsrv off
6、ls /etc/rc5.d/tsetsrv 查看是5模式下,文件是K或S开头的,
7、重新启动

实验二:dd if=/dev/zero of=/dev/sda bs=1 count=446,破环MBR第一个分 区 前446字节(bootloader),修复?

hexdump -C -n 446 /dev/sda ---发现前446个字节变成空的

步骤:1、开机进入救援模式,按下面步骤,打开一个shell。

2、按照下图,进行操作,
3 、exit,退出重启.

实验三:删除/boot/grub下的所有文件,保留grub.conf和splash.xpm.gz这两个文件;即stage_2阶段被破环?

重启时的界面如下图:
修复方法和实验二的过程一样:
1、进入救援模式,开启一个shell
2、chroot /mnt/sysimage
3、 grub-install /dev/sda
4、sync; exit ;退出重启

实验四:编辑/boot/grub/grub.conf文件,设置进入单用户模式口令,不让其他用户随便进入单用户

模式,进行某些危险操作?
a、
1、 vim /boot/grub/grub.conf
2、在hiddenmenu这一行的上面插入:
3、password (输入密码)
b、也可以对密码进行加密;
用 grub-md5-crypt 命令对密码进行加密,
password –md5 加密后口令
c、md5加密算法不安全,已被破解,可以用 grub-crypt 命令生成更安全的加密口令;
password –encrypted 生成的加密口令
d、如果 password –encrypted 生成的加密口令,放在 title这一行的下面,则变成开机启动 时的密码;
输入对应密码才能启动。

实验五:/etc/grub/grub.conf文件里,initrd 与kernel这两行的顺序不能颠倒,如果顺序反了,如何修复?

启动时报错的界面如下图:
修复步骤如下图:
1、重启,按e进入编辑命令模式

2、 启动完成后,再 修改/boot/grub/grub.conf文件;把initrd 与kernel行的位置换一下,kernel一定在initrd行的前面;然后保存退出。

实验六: 删除/etc/fstab 和/boot ,并恢复?重启后界面如下图:

步骤:1、重启,在读进度条界面快速按esc键,选择下图中救援模式:
2,下图发现,找不到系统的分区了,要先修复/etc/fsatb,让系统识别分区。
3、通过下图中的操作找出/boot和”/”分区,并修复/etc/fstab文件:

4、修复完/etc/fstab 文件,保存退出,重新启动,再次进入救援模式,可以看到,这时候,系统找到根分区了,并且被挂载到/mnt/sysimage下;
可以进行chroot /mnt/sysimage 切根操作了。如下图:
5、先切换根,挂载光盘,发现光盘下有vmlinuz内核文件,移动内核文件到/boot,操作如下图:
6、创建根文件系统**
mkinitrd /boot/initramfs-uname -r uname -r
7、安装grub
grub-install /dev/sda
8、/boot/grub下缺少grub.conf文件。手动编辑一下,下图中注释可以不写。
注意:如果上述实验步骤8,grub.conf文件写错了,重启时会出现下图的界面:
这里也可以直接写grub.conf文件,然后重新加载boot,就不需要再重新进救援模式重新修改grub.conf文件了;节省大量时间。
等机器重启后,再把grub.conf文件修改好。操作如下图:

实验七:在逻辑卷环境下删除/boot目录和/etc/fstab文件如何恢复

上面的是一个逻辑卷的环境,按照上述方法删除后恢复的方法如下进入救援模式先查看一下文件系统、分区情况
我们发现逻辑卷没有被激活,并且根在逻辑卷上,只有激活逻辑卷才能挂载逻辑卷,激活卷组就相当于激活逻辑卷
挂载逻辑卷,并编辑逻辑卷的根上的etc/fstab文件
编辑文件的内容如下
重启启动,进入救援模式,发现根自动挂载到/mnt/sysimage目录下
后续的操作过程同上一样就可以了。在这里需要注意的是最后编写grub.conf文件时真正的根是逻辑卷的根,文件名字很长。
用vim编辑器编辑文件时可以用:r!读入命令的输入到vim中,这样可以节省时间,避免自己写的时候出错,比如内核文件和initrd文件都可以通过这种方法读入,:r!ls /boot/内核文件,支持补全。
上一篇 下一篇

猜你喜欢

热点阅读