裝pe的话会顺坏grub4dos,重复2->5步骤即可。
就是这样。
这篇是一年前写的文章,当时发在校内上了,看的人也不多,结果当时就没怎么在意。
但这两天刚好又在倒腾电脑,发现这文章写得真是 。。。 烂。
说明不清楚,还有拼写错误,想起了一句话:错误的注释比没注释更可怕。
改正如下:
假设电脑上已装有Ubuntu,重装win7到C盘后引导项被删除。为重新引导ubuntu,我们先在win7上装grub4dos。
原理是利用win7的bootmgr。
准备软件:grub4dos软件。
步骤:
1.在X盘中新建boot.ini,在里面写入
[boot loader]
[operating systems]
C:\grldr.mbr="grub4dos"
这样在开机的时候bootmgr就能从boot.int中读取启动信息,在次启动的时候就能选择启动win7或是启动grub4dos;
2.解压grub4dos后拷贝文件夹中grldr,grldr.mbr,menu.lst三个文件到C盘,到这grub4dos就算装好了,开机后能够选择grub4dos引导;
3.menu.lst中记录的是引导信息,这里我们有利用它来引导Ubuntu,先要获得Ubuntu的启动信息,10.10之后的系统都存放在/boot/grub/grub.cfg,有两种方法,1)在装好Ubuntu后,打开/boot/grub/grub.cfg,找到如下字段
menuentry 'Ubuntu,Linux 3.0.0-12-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 60aeeaf3-1d61-47f4-a2c5-72d18e775e86
linux /boot/vmlinuz-3.0.0-12-generic root=UUID=60aeeaf3-1d61-47f4-a2c5-72d18e775e86 ro quiet splash vt.handoff=7
initrd /boot/initrd.img-3.0.0-12-generic
}
红色的字段就是有用的信息,新建一个文档把它存起来;2)如果是之前没有记录启动信息,那在装完win7之后可利用Ubuntu的livecd,或是U盘linux系统来获取;
4.编辑menu.lst,
title Unbuntu 10.10
root (hd0,0)
kernel /boot/vmlinuz-3.0.0-12-generic root=UUID=60aeeaf3-1d61-47f4-a2c5-72d18e775e86 ro quiet splash
initrd /boot/initrd.img-3.0.0-12-generic
boot
注意一下第二行,grub.cfg中写的是 root='(hd0,msdos1)',menu.lst中也这样写的话会提示错误,改成hd0,0后就没问题了,意思是挂在第一块硬盘的第一分区。
5.grub4dos还有很多其他功能,比如引导pe,安装系统,这里就不意义赘述了。
2014年9月更新
下面的方法不用grub4dos,只要一个俄ubuntu的启动盘(光盘或者U盘)就可以,之用几条命令就可以修复启动项。
Ubuntu12.04和Ubuntu14.04测试通过。
参考:http://www.cnblogs.com/dolphin0520/archive/2012/03/11/2390175.html
1)准备一张ubuntu系统安装盘;
2)将ubuntu系统安装盘放入光驱,重新启动计算机,进入BIOS,将开机启动设置为光驱(CD/ROM)启动方式;
3)然后保存设置退出,等待片刻就进入到ubuntu的安装界面,此时有两个选择
1.在该光盘上试用ubuntu系统
2.将ubuntu系统安装到计算机上
选择"在该光盘上试用ubuntu系统",进入到ubuntu系统之后,打开终端(快捷键组合是Ctrl+Alt+T);
4)在终端下输入sudo -i(获得管理员权限)
5)在终端下输入fdisk -l(是小写的字母'L',查看盘符列表)
会出现类似下面的信息:
Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x70f7ab9c
Device Boot Start End Blocks Id System
/dev/sda1 1 1627 13060096 27 Unknown
Partition 1 does not end on cylinder boundary.
/dev/sda2 * 1627 1639102400 7 HPFS/NTFS
Partition 2 does not end on cylinder boundary.
/dev/sda3 1639 8166 52429859 7 HPFS/NTFS
/dev/sda4 8167 38913 246975277+ 5 Extended
/dev/sda5 8167 32385 194539082+ 7 HPFS/NTFS
/dev/sda6 32386 38788 51432066 83 Linux
/dev/sda7 38789 38913 1004031 82 Linux swap / Solaris
然后找到ID为83的盘符,根据上面显示的信息可知当时装ubuntu时是装在sda6这个分区。
6)在终端输入mount /dev/sda* /mnt
(*代表ubuntu系统所在的分区,即上一步显示结果中ID为83的分区号,如上面显示的是在sda6这个分区,
所以输入的是mount /dev/sda6 /mnt
注意:mount后面有一个空格,sda6后面也有一个空格,这两个空格千万不要漏掉,否则会报错)
7)上一步结束之后,继续在终端中输入grub-install --root-directory=/mnt /dev/sda
等待一会儿,若出现Installationfinished,No Error Reported则表示成功了
(注意:grub-install之间没有空格,--root前面有一个空格,--root前面是两个'-',/mnt后面有一个空格)
8)到此,ubuntu引导基本恢复,重启电脑后,就可以看到熟悉的ubuntu引导界面了,进入ubuntu系统,打开终端输入
sudo update-grub
等待片刻显示以下信息:
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.31-20-generic
Found initrd image: /boot/initrd.img-2.6.31-20-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows Vista (loader) on /dev/sda1
Found Windows 7 (loader) on /dev/sda2
done
恢复工作便全部完成了。