双系统windows7,ubuntu104 用grub4dos安装
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 52
- 注册时间: 2010-09-26 23:37
双系统windows7,ubuntu104 用grub4dos安装
本文说明用grub4dos安装windows7和ubuntu10.04双系统
磁盘分区如下图 分区
sda1:dell保留的隐藏分区,放置硬件参数,容量70MB。硬盘引导MBR放置于此处。
sda2:windows7的隐藏分区Recovery,容量10GB,放置有已授权的windows7,用于工厂预置软件的恢复。
sda3:卷标OS,盘符C:,是windows7的系统分区,win7的内核引导程序放置在此,c:\windows\winload.exe。
sda4 扩展分区
sda5:NTFS的文件分区,110GB。
sda6:NTFS的另一个文件分区,144GB。
sda7:linux分区,60GB。linux下ext3为65GB。
sda8:linux分区,4.6GB,挂载点是引导分区 /boot。linux下ext3为4.9GB。
sda9:linux根文件分区,19GB,linux下ext3为20GB,挂载点/。
sda10:linux home文件分区,46GB,linux的挂载点是/home。
sda11:linux系统的交换分区swap,容量10GB。
本机安装windows7和ubuntu10.04双系统
回顾windows7的引导启动过程:
1、开机后,运行BIOS,从硬盘的第一个分区读取主引导记录MBR,MBR读取DPT(分区表),从中找出活动的主分区。本机中活动主分区是sda2。一块硬盘只有一个活动主分区,windows7中将隐藏分区设置为活动主分区。
2、读取活动主分区的PBR(分区引导记录,也叫Pbr)。PBR再搜寻该分区内的启动管理器文件BOOTMGR,在BOOTMGR被找到后,控制权就交给了BOOTMGR。
3、 BOOTMGR读取\boot\bcd文件(Boot Configuration Data,“启动配置数据”)。windwows7下的bcd文件就相当于xp下的boot.ini文件,如果存在着多个操作系统并且选择操作系统的等待时间不为0的话,这时就会显示多操作系统的选择界面。
4、在我们选择启动windows7后,BOOTMGR就会去启动盘寻找 windows\system32\winload.exe,然后通过winload.exe加载windows7内核,从而启动整个windows7系统。
可以把这个过程简单地概括为:BIOS-->MBR-->DPT-->pbr--> Bootmgr-->bcd-->Winload.exe-->内核加载 -->整个windows7系统。
图2 win7引导过程
ubuntu的启动引导过程
图3 ubuntu的引导 ubuntu可以用Grub引导,在ubuntu9.10以后的安装版本都用Grub2,以下描述简称为Grub。Grub默认启动引导程序安装在硬盘第一分区的MBR,而Grub的MBR就是把引导文件boot.img写入MBR。启动时根据MBR提供的信息找到linux启动分区/boot,加载Grub的核心core.img和配置文件grub.cfg。在grub.cfg中实现多系统引导。
从这里可以看出,Grub引导时,改写了原来windows7的MBR。因此,如果某些原因,导致开机后不能加载Grub,则windows7和ubuntu两个系统都不能进入,这可是非常危险的。据说ubuntu10.04安装Grub引导是存在一个BUG,可能导致无法引导情况发生。
我安装过程就是这样,原来的系统是windows7,后安装ubuntu10.04。安装ubuntu成功后,重新启动机器,可以出现Grub引导菜单,可以引导windows7和ubuntu,但是如果进入了windows7,再次启动机器后,Grub引导菜单消失,无法引导任何系统。只好重新恢复windows7的MBR,此时ubuntu再也不能进入。
经过几次折腾,决定用Grub4dos来实现多系统引导,其过程图如下:
图4 Grub4dos引导过程
与windows7的引导过程一样,BIOS->MBR->DPT->Pbr->Bootmgr->bcd。到此需要在bcd中配置两个引导:windows7和Grub4dos。启动windows7的过程与前面所述一致,启动Grub4dos后,装载Grub4dos,产生引导菜单,可引导windows7和ubuntu,引导菜单的配置由menu.lst指定,menu.lst放置在sda2中。这样不破坏windows7的MBR,保持原系统的引导过程,比较安全。
这种方式最重要步骤是配置bcd,可以用bcdedit程序来设置,比较麻烦。这里介绍一个windows程序EasyBCD比较方便。EasyBCD 2.02下载地址:
http://neosmart.net/dl.php?id=1
windows7和ubuntu10.04双系统安装过程如下:
step1 :安装windows7,其过程再次不叙述。
step2: 安装ubuntu10.04,一个比较好的办法是制作USB安装盘,可以用UltraISO程序制作USB安装盘。当然也可以用光盘安装ubuntu。注意在安装ubuntu10.04过程中,在安装引导加载程序步骤时,不要按“高级”按钮,只要继续进行下去即可。据说这是ubuntu10.04的一个BUG,不知现在解决没有。
step3: 安装完ubuntu后,重启计算机,看到Grub2菜单后,选windows7,进入windows7运行环境。
step4: 运行EasyBCD2.02,按“Add New Entry”,选择NeoGrub,按下面的Configure,出现menu.lst,编辑Grub4dos启动菜单项。这里给出我的menu.lst
title Ubuntu Linux 2.6.32-24-generic-pae (Chinese mode)
root (hd0,7) # /dev/sda8
kernel /vmlinuz-2.6.32-24-generic-pae root=UUID=0c10efa6-fcbe-4993-ab58-9c171e3800e1 ro quiet splash
initrd /initrd.img-2.6.32-24-generic-pae
title Ubuntu Linux 2.6.32-24-generic-pae (Chinese recovery)
root (hd0,7)
kernel /vmlinuz-2.6.32-24-generic-pae root=UUID=0c10efa6-fcbe-4993-ab58-9c171e3800e1 ro single
initrd /initrd.img-2.6.32-24-generic-pae
title Grub2
root (hd0,7)
kernel /grub/core.img root=UUID=0c10efa6-fcbe-4993-ab58-9c171e3800e1 ro single
这里面有三个ubuntu选项,正常模式、修复模式和linux的Grub2,其中Grub2可以取消。
我的linux分区中,专门划分出引导分区 /boot,在第八分区(sda8),而在grub4dos中,这个分区是(hd0,7),内核是 vmlinuz-2.6.32-24-generic-pae,根文件的分区标识为=0c10efa6-fcbe-4993-ab58-9c171e3800e1,这可以从linux 分区 /boot/grub/grub.cfg文件中找到,初始化程序是initrd.img-2.6.32-24-generic-pae。内核与初始化程序都可以从/boot分区中找到。
同样地,title Grub2是加载Grub内核,内核放置在/boot/grub/core.img。
step5: 选Bootloader Setup,在BMR configuration options中选 Install the windowsVista/7 Bootloader to the MBR,按write MBR。其实这一步可以不做,这实际是写windows7的MBR到硬盘中,保证windows7的引导过程。
step6: 关闭EasyBCD,这样就给bcd配置了两个启动项,windows7和NeoGrub Bootloader。
step7: 重启计算机,看到EasyBCD产生的启动菜单,有两个选项:
windows7
NeoGrub Bootloader
当选择NeoGrub Bootloader后,加载Grub4dos,出现由menu.lst指定的选择菜单
Ubuntu Linux 2.6.32-24-generic-pae (Chinese mode)
Ubuntu Linux 2.6.32-24-generic-pae (Chinese recovery)
Grub2
至此,完成了windows7和ubuntu双系统安装。
你可以试着选择Grub2,就可以出现久违的linux Grub启动选择菜单,这是由linux中的grub.cfg文件指定的启动选项。当然这纯粹脱裤子放屁,我这里仅仅为了试验如何启动Grub2。
希望本文对同学们有所帮助。
磁盘分区如下图 分区
sda1:dell保留的隐藏分区,放置硬件参数,容量70MB。硬盘引导MBR放置于此处。
sda2:windows7的隐藏分区Recovery,容量10GB,放置有已授权的windows7,用于工厂预置软件的恢复。
sda3:卷标OS,盘符C:,是windows7的系统分区,win7的内核引导程序放置在此,c:\windows\winload.exe。
sda4 扩展分区
sda5:NTFS的文件分区,110GB。
sda6:NTFS的另一个文件分区,144GB。
sda7:linux分区,60GB。linux下ext3为65GB。
sda8:linux分区,4.6GB,挂载点是引导分区 /boot。linux下ext3为4.9GB。
sda9:linux根文件分区,19GB,linux下ext3为20GB,挂载点/。
sda10:linux home文件分区,46GB,linux的挂载点是/home。
sda11:linux系统的交换分区swap,容量10GB。
本机安装windows7和ubuntu10.04双系统
回顾windows7的引导启动过程:
1、开机后,运行BIOS,从硬盘的第一个分区读取主引导记录MBR,MBR读取DPT(分区表),从中找出活动的主分区。本机中活动主分区是sda2。一块硬盘只有一个活动主分区,windows7中将隐藏分区设置为活动主分区。
2、读取活动主分区的PBR(分区引导记录,也叫Pbr)。PBR再搜寻该分区内的启动管理器文件BOOTMGR,在BOOTMGR被找到后,控制权就交给了BOOTMGR。
3、 BOOTMGR读取\boot\bcd文件(Boot Configuration Data,“启动配置数据”)。windwows7下的bcd文件就相当于xp下的boot.ini文件,如果存在着多个操作系统并且选择操作系统的等待时间不为0的话,这时就会显示多操作系统的选择界面。
4、在我们选择启动windows7后,BOOTMGR就会去启动盘寻找 windows\system32\winload.exe,然后通过winload.exe加载windows7内核,从而启动整个windows7系统。
可以把这个过程简单地概括为:BIOS-->MBR-->DPT-->pbr--> Bootmgr-->bcd-->Winload.exe-->内核加载 -->整个windows7系统。
图2 win7引导过程
ubuntu的启动引导过程
图3 ubuntu的引导 ubuntu可以用Grub引导,在ubuntu9.10以后的安装版本都用Grub2,以下描述简称为Grub。Grub默认启动引导程序安装在硬盘第一分区的MBR,而Grub的MBR就是把引导文件boot.img写入MBR。启动时根据MBR提供的信息找到linux启动分区/boot,加载Grub的核心core.img和配置文件grub.cfg。在grub.cfg中实现多系统引导。
从这里可以看出,Grub引导时,改写了原来windows7的MBR。因此,如果某些原因,导致开机后不能加载Grub,则windows7和ubuntu两个系统都不能进入,这可是非常危险的。据说ubuntu10.04安装Grub引导是存在一个BUG,可能导致无法引导情况发生。
我安装过程就是这样,原来的系统是windows7,后安装ubuntu10.04。安装ubuntu成功后,重新启动机器,可以出现Grub引导菜单,可以引导windows7和ubuntu,但是如果进入了windows7,再次启动机器后,Grub引导菜单消失,无法引导任何系统。只好重新恢复windows7的MBR,此时ubuntu再也不能进入。
经过几次折腾,决定用Grub4dos来实现多系统引导,其过程图如下:
图4 Grub4dos引导过程
与windows7的引导过程一样,BIOS->MBR->DPT->Pbr->Bootmgr->bcd。到此需要在bcd中配置两个引导:windows7和Grub4dos。启动windows7的过程与前面所述一致,启动Grub4dos后,装载Grub4dos,产生引导菜单,可引导windows7和ubuntu,引导菜单的配置由menu.lst指定,menu.lst放置在sda2中。这样不破坏windows7的MBR,保持原系统的引导过程,比较安全。
这种方式最重要步骤是配置bcd,可以用bcdedit程序来设置,比较麻烦。这里介绍一个windows程序EasyBCD比较方便。EasyBCD 2.02下载地址:
http://neosmart.net/dl.php?id=1
windows7和ubuntu10.04双系统安装过程如下:
step1 :安装windows7,其过程再次不叙述。
step2: 安装ubuntu10.04,一个比较好的办法是制作USB安装盘,可以用UltraISO程序制作USB安装盘。当然也可以用光盘安装ubuntu。注意在安装ubuntu10.04过程中,在安装引导加载程序步骤时,不要按“高级”按钮,只要继续进行下去即可。据说这是ubuntu10.04的一个BUG,不知现在解决没有。
step3: 安装完ubuntu后,重启计算机,看到Grub2菜单后,选windows7,进入windows7运行环境。
step4: 运行EasyBCD2.02,按“Add New Entry”,选择NeoGrub,按下面的Configure,出现menu.lst,编辑Grub4dos启动菜单项。这里给出我的menu.lst
title Ubuntu Linux 2.6.32-24-generic-pae (Chinese mode)
root (hd0,7) # /dev/sda8
kernel /vmlinuz-2.6.32-24-generic-pae root=UUID=0c10efa6-fcbe-4993-ab58-9c171e3800e1 ro quiet splash
initrd /initrd.img-2.6.32-24-generic-pae
title Ubuntu Linux 2.6.32-24-generic-pae (Chinese recovery)
root (hd0,7)
kernel /vmlinuz-2.6.32-24-generic-pae root=UUID=0c10efa6-fcbe-4993-ab58-9c171e3800e1 ro single
initrd /initrd.img-2.6.32-24-generic-pae
title Grub2
root (hd0,7)
kernel /grub/core.img root=UUID=0c10efa6-fcbe-4993-ab58-9c171e3800e1 ro single
这里面有三个ubuntu选项,正常模式、修复模式和linux的Grub2,其中Grub2可以取消。
我的linux分区中,专门划分出引导分区 /boot,在第八分区(sda8),而在grub4dos中,这个分区是(hd0,7),内核是 vmlinuz-2.6.32-24-generic-pae,根文件的分区标识为=0c10efa6-fcbe-4993-ab58-9c171e3800e1,这可以从linux 分区 /boot/grub/grub.cfg文件中找到,初始化程序是initrd.img-2.6.32-24-generic-pae。内核与初始化程序都可以从/boot分区中找到。
同样地,title Grub2是加载Grub内核,内核放置在/boot/grub/core.img。
step5: 选Bootloader Setup,在BMR configuration options中选 Install the windowsVista/7 Bootloader to the MBR,按write MBR。其实这一步可以不做,这实际是写windows7的MBR到硬盘中,保证windows7的引导过程。
step6: 关闭EasyBCD,这样就给bcd配置了两个启动项,windows7和NeoGrub Bootloader。
step7: 重启计算机,看到EasyBCD产生的启动菜单,有两个选项:
windows7
NeoGrub Bootloader
当选择NeoGrub Bootloader后,加载Grub4dos,出现由menu.lst指定的选择菜单
Ubuntu Linux 2.6.32-24-generic-pae (Chinese mode)
Ubuntu Linux 2.6.32-24-generic-pae (Chinese recovery)
Grub2
至此,完成了windows7和ubuntu双系统安装。
你可以试着选择Grub2,就可以出现久违的linux Grub启动选择菜单,这是由linux中的grub.cfg文件指定的启动选项。当然这纯粹脱裤子放屁,我这里仅仅为了试验如何启动Grub2。
希望本文对同学们有所帮助。
上次由 foxlili2323 在 2010-10-04 8:35,总共编辑 3 次。
-
- 帖子: 52
- 注册时间: 2010-09-26 23:37
Re: 双系统windows7,ubuntu104 用grub4dos安装
是不是文章太长不能发表?
-
- 帖子: 52
- 注册时间: 2010-09-26 23:37
Re: 双系统windows7,ubuntu104 用grub4dos安装

终于看到文章了,恕不会贴图,见笑

-
- 帖子: 19
- 注册时间: 2007-06-17 9:41
Re: 双系统windows7,ubuntu104 用grub4dos安装
手中有一台笔记本电脑,打算装XP和UBUNTU,正在学习如何安装中。
谢谢
谢谢
IBM ThinkPad T43 /PentiumM 1.86GHz
IBM 26684DU ( 英特尔 915GM/PM/GMS/910GML /1 GB
日立 HTS548040M9AT00 ( 40 GB )/ATI Mobility Radeon X300 (M22) ( 64 MB)
MS_0000 ( 18 英寸 ) PNP09FE/日立-LG DVD-ROM GDR8083N
博通 BCM5750A1M NetXtreme Gigabit Ethernet / IBM
IBM 26684DU ( 英特尔 915GM/PM/GMS/910GML /1 GB
日立 HTS548040M9AT00 ( 40 GB )/ATI Mobility Radeon X300 (M22) ( 64 MB)
MS_0000 ( 18 英寸 ) PNP09FE/日立-LG DVD-ROM GDR8083N
博通 BCM5750A1M NetXtreme Gigabit Ethernet / IBM
-
- 帖子: 3
- 注册时间: 2010-09-29 16:19
Re: 双系统windows7,ubuntu104 用grub4dos安装
这种方法保留windows7硬盘主引导记录MBR,为什么Grub的MBR写入方式不太好呢?
-
- 帖子: 19
- 注册时间: 2010-09-25 20:55
Re: 双系统windows7,ubuntu104 用grub4dos安装
想请教下,我用grub4dos装ubuntu,不想让grub写进MBR(还想用IBM的一键还原)
用了网上的这个方法.
Boot.ini增加
c:\grldr=”ubuntu”
menu.lst, vmlinuz和initrd.gz放到C:\
menu.lst内容
title Install Ubuntu
find --set-root /ubuntu-10.04-desktop-i386.iso
kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-10.04-desktop-i386.iso locale=zh_CN.UTF-8
initrd /initrd.gz
成功从Ubuntu镜像开始安装,到第4步选手动指定分区,
分区:新建
./ 逻辑分区 /dev/sda6
./boot 逻辑分区 /dev/sda7
./swap 交换分区
然后往下走,在终端中卸载
sudo umount -l /isodevice
在"准备安装"选"高级", 在安装启动引导装置里选 "/dev/sda7", 但是这时"确定"按钮变灰色.
只有在选"/dev/sda1"时"确定"按钮才可用.
请问各位,这是怎么回事?怎么解决?
用了网上的这个方法.
Boot.ini增加
c:\grldr=”ubuntu”
menu.lst, vmlinuz和initrd.gz放到C:\
menu.lst内容
title Install Ubuntu
find --set-root /ubuntu-10.04-desktop-i386.iso
kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-10.04-desktop-i386.iso locale=zh_CN.UTF-8
initrd /initrd.gz
成功从Ubuntu镜像开始安装,到第4步选手动指定分区,
分区:新建
./ 逻辑分区 /dev/sda6
./boot 逻辑分区 /dev/sda7
./swap 交换分区
然后往下走,在终端中卸载
sudo umount -l /isodevice
在"准备安装"选"高级", 在安装启动引导装置里选 "/dev/sda7", 但是这时"确定"按钮变灰色.
只有在选"/dev/sda1"时"确定"按钮才可用.
请问各位,这是怎么回事?怎么解决?
-
- 帖子: 48
- 注册时间: 2009-07-17 20:01
Re: 双系统windows7,ubuntu104 用grub4dos安装
目前在用win7和Ubuntu9.04,O(∩_∩)O~
-
- 帖子: 52
- 注册时间: 2010-09-26 23:37
Re: 双系统windows7,ubuntu104 用grub4dos安装
貌似ubuntu10.04在安装MBR时有个BUG,在EasyBCD文档里有说,千万不要按那个“高级”按钮,跳过去再说。jordi 写了:想请教下,我用grub4dos装ubuntu,不想让grub写进MBR(还想用IBM的一键还原)
用了网上的这个方法.
Boot.ini增加
c:\grldr=”ubuntu”
menu.lst, vmlinuz和initrd.gz放到C:\
menu.lst内容
title Install Ubuntu
find --set-root /ubuntu-10.04-desktop-i386.iso
kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-10.04-desktop-i386.iso locale=zh_CN.UTF-8
initrd /initrd.gz
成功从Ubuntu镜像开始安装,到第4步选手动指定分区,
分区:新建
./ 逻辑分区 /dev/sda6
./boot 逻辑分区 /dev/sda7
./swap 交换分区
然后往下走,在终端中卸载
sudo umount -l /isodevice
在"准备安装"选"高级", 在安装启动引导装置里选 "/dev/sda7", 但是这时"确定"按钮变灰色.
只有在选"/dev/sda1"时"确定"按钮才可用.
请问各位,这是怎么回事?怎么解决?
我的过程是,安装ubuntu完成后,重启可出现GRUB引导菜单,进ubuntu莫问题。
但是问题在:如果进入windows7,也是没问题,但重新启动后MBR就坏了,两个都进不去。
万般无奈下,只好不让Grub来写MBR,用grub4dos引导才行。
当然偶的情况仅仅是个例,不代表一般。
-
- 帖子: 2
- 注册时间: 2007-07-27 9:45
Re: 双系统windows7,ubuntu104 用grub4dos安装
特意登录上来顶一下,就为楼主的专业精神
-
- 帖子: 1318
- 注册时间: 2005-09-13 4:56
- 系统: Ubuntu Jammy Jellyfi
Re: 双系统windows7,ubuntu104 用grub4dos安装
文章不错,很详细,相信仔细阅读之后的新手能对grub和系统引导的问题更清楚一些。
纠正一个概念,MBR并非位于硬盘第一分区头部,而是位于所有硬盘分区之前。MBR一般指硬盘头部位于分区之前的512字节的内容,其中前面446个字节是系统启动代码,后面64个字节是分区表(四个主分区,每个分区占用16个字节),最后2个字节是分区表标识符。
然后补充一个概念,grub引导过程说的不够清楚,漏掉了stage 1。从grub开始运行,出现引导菜单,启动系统,这都是stage 2的事情了。实际上从Bios被载入内存到读取MBR后,要先运行grub 的stage 1。什么是stage 1呢,简单来说就是通过MBR中的引导记录调用grub。说的直白一些,grub并不是住在MBR里面的,而是安装到某分区路径下,系统需要根据MBR的引导记录,找到grub的位置,并运行grub这个程序(stage 1),这里说的grub程序不是指MBR中那446个字节的代码,这段代码长度有限,无法提供那么强大的功能,真正的grub程序是指载入core.img后,长度可达到32K的强大指令集。只有stage1被成功执行,grub这个微型操作系统才算真正开始运行了。当grub运行后,才能执行引导命令,启动操作系统(stage 2)。
grub出错后会进入命令行,有两种出错的模式
第一种是 grub-rescue >,看到这个字样,表示stage 1 出错了
第二种是 grub >,这表示stage 2出错了。
了解了这些概念,才能在grub出错的时候解决问题,我想大家不能永远停留在grub一出错就去找livecd重装grub的阶段。否则grub最强大的即时编辑功能就被浪费了。
纠正一个概念,MBR并非位于硬盘第一分区头部,而是位于所有硬盘分区之前。MBR一般指硬盘头部位于分区之前的512字节的内容,其中前面446个字节是系统启动代码,后面64个字节是分区表(四个主分区,每个分区占用16个字节),最后2个字节是分区表标识符。
然后补充一个概念,grub引导过程说的不够清楚,漏掉了stage 1。从grub开始运行,出现引导菜单,启动系统,这都是stage 2的事情了。实际上从Bios被载入内存到读取MBR后,要先运行grub 的stage 1。什么是stage 1呢,简单来说就是通过MBR中的引导记录调用grub。说的直白一些,grub并不是住在MBR里面的,而是安装到某分区路径下,系统需要根据MBR的引导记录,找到grub的位置,并运行grub这个程序(stage 1),这里说的grub程序不是指MBR中那446个字节的代码,这段代码长度有限,无法提供那么强大的功能,真正的grub程序是指载入core.img后,长度可达到32K的强大指令集。只有stage1被成功执行,grub这个微型操作系统才算真正开始运行了。当grub运行后,才能执行引导命令,启动操作系统(stage 2)。
grub出错后会进入命令行,有两种出错的模式
第一种是 grub-rescue >,看到这个字样,表示stage 1 出错了
第二种是 grub >,这表示stage 2出错了。
了解了这些概念,才能在grub出错的时候解决问题,我想大家不能永远停留在grub一出错就去找livecd重装grub的阶段。否则grub最强大的即时编辑功能就被浪费了。