linux引导修复

昨天手贱,一不小心直接把Master节点的引导(/boot/grub/grub.conf)同步到各个Slave节点了。只能研究下怎么修复引导,还好修复过来了。趁着刚刚弄完记忆还清晰,记录下。

1.如果机子还没重启。

这个时候,机子还可以访问,所以直接修改下grub.conf文件的引导路径和UUID即可。如下:

default=1
timeout=5
splashimage=(hd0,4)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-358.el6.x86_64)
        root (hd0,4)
        kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=451e7dcd-526f-4f68-a93f-9cba88824f3b rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=128M  KEYBOARDTYPE=pc
 KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /boot/initramfs-2.6.32-358.el6.x86_64.img
title Other
        rootnoverify (hd0,0)
        chainloader +1

引导路径

引导路径即spash.xpm.gz,kernel和initrd所在的分区。一般放在系统安装的盘内,可以用fdisk -l查看,如下:

[root@Salve8 hadoop]# fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf838c894

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        3824    30716248+   7  HPFS/NTFS
/dev/sda2            3825       47748   352814366+   7  HPFS/NTFS
/dev/sda3           47748       48270     4194304   82  Linux swap / Solaris
/dev/sda4           48270       60802   100661272    5  Extended
/dev/sda5           48270       60802   100660224   83  Linux
[root@Salve8 hadoop]# 

 Linux分区在sda5中,对应为(hd0,4),sda从1开始,前四个主分区为1到4,逻辑分区从5开始往后。hd从0开始,前四个主分区为0到3。所以相差1,换算下即可。

UUID:

UUID,即分区的识别码,可以通过blkid命令获得。如下:

[root@Salve8 hadoop]# blkid /dev/sda5
/dev/sda5: UUID="5bd372f6-e7b9-439a-ba3f-5fcf9db54869" TYPE="ext4" 
[root@Salve8 hadoop]#

综述:将grub.conf中的路径和UUID改正好即可。重启OK。

2.如果机子重启了。

这个时候由于引导是错的,系统当然进不去。如下:

Kernel panic - not syncing: Attempted to kill init!
Pid:1, comm: init Not tainted 2.6.32-358.el6.x86_64 #1
Call Trace:
....
....
panic occurred, switching back to text console

这个时候

如果有安装光盘,可以用安装光盘进入rescue模式(rescure模式见参考文献1),然后修复grub.conf文件。这个时候和上面有点区别,UUID的地方要换成sda的形式,如下:

default=0
timeout=5
splashimage=(hd0,4)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-358.el6.x86_64)
        root (hd0,4)
        kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/sda5 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=128M  KEYBO
ARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /boot/initramfs-2.6.32-358.el6.x86_64.img
title Other
        rootnoverify (hd0,0)
        chainloader +1

引导路径:

和上面的方法一样。

root路径:

将root=UUID=...换成root=/dev/sda5,指向linux系统的盘符。这是和上面方法的唯一区别。具体也不知道为什么,反正重启过后的系统,用UUID就不行了,换成sda的形式就OK了。

修改后重启,系统成功进入。

如果没有光盘,可以在系统加载的时候,进入grub,手动指定引导路径和root路径。具体参考参考文献1。成功进入系统后再修改grub.conf文件。注意:不要使用UUID。

 

参考文献:

1.linux rescure模式:http://www.ixdba.net/article/cb/450.html

2.grub.conf修复:http://dreamfire.blog.51cto.com/418026/1076824/

posted on 2014-03-23 21:03  hequn8128  阅读(1446)  评论(0编辑  收藏  举报

导航