gnu grub修复_Grub的使用及修复帮助

[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)

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

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

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

第一项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进入编辑模式

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

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

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

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

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

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

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

然后我们通过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也可以进入救援模式.

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

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

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

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

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

/mnt/sysp_w_picpath目录下

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

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

完。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值