之前我转载了一篇Windows下BCD引导Ubuntu实现双系统无缝切换的博文,里面说的引导opensuse没有成功,这里原作者有一篇关于opensuse的博文,不过我还是没能弄好,真是技术不到家啊*_*,顺便也转过来!原文在这里,下面开始:
步骤:
1. 硬盘安装OpenSUSE(我这里是OpenSUSE12.2),在安装的时候,记得不要选择自动配置,同时手动分出一个/boot分区,并且选择将GRUB2安装在指定的/boot分区。/boot分区不需要很大,100MB足矣。至于如何在安装opensuse时分区我就不说了,反正一切小心,避免弄丢windows的分区。此时你可以记下/boot分区所在的挂载点,比如我的是/sda2
2. 安装完成后,重启就会发现Windows 和 Linux 系统都是由GRUB2引导的,这时进入OpenSUSE,然后在终端下输入:
dd if=/dev/sda2 of=suse.bin bs=512 count=1
(这个命令需要root权限来执行,我一般是先输入su,然后输入密码,之后的操作都是处在root权限下了。)
这条命令的含义:
if 就是input file,输入文件的意思(我猜的)
of就是output file,输出文件的意思(还是猜的)
Bs就是 block size,块的大小(还是猜的)
count就是次数,表明要复制数据块的次数(还是猜的)
if=/dev/sda2 这个sda2就是/boot所在的分区,根据自己的情况修改。(这个地方最容易出错)
of=suse.bin ”of= “后面跟的是路径+文件名,如果像我这样写的话,suse.bin文件就在当前命令所在的文件夹下面,你可以可以加上自己的路径比如 of=/home/suse.bin 。这样的话suse.bin就在home文件夹下面了。其中suse.bin文件名和扩展名随便写,二进制级别的复制,注意不要用中文。
3. 把生成的suse.bin复制到windows的分区下,如果没有加载windows分区的话,也可以复制到U盘。多复制几份,以后用得着。
4. 重启选择进入windows8,将刚才的suse.bin复制到C盘根目录,其他分区也可以,这里以C盘根目录为例。
以管理员身份打开CMD,然后输入以下命令创建实模式启动项:
Bcdedit /create /d "OpenSUSE" /application bootsector
此时会得到一长串的GUID,这里以123456为例,复制一下。后面要用到三次.
(插叙一条:此时如果创建不成功,提示什么无法创建启动配置集之类的话,进入磁盘管理,把C设为活动分区就好。)
再次输入命令指定分区设备:
Bcdedit /set {123456} device partition=c:
这里的C:是因为susu.bin放在了c根目录。
再再次输入指定启动路径:
Bcdedit /set {123456} path \suse.bin
Path 参数后面跟的是suse.bin的路径,因为前面已经指定了启动分区是C,而我们的suse.bin又在C根目录,所以这里就是\suse.bin
最后再加一条命令把这个启动项顺序调整为最后,我觉得不加这条也行,但是不加这条的命令的话,通过bcdedit命令查看启动项的时候没有刚才添加的那个opensuse启动项,不晓得为什么。
Bcdedit /displayorder {123456} /addlast
5. 上面的操作完成后在CMD中输入bcdedit 可以查看启动项已经添加成功,重启就会看到由BCD引导的OpenSUSE的启动项了。
============================================================
如果已经安装了OpenSUSE,但是后来重装了Windows后MBR重写了,则可以选择使用winhex这个软件来在Windows下打开物理硬盘,然后导出Linux启动分区的前512个字节,做成启动文件。