用QEMU玩转Ubuntu+Win7双系统启动
用QEMU玩转Ubuntu+Win7双系统启动
在一台电脑上同时运行多个操作系统,是很多技术爱好者和开发者的常见需求。使用QEMU模拟器,我们可以轻松实现Ubuntu和Windows 7的双系统启动。本文将详细介绍如何使用QEMU创建虚拟磁盘、安装操作系统,并实现双系统启动。
环境准备
安装QEMU
在Ubuntu系统中安装QEMU,可以按照以下步骤操作:
- 打开终端窗口。
- 更新软件包列表:
sudo apt update
- 安装QEMU及其相关组件:
sudo apt install qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager
qemu
:QEMU模拟器的主要包。qemu-kvm
:QEMU的KVM支持(用于硬件虚拟化)。libvirt-daemon
:用于管理虚拟化的后台进程。libvirt-clients
:提供了一套用于管理虚拟化的客户端工具。bridge-utils
:提供了创建和管理网络桥接的工具。virt-manager
:是一个图形化的虚拟机管理器,可以通过它来管理和配置虚拟机。
- 验证安装:
qemu-system-x86_64 -version
这应该会显示QEMU的版本信息。
创建虚拟磁盘
使用qemu-img
指令创建一个虚拟磁盘test.img
,默认设置为raw格式,同时指定存储空间大小为60G。
qemu-img create -f raw test.img 60G
注意此时只是一个虚拟磁盘,并没有产生占用空间,所以硬盘占用为0G。
准备操作系统镜像
从网上下载Windows 7和Ubuntu的ISO镜像文件:
win7.iso
ubuntu_amd64.iso
安装操作系统
安装Windows 7
使用qemu-system-x86_64
指令启动64位机的模拟程序,设置内存大小为8G,虚拟磁盘为test.img
,光驱为win7.iso
,4核CPU。另外指定为从光驱启动,这样可以运行Windows 7的安装程序。
qemu-system-x86_64 -m 8G -hda test.img -cdrom win7.iso -smp 4 -boot d
根据提示完成Windows系统的安装。在安装时划分磁盘,为Linux系统预留空间。
安装Ubuntu
使用相同的指令启动虚拟机,但将光驱镜像改为Ubuntu的ISO文件:
qemu-system-x86_64 -m 8G -hda test.img -cdrom ubuntu_amd64.iso -smp 4 -boot d
在安装Ubuntu时,为了正确启动双系统,我们需要进行如下准备与操作:
查看Windows 7系统信息可以发现为BIOS启动,由MBR引导。Windows 7安装系统时会自动在C盘前划分出一块100MB大小的活动分区。该活动分区中存有MBR,相关引导文件以及Windows内核。BIOS启动时不支持双系统。一般而言,BIOS会默认读取第一扇区的512字节。如果该扇区为MBR则启动成功,否则失败。
根据BIOS启动的方式我们不难发现,此方式无法启动双系统。这就是为什么我们会遇到安装完Ubuntu之后再运行虚拟机,会自动进入Windows 7系统的问题了。因为BIOS会默认读取Windows 7的MBR,然后拉起Windows 7。
要解决这个问题,要么设置启动方式为UEFI启动(该启动方式支持多操作系统启动),要么让Ubuntu改写MBR,让MBR跳转到EFI分区中。简单来说,UEFI不像BIOS一样把代码存在ROM中,而是在硬盘上设置了一个.efi格式的文件,该文件中存有UEFI启动代码以及多个操作系统的boot_loader(每个操作系统都有一个boot_loader,例如Windows 7的MBR,Ubuntu的GRUB_2)。启动时,可以选择由哪个boot_loader启动。
但是我们安装的Windows 7为BIOS启动,如果我们安装了用UEFI启动的Linux,很可能不兼容出问题。所以我们只能采取第二种方法:修改MBR,让它跳转至GRUB。(幸运的是这个过程Ubuntu会帮我们自动完成)
安装Ubuntu时,将硬盘的剩余空间进行划分,挂载
\root
以及设置一个.efi
的分区。(当然如果硬盘够大,可以分别设置分区挂载\boot
,\swap
,\user
,\home
。这些分区具体功能不多赘述)然后进行安装。完成步骤4之后,我们启动时MBR会跳转入GRUB。多亏了GRUB_2支持多级引导功能。简单而言,GRUB不仅支持Ubuntu启动,同时它也可以启动
winload.exe
。GRUB拉起winload.exe
,然后再由winload.exe
拉起Windows 7系统。所以到此为止,双系统安装已经成功了。
配置双系统启动
Windows 7启动方式
依旧使用x86_64模拟器启动虚拟机,启动时可以使用参数来配置虚拟机。但是默认的bios-256k
不支持Windows 7,所以要指定bios.bin
qemu-system-x86_64 -m 8G -smp 4 -boot c -hda test.img -bios bios.bin
Ubuntu启动方式
qemu-system-x86_64 -m 8G -smp 4 -boot c -hda test.img [-bios bios.bin]
使用与管理
切换系统
要切换启动系统,只需在启动QEMU时更改ISO镜像文件即可。例如,要启动Windows 7:
qemu-system-x86_64 -m 8G -hda test.img -cdrom win7.iso -smp 4 -boot d
要启动Ubuntu:
qemu-system-x86_64 -m 8G -hda test.img -cdrom ubuntu_amd64.iso -smp 4 -boot d
网络配置
QEMU支持多种网络配置方式,包括用户模式网络、TAP网络等。最简单的方式是使用用户模式网络:
qemu-system-x86_64 -m 8G -hda test.img -net nic -net user
这将为虚拟机提供基本的网络访问能力。
常见问题
图形界面无法显示:确保已正确设置
DISPLAY
环境变量。在WSL中,需要编辑~/.bashrc
或~/.zshrc
,添加以下内容:export DISPLAY=$(grep nameserver /etc/resolv.conf | awk '{print $2}'):0 export LIBGL_ALWAYS_INDIRECT=1
启动时自动进入Windows 7:确保在Ubuntu安装时正确配置了GRUB引导加载程序。
网络连接问题:检查QEMU的网络配置参数是否正确。
通过以上步骤,你可以在一台电脑上同时运行Ubuntu和Windows 7,实现双系统启动。这种方法非常适合用于学习计算机科学原理、测试不同操作系统环境或运行特定软件。希望这篇文章能帮助你顺利搭建起自己的双系统环境!