如何设置 VirtualBox VM 使用所需的分辨率,而无需编辑引导加载程序配置或传递内核参数

如何设置 VirtualBox VM 使用所需的分辨率,而无需编辑引导加载程序配置或传递内核参数

我想在 VirtualBox 中测试许多 liveCD 发行版(具体来说,想测试它们的安装程序)。一些Linux发行版使用基于curses的安装程序(不是X11)。默认情况下,VM 的窗口是 800x600,这非常不方便(菜单很难导航,尤其是在分区点)。我知道我可以通过 nomodeset 传递 vga=NNN 或仅将 video=XxY 参数传递给内核,但由于快速重新启动机器,我需要经常这样做。我知道我可以重新制作 iso 映像,因此它们默认包含提到的参数。但它不太实用,因为我需要手动编辑我想要测试的每个 iso 映像。

所以问题是:有没有一种方法可以设置 VirtualBox 机器,以便加载的操作系统将其控制台分辨率默认为某个方便的值?

我知道您可以使用 VBoxManage setextradata "VM name" 设置某些机器的参数...
例如:

VBoxManage setextradata "VM name" VBoxInternal2/EfiGopMode 2  
VBoxManage setextradata "VM name" VBoxInternal2/EfiGraphicsResolution HxV  
VBoxManage setextradata "VM name" VBoxInternal2/UgaHorizontalResolution 1920  
VBoxManage setextradata "VM name" VBoxInternal2/UgaVerticalResolution 900  
VBoxManage setextradata "VM name" "CustomVideoMode1" "1400x1050x16" 

然后,您可以通过以下方式获取计算机的自定义设置:VBoxManage getextradata“VM Name”。

其中可能有一些有用的东西可以解决我的请求吗?

答案1

TLDR:efi 模式是可能的,但具有预定义的分辨率之一(不是随机的)。对于遗留模式我还没有找到解决方案。

根据手册,3.14.1。 EFI 中的视频模式

EFI 提供两种不同的视频接口:GOP(图形输出协议)和 UGA(通用图形适配器)。现代操作系统,例如Mac OS X,通常使用GOP,而一些较旧的操作系统仍然使用UGA。 Oracle VM VirtualBox 提供了一个配置选项来控制两个接口的图形分辨率,这使得差异对于用户来说几乎无关紧要。

默认分辨率为 1024x768。要选择 EFI 的图形分辨率,请使用以下 VBoxManage 命令:

VBoxManage setextradata "VM name" VBoxInternal2/EfiGraphicsResolution HxV 从以下默认分辨率列表中确定水平分辨率 H 和垂直分辨率 V:

VGA 640x480、32bpp、4:3

SVGA 800x600、32bpp、4:3

XGA 1024x768、32bpp、4:3

XGA+ 1152x864、32bpp、4:3

高清 1280x720、32bpp、16:9

WXGA 1280x800、32bpp、16:10

SXGA 1280x1024、32bpp、5:4

SXGA+ 1400x1050、32bpp、4:3

WXGA+ 1440x900、32bpp、16:10

高清+ 1600x900、32bpp、16:9

UXGA 1600x1200、32bpp、4:3

WSXGA+ 1680x1050、32bpp、16:10

全高清 1920x1080、32bpp、16:9

WUXGA 1920x1200、32bpp、16:10

DCI 2K 2048x1080,32bpp,19:10

全高清+ 2160x1440、32bpp、3:2

无名 2304x1440,32bpp,16:10

四高清 2560x1440、32bpp、16:9

WQXGA 2560x1600、32bpp、16:10

QWXGA+ 2880x1800、32bpp、16:10

QHD+ 3200x1800、32bpp、16:9

WQSXGA 3200x2048,32bpp,16:10

4K 超高清 3840x2160、32bpp、16:9

WQUXGA 3840x2400、32bpp、16:10

DCI 4K 4096x2160,32bpp,19:10

HXGA 4096x3072、32bpp、4:3

超高清+ 5120x2880、32bpp、16:9

WHXGA 5120x3200、32bpp、16:10

WHSXGA 6400x4096,32bpp,16:10

HUXGA 6400x4800、32bpp、4:3

8K 超高清2 7680x4320、32bpp、16:9

如果此默认分辨率列表不能满足您的需求,请参阅第 9.7.1 节“自定义 VESA 分辨率”。注意,自定义视频模式下指定的颜色深度值必须指定。接受 8、16、24 和 32 的颜色深度。默认情况下,EFI 假定颜色深度为 32。

仅当 VM 关闭时才能更改 EFI 默认视频分辨率设置。

在以前的手册版本中,有 VBoxManage setextradata "VM name" VBoxInternal2/EfiGopMode N 的描述

其中N可以是0,1,2,3,4之一,分别指640x480、800x600、1024x768、1280x1024、1440x900屏幕分辨率。也许现在已经过时了。

我不知道是否可以对 efi 模式使用任何自定义分辨率。似乎将自定义值设置为 EfiGraphicsResolution 不起作用。如果您知道,请分享您的知识。

现在传统 BIOS 模式怎么样?
根据手册,9.7.1。自定义 VESA 分辨率

除了标准 VESA 分辨率之外,Oracle VM VirtualBox VESA BIOS 还允许您添加最多 16 种自定义视频模式,这些模式将报告给来宾操作系统。将 Windows guest 虚拟机与 Oracle VM VirtualBox Guest Additions 结合使用时,将使用自定义图形驱动程序而不是后备 VESA 解决方案,因此此信息不适用。

可以使用额外数据功能为每个 VM 配置其他视频模式。额外数据键称为 CustomVideoMode,x 是 1 到 16 之间的数字。请注意,模式将从 1 开始读取,直到以下数字未定义或达到 16。以下示例添加了与许多笔记本电脑的本机显示分辨率相对应的视频模式:

VBoxManage setextradata "VM name" "CustomVideoMode1" "1400x1050x16" 自定义视频模式的 VESA 模式 ID 从 0x160 开始。为了使用上面定义的自定义视频模式,必须向 Linux 提供以下命令行:

VGA = 0x200 | 0x160 vga = 864 对于具有 Oracle VM VirtualBox Guest Additions 的来宾操作系统,可以使用视频模式提示功能设置自定义视频模式。

所以看来你无论如何都需要使用 vga= 参数,所以它对你的需求没有用处。

我不知道 UgaHorizo​​ntalResolution 和 UgaVerticalResolution 选项的效果,似乎不起作用。如果您知道如何在旧模式下实现请求,请分享您的知识。

我认为 VirtualBox 的虚拟显示器可能会回答内核,它只支持我想要的分辨率之一,所以 kms 将使用它。

相关内容