首页 » IT技术 » 正文

在UEFI下使用grub2引导VHD安装多系统的一种方式 非memdisk (主板只支持UEFI的可以参考)

背景:
补充一点信息,之前写过一个关于使用grub2+memdisk启动ISO镜像和VHD系统的文章http://www.frogchou.com/?p=466,经过实际检验,在使用过程中是有一定局限性的,其bios必须是传统模式,也就是说grub2+memdisk启动ISO和VHD时,要有两个条件,1、电脑bios必须是传统模式,2、被引导磁盘的分区表必须是MBR。
由于当时考虑的是windows to go 即把系统装在U盘上,第2个条件是可以自己控制的,把U盘分区表设置为MBR即可。但是第1个条件目前来看受制于主机,有很大不确定性。原先以为现在大多数电脑应该是legacy和uefi共存,毕竟传统模式也不是一时半会回被完全淘汰的,实时上也确实如此,使用传统模式的电脑有很多,主板支持legacy和uefi的主机是绝大多数,但是最近遇到的事情让人很郁闷,就是公司给我配备的华为matebook D(2018版) 可以说是电脑中的奇葩,这电脑竟然没有传统模式。事情本来很简单,在电脑上转一个linux系统,然后使用VHD装一个windows10,一个windows server 2012,然后使用VHD差分备份和还原系统,多么单纯的想法,偏偏被这破bios打破,没办法,另寻他了吧。

思路:
1、依然使用grub2引导系统;
2、使用bootice在存放windows VHD文件的分区上安装ntldr引导器;
3、使用bcdboot复制任意一个windows10系统的引导程序,并使用bootice编辑复制的BCD文件,加入VHD引导。
4、编辑grub2配置文件,使用chainloader 连接到windows VHD所在分区的引导程序。

准备工作:
一个安装好了linux系统(任意,使用grub2引导程序即可)、一个已经安装了windows的 VHD文件、bootice软件、bcdboot命令、imagex软件。

实现:
安装linux系统就不多说了,直接将linux系统安装在电脑硬盘上。
将windows系统安装到 VHD ,简单说一下,步骤:
1、使用windows系统装在windows ISO镜像,假设装载在了G盘。
2、使用windows磁盘管理器创建一个VHD磁盘,设置好大小,并挂载在系统中,假设挂载后为K盘
3、在images软件的imagex.exe所在的目录下,使用命令行(管理员身份)执行命令:imagex.exe /apply G:\sources\install.wim 1 K:
这里注意参数“1”,具体根据windows ISO镜像文件windows 版本 存放的卷编号一致。(一个windows 镜像中可能包含不同版本的windows)
4、等待将系统安装到VHD后卸载VHD。

将安装了系统VHD放在电脑的某个硬盘分区上,肯定是NTFS文件系统了,假设是S盘
使用bootice为这个分区安装ntldr引导器。
使用 bcdboot C:\Windows /l zh-cn /s S: 将默认 BCD 区域设置设为简体中文,并将 BCD 文件复制到 S: 分区 。(可以在其他电脑上完成,如果本机没有windows的话,然后将S盘中生成的文件拷贝到你向拷贝的地方就行了。)
进入磁盘上的linux系统,编辑grub.conf,添加引导windows的项目:
menuentry ‘Windows 10 (on /dev/sda1)’ –class windows –class os $menuentry_id_option ‘osprober-chain-081A56E11A56CB78′ {
insmod part_msdos
insmod ntfs
set root=’hd0,msdos1′
if [ x$feature_platform_search_hint = xy ]; then
search –no-floppy –fs-uuid –set=root –hint-bios=hd0,msdos1 –hint-efi=hd0,msdos1 –hint-baremetal=ahci0,msdos1 081A56E11A56CB78
else
search –no-floppy –fs-uuid –set=root 081A56E11A56CB78
fi
parttool ${root} hidden-
drivemap -s (hd0) ${root}
chainloader +1
}

总结
本来想把实现写的细一点,但是后来发现会累死,重点在思路,实现的方式和工作很多。需要注意的是,这是一个在PC上安装多系统的方式,U盘上应该也是可以的,具体没有试过,这种方式不太好的地方就是如果只用一个liunx的系统,应该是不太容易使用上面的方案,毕竟有些工具是要在windows下才能用的。不过也许有高人呢,或者把硬盘拆了放到其他电脑上操作。。。。。。想吧。。。。

发表评论