当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 双系统windows7,ubuntu104 用grub4dos安装
帖子发表于 : 2010-09-28 1:06 

注册: 2010-09-26 23:37
帖子: 52
送出感谢: 0 次
接收感谢: 0 次
本文说明用grub4dos安装windows7和ubuntu10.04双系统

磁盘分区如下图
附件:
文件注释: 图1 硬盘分区图
图1分区图.jpg
图1分区图.jpg [ 43.02 KiB | 被浏览 3632 次 ]



分区
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引导过程

附件:
文件注释: 图2 win7引导过程
图2 win7引导过程.jpg
图2 win7引导过程.jpg [ 16.6 KiB | 被浏览 3632 次 ]



ubuntu的启动引导过程
图3 ubuntu的引导
附件:
文件注释: 图3 ubuntu引导
图3 grub引导过程.jpg
图3 grub引导过程.jpg [ 18.59 KiB | 被浏览 3632 次 ]



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
附件:
文件注释: 图4 grub4dos引导
图4 grub4dos引导过程.jpg
图4 grub4dos引导过程.jpg [ 21.91 KiB | 被浏览 3632 次 ]



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

附件:
文件注释: 图5 easyBCD
图5 easyBCD界面.jpg
图5 easyBCD界面.jpg [ 71.66 KiB | 被浏览 3632 次 ]


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 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 双系统windows7,ubuntu104 用grub4dos安装
帖子发表于 : 2010-09-28 1:19 

注册: 2010-09-26 23:37
帖子: 52
送出感谢: 0 次
接收感谢: 0 次
是不是文章太长不能发表?


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 双系统windows7,ubuntu104 用grub4dos安装
帖子发表于 : 2010-09-28 1:23 

注册: 2010-09-26 23:37
帖子: 52
送出感谢: 0 次
接收感谢: 0 次
:em01
终于看到文章了,恕不会贴图,见笑 :em04


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 双系统windows7,ubuntu104 用grub4dos安装
帖子发表于 : 2010-09-29 0:27 

注册: 2007-06-17 9:41
帖子: 19
送出感谢: 0 次
接收感谢: 0 次
手中有一台笔记本电脑,打算装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


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 双系统windows7,ubuntu104 用grub4dos安装
帖子发表于 : 2010-09-29 16:34 

注册: 2010-09-29 16:19
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
这种方法保留windows7硬盘主引导记录MBR,为什么Grub的MBR写入方式不太好呢?


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 双系统windows7,ubuntu104 用grub4dos安装
帖子发表于 : 2010-09-29 19:42 

注册: 2010-09-25 20:55
帖子: 19
送出感谢: 0 次
接收感谢: 0 次
想请教下,我用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"时"确定"按钮才可用.

请问各位,这是怎么回事?怎么解决?


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 双系统windows7,ubuntu104 用grub4dos安装
帖子发表于 : 2010-09-29 20:51 

注册: 2009-07-17 20:01
帖子: 48
送出感谢: 1
接收感谢: 0 次
目前在用win7和Ubuntu9.04,O(∩_∩)O~


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 双系统windows7,ubuntu104 用grub4dos安装
帖子发表于 : 2010-09-30 17:53 

注册: 2010-09-26 23:37
帖子: 52
送出感谢: 0 次
接收感谢: 0 次
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"时"确定"按钮才可用.

请问各位,这是怎么回事?怎么解决?


貌似ubuntu10.04在安装MBR时有个BUG,在EasyBCD文档里有说,千万不要按那个“高级”按钮,跳过去再说。
我的过程是,安装ubuntu完成后,重启可出现GRUB引导菜单,进ubuntu莫问题。
但是问题在:如果进入windows7,也是没问题,但重新启动后MBR就坏了,两个都进不去。
万般无奈下,只好不让Grub来写MBR,用grub4dos引导才行。
当然偶的情况仅仅是个例,不代表一般。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 双系统windows7,ubuntu104 用grub4dos安装
帖子发表于 : 2011-06-04 11:25 

注册: 2007-07-27 9:45
帖子: 2
送出感谢: 0 次
接收感谢: 0 次
特意登录上来顶一下,就为楼主的专业精神


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 双系统windows7,ubuntu104 用grub4dos安装
帖子发表于 : 2011-06-06 0:52 

注册: 2005-09-13 4:56
帖子: 975
系统: Ubuntu QQ
送出感谢: 0 次
接收感谢: 36
文章不错,很详细,相信仔细阅读之后的新手能对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最强大的即时编辑功能就被浪费了。


_________________
添加ppa后只更新此ppa:
update-ppa()
{ sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/$1.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
}
写入~/.bashrc,source一下,就可以直接用,是不是很方便?觉得方便就按个赞。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 5 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译