需求
因工作需要,我得在Dell移动工作站上安装Windows-Linux双系统。之前用了WSL一段时间,一般服务非常便利,在systemd、系统迁移备份方面遇到一些麻烦。我不想继续折腾,故选择安装Linux虚拟机,虽然笨些,但耗时平稳,兼容性风险小。
把Linux用VirtualBox安装到单独的硬盘后,不仅可以使用VirtualBox启动Linux,也可以直接从BIOS启动Linux。就好比从大门进入卧室需要穿过客厅,现在直接在卧室开侧门,要进卧室,从大门侧门都可以。
操作步骤
1. 腾出一块磁盘
准备好所腾出磁盘的序号
- 按Win+R运行
diskmgmt.msc
打开磁盘管理 - 鉴别出所腾出的磁盘,记住其序号(如
0
),后面需要用到(如SELECT DISK 0
,PhysicalDrive0
)
2. 使用DISKPART修改磁盘属性
打开命令行窗口(以管理员身份运行),执行diskpart
- 执行
SELECT DISK 0
选择要操作的磁盘 (0代表所腾出磁盘的序号) - 执行
ATTRIBUTES DISK CLEAR READONLY
清除只读标记,并执行ATTRIBUTES DISK
确认只读:否
- 执行
OFFLINE DISK
使磁盘离线,并执行LIST DISK
确认状态:脱机
- 执行
EXIT
退出DISKPART
注: 参见 VM on RAW disk on Windows 7 host
4. 创建虚拟磁盘文件
- 使用VirtualBox创建一个虚拟机(暂不分配磁盘)
- 打开CMD窗口,转到新建的虚拟机目录(如
cd C:\Users\Administrator\VirtualBox VMs\ubuntu-desktop
- 将VBoxManage.exe所在的目录临时加入到Path(如
set Path=%Path%;C:\Program Files\Oracle\VirtualBox
) 或用"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
代替后续的VBoxManage
命令) - 执行
VBoxManage internalcommands listpartitions -rawdisk \\.\PhysicalDrive0
根据容量确认\\.\PhysicalDrive0
即所腾出的磁盘 - 创建虚拟磁盘如ubuntu-desktop.vmdk,
VBoxManage internalcommands createrawvmdk -filename ubuntu-desktop.vmdk -rawdisk \\.\PhysicalDrive0VBoxManage createmedium disk --filename=ubuntu-desktop.vmdk --variant=RawDisk --format=VMDK --property RawDrive=\\.\PhysicalDrive0
- 在VirtualBox中设置虚拟机,将新建的ubuntu-desktop.vmdk分配给虚拟机
5. 给虚拟机安装操作系统
- 保证所选的操作系统镜像包含non-free firmware
- Debian系统镜像必须是带non-free firmware的,否则从物理机启动时容易缺驱动而麻烦。
- Ubuntu系统镜像自带了non-free firmware,不需要担心一般的驱动问题。
- 操作系统安装完成后,启动虚拟机并安装Virtual GuestAdditions
6. 从BIOS启动新安装的操作系统
- 开机时进入BIOS,在EFI启动列表中把
GRUB
挪到首位。 - 从BIOS启动Ubuntu前,以Dell Precision 7520为例,如果启动Windows时用的SATA Operation是
RAID on
模式,那么需要把System Configuration/SATA Operation从RAID on
改成AHCI
。下次启动Windows前先进入BIOS把它从AHCI改回RAID on
。因SATA Operation改动导致的启动失败无须理会,重试3次,Windows会自动记住接受接受AHCI方式启动。
总结
- 创建虚拟机前,保证所选磁盘离线,并清除磁盘的只读标记
- 用VirtualBox安装Linux到虚拟机时,设置启用EFI,并设置硬件时钟UTC
- 从BIOS启动Linux/Windows前,
AHCI
/RAID on
模式的切换
参考