0
点赞
收藏
分享

微信扫一扫

使用Virutalbox实现从本地硬盘启动系统

小布_cvg 2022-05-02 阅读 53
linux

使用双系统有很多苦恼,双系统套虚拟机更加烦人,但是因为一些平台专有软件,双系统和双系统套虚拟机又不得不用起来。

先说一下单纯双系统和双系统套虚拟机的缺点。

单纯双系统的缺点:

1.使用Windows时想着Linux下shell脚本的方便,utf8编码的好处,编译工具链的好用。。。

2.使用Linux时想着QQ一类的软件还是得用,尤其是嵌入式专业的,Linux下可没有Keil和Proteus。

3.使用特定软件要重启切换系统(最麻烦)。

双系统套虚拟机的缺点:

1.虚拟机额外占存储空间且Windows上配置Linux虚拟机,Linux上配置Windows虚拟机,相当于要安装配置4个系统,Windows下的软件装两套,Linux下的软件装两套。

2.虚拟机性能差,CPU虚拟化延时,硬盘IO读写延迟。。。

3.系统间数据难以互通,各种不方便,尤其是Windows下对EXT4等格式分区的读写非常不方便(官方没解决方案,第三方解决方案要钱且体验不好)

解决方案:物理磁盘分区安装双系统并使用VirtualBox配置启动,我称之为OS_Link方案。

我的经历和解决方案:

需求:

我的电脑是7700HQ的游戏本,GTX1050 2GB独显,16G内存,平时主要写写C/C++代码(单片机和QT小程序),偶尔也交叉编译一些软件放在Linux板子上跑(需要配置TFTP和NFS服务等,当然要用到Linux),偶尔也玩玩3A(原神,大误。。。这个VirtualBox跑不了,性能很差且需要折腾虚拟机反检测)

操作:

我的硬盘是1T的Nvme+1T机械,为了性能考虑,肯定是在Nvme上安装系统,具体分区如下

安装的系统是Windows10和Manjaro KDE(到手即用不折腾) 。

系统安装完毕之后各自配置系统,没什么好说的。

各自安装VirtualBox虚拟机,下一步和pacman -S即可,没什么好说的。

最关键的一步,建立对物理磁盘分区的映射文件。

根据官方教程进行配置。网址(https://www.virtualbox.org/manual/UserManual.html#rawdisk),具体文字放在文章最后了,警告不用看,系统坏了修就是了,况且没那么容易坏。

在Linux下建立磁盘分区映射(映射必须使用vmdk格式)

# 首先设置设备读写权限
sudo chmod 666 /dev/nvme0*
sudo chmod 666 /dev/sda*
# 建立映射文件
VBoxManage internalcommands createrawvmdk -filename link_nvme0n1.vmdk -rawdisk /dev/nvme0n1 -relative
VBoxManage internalcommands createrawvmdk -filename link_nvme0n1p1234.vmdk -rawdisk /dev/nvme0n1 -partitions 1,2,3,4 -relative
VBoxManage internalcommands createrawvmdk -filename link_nvme0n1p34.vmdk -rawdisk /dev/nvme0n1 -partitions 3,4 -relative
VBoxManage internalcommands createrawvmdk -filename link_sda.vmdk -rawdisk /dev/sda -relative

然后你会获得这些

找个地方存放起来。

 然后在VirtualBox里面配置(除了硬盘配置以外,其他和正常虚拟机一样,为了方便使用,建议网络配置为桥接网卡,不这样也可以)

 详情介绍一下为什么使用link_nvme0n1p34.vmdk(映射nvme0n1但只允许读写3、4分区)而不是link_nvme0n1.vmdk(映射nvme0n1)?

这是为了防止对其他分区(Linux分区)的误操作(比如使用分区管理工具删除分区之类的)。

讲一下为什么使用Nvme分区却配置的SATA控制器?

因为Nvme控制器启动Windows10报错(我没有深究原因,能用就行,折腾Arch确实可以让人深切认同简单就是美的真理)。

为什么单独创建了一个Windows10_boot.vmdk(1G,动态分配)的盘?用来装ESP分区(300M以上就行),使用WinPE镜像启动虚拟机,新建ESP分区(可以使用DiskGenius之类的软件),然后使用UEFI修复工具给物理盘上的Windows10装引导(这样就能用虚拟的引导文件启动物理盘中的Windows10了,可以防止对真实的引导分区造成破坏)。

上一个效果

 注意事项,每次使用这种虚拟机之前需要修改设备访问权限,也就是sudo chmod 666 /dev/nvme0*之类的。可以编写脚本自动执行也可以改mdev配置向。没有别的了。

Windows下同理,不需要也没法改设备访问权限,直接使用管理员模式执行命令和打开虚拟机即可,其他参照上述步骤。

举报

相关推荐

0 条评论