1、centos6启动流程
POST(加电自检) --> Boot Sequence(BIOS)(读取第一个启动设备MBR的引导加载程序(grub)的启动信息) --> Boot Loader(grub引导加载器,将内核文件和ramdisk文件加载到内存中,分为三个阶段,第一阶段是读取mbr,1.5阶段是mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统,第二阶段是在磁盘分区上找到/boot/grub/grub.conf,通过这个文件规定的路径才能找到内核文件和ramdisk文件,并把他们加载到内存中,删除grub.conf文件就看不到启动菜单了) --> Kernel(ramdisk)(加载内核和ramdisk文件,安装设备驱动和根文件系统驱动) --> rootfs(以只读方式挂载根文件系统)--> switchroot(切根,之前根是boot,切根后就可以访问根下的数据)--> /sbin/init(启动根下的第一个程序)-->(读取第一个程序的配置文件/etc/inittab, /etc/init/*.conf,根据配置文件中定义的内容进行后续操作) --> 设定默认运行级别--> 系统初始化脚本rc.sysinit(设置主机名、挂载/etc/fstab文件中定义的文件系统、以读写方式重新挂载根文件系统、激活lv和swap设备等)--> 关闭或启动对应级别的服务--> 启动终端。
2、安装grub
- 将/boot/grub 目录下的所有文件,除了/grub.conf文件都移动到/app下,如何恢复
[root@centos6 app]#mv /boot/grub/* /app
[root@centos6 app]#ls --grub目录下的文件有1阶段、1.5阶段和2阶段
生成的一文件和grub.conf文件
device.map grub.conf minix_stage1_5 stage2
e2fs_stage1_5 iso9660_stage1_5 reiserfs_stage1_5 ufs2_stage1_5
fat_stage1_5 jfs_stage1_5 splash.xpm.gz vstafs_stage1_5
ffs_stage1_5 menu.lst stage1 xfs_stage1_5
[root@centos6 app]#mv grub.conf /boot/grub/
[root@centos6 app]#cd /boot/grub/
[root@centos6 grub]#ls ---只留这一个文件
grub.conf
reboot ---重启发现系统仍然可以启动
所以grub下的文件除了grub.conf文件是用于启动之外,其他的文件都是
备份用的。用来备份1、1.5、2阶段,当这些阶段出现故障的时候,可
以通过一些命令来修复这些阶段,将会用到这些备份文件。
- 破坏gurb的第一阶段,如何恢复
[root@centos6 ~]#dd if=/dev/zero of=/dev/sda bs=1 count=446 ---破坏
mbr跟引导相关的前446个字节
[root@centos6 ~]#hexdump -C -n 512 /dev/sda ---发现前446个字节变成空的了
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 20 |............... |
000001c0 21 00 83 aa 28 82 00 08 00 00 00 00 20 00 00 aa |!...(....... ...|
000001d0 29 82 83 fe ff ff 00 08 20 00 00 80 1a 06 00 fe |)....... .......|
000001e0 ff ff 83 fe ff ff 00 88 3a 06 00 80 1a 06 00 fe |........:.......|
000001f0 ff ff 05 fe ff ff 00 08 55 0c 00 f8 aa 0c 55 aa |........U.....U.|
00000200
重启之后发现直接进入光盘引导界面,说明硬盘已经没有启动功能了,mbr上的启动代码已经被删除了。如何恢复。进入救援模式进行如下操作
发现已经前446个字节已经被恢复
退出救援模式重启后发现已经恢复正常。注意在执行操作之前最好将selinux禁用,不然开机会比较慢。
- 破坏grub的1.5阶段,如何恢复
[root@centos6 ~]#dd if=/dev/zero of=/dev/sda bs=1 count=10240 skip=512 seek=512 ---1.5阶段在磁盘的后512个字
节的扇区中,这里我们删除后面的20个扇
区,一个扇区512个字节。
[root@centos6 ~]#getenforce ---selinux是
关闭状态的,如果没有关闭最好关闭
Permissive
reboot ---重启后发现不是像破坏第一阶段一样直接进入光盘界面,而是卡在中间位置,而且启动菜单也看不到,说明此时认为硬盘还是有启动功能的,1.5阶段被破坏了就无法识别二阶段分区上的文件系统,就无法进入/boot/grub这个目录去找到grub.conf文件
恢复方法是进入救援模式进行如下操作
退出救援模式后重启发现恢复正常了
但是此时如果我们想像之前一样,将/boot/grub 目录下的所有文件,除了/grub.conf文件都移动到/app下,再重启,系统会启不来,说明重新安装grub后需要这些备份文件,但因为重启的时候能看到启动菜单,说明只是第二阶段破坏了,只要将 stage2这个文件复制回来就可以正常启动了。
root (hd0,0) 其实是在定义哪个是根,hd0代表第一块硬盘,0代表第一个分区,此时boot就第一个硬盘的第一个分区,所以此时的根是boot,安装grub时指明此时的根是在boot。
3、配置文件:/boot/grub/grub.conf
菜单默认是隐藏的,所以在启动的时候我们要按esc才能看到,可以把hiddenmenu一行去掉,就不隐藏了。
[root@centos6 ~]#cat /proc/cmdline ---此命令可
以查看内核参数,其中rhgb这个参数如果删除,
系统启动时就不会转圈圈,quiet参数如果删除就
会显示内核的加载信息,默认是不显示内核的加
载信息的
ro root=UUID=6350f737-89cd-4f10-b687-13672099dae5 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
4、如何设置进入单用户时的密码和启动密码
[root@centos6 ~]#grub-md5-crypt ---生成md5加密算法
Password: ---输入的是magedu,可以是任意的密码
Retype password: ---输入两遍
$1$SgJnT/$bSXysp55sZ.potjDJ3dmy0
[root@centos6 ~]#grub-crypt ---生成sha512加密算法
Password:
Retype password:
$6$tVAsZFsFr/DY.mUk$4nF84mpLE4lEFtnpO/T.p0H5dN318kDCH3bAleMl3IVbCk7b2XhxHWSuA5Z9OhX3VNZGzBkBlHJKGyNtEKeUK1
后面的这种方法更安全一些,位数比较长,同样密码是magedu。后面一种算法的安全性更高
将这个口令放到配置文件中,格式如下
如果要想进入单用户模式需要先输入p,然后输入口令才能输入e进入单用户模式。
5、如何更改启动菜单的背景图片
首先制作一个图片,图片大小按下图格式
[root@centos6 grub]#ls ---我们发现这个文件
的格式和原来系统自带的.xpm 格式不一样
device.map iso9660_stage1_5 reiserfs_stage1_5 vstafs_stage1_5
e2fs_stage1_5 jfs_stage1_5 splash.xpm.gz xfs_stage1_5
fat_stage1_5 linux. jpg stage1
ffs_stage1_5 menu.lst stage2
grub.conf minix_stage1_5 ufs2_stage1_5
[root@centos6 grub]#yum install ImageMagick ---安装图形处理工具convert
[root@centos6 grub]#convert -colors 14 linux.jpg linux.xpm ---转换格式成.xpm
[root@centos6 grub]#ls
device.map iso9660_stage1_5 minix_stage1_5 ufs2_stage1_5
e2fs_stage1_5 jfs_stage1_5 reiserfs_stage1_5 vstafs_stage1_5
fat_stage1_5 linux.jpg splash.xpm.gz xfs_stage1_5
ffs_stage1_5 linux.xpm stage1
grub.conf menu.lst stage2
[root@centos6 grub]#gzip -c linux.xpm >linux.xpm.gz ---压缩成和原来的格
式一样的.gz格式的后缀
[root@centos6 grub]#ls
device.map iso9660_stage1_5 menu.lst stage2
e2fs_stage1_5 jfs_stage1_5 minix_stage1_5 ufs2_stage1_5
fat_stage1_5 linux.jpg reiserfs_stage1_5 vstafs_stage1_5
ffs_stage1_5 linux.xpm splash.xpm.gz xfs_stage1_5
grub.conf linux.xpm.gz stage1
更改配置文件中的路径
重启系统见证奇迹的时刻
6、删除/boot/grub/grub.conf文件,如何恢复
[root@centos6 app]#mv /boot/grub/grub.conf /app ---移动这个文件到app目录下
[root@centos6 app]#ls
grub.conf
reboot系统
重启系统后我们发现进入grub交互式界面下,看不到启动菜单,恢复时按照下图操作
7、删除/boot/grub目录如何恢复
[root@centos6 ~]#rm -rf /boot/grub/ ---删除这个目录
[root@centos6 ~]#reboot ---重启
恢复进入光盘的救援模式下。进行如下图操作
退出救援模式后重启就可恢复。
8、删除/boot目录,如何恢复
[root@centos6 ~]#rm -rf /boot
rm: cannot remove `/boot': Device or resource busy
[root@centos6 ~]#cd /boot ---发现/boot目录下已经什么文件都没有了
[root@centos6 boot]#ls
[root@centos6 boot]#reboot
进入救援模式进行如下操作
手写一个/boot/grub/grub.conf文件
退出救援模式后重启即可恢复
9、删除/sbin/init文件,如何恢复
[root@centos6 ~]#mv /sbin/init /app
[root@centos6 app]#reboot
恢复时进行如下操作
重新启动就可以了
10 、删除/boot目录和/etc/fstab文件如何恢复
进入救援模式下进行如下操作
查看一下文件系统
用vi编辑/mnt/temp2/etc/fstab文件如下图,其中设备文件最好写uuid
必须重新启动后才能生效,重启后发现系统将根自动挂载到/mnt/sysimage下
先进行切根,然后创建一个临时目录,将光盘挂载到这个目录下,重新安装内核,可以生成/boot下的内核文件和initrd文件,也可以像8里面说的那种方法一样,进入光盘拷贝内核文件,用dracut生成initrd文件。然后安装grub目录里面的文件
最后就是编写一下/boot/grub/grub.conf文件,重新启动就可以了。
11、在逻辑卷环境下删除/boot目录和/etc/fstab文件如何恢复
上面的是一个逻辑卷的环境,按照上述方法删除后恢复的方法如下
进入救援模式先查看一下文件系统、分区情况
我们发现逻辑卷没有被激活,并且根在逻辑卷上,只有激活逻辑卷才能挂载逻辑卷,激活卷组就相当于激活逻辑卷
挂载逻辑卷,并编辑逻辑卷的根上的etc/fstab文件
编辑文件的内容如下
重启启动,进入救援模式,发现根自动挂载到/mnt/sysimage目录下
后续的操作过程同10一样就可以了。在这里需要注意的是最后编写grub.conf文件时真正的根是逻辑卷的根,文件名字很长。
用vim编辑器编辑文件时可以用:r!读入命令的输入到vim中,这样可以节省时间,避免自己写的时候出错,比如内核文件和initrd文件都可以通过这种方法读入,:r!ls /boot/内核文件,支持补全。