当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 1 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : win7下硬盘安装linux镜像——tricky的引导
帖子发表于 : 2011-03-22 10:50 

注册: 2011-03-17 0:53
帖子: 30
送出感谢: 0 次
接收感谢: 0 次
最近和同学一起装双系统,遇到了不少问题,花费了大量时间对付引导,想在这里记录下来,一是给自己备忘,二是其中的一些错误的缘由尚不清晰,希望高人指点,三是我的经历或许可以参考。

这要从几周前我自己装win7讲起,背景是我在三星的笔记本上装了xp(hd0,0)与ubuntu10.04双系统(当然,我不想失去它们),那时我还不知道grub。
我用的是可由学校服务器激活的win7专业版,不巧的是它刚好不能被激活。为什么说“刚好”,因为出现了错误提示0XC004F035,原因引一下校园网上的解释。

“某些win7客户端机器激活时弹出错误提示0XC004F035,无法使用批量许可激活计算机。这是因为某些电脑的BIOS不完整造成的,厂家对主板BIOS进行过定制,但是SLIC表不完整,准确来讲,应该是ACPI_SLIC表因为微软的OEM和批量协议是两种授权方式,所以在激活过程中所需要验证的BIOS中的内容各不相同。PC厂商首先保证BIOS中包含OEM版本激活所需要的信息,可能由于某些原因SLIC表中没有正确的信息,无法让机器通过批量授权的激活过程。因此该问题主要还是由PC厂商予以解决。”

由于同学的dell电脑遇到过相同的问题,但是通过更新bios解决了。于是去三星的官网更新bios,没有用。这时有热心的同学提供激活软件,很开心的试了一下,结果“bootmgr is compressed”,什么系统都进不去了。无奈,重装刚才的win7,先找回对xp的引导——这时候ubuntu的引导已不被识别。windows的引导管理是NTLDR,ubuntu的是GRUB,如果后装ubuntu,更新grub以后,windows是找的回来的。后来又试了些其它方案激活win7,包括网上的一些slic软件,结果还是“bootmgr is compressed”,泪奔,再次重装。几次折腾以后,暂缓对win7的更新,先把ubuntu找回来了。

开始google,于是第一次了解 grub。用NeoSmart的EasyBCD,有关ubuntu内核的一些信息想不起来了,不能直接配置menu.lst (c:\\nst\),只好先空缺,重启以后直接输命令试。
root (hd0,6) //一直试直到返回的信息是ext2fs,第一个0表示我的第一块硬盘,第二个6表示第七个分区
kernel /boot/vmlinuz-xxx ro root=/dev/sda7 //这边输完vml,按下tab就可以补充完整了,ro表示readonly,sda7与(hd0,6)相对应,是SATA硬盘
//的表示方法,为什么会出现两种表示方式呢?有返回信息就对了,
initrd /boot/initrd-xxx //同理按tab即可,有返回信息就对了
boot
成功启动ubuntu,更新grub的命令应该是 (sudo update-grub)
这算是day0吧。

下面讲day1,在一台装有win7旗舰版的华硕笔记本上装openSuSE
由于要完成操作系统的pintos实验,我的同学也想装linux,他自己下了openSuSE-11.4-i586.iso,4.2G的样子,我帮他用alcohol刻好盘以后,选择光盘启动,但最终都进了win7,由于他的笔记本进水好不容易捡回条命,所以怀疑光驱坏了。选择用daemon的虚拟光驱,结果重启之后卡在了start cmain(),连win7都丢了,既然光驱“坏”了,就把镜像刻到u盘里,报错(err=18)之类的,可能因u盘格式而异。顺便说一下ubuntu的刻u盘命令,
dd if=$SOURCEDIR of=$DSTDIR (一般是/dev/sdb1)。后来发现用win7的盘居然可以被光驱识别(看来光驱没坏,不能读openSuSE原因不明?),就是先前我自己刻的那张。先把它装到一个空的分区上,找回对原来win7的引导。

好,下面要涉及到如何在win7下硬盘安装linux的iso了。
网上有很多grub4dos的例子,但我没试成功,还是EasyBCD比较简单http://www.linuxidc.com/Linux/2010-05/25875.htm
xp的boot.ini隐藏放置在安装盘根目录下,win7下没有这个东西。我有点怀疑grub4dos的方法是否适用win7,因为它还是在安装盘根目录下加boot.ini,win7启动的时候会去加载上面的配置信息吗?结果还是直接进入win7,在xp下应该是好用的。
安装成功(顺便格掉后装的win7),更新grub就天下太平了。
当然,openSuSE根本不用这么麻烦,人家都考虑到了,在iso里有个"local.exe",解压之后双击它,安装完毕之后会发现它实际上封装的是grub4dos,此时会生成menu.lst,但没有boot.ini,重启之后,多出了一条启动项,选择启动即可安装openSuSE,唯一有点问题的可能是找源文件的部分,先找到分区sda的形式,再找到源目录,记得最前面加'/'。成功之后,在openSuSE里的YaST里找到system下面的bootloader,其中有win7那一项的,但是对应的分区可能不对,修改一下,双系统就起来了。
最后,卸载local.exe,谨慎删除win7安装盘下的文件。

为什么要谨慎呢?这就到了day2了。
由于老师给的实验用vdi文件删去了openSuSE诸多功能,另一位同学也想装双系统。有了前一天的经验,这边的工作似乎会很轻松了。同学分了个盘出来,顺序在win7安装盘之前。
中间有个插曲是同学的u盘是fat的,但openSuSE镜像超过4G了,原因请看这里。由于拷的时间很长,同学就拿了一张我先前刻的openSuSE,那张后来发现是坏的,虽然能在光驱里读出——又和前面同学的情况不同,这又是为什么呢——但是很多包都是坏的,包括引导。一个坏的引导比没引导更致命,装完后什么都进不去了,停在start cmain()。还是拿张win7的盘,先用win7的引导进到原来的系统。同时这边将u盘格式化为ntfs,按照day1的步骤win7硬盘安装openSuSE镜像。成功,用openSuSE的引导。但这次删win7安装盘下的文件不谨慎,重启之后出错,openSuSE的引导不知去向(为什么?),
好吧,再装win7,这次原来的win7是进不去了,重要的是找回openSuSE。
重新用local.exe,这次不管用了,menu.lst中的root我都修改过成了其所在的分区。
skip (hd0,0) //(hd0,0)是swap
(hd0,1):extfs2: //(hd0,1)是openSuSE的root,
又卡住了,再去试NeoSmart,还是卡在同样的地方。个人以为,如果那两个新建的分区如果不在win7安装盘的前面,应该是可以找的回来的。

到了这一步,day3的太阳快要升起了。。。

day3从头再来,先把前面的分区格式化,重装一下win7, 这时会出现一块隐藏的系统分区,这时的c盘已经是sda2了。还是用local.exe,安装重启之后,尝试进入增加的启动项
try (hd0,0): ntfs // 闪了一下,回到前面的启动项,应该没有指向grub,因为我无论怎么修改menu.lst 中的 root都没有用,又是个疑问
突然想到openSuSE安装选项中有从硬盘中选则的。用前面那张刻坏了的盘,加载完内核(应该还是好的)后,选择abort退出,选择installation, partition选sda2,在输入安装文件的路径,终于可以了。

这次没敢在删什么,c盘下的东西先留着吧,最后一个问题是怎么删除local.exe 加的启动项呢?

好吧,我早应该料到会有day4的, 这次前面都很顺利的, 装之前特地检查了一下有没有系统的隐藏分区, 之后win7硬盘启动, 装的时候有个地方选择启动项, 默认 MBR 与 / 都是disable的, 我犹豫了一下, 把两个都enable了, openSUSE是装好了, 结果 NTLDR is missing, 虽然很不情愿, 但是没有其他办法, 只好重装win7了,
下面还是用EasyBCD吧, grub4dos不是很熟。

每次都被折磨很长时间, 几乎每次都会遇到新的情况, 说到底还是自己基本功不行, 对许多东西一知半解。

同学们装linux的热情起来了,但是问题没有减少,这次是装ubuntu, 印象中在xp下装ubuntu, 分区是自动生成的。但是win7就不是这样,需要预言把盘隔好,隔盘之后就出现了问题,所有的扩展分区中的逻辑分区没有分开(都是ntfs)格式,怀疑和文件系统的格式有关,而且即使格式化为ext3,也是如此。只好重新隔盘,找个主分区给ubuntu, 安装中犯了个严重的错误,就是选引导程序的位置时,选了第二个分区,第一个空分区想留出来给win7,结果启动后就卡住了。应该是默认引导在第一个分区,但显然那个地方什么都没有,又悲剧了!


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

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:Google [Bot] 和 1 位游客


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

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

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