It is possible for efi mode, but with one of pre-defined resolution (not random).
For legacy mode I did not found a solution yet.
According to manual, 3.14.1. Video Modes in EFI
EFI provides two distinct video interfaces: GOP (Graphics Output
Protocol) and UGA (Universal Graphics Adapter). Modern OSes, such as
Mac OS X, generally use GOP, while some older ones still use UGA.
Oracle VM VirtualBox provides a configuration option to control the
graphics resolution for both interfaces, making the difference mostly
irrelevant for users.
The default resolution is 1024x768. To select a graphics resolution
for EFI, use the following VBoxManage command:
VBoxManage setextradata "VM name" VBoxInternal2/EfiGraphicsResolution
HxV Determine the horizontal resolution H and the vertical resolution
V from the following list of default resolutions:
VGA 640x480, 32bpp, 4:3
SVGA 800x600, 32bpp, 4:3
XGA 1024x768, 32bpp, 4:3
XGA+ 1152x864, 32bpp, 4:3
HD 1280x720, 32bpp, 16:9
WXGA 1280x800, 32bpp, 16:10
SXGA 1280x1024, 32bpp, 5:4
SXGA+ 1400x1050, 32bpp, 4:3
WXGA+ 1440x900, 32bpp, 16:10
HD+ 1600x900, 32bpp, 16:9
UXGA 1600x1200, 32bpp, 4:3
WSXGA+ 1680x1050, 32bpp, 16:10
Full HD 1920x1080, 32bpp, 16:9
WUXGA 1920x1200, 32bpp, 16:10
DCI 2K 2048x1080, 32bpp, 19:10
Full HD+ 2160x1440, 32bpp, 3:2
Unnamed 2304x1440, 32bpp, 16:10
QHD 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 UHD 3840x2160, 32bpp, 16:9
WQUXGA 3840x2400, 32bpp, 16:10
DCI 4K 4096x2160, 32bpp, 19:10
HXGA 4096x3072, 32bpp, 4:3
UHD+ 5120x2880, 32bpp, 16:9
WHXGA 5120x3200, 32bpp, 16:10
WHSXGA 6400x4096, 32bpp, 16:10
HUXGA 6400x4800, 32bpp, 4:3
8K UHD2 7680x4320, 32bpp, 16:9
If this list of default resolution does not cover your needs, see
Section 9.7.1, “Custom VESA Resolutions”. Note that the color depth
value specified in a custom video mode must be specified. Color depths
of 8, 16, 24, and 32 are accepted. EFI assumes a color depth of 32 by
The EFI default video resolution settings can only be changed when the VM is powered off.
In previous manual versions there was description of VBoxManage setextradata "VM name" VBoxInternal2/EfiGopMode N
Where N can be one of 0,1,2,3,4 referring to the 640x480, 800x600, 1024x768, 1280x1024, 1440x900 screen resolution respectively.
Perhaps it is obsolete now.
I do not know if it is possible to use any custom resolution for efi mode. Seems that setting custom values to EfiGraphicsResolution doesn't work. If you know, please share your knowledge.
Now what about legacy bios mode.
According to manual, 9.7.1. Custom VESA Resolutions
Apart from the standard VESA resolutions, the Oracle VM VirtualBox
VESA BIOS enables you to add up to 16 custom video modes which will be
reported to the guest operating system. When using Windows guests with
the Oracle VM VirtualBox Guest Additions, a custom graphics driver
will be used instead of the fallback VESA solution so this information
does not apply.
Additional video modes can be configured for each VM using the extra
data facility. The extra data key is called CustomVideoMode with x
being a number from 1 to 16. Please note that modes will be read from
1 until either the following number is not defined or 16 is reached.
The following example adds a video mode that corresponds to the native
display resolution of many notebook computers:
VBoxManage setextradata "VM name" "CustomVideoMode1" "1400x1050x16"
The VESA mode IDs for custom video modes start at 0x160. In order to
use the above defined custom video mode, the following command line
has to be supplied to Linux:
vga = 0x200 | 0x160 vga = 864 For guest operating systems with Oracle
VM VirtualBox Guest Additions, a custom video mode can be set using
the video mode hint feature.
So it seems that you will need use vga= parameter anyway, so it is not usefull for your needs.
I do not know effect of UgaHorizontalResolution and UgaVerticalResolution options, seems it does not work.
If you know how to achieve request in legacy mode, please share your knowledge.
I think maybe it is possible for VirtualBox's virtual monitor to answer to kernel that it supports only one of wanted by me resolution, so kms will use that.