(画蛇添足的grldr.mbr和boot.ini)浅谈windows7下grub硬盘安装ubuntu,及windows 7下软激活的grldr
本人关于:网上流传的、四处有人乱抄却又抄不明白的,windows7或Vista在C盘填加boot.ini和grldr.mbr及grldr的,不刻盘grub硬盘安装ubuntu方法 漏洞补遗。 2009.11.07
千里不留行(原)
(本 文欢迎转载,转载不要断章取义,或请注明出处,以免读者有问题 而无处探讨)
A,为什么说在C盘根目录填加boot.ini和grldr.mbr是画蛇填足?
关于 在windows VISTA/7下,硬盘或U盘安装ubuntu,大家经常看到与下面内容类似的贴子:
—————————————————————————————————————
—————————————————————————————————————
●方法一:使用boot.ini在windows VISTA/7下,硬盘安装ubuntu
1、解压下载的Grub4DOS,把其中的grldr和grldr.mbr两个文件复制到C盘根目录(也许你需要以管理员身份完成此步骤)
2、在C盘新建文本文档,重命名为“boot.ini”,并在其中写入以下文字:
[boot loader]
timeout=10
default=C:\grldr.mbr
[operating systems]
C:\grldr.mbr="GRUB"
3、在下载好的iso文件中,casper文件夹目录下,找到vmlinuz、initrd.lz解压,并复制到C盘根目录下
(无需解压整个casper文件夹)
4、C盘根目录下建立menu.lst文件,内容为:
title Install Ubuntu 9.10
root (hd0,0)
kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu910.iso ro quiet splash locale=zh_CN.UTF-8
initrd (hd0,0)/initrd.lz
5、把你下载的ubuntu9.10.iso的名字改为和上面menu.lst内红字部分相同的名字。
如:你下载的是ubuntu-9.04-desktop-i386.iso,就把ubuntu-9.04-desktop-i386.iso改为ubuntu9.10.iso(或把menu.lst内红字部分改为ubuntu-9.04-desktop-i386.iso),总之这个 .iso的名字要和menu.lst内红字部分相同
6、将这个.iso复制或移到C盘根目录下。
7、重启电脑,开机选择“GRUB”,进入ubuntu9.10live CD模式
8、进 入ubuntu9.10的live CD后,首先必需要打开终端输入 cd /(注意这里cd和 / 之间有一空格)回车,再输入 sudo umount -l isodevice回车,或直接输入 sudo umount -l / isodevice回车 (这中间有一 / ),输入正确后,桌面会自动弹出ISO所在分区,
9、双击桌面的“安装”图标就可以开始开始安装
●方法二:使用boot.ini在windows7或 VISTA下,用U盘安装ubuntu。
前5步和上面硬盘安装方法相同。
6、将这个.iso复制或移到复制或移到U盘根目录下,
7、主机的硬盘上原有的iso文件则修改文件名。(就是说,主机的硬盘上的各分区的根目录内,不要有和上面menu.lst内名字相同的iso,否则,开机重启电脑时,grldr找不到U盘的iso)。
8、插上U盘,重启电脑,开机选择“GRUB”,进入live CD模式
9、双击桌面的“安装”图标就可以开始开始安装
—————————————————————————————————————
—————————————————————————————————————
关于 在windows7或 VISTA下,硬盘或U盘安装ubuntu,大家经常看到的安装贴子大致与上面的内容类似。
应该说 ,当初想到给windows7或 VISTA的C盘加boot.ini的人是个聪明的人的一个有创意的想法 ,这个方法被很多人抄来抄去,结果,抄袭者大部分都是知其已然,不知其所以然,甚至漏了关键部分。
【下面本人以windows 7下硬盘引导进入ubuntu liveCD部分,说明上面方法的漏洞】:
(1)我们按照上面方法填加boot.ini和复制 grldr和grldr.mbr到C盘根目录后,重启后,开机有两个选项,一个是windows 7选项,另一个是GRUB选项,选GRUB选项就可以进入摸拟ubuntu9.10的live CD了,从 live CD安装 ubuntu到分区就可以了。
注意:但这里,有个重点,被那些抄贴的人忽略了,此时,如果,不选GRUB选项,而选windows 7选项,却不能进入windows 7了。
(2)从 live CD安装 ubuntu到分区完成后,开机如没有 windows 7选项,在安装完成的ubuntu9.10系统里,打开终端输入: sudo update-grub2(ubuntu9.04是输入: sudo update-grub),可以加入 windows 7开机选项,但选windows 7选项,还是不能进入windows 7。
这两点,那些抄贴者,没有说明,解决方法是:
从 live CD安装 ubuntu到分区成功后,首先,从安装完成的ubuntu9.10系统里,找到 windows 7的C盘,删除后加入的boot.ini和 grldr还有grldr.mbr和menu.lst,并清空ubuntu的回收站。然后,打开终端输入: sudo update-grub2回车------在开机选项内,自动加入 windows 7启动项(如果开机有windows 7启动项,就不必sudo update-grub2了)。此时,在重启,选开机的windows 7启动项就可以进入 windows 7了。
难到不装ubuntu就进不了windows 7了?
难不成不装 ubuntu,就要重装windows 7?
不,如不装ubuntu,从模拟的ubuntu live CD里,找到 windows 7的C盘,删除后加入的boot.ini和 grldr还有grldr.mbr和menu.lst,并清空ubuntu的回收站。重启后,就是,你原来的windows 7。
那么有什么办法可以在不从 live CD安装 ubuntu到分区,也能进入windows 7呢?
这就是本人所要说的重点,写下上面安装贴子的人给的menu.lst内,只是写了引导 ubuntu的 live CD一段,他漏了引导windows 7一段(或者根本就不知道引导 windows 7该怎样写),menu.lst内windows 7应该这样写,如下:
title Windows 7
find --set-root /bootmgr
chainloader /bootmgr
boot
这样,开机后就可以依旧进入Windows 7 了。windows7或 VISTA下,通过grub硬盘引导ubuntu live CD完整的menu.lst应该如下:
timeout 10
default 0
#password=xxx
# (1) Windows
title Windows 7
find --set-root /bootmgr
chainloader /bootmgr
boot
title Install Ubuntu 9.10
root (hd0,0)
kernel (hd0,0)/vmlinuz boot=casper noacpi iso-scan/filename=/ubuntu9.10.iso ro quiet splash locale=zh_CN.UTF-8
initrd (hd0,0)/initrd.lz
title cdrom
cdrom --init
map --hook
chainloader (cd0)
boot
title reboot
reboot
title halt
halt
以上menu.lst内,非AMD主机需删除
noacpi ,CD版的ISO写
locale=zh_CN.UTF-8多余。
为什么说在C盘填加grldr.mbr和boot.ini是画蛇添足呢?
感兴趣的人可以做个试验:
(1)按照上面方法在C盘填加grldr.mbr和boot.ini和我给的完整的含引导 windows 7的menu.lst,提取vmlinuz和initrd.lz还有改成和menu.lst内文字名字一致的ubuntu9.10.iso到C盘后,重启电脑。
开机后,首先进入第一个开机画面,有两个选项,一个是windows 7,一个是GRUB。
选GRUB可以进入ubuntu 的live CD;
选windows 7,进入第二个开机画面,还是两个选项,同样一个是windows 7,一个是GRUB:再选GRUB,返回上级菜单(第一个开机画面),选windows 7,可以进入windows 7。
(2)进入 windows 7后,删除 C盘根目录的grldr.mbr,把boot.ini内的C:\grldr.mbr="GRUB"改成C:\grldr="GRUB"如下:
[boot loader]
timeout=10
default=C:\grldr.mbr
[operating systems]
C:\grldr="GRUB"
重启电脑,开机后,首先进入第一个开机画面,还是两个选项,一个是windows 7,一个是GRUB。
同样,选GRUB可以进入ubuntu 的live CD;
选windows 7,进入第二个开机画面,还是两个选项,同样一个是windows 7,一个是GRUB:
选windows 7,可以进入windows 7。
此时,再选GRUB就不能返回上级菜单(第一个开机画面),但按esc键,可以返回上级菜单(第一个开机画面),选第一个开机画面的GRUB,可以进入ubuntu 的live CD;
有趣的是boot.ini内的
default=C:\grldr.mbr一行,本人并未更改。
上面大家可以看出 grldr.mbr是否多余?
再谈为什么说boot.ini也是多余的?
既然,windows 7已经去掉了boot.ini,我们 也知道windows 7开机默认bootmgr,而我们可以bootmgr改名bootmg8,如,把grldr改名为bootmgr,通过 我们编写的menu.lst找到bootmg8,再启动windows 7,,何必再加一个boot.ini?
祥见本人原始贴:五N , 关于windows 7偷梁换柱法grub引导ubuntu live CD双系统安装祥细
( 请点击这里)
加boot.ini,也要编写menu.lst,才能 引导ubuntu live CD和启动windows 7,为何不用 bootmgr和grldr改名的方法呢?
还有 ,加boot.ini后,会有两个开机画面;而 bootmgr和grldr改名的方法,只有一个开机画面,一个是windows 7,一个是ubuntu9.10 live ,选ubuntu9.10 live可以进入ubuntu 的live CD;选windows 7,直接启动windows 7。
总之,用了boot.ini,比不用boot.ini多了一个开机画面。
以上说明,为什么说在C盘根目录填加boot.ini和grldr.mbr是画蛇填足?
B 再来说说windows 7下软激活的grldr:
软激活的windows 7的C盘有个
Boot文件夹和一个
grldr文件。
Boot内有一个
BCD文件很重要,这个BCD文件和C盘根的bootmgr之间的关系,类似于,我们的 menu.lst和grldr或boot.ini的关系,windows 7主要是靠这两个文件启动的,至于,软激活的windows 7是否在Boot文件夹内改了什么,本人不知道,但,我们不动这个Boot文件夹。如果,我们要另给grub引导填中文支持,则可以象本人一样,在C盘,建一个linuxboot文件夹(而不取名boot),再于menu.lst内指明linuxboot路径就可以了。
至于C盘原有的那个
grldr文件,是否因为要软激活,这个 grldr和我们用的grldr不一样,本人也不知道,我们先把它移走,放在别的分区内,不是根目录的文件夹内备份就是。
安装完成 ubuntu后,我们在回到windows 7把C盘grldr改名的bootmgr和menu.lst删除(或备份在其它分区非根目录),把bootmg8改回bootmgr,把前面备份的C盘原始的grldr再放回C盘根目录 ,这样,还是原来的软激活的windows 7。至于,vmlinuz 和initrd.lz,还有 ubuntu9.10.iso放在C盘或不放在C盘都无所谓了。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
如果说本论坛内的grub高手,非smallapple小苹果 莫属:
下载附件中的己修改的grldr文件,解压后把 g2ldr.mbr 和 g2ldr 放在win7的启动分区根目录 下,就是包含 bootmgr 的那个分区,然后在该分区根目录下新建 boot.ini
[boot loader]
timeout=0
default=c:\g2ldr.mbr
[operating systems]
C:\g2ldr.mbr="Grub4Dos"
XP和Win7双系统的,修改boot.ini 在最后加一行
C:\g2ldr.mbr="Grub4Dos"
网上大部分win7下 grub引导 ubuntu live CD的安装贴子,应该都是抄袭于聪明的smallapple小苹果 MM这里。
其实很多很多的人,都被苹果 MM忽悠了!
如果本人没有猜错:苹果 MM的g2ldr.mbr应该就是grldr.mbr 。