文章目录
  1. 1. 操作步骤
  2. 2. 进一步的设想
  3. 3. 参考文档

出于研究ROS2、Apollo等自动驾驶相关系统,需要安装一个ubuntu系统。Apollo显示要求Ubuntu18.04以上系统,ROS Humble版本要求Ubuntu 22.04。综合两者的要求,选择的最新的LTS版,Ubuntu 22.04.1 LTS进行安装。

操作步骤

具体操作步骤如下:

  1. 在Virtualbox新建虚拟机,注意以下两点:

    (1)在设置内存、处理器时,选中Enable EFI,以便将来系统既可以在UEFI下启动,也可以在Legacy BIOS下启动。

    (2)需要在新建虚拟磁盘时,选中Pre-allocate Full Size,新建固定大小的vdi文件。

  2. 启动虚拟机,安装系统,完成设置。根据ventoy的文档,完成安装后,部分linux系统需要Legacy BIOS启动的补充包(比如Deepin),Ubuntu不需要这一步就省略了。为了让ubuntu顺利支持ventoy,需要从https://github.com/ventoy/vtoyboot/releases下载一个压缩包,并解压后执行脚本,然后关机即可。

  3. 在Virtualbox的虚拟介质管理中,释放新建虚拟机的虚拟硬盘。然后在文件资源管理器中找到这个文件,将文件后缀名由.vdi改为.vdi.vtoy。再在Virtualbox中注册这个虚拟硬盘。注意,由于后缀名改了,注册时,文件类型要选择所有文件才能找到改后缀名后的虚拟硬盘文件。

  4. Ventoy官方网站下载最新版的Ventoy。自从 Ventoy 1.0.66 版本开始,Ventoy 支持启动本地硬盘中的镜像文件,这也是我们能使用Ventoy实现虚拟机、真机双启动的基础。

  5. 找一个不用的U盘,容量无所谓,使用Ventoy将其制作为启动U盘。再使用VentoyVlnk.exe程序,创建一个虚拟硬盘的链接文件,后缀为.vdi.vlnk.vtoy。将这个链接文件复制到Ventoy启动U盘的中。重启电脑,在启动选项中使用这个U盘作为启动盘,就会进入Ventoy界面,在Ventoy界面中,选择刚才复制过来的链接,就会从vdi虚拟硬盘中启动系统,从而实现真机上运行Ubuntu的功能,发挥其最大性能。

  6. 重启进入windows系统,仍然可以从Virtualbox中启动虚拟机运行Ubuntu。

至此,目标完成。

撰文时VirtualBox版本为7.0.2 ,Ventoy版本为1.0.84。

进一步的设想

windows在真机启动后,能将ubuntu作为虚拟机启动,是因为ubuntu是存在于一个vdi虚拟硬盘中。而windows本身也是可以安装在vhd文件中的,如果真机上的windows以vhd的形式启动,是否能在ubuntu中将windows也作为虚拟机启动,从而实现windows和ubuntu互为虚拟机呢?

这个方案如果要实现,需要在通过ventoy启动ubuntu时,在ventoy的配置中,将VTOY_LINUX_REMOUNT配置为"0"。ventoy的文档对这个功能是这样描述的。

“0”: Linux启动后不需要继续访问ISO文件所在的分区。 “1”: Linux启动后需要继续访问ISO文件所在的分区。默认值是 “0”。 该选项只对 Linux 系统镜像有效。 默认情况下,受Linux内核相关功能的限制,对于Linux系统,在启动后无法继续访问ISO文件所在的分区。在mount的时候会提示 device busy。 如果这里选择 1,则 Ventoy 会尝试通过一些特殊的手段绕过内核的这个限制,但是这个功能是实验性质的,没有经过大规模和长时间的验证。

这样就能在ubuntu启动后,继续访问启动时的硬盘,从而在ubuntu中访问windows的vhd文件。此时使用虚拟机挂载这个虚拟硬盘,应该就可以在虚拟机中启动windows了。

不过这个还是一个设想,没有尝试过,先记录在这。

参考文档

  1. Plugin.VtoyBoot . Ventoy:Linux vDisk 文件启动插件
  2. Plugin.control . Ventoy:Ventoy 全局控制插件
文章目录
  1. 1. 操作步骤
  2. 2. 进一步的设想
  3. 3. 参考文档