附文:《Vista SP1不支持Vista/Linux双启动》
前微软已经承认,当用户拥有Vista Enterprise/Ultimate和Linux双系统,且Linux的引导被安装至MBR的情况,在升级Vista至SP1版时会遇到麻烦。
据悉微软的SP1补丁包KB935509具有新版的bootloader,在升级SP1时,原系统中的bootloader可能已经被开源版的 bootloader程序所取代,例如Grub.目前微软已经解释了该问题出现的原因,Vista SP1补丁包中包含了BitLocker功能的更新,更换开机引导程序bootloader的目的是为了让系统能在引导时加载驱动器加密和 BitLocker技术.
目前更新SP1时“信任链”平台的完整启动顺序如下,首先从机器上的TPM芯片读取信息,然后通过MBR和操作系统进行引导.而双启动的情况下,Vista中的Bootloader如果被替代,系统完整性检查会失败,该SP1安装也会失败,同时系统也将无法正常开机.
微软技术顾问Michael Kleef解释说:“BitLocker不仅关系到加密和系统验证,也关系到数据的完整性.BitLocker按照顺序进行检查,如果它发现了一些不匹配的东西,它将拒绝系统分区将导致Vista崩溃无法启动。
对于用户来说,如果Linux和Vista分区安装到同一个驱动器,用户必须恢复Vista的Bootloader然后才能进行SP1升级.如果操作系统不是在同一块硬盘,那么问题就小的多,用户只需要在BIOS中改变硬盘开机顺序即可.
另外,Vista SP1安装失败并不取决于你是否打开BitLocker特性,只要操作系统安装了BitLocker你就避免不了这种情况.默认情况下,也只有Vista Enterprise和Ultimate两个版本自动安装了BitLocker特性,所以,目前仅有这两种操作系统的用户会受到影响.
值得注意的是,可以配置/dev/sda8上的grub引导菜单,通过下面的方式返回Vista引导器,能继续Vista的引导过程。
——————–
title Return to Vista Boot Menu
rootnoverify (hd0,0)
chainloader +1
——————–
可见就算Vista的引导比较受限,多重引导Linux仍然是可行的。那些给出不支持双启动标题的文章,估计会误导不少Linux的潜在用户。不管你怎么看待,我认为那是相当不责任的,甚至是恶意的。
另一个值得关注的Vista多重引导问题是磁盘分区表,所有的Vista都受到影响。
简单来说就是Vista的磁盘分区工具会创建与以前所有操作系统不兼容的分区表,分区与分区之间的间隙被增大。混合Vista的分区和旧有风格的分区(与分区上文件系统无关)可能会导致分区丢失、分区重叠等严重的数据丢失问题。
如果要多重启动,就一定不要使用Vista系统附带的工具分区,包括磁盘管理和安装界面上的分区工具。可以在Vista安装前用第三方工具分好区给Vista使用,也可以在Vista上使用第三方工具(如Acronis Disk Director Suite)分区,但在Vista系统之外调整Vista系统分区将导致Vista崩溃无法启动。
大家可能从网上看到一则类似于《Vista SP1不支持Vista/Linux双启动》的文章,本文后面附了一份原文供参考。
已经明确的是,用户拥有的Vista Enterprise/Ultimate SP1版中附带的BitLocker功能需要引入引导过程中的“信任链”平台验证,结果会导致非微软的引导器被安装至MBR时,Vista将无法启动。
至于这是否就意味着Vista SP1必须独霸一块硬盘,我是相当怀疑的。Vista自身附带了一个多重引导器,就算不能通过GRUB/LILO引导Vista,反向引导Linux应该没有问题。为了验证这一想法,我在一台已经安装了Vista SP1的笔记本上创建了如下磁盘分区用于测试。
Disk /dev/sda: 250.0 GB, 250059350016 bytes
240 heads, 63 sectors/track, 32301 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 4163 31472248+ 7 HPFS/NTFS
/dev/sda2 4164 32301 212723280 5 Extended
/dev/sda5 4164 11099 52436128+ 7 HPFS/NTFS
/dev/sda6 11100 19424 62936968+ 7 HPFS/NTFS
/dev/sda7 19425 30523 83908408+ 7 HPFS/NTFS
/dev/sda8 30524 32301 13441648+ 83 Linux
此磁盘分区结构从开始安装Linux到安装完成、能正常使用都一直保持上述状态。
先在/dev/sda8这一逻辑分区上安装CentOS5。值得注意的是GRUB引导器安装时选择定制高级选项和安装到/dev/sda,随后选择安装到/dev/sda8而非MBR,其他的安装步骤与平常并无不同。其他发行版本类似处理即可。
完成后CentOS暂时是不能引导的。下面回到Vista中,打开命令行执行:
bcdedit /create {ntldr} /d “Earlier Windows OS Loader”此时应该提示此条目已存在或创建成功。此时并不需要从旧的XP中复制ntldr文件
下面需要的是grub4dos中的两个文件:grldr.mbr和grldr。将它们复制到C:\
http://www.linuxidc.com/Linux/2009-01/18027.htm
再创建文件 C:\boot.ini
——————–
[boot loader]
timeout=0
default=C:\grldr.mbr
[operating systems]
C:\grldr.mbr=”Start CentOS Now!”
——————–
总结一下,现在C盘根目录下多了3个文件: grldr.mbr grldr boot.ini
重启动机器,多了Vista引导菜单,选择其中的”Start CentOS Now!”。/dev/sda1中的grldr找不到配置文件,第一次只需选择 find /boot/grub.conf,便能顺利从/dev/sda8上引导进入CentOS,下次就会自动选择此项。如果你安装Linux分区结构不同,比如单独为/boot提供分区,就需要选择 find /grub.conf。