[root@Lab6-1 ~]# cat /etc/redhat-release 
CentOS release 6.6 (Final)
[root@Lab6-1 ~]# uname -r
2.6.32-504.el6.x86_64
[root@Lab6-1 ~]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:25:7F:50  
          inet addr:172.16.6.1  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20c:29ff:fe25:7f50/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14666 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4958 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1645179 (1.5 MiB)  TX bytes:815778 (796.6 KiB)

在开机设置菜单,按任意键进入,如果不键入设置菜单会直接开机启动内核

wKioL1YLX7STV6bwAAB7EJKw9KY725.jpg


下面是GRUBstage2提供的交互式菜单栏,主要用到的是e:编辑模式,用于编辑菜单选项,-cgrub的命令行模式,交互式接口,这里我们进入编辑模式,进行尝试在单用户模式下修改密码

wKiom1YLX6nD3-dSAAE09TsLZrg682.jpg

进入编辑模式后会可以看到如下画面:

wKioL1YLX--QmH9lAAGmlLRl3iM070.jpg

第一项root(hd0,0) 是根所在的磁盘分区位置

第二项 kernel /vmlinuz-22.6.32-504.e16.x86_64 ro root=/dev/mapper/vg0-root 读取kernel的位置并只读挂载在哪个分区上

第三项:initrd /initramfs-2.6.32-504.e16.x86_64.img 读取initramfs文件位置

 

b:启动系统  e:编辑模式 d:删除某行 o:增加新行

 

这里我们选择e进入编辑模式

wKiom1YLX-PRxzWpAAEgY4yfWPQ726.jpg

quiet(此项为静默输出)后面添加S  |  s  |  signal  |  1 这个选项都可以,这里我们键入1,并按下回车,进入单用户模式,进行找回密码,又会回到之前的GRUB编辑模式

wKioL1YLYGihVeyGAAGmlLRl3iM029.jpg

回到这个界面之后我们选择b启动系统

 

之后会发现我们进入系统不会在要求输入root账户的管理员密码,直接登录进入系统,这里我们直接使用passwd命令进行修改密码即可。

wKiom1YLYF2hGASMAAC-HW_jYM0969.jpg

wKioL1YLYGrhU50bAAFnfbewl3E575.jpg

这次我们重启进入c命令行模式进行常用使用命令引导系统

wKiom1YLYF_Bo_mmAAE09TsLZrg855.jpg

下图我c命令行模式的界面

wKioL1YLYK_Tb2N6AADtvFsBEoE265.jpg

下面我们在命令行下进行引导

wKiom1YLYMCzHAcpAAJc6sDBql0167.jpg

编辑启动完成之后开机正常如下图

wKioL1YLYMyhw3VaAACQ7Dlg1pI473.jpg

然后我们通过ssh远程连接进行管理,查看grub的配置文件,查看文件的各段的具体定义

Linux可以多版本内核并存,可以

 

[root@localhost ~]# cat /boot/grub/grub.conf 
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/vg0-root
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0# 定义默认启动的启动的title
timeout=5# 定义进入菜单项超时时间
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz# 定义开机菜单背景画面
Hiddenmenu# 隐藏菜单
title CentOS 6 (2.6.32-504.el6.x86_64)# 定义菜单标题,可以出现多次,一个标题带便一个内核
root (hd0,0)grub查找stage2及kernel文件所在设备分区地址
kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM LANG=en_US.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg0/root  KEYBOARDTYPE=pc KEYTABLE=us rhgb crashkernel=auto quiet rhgb quiet# 启动的内核
initrd /initramfs-2.6.32-504.el6.x86_64.img# 内核所匹配的initramfs
title CentOS (3.10.10Corazon-v1)
        root (hd0,0)
        kernel /vmlinuz-3.10.10Corazon-v1 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM LANG=en_US.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg0/root  KEYBOARDTYPE=pc KEYTABLE=us rhgb crashkernel=auto quiet rhgb quiet
        initrd /initramfs-3.10.10Corazon-v1.img

通过上面进入单用户模式我们可以看出,这样是极不安全的,谁都可以进入你的Linxu系统并安全管理员root的密码,所以我们可以设定加密措施,我们可以在grbu的配置文件内加入md5格式的密码

密码生成命令:

[root@localhost ~]# grub-md5-crypt
Password: 
Retype password: 
$1$nsrjP$Rqsf9JrkDZfMK.DEv08UI/
 
 
[root@localhost ~]# vim /etc/grub.conf
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
Hiddenmenu
password --md5 $1$nsrjP$Rqsf9JrkDZfMK.DEv08UI/# 设定进入编辑模式需要提供密码
title CentOS (3.10.10Corazon-v1)
        root (hd0,0)
        kernel /vmlinuz-3.10.10Corazon-v1 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM LANG=en_US.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg0/root  KEYBOARDTYPE=pc KEYTABLE=us rhgb crashkernel=auto quiet rhgb quiet
        initrd /initramfs-3.10.10Corazon-v1.img
password --md5 $1$nsrjP$Rqsf9JrkDZfMK.DEv08UI/# 设定进入操作系统就需要提供密码
 
 
title CentOS 6 (2.6.32-504.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM LANG=en_US.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg0/root  KEYBOARDTYPE=pc KEYTABLE=us rhgb crashkernel=auto quiet rhgb quiet
        initrd /initramfs-2.6.32-504.el6.x86_64.img



 

 

如果grub无意被我们删除或者损坏我们应该怎么恢复的呢?我们下来来演示一下三种修复grub的方式

1)
[root@Corazon ~]# dd if=/dev/zero of=/dev/sda bs=200 count=1  #使用dd命令模拟损坏
1+0 records in
1+0 records out
200 bytes (200 B) copied, 0.00019932 s, 1.0 MB/s
[root@Corazon ~]# grub#进入grub命令交互模式
Probing devices to guess BIOS drives. This may take a long time.
 
 
    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)
 
 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.]
grub> root (hd0,0)  #选择系统所在的设备和磁盘分区,从0开始编号
root (hd0,0)#如果系统是在你选择的所在分区则会提示如下信息
 Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)# 选择安装的设备编号即可,不用指定磁盘分区
setup (hd0)
 Checking if "/boot/grub/stage1" exists... no# 从这里可以看出stage1不存在
 Checking if "/grub/stage1" exists... yes# 已经安装stage1完成
 Checking if "/grub/stage2" exists... yes
 Checking if "/grub/e2fs_stage1_5" exists... yes
 Running "embed /grub/e2fs_stage1_5 (hd0)"...  27 sectors are embedded.
succeeded
 Running "install /grub/stage1 (hd0) (hd0)1+27 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.# 安装过程结束
grub> 
 
 
2) [root@Corazon ~]# dd if=/dev/zero of=/dev/sda bs=200 count=1# 再次模拟损坏
1+0 records in
1+0 records out
200 bytes (200 B) copied, 0.000179011 s, 1.1 MB/s
[root@Corazon ~]# grub-install --root-directory=/ /dev/sda #直接使用grub-install安装即可
Installation finished. No error reported.
This is the contents of the device map //boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
 
# this device map was generated by anaconda
(hd0)     /dev/sda# 提示已经安装至hd0 下的/dev/sda上


 

3)上两种都是在线修复,下面是如果开启时候无法启动我们需要挂载光盘就如救援模式

      开机画面如下这里我们选择Rescue installed system 进入救援模式或者按下ESC进入命令行模式输入: rescue  也可以进入救援模式.

wKioL1YLYUzwDOpDAANAAeafjvQ423.jpg

进入救援模式后会要求我们选择语言,这里我们选择English

wKiom1YLYUHQw3qyAAFTlex7yho635.jpg

选择键盘字符集,这里我们选择us

wKioL1YLYU2ToYkeAAFU7RcsQKc771.jpg

还会询问我们是否需要开启网络,这里我们是在本地进行修复,所以选择了No

wKioL1YLYZ6hFKANAAEKGS22b1s252.jpg

这里会帮我们查询我们是否有根系统,如果有根系统的话,将系统临时挂载在/mnt/sysp_w_picpath目录下 ,这里我们选择了Continue

wKiom1YLYZOBPzafAAKVo2xxUW4551.jpg

这里提示已经帮我们找到系统了,并帮我们挂载在/mnt/sysp_w_picpath目录下,我们可以chroot命令进行切换根

wKioL1YLYaCQO1LaAAF30ESnTu8520.jpg

/mnt/sysp_w_picpath目录下


这里我们选择进入shell命令行模式 

wKiom1YLYZTBVQVnAADBTr5-xy0744.jpg

启动命令行成功,通过chroot我们切换到/mnt/sysp_w_picpath目录下,安装grub程序,安装成功之后,exit退回到最初的根目录,在执行reboot重启就可以正常开机了

wKioL1YLYaCQyYL7AAGs1jzIPq4154.jpg



完。