ubuntu硬盘安装,修复Ubuntu的grub引导,修复windows7的引导

最近捣腾了一下win7、ubuntu双系统,全部使用硬盘安装。在整个过程中遇到几个问题,今天总算全部解决了,现将方法总结如下:
1. 硬盘安装ubuntu
(1)使用grub4dos,将其中的menu.lst, grldr, grldr.mbr拷贝到windows所在分区的根目录下
(2)修改boot.ini文件,在最后面加一行 c:\grldr.mbr="grub4dos",这样windows启动时会在启动菜单里添加一行名为"grub4dos"的菜单项。如果是 windows7,需要自己手动新建一个boot.ini文件,boot.ini文件的格式如下:
[boot loader]
[operating systems]
c:\grldr.mbr="grub4dos"
(3)下载Ubuntu光盘镜像文件,最好是desktop版,例如Ubuntu-9.04-desktop-i386.iso,用虚拟光驱将 casper目录下的initrd.gz和vmlinuz这两个文件拷贝到某个分区的根目录下,最好和光盘镜像在同一分区,分区最好是fat32的。
(4)重启电脑,选择grub4dos,在grub的菜单中选择进入“command line”。
(5)设置根目录,即initrd.gz和vmlinuz所在目录。命令格式为
root (hd0,7),0表示是第一块硬盘,7表示第7个分区。
如果对硬盘和分区不太了解,可以使用如下命令:
grub> find /vmlinuz
(hd0,7)
该命令在所有分区的根目录下寻找vmlinuz文件,并返回其位置。
(6)设置内核参数,命令如下:
kernel /vmlinuz boot=casper iso-scan/filename=/Ubuntu-9.04-desktop-i386.iso
/vmlinuz:表示内核文件的路径
boot=casper:表示启动方式为光盘
iso-scan/filename=/Ubuntu-9.04-desktop-i386.iso:表示光盘镜像的路径
(7)设置initrd,命令如下:
initrd /initrd.lz
(8)如果前面的步骤没有错的话,键入“boot”,启动进入Ubuntu。后面的详细操作涉及内容比较多,这里就不讲解了。
2. 修复Ubuntu的grub引导
先装windows,后装Ubuntu时,linux的grub可以识别windows的启动分区,并把它加到grub的启动项中。但是在装了 Ubuntu后再装windows,windows会把mbr中的grub清除掉,使得无法启动linux。幸好linux生命力比较顽强。方法如下:
(1)安装并配置好grub4dos
(2)在grub中手工启动ubuntu,使用的命令如下:
(2.1) kernel (hd0,2)/vmlinuz*.* root=/dev/sda6
(2.2) initrd (hd0,2)/initrd*.*
(2.3) boot
注意:上面的命令只是示例,要根据实际情况配置。(hd0,2)要换成实际的/boot目录挂载的分区,其中的*.* 要换成实际的名字,sda6要换成实际的/目录挂载的分区,而且sda6表示的(hd0,5),串口硬盘。
(3)启动硬盘上的ubuntu后,打开控制台,切换到root用户,键入命令
grub-install /dev/sda
该命令会在第一块硬盘的mbr中装入grub,并扫描硬盘上的其它操作系统,生产启动列表。
如下命令可以重新生成grub的启动列表:
sudo grub-mkconfig >> grub.cfg
方法二:
进入 ”Start with GRUB4DOS” 后,可以看见一个 "enter command line" 选项,选择它输入 root (hdX,Y) ,如果不

知道 x 是多少先输入:
#> find /boot/grub/stage1
根据返回的具体结果再输入,我机器的返回结果是( hd0 , 2 ):
#>root (hd0,2)
执行成功之后,最后输入:
#> setup (hd0)
3. 修复windows7的引导
(1) 使用windows7 PE启动电脑,
(2) 用虚拟光驱加载windows7 的安装镜像文件
(3) 输入 cd boot。
(4) 输入 bootsect /nt60 SYS
4. 修复windows xp 引导
用安装光盘启动后安装时选择修复,
输入Administrator密码,然后输入
fixboot
fixmbr
exit
重启,OK
重装Windows后恢复Ubuntu 9.10中的Grub2
Computer Technology, Ubuntu, by MrBear.
在已经安装了Ubuntu和Windows双启动的一个硬盘上重新安装Windows,会将Windows的引导代码写入硬盘的 MBR,覆盖原本的Grub2。
这时候要恢复Grub2的多重启动,唯有重新安装Grub2了。
首先用Ubuntu Live CD启动机器,然后打开终端输入:
sudo -i
注意,以下的操作一定要再三确认,哪怕是一个字符的输入错误都可能导致破坏Ubuntu的系统。
接着我们要看一下硬盘的文件系统配置方式。
mint ~ # fdisk -l

Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xd25ad25a

Device Boot Start End Blocks Id System
/dev/sda1 * 1 6527 52428096 7 HPFS/NTFS
/dev/sda2 6528 30401 191767905 f W95 Ext'd (LBA)
/dev/sda5 6528 18464 95882240 7 HPFS/NTFS
/dev/sda6 18465 29910 91939963+ 83 Linux
/dev/sda7 29911 30401 3943926 82 Linux swap / Solaris
由这里看到,我的整个Ubuntu安装在/dev/sda6上,没有划分出boot区和root区。这也是Ubuntu的默认安装模式。
如果你单独划分了boot区,那么请在这一步记住boot的设备名称。
然后执行下面的几步,把之前记住的设备mount出来。
(由于我的系统是基于Ubuntu 9.10的Linux Mint 8,所以命令行提示符有些不一样,但是原理是完全一致的。)
mint ~ # mkdir /media/root
mint ~ # mount /dev/sda6 /media/root
mint ~ # ls /media/root/
bin dev initrd.img media proc selinux tmp vmlinuz
boot etc lib mnt root srv usr
cdrom home lost+found opt sbin sys var
mint ~ # ls /media/root/boot/
abi-2.6.31-14-generic initrd.img-2.6.31-14-generic
boot memtest86+.bin
config-2.6.31-14-generic System.map-2.6.31-14-generic
gfxmenu vmcoreinfo-2.6.31-14-generic
grub vmlinuz-2.6.31-14-generic
mount完毕后确认/medai/root/目录和/media/root/boot/确实和上面的输出一致或者近似。
确认无误后,执行下面的步骤重新安装Grub2。
mint ~ # sudo grub-install --root-directory=/media/root /dev/sda
Installation finished. No error reported.
This

is the contents of the device map /media/root/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'.

(hd0) /dev/sda
完成了上面一步,并且没有错误报告的话,Grub2就安装成功了。
重新启动一下机器,Grub2的多重启动应该已经奏效了。如果你和我一样是对Windows进行了升级,例如从Windows Vista -> Windows 7。
那么在重新进入Ubuntu之后可以在终端下执行:
sudo update-grub
Grub2会自动识别出Windows的版本,并更新启动菜单的显示信息。
在整个操作过程中一定要反复检查输入是否有错误,并且牢记从Ubuntu 9.10开始,由于使用了Grub2。
以往重新安装Grub的老办法不一定适用。
万一,在安装Grub2时遇到了问题,进不了任何一个系统。
请冷静下来,起码你还有Ubuntu Live CD,用它启动系统,进入这个链接寻找适当的解决办法
方法1.Ubuntu Grub2有GRUB启动的光盘或U盘修复
如果手上有GRUB启动的工具盘,用工具盘启动,在GRUB菜单上按c进入命令行状态,
在grub>提示符下输入
grub>find/boot/grub/core.img(有/boot分区的用find/grub/core.img)
(hdx,y)(显示查找到的分区号)
grub>root(hdx,y)
grub>kernel/boot/grub/core.img(/boot分区的用kernel/grub/core.img)
grub>boot
Ubuntu Grub2执行boot后能转入GRUB2菜单,启动Ubuntu后,再在Ubuntu终端下执行sudogrub-install/dev/sda(或sdb,sdc等,根据第几硬盘而定)修复GRUB。
注意:如果Ubuntu的启动分区使用ext4格式,要有支持ext4格式的grub才能修复。

相关文档
最新文档