通过误操作带来的grub菜单丢失

简介:
通过误操作带来的grub菜单丢失
 
由于本地的一台测试服务器分区十分不合理,我准备做适当的调整,可是又不能损坏当前正在运行的linux环境.有点费劲.
机器只有一个硬盘,大小80g,linux下面显示为/dev/had,当前的分区情况如下
分区类型
主分区 FAT32
扩展分区 FAT32
主分区 ext3
主分区 swap
未分配
大小, 格式
10G,winXP 系统盘
20G
8G,linux 的根分区
2G,linux swap 分区
40G
linux 下面显示的名称
/dev/hda1
/dev/hda2
/dev/hda3
/dev/hda4
 
将整个扩展分区都划给了逻辑驱动器:windows下的D,linux下显示为/dev/hda5
由于分区已经划满了(3+1扩展),导致40G的空间不能使用.
所以我就想把20G的干掉,40G的来做D.毕竟损失20G要划算点.
 
我在windows下删除了扩展分区,然后将最后的40G划为主分区,然后格式化,盘符为windows下的D.所以当前的情况是4个主分区.具体信息如下
分区类型
主分区 FAT32
未分配空间
主分区 ext3
主分区 swap
主分区 FAT32
大小, 格式
10G,winXP 系统盘
20G
8G,linux 的根分区
2G,linux swap 分区
4G, win D
正常情况 linux 下面显示的名称
/dev/hda1
 
/dev/hda2
/dev/hda3
/dev/hda4
:这里说正常情况下是因为现在我们还未进linux,所以这只是我推测的应该的情况.
 
分区格式化都进行完毕了,重启机器,发现grub列表没有了,机器直接进grub>提示符.我知道自己在windows下忘记grub这个东东了
先看能不能进windows
grub>下执行
chainloader  (hd0,0)+1
boot
启动windows完全正常
:grub下与linux的磁盘表达方式稍微有不同,hd0即为linux下的hda,后面接的0,实际上是第一个分区,(hd0,0)相当于linux下的hda1
 
翻阅了相关资料,知道需要重建MBR才能找回grub的启动菜单,所以重启机器进入grub后执行
root  (hd0,1)
setup  (hd0)
:这个就是重建mbr的过程,(hd0,1)即为hda2,也就是linux所在的分区,grub配置文件grub.conf所在的分区.
 
好了以后会提示success,这个时候重启机器,发现花屏,grub菜单有,但是启动linux提示路径错误.这是因为grub.conf中的路径还未修改,我们需要登陆到linux系统以后才能修改.既然能够启动windows,当然也是可以启动linux.如何启动呢?查看grub.conf的内容就可以了.grub>提示符下面cat是可以用的.所以执行
cat  (hd0,1)/boot/grub/grub.conf
因为(hd0,1)就是linux的根分区,所以上面的命令实际上就是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 do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,2)
#          kernel /boot/vmlinuz-version ro root=/dev/hda3
#          initrd /boot/initrd-version.img
#boot=/dev/hda
default=1
timeout=10
splashimage= (hd0,2) /boot/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-8smp)
        root  (hd0,2)
        kernel /boot/vmlinuz-2.4.20-8smp ro root=LABEL=/
        initrd /boot/initrd-2.4.20-8smp.img
title winXP
        rootnoverify (hd0,0)
        chainloader +1
 
很显然 (hd0,2)这个路径是不对的,应该是(hd0,1).我们按照上面的内容在grub>下执行
root  (hd0,1)
kernel  (hd0,1)/boot/vmlinuz-2.4.20-8smp  ro  root=/LABEL=/
initrd  (hd0,1)/boot/initrd-2.4.20-8smp.img
然后执行boot 就可以正常启动linux
 
我们既然已经知道是grub.conf路径设置的错误导致的问题,所以我们现在直接在linux里面将它改过来就应该OK.分两步:
1.首先在启动linux的时候,提示swap分区所在的/hda4未找到,我们知道现在的swap应该是/hda3,所以进linux之后,我们先编辑/etc/fstab文件,swap的分区改为/dev/hda3
2.然后我们来修改grub.conf
vi /boot/grub/grub.conf
将里面的(hd0,2)都改为(hd0,1)
别忘记了要重新的修改一次MBR才行.linux命令行下输入grub,等几秒钟就进去了grub>提示符,同样的执行
root  (hd0,1)
setup   (hd0)
退出以后,重启机器,一切正常!
另外,请教一下,我如何才能使用那未分配的20G硬盘,实在是浪费啊.希望大家提点一下.


本文转自yahoon 51CTO博客,原文链接:http://blog.51cto.com/yahoon/47848,如需转载请自行联系原作者
相关文章
|
6月前
|
安全 Linux
Linux常见维护报错,修复MBR引导/修复grub2菜单/内核文件丢失
Linux常见维护报错,修复MBR引导/修复grub2菜单/内核文件丢失
56 0
Linux常见维护报错,修复MBR引导/修复grub2菜单/内核文件丢失
|
8月前
强大的文件恢复工具(免费),误删文件、格式化,都能找回!
群里经常有伙伴在求救,想要找回丢失的文件,但恢复文件往往是费时、费力又费钱的事。
59 0
|
存储 Windows
不小心把u盘里的文件删除了怎么恢复丢失怎么办?,用什么数据恢复软件恢复
自从手机和电脑可以无线传输文件后,U盘就被遗忘在包里,偶尔看见,但基本上没再用过。昨天突然想看看U盘里还有什么文件资料,结果,插在电脑上却读不出来,这是怎么回事呢?u盘在电脑上读不出来数据怎么修复?紧急求救身边的懂电脑小哥哥,他教我一招,就轻松解决了这个难题。
203 0
不小心把u盘里的文件删除了怎么恢复丢失怎么办?,用什么数据恢复软件恢复
|
存储 数据安全/隐私保护 Windows
不小心磁盘分区文件怎么恢复正常,硬盘分区后数据后数据会丢失吗?
不小心磁盘分区文件怎么恢复正常,硬盘分区后数据后数据会丢失吗?一般来说,硬盘分区的文件修复,可以分为两种情况。下面来分别介绍。硬盘分区后,文件通常就会丢失,但也分情况。
271 0
不小心磁盘分区文件怎么恢复正常,硬盘分区后数据后数据会丢失吗?
|
存储 监控 固态存储
EasyRecovery数据恢复可以轻松恢复删除和丢失的任何数据
Ontrack EasyRecovery易恢复是由全球著名数据厂商Kroll Ontrack出品的一款专业级数据文件恢复软件,号称最好的数据恢复软件!
181 0