2018-04-22 启动和内核管理3

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上的启动代码已经被删除了。如何恢复。进入救援模式进行如下操作


image.png

发现已经前446个字节已经被恢复


image.png

退出救援模式重启后发现已经恢复正常。注意在执行操作之前最好将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文件
恢复方法是进入救援模式进行如下操作
image.png

image.png

image.png

退出救援模式后重启发现恢复正常了
但是此时如果我们想像之前一样,将/boot/grub 目录下的所有文件,除了/grub.conf文件都移动到/app下,再重启,系统会启不来,说明重新安装grub后需要这些备份文件,但因为重启的时候能看到启动菜单,说明只是第二阶段破坏了,只要将 stage2这个文件复制回来就可以正常启动了。

root (hd0,0) 其实是在定义哪个是根,hd0代表第一块硬盘,0代表第一个分区,此时boot就第一个硬盘的第一个分区,所以此时的根是boot,安装grub时指明此时的根是在boot。

3、配置文件:/boot/grub/grub.conf

image.png

菜单默认是隐藏的,所以在启动的时候我们要按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。后面一种算法的安全性更高

将这个口令放到配置文件中,格式如下


image.png

如果要想进入单用户模式需要先输入p,然后输入口令才能输入e进入单用户模式。

5、如何更改启动菜单的背景图片

首先制作一个图片,图片大小按下图格式


image.png
[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
更改配置文件中的路径
image.png

重启系统见证奇迹的时刻


image.png

6、删除/boot/grub/grub.conf文件,如何恢复

[root@centos6 app]#mv /boot/grub/grub.conf /app   ---移动这个文件到app目录下
[root@centos6 app]#ls
grub.conf
reboot系统

重启系统后我们发现进入grub交互式界面下,看不到启动菜单,恢复时按照下图操作


image.png

7、删除/boot/grub目录如何恢复

[root@centos6 ~]#rm -rf /boot/grub/  ---删除这个目录
[root@centos6 ~]#reboot   ---重启

恢复进入光盘的救援模式下。进行如下图操作


image.png

image.png

退出救援模式后重启就可恢复。

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

进入救援模式进行如下操作


image.png

image.png

手写一个/boot/grub/grub.conf文件


image.png

退出救援模式后重启即可恢复

9、删除/sbin/init文件,如何恢复

[root@centos6 ~]#mv /sbin/init /app
[root@centos6 app]#reboot

恢复时进行如下操作


image.png

image.png

image.png

重新启动就可以了

10 、删除/boot目录和/etc/fstab文件如何恢复

进入救援模式下进行如下操作


image.png

查看一下文件系统


image.png

image.png

用vi编辑/mnt/temp2/etc/fstab文件如下图,其中设备文件最好写uuid
image.png

必须重新启动后才能生效,重启后发现系统将根自动挂载到/mnt/sysimage下


image.png

先进行切根,然后创建一个临时目录,将光盘挂载到这个目录下,重新安装内核,可以生成/boot下的内核文件和initrd文件,也可以像8里面说的那种方法一样,进入光盘拷贝内核文件,用dracut生成initrd文件。然后安装grub目录里面的文件
image.png

最后就是编写一下/boot/grub/grub.conf文件,重新启动就可以了。

11、在逻辑卷环境下删除/boot目录和/etc/fstab文件如何恢复

image.png

上面的是一个逻辑卷的环境,按照上述方法删除后恢复的方法如下
进入救援模式先查看一下文件系统、分区情况


image.png

我们发现逻辑卷没有被激活,并且根在逻辑卷上,只有激活逻辑卷才能挂载逻辑卷,激活卷组就相当于激活逻辑卷


image.png

挂载逻辑卷,并编辑逻辑卷的根上的etc/fstab文件
image.png

编辑文件的内容如下
image.png

重启启动,进入救援模式,发现根自动挂载到/mnt/sysimage目录下
后续的操作过程同10一样就可以了。在这里需要注意的是最后编写grub.conf文件时真正的根是逻辑卷的根,文件名字很长。
用vim编辑器编辑文件时可以用:r!读入命令的输入到vim中,这样可以节省时间,避免自己写的时候出错,比如内核文件和initrd文件都可以通过这种方法读入,:r!ls /boot/内核文件,支持补全。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容