- File Extension: .7b
- Save Encoding: UTF-8 with BOM as mandatory
- Configuration Format: JSON (JavaScript Object Notation)
- JSON Schema: https://raw.githubusercontent.com/M2Team/NanaBox/main/Documents/ConfigurationSchema.json
{
"NanaBox": {
"Type": "VirtualMachine",
"Version": 1,
"GuestType": "Windows",
"Name": "DemoVM",
"ProcessorCount": 4,
"MemorySize": 2048,
"ComPorts": {
"UefiConsole": "ComPort1",
"ComPort1": "\\\\.\\pipe\\vmpipe1",
"ComPort2": "\\\\.\\pipe\\vmpipe2"
},
"Gpu": {
"AssignmentMode": "List",
"SelectedDevices": [
"\\\\?\\PCI#VEN_10DE&DEV_1C82&SUBSYS_11BF1B4C&REV_A1#4&38ab2860&0&0008#{064092b3-625e-43bf-9eb5-dc845897dd59}\\GPUPARAV"
]
},
"NetworkAdapters": [
{
"Connected": true,
"MacAddress": "00-15-5D-64-2F-AB",
"EndpointId": "f2288275-6c30-47d4-bc24-293fa9c9cb12"
}
],
"ScsiDevices": [
{
"Type": "VirtualDisk",
"Path": "Test.vhdx"
},
{
"Type": "VirtualImage",
"Path": ""
}
],
"SecureBoot": true,
"Tpm": true,
"GuestStateFile": "Test.vmgs",
"RuntimeStateFile": "Test.vmrs",
"SaveStateFile": "Test.SaveState.vmrs",
"ExposeVirtualizationExtensions": true
}
}
- NanaBox (Object)
- Type (String)
- Version (Number)
- GuestType (String)
- Name (String)
- ProcessorCount (Number)
- MemorySize (Number)
- ComPorts (Object)
- UefiConsole (String)
- ComPort1 (String)
- ComPort2 (String)
- Gpu (Object)
- AssignmentMode (String)
- EnableHostDriverStore (Boolean)
- SelectedDevices (String or Object Array)
- DeviceInterface (String, Object Array Only)
- PartitionId (String, Object Array Only)
- NetworkAdapters (Object Array)
- Connected (Boolean)
- MacAddress (String)
- EndpointId (String)
- ScsiDevices (Object Array)
- Type (String)
- Path (String)
- SecureBoot (Boolean)
- Tpm (Boolean)
- GuestStateFile (String)
- RuntimeStateFile (String)
- SaveStateFile (String)
- ExposeVirtualizationExtensions (Boolean)
- Keyboard (Object Array)
- RedirectKeyCombinations (Boolean)
- FullScreenHotkey (Number)
- CtrlEscHotkey (Number)
- AltEscHotkey (Number)
- AltTabHotkey (Number)
- AltShiftTabHotkey (Number)
- AltSpaceHotkey (Number)
- CtrlAltDelHotkey (Number)
- FocusReleaseLeftHotkey (Number)
- FocusReleaseRightHotkey (Number)
- EnhancedSession (Object Array)
- RedirectAudio (Boolean)
- RedirectAudioCapture (Boolean)
- RedirectDrives (Boolean)
- RedirectPrinters (Boolean)
- RedirectPorts (Boolean)
- RedirectSmartCards (Boolean)
- RedirectClipboard (Boolean)
- RedirectDevices (Boolean)
- RedirectPOSDevices (Boolean)
- RedirectDynamicDrives (Boolean)
- RedirectDynamicDevices (Boolean)
- Drives (String Array)
- Devices (String Array)
- ChipsetInformation (Object)
- BaseBoardSerialNumber (String)
- ChassisSerialNumber (String)
- ChassisAssetTag (String)
- Manufacturer (String)
- ProductName (String)
- Version (String)
- SerialNumber (String)
- Family (String)
- UUID (String)
- SKUNumber (String)
The parent object for all types of NanaBox Configuration File.
The type of configuration.
Available values: "VirtualMachine"
The version of virtual machine configuration. Only 1 is available.
Available values: 1
The guest OS type of virtual machine.
Available values: "Windows", "Linux" and "Unknown"
The unique name of virtual machine.
Example value: "TestVM"
The processor count of virtual machine, in cores.
Example value: 2
The memory size of virtual machine, in MB.
Example value: 2048
Note: You can update the memory size at runtime starting with NanaBox 1.1.
The COM ports setting object of virtual machine.
The UEFI serial console setting of virtual machine.
Available values: "Disabled", "Default", "ComPort1" and "ComPort2"
(Optional) The named pipe path of guest COM1 of virtual machine.
Example value: "\\.\pipe\vmpipe1"
Note: You can update the named pipe path at runtime starting with NanaBox 1.1.
(Optional) The named pipe path of guest COM2 of virtual machine.
Example value: "\\.\pipe\vmpipe2"
Note: You can update the named pipe path at runtime starting with NanaBox 1.1.
The GPU setting object of virtual machine. You can choose GPU-P (partitioning) and/or GPU-PV (paravirtualization) modes for every specific GPU instance.
Note: Before NanaBox 1.3 Update 1, you can only use GPU-PV (paravirtualization) mode for virtual machines.
Note: You can update GPU setting at runtime starting with NanaBox 1.1.
The GPU assignment mode setting of virtual machine.
Available values: "Disabled", "Default", "List" and "Mirror"
- "Disabled" mode: Do not assign any GPU to the virtual machine.
- "Default" mode: Assign the single default GPU with GPU-PV (paravirtualization) mode to virtual machine, which currently is POST GPU.
- "List" mode: Assign the GPU(s)/partition(s) specified in SelectedDevices to virtual machine. If SelectedDevices is empty, do not assign GPU to the virtual machine.
- "Mirror" mode: Assign all current and future GPUs with GPU-PV (paravirtualization) mode to virtual machine.
(Optional) Set it true if you want to enable HostDriverStore folder readonly share for both Virtual SMB and Plan 9, which can mirror the DriverStore folder from the Host OS. It will be useful when users using GPU paravirtualization feature.
Note: You cannot suspend the virtual machine properly if this option is enabled.
Note: Available starting with NanaBox 1.2.
(Optional) The string or object array of selected GPUs used for virtual machine. Set as the object with "DeviceInterface" and "PartitionId" for the specific GPU instance if you want to use GPU-P (partitioning) mode, or set as the string which contains "DeviceInterface" for using GPU-PV (paravirtualization) mode.
Note: Only valid in "List" GPU paravirtualization assignment mode.
Note: Before NanaBox 1.3 Update 1, you can only use GPU-PV (paravirtualization) mode for virtual machines.
Reference: https://docs.microsoft.com/en-us/windows/win32/hyperv_v2/msvm-partitionablegpu
The device interface path of the selected GPU used for paravirtualization of virtual machine.
Example value: "\\?\PCI#VEN_10DE&DEV_1C82&SUBSYS_11BF1B4C&REV_A1#4&38ab2860&0&0008#{064092b3-625e-43bf-9eb5-dc845897dd59}\GPUPARAV"
The partition ID of the selected GPU used for paravirtualization of virtual machine. It's actually an uint16 value. Set it 65535 for using GPU-PV (paravirtualization) mode.
The network adapters setting object array of virtual machine.
Note: You can add, remove and update network adapters at runtime starting with NanaBox 1.1.
Make the current network adapter connected if set it true.
(Optional) The MAC address of the current network adapter.
Note: If value not set, NanaBox will generate a new one for it.
Example value: "00-15-5D-64-2F-AB"
(Optional) The Endpoint GUID of the current network adapter.
Note: If value not set, NanaBox will generate a new one for it.
Note: This option is used for internal implementation.
Example value: "f2288275-6c30-47d4-bc24-293fa9c9cb12"
The SCSI devices setting object array of virtual machine.
Note: You can add and update SCSI devices at runtime starting with NanaBox 1.1.
The type of the current SCSI device.
Available values: "VirtualDisk", "VirtualImage" and "PhysicalDevice"
The path of the current SCSI device.
Note: The relative path is supported.
When type is "VirtualDisk", you can use vhdx and vhd files.
When type is "VirtualImage", you can use iso files, and you can make it empty or not set if you want to make a ejected virtual optical drive.
When type is "PhysicalDevice", you can expose your physical drive to virtual machine. you can set it something like "\\.\PhysicalDriveX" where X is an integer that represents the particular enumeration of the physical disk on the caller's system.
(Optional) The Secure Boot setting of virtual machine.
If you want to enable Secure Boot for your virtual machine, please set it true.
(Optional) The Trusted Platform Module (TPM) setting of virtual machine.
If you want to enable Trusted Platform Module (TPM) for your virtual machine, please set it true.
Note: Available starting with NanaBox 1.2 Update 2.
Note: Only the Trusted Platform Module (TPM) 2.0 is supported.
Note: You need Windows 11 Version 24H2 or later Host OS. (Although Windows Server 2022 had introduced the related Host Compute System API interfaces, but it seems doesn't be implemented.)
(Optional) The path of guest state file for virtual machine.
Note: The relative path is supported.
Note: If value not set or file not exist, NanaBox will create a new one for it.
Example value: "TestVM.vmgs"
(Optional) The path of runtime state file for virtual machine.
Note: The relative path is supported.
Note: If value not set or file not exist, NanaBox will create a new one for it.
Example value: "TestVM.vmrs"
(Optional) The path of save state file for virtual machine.
Note: The relative path is supported.
Note: This option is used for internal implementation.
Example value: "TestVM.SaveState.vmrs"
(Optional) Expose the virtualization extensions to the virtual machine if set it true.
Note: Some processors don't support exposing the virtualization extensions to the virtual machine.
(Optional) Keyboard setting object array of virtual machine.
For more information about the default keyboard shortcut behavior, please read https://learn.microsoft.com/en-us/windows/win32/termserv/terminal-services-shortcut-keys.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) Apply key combinations at the virtual machine if set it true, or apply key combinations to the virtual machine only when the host is running in full-screen mode.
If you don't want to apply key combinations at the virtual machine, please set it false.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) Specifies the virtual-key code to add to CTRL+ALT to determine the hotkey replacement for switching to full-screen mode.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
Note: For more information about virtual-key code, please read https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes.
(Optional) Specifies the virtual-key code to add to ALT to determine the hotkey replacement for CTRL+ESC.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
Note: You need to use the decimal value of the virtual-key code.
Note: For more information about virtual-key code, please read https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes.
(Optional) Specifies the virtual-key code to add to ALT to determine the hotkey replacement for ALT+ESC.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
Note: You need to use the decimal value of the virtual-key code.
Note: For more information about virtual-key code, please read https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes.
(Optional) Specifies the virtual-key code to add to ALT to determine the hotkey replacement for ALT+TAB.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
Note: You need to use the decimal value of the virtual-key code.
Note: For more information about virtual-key code, please read https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes.
(Optional) Specifies the virtual-key code to add to ALT to determine the hotkey replacement for ALT+SHIFT+TAB.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
Note: You need to use the decimal value of the virtual-key code.
Note: For more information about virtual-key code, please read https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes.
(Optional) Specifies the virtual-key code to add to ALT to determine the hotkey replacement for ALT+SPACE.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
Note: You need to use the decimal value of the virtual-key code.
Note: For more information about virtual-key code, please read https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes.
(Optional) Specifies the virtual-key code to add to CTRL+ALT to determine the hotkey replacement for CTRL+ALT+DELETE, also called the secure attention sequence (SAS).
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
Note: You need to use the decimal value of the virtual-key code.
Note: For more information about virtual-key code, please read https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes.
(Optional) Specifies the virtual-key code to add to Ctrl+Alt to determine the hotkey replacement for Ctrl+Alt+Left Arrow.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
Note: You need to use the decimal value of the virtual-key code.
Note: For more information about virtual-key code, please read https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes.
(Optional) Specifies the virtual-key code to add to Ctrl+Alt to determine the hotkey replacement for Ctrl+Alt+Right Arrow.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
Note: You need to use the decimal value of the virtual-key code.
Note: For more information about virtual-key code, please read https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes.
(Optional) Enhanced session setting object array of virtual machine.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) Redirect sounds from the virtual machine to the host if set it true.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) Redirect audio capture from the host to the virtual machine if set it true.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) Redirect all disk drives from the host to the virtual machine if set it true.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) Redirect all printers from the host to the virtual machine if set it true.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) Redirect all local ports (for example, COM and LPT) from the host to the virtual machine if set it true.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) Redirect all smart cards from the host to the virtual machine if set it true.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) Redirect clipboard from the host to the virtual machine if set it true.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) Redirect all devices from the host to the virtual machine if set it true.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) Redirect all Point of Service devices from the host to the virtual machine if set it true.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) Redirect all dynamically attached Plug and Play (PnP) drives that are enumerated while virtual machine running if set it true.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) Redirect all dynamically attached Plug and Play (PnP) devices that are enumerated while virtual machine running if set it true.
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) The string array of selected disk drives used for redirection from the host to the virtual machine.
Example value: "C"
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
(Optional) The string array of selected devices used for redirection from the host to the virtual machine.
Example value: "USB\VID_5986&PID_211C&MI_00\6&218C4A3&0&0000"
Note: Available starting with NanaBox 1.1 and you can modify these settings at runtime.
The chipset information object of virtual machine.
Note: Available starting with NanaBox 1.2 Update 4.
The serial number of the baseboard of virtual machine.
Example value: "QTFCOU0000001"
Note: Available starting with NanaBox 1.2 Update 4.
The serial number of the chassis of virtual machine.
Example value: "QTFCOU0000001"
Note: Available starting with NanaBox 1.2 Update 4.
The asset tag of the chassis of virtual machine.
Example value: "TestVM"
Note: Available starting with NanaBox 1.2 Update 4.
The manufacturer of virtual machine.
Leave blank to use default vaule: "Microsoft Corporation"
Example value: "NVIDIA"
Note: You need Windows Server 2022 or later Host OS.
Note: Available starting with NanaBox 1.2 Update 4.
The product name of virtual machine.
Leave blank to use default vaule: "Virtual Machine"
Example value: "DGX-1"
Note: You need Windows Server 2022 or later Host OS.
Note: Available starting with NanaBox 1.2 Update 4.
The version of virtual machine.
Leave blank to use default vaule: "Hyper-V UEFI Release v4.1"
Example value: "DGX-1 with V100-32 1.0"
Note: You need Windows Server 2022 or later Host OS.
Note: Available starting with NanaBox 1.2 Update 4.
The serial number of virtual machine.
Leave blank to use default vaule
Example value: "QTFCOU0000001"
Note: You need Windows Server 2022 or later Host OS.
Note: Available starting with NanaBox 1.2 Update 4.
The family of virtual machine.
Leave blank to use default vaule: "Virtual Machine"
Example value: "Enterprise Server"
Note: You need Windows Server 2022 or later Host OS.
Note: Available starting with NanaBox 1.2 Update 4.
The universally unique identifier of virtual machine.
Example value: "12345678-abcd-efgh-ijkl-0123456789ab"
Note: You need Windows Server 2022 or later Host OS.
Note: Available starting with NanaBox 1.2 Update 4.
The sku number of virtual machine.
Example value: "TestVM"
Note: You need Windows Server 2022 or later Host OS.
Note: Available starting with NanaBox 1.2 Update 4.
{
"NanaBox": {
"ComPorts": {
"UefiConsole": "Disabled"
},
"Gpu": {
"AssignmentMode": "Mirror"
},
"GuestStateFile": "TestVM.vmgs",
"GuestType": "Windows",
"MemorySize": 4096,
"Name": "TestVM",
"NetworkAdapters": [
{
"Connected": true,
"EndpointId": "cd67ed54-c64d-4c98-bc0a-6d5f38ca43ce",
"MacAddress": "00-15-5D-64-2F-AB"
}
],
"ProcessorCount": 2,
"RuntimeStateFile": "TestVM.vmrs",
"ScsiDevices": [
{
"Path": "Windows 11.vhdx",
"Type": "VirtualDisk"
},
{
"Type": "VirtualImage"
}
],
"SecureBoot": true,
"Type": "VirtualMachine",
"Version": 1
}
}
{
"NanaBox": {
"ComPorts": {
"ComPort1": "",
"ComPort2": "",
"UefiConsole": "Disabled"
},
"Gpu": {
"AssignmentMode": "Mirror"
},
"GuestType": "Linux",
"MemorySize": 4096,
"Name": "UbuntuVM",
"NetworkAdapters": [
{
"Connected": true,
"EndpointId": "594f35de-4d8e-4173-8e9f-00f2b372d2f4",
"MacAddress": "00-15-5D-47-EB-71"
}
],
"ProcessorCount": 2,
"ScsiDevices": [
{
"Path": "D:\\NanaBox VM\\UbuntuVM\\UbuntuVM.vhdx",
"Type": "VirtualDisk"
},
{
"Path": "D:\\Updates\\ubuntu-22.04-desktop-amd64.iso",
"Type": "VirtualImage"
}
],
"Type": "VirtualMachine",
"Version": 1
}
}
{
"NanaBox": {
"ComPorts": {
"ComPort1": "\\\\.\\pipe\\vmpipe1",
"ComPort2": "\\\\.\\pipe\\vmpipe2",
"UefiConsole": "ComPort1"
},
"Gpu": {
"AssignmentMode": "Disabled"
},
"GuestStateFile": "UefiTestVM.vmgs",
"GuestType": "Windows",
"MemorySize": 512,
"Name": "UefiTestVM",
"NetworkAdapters": [
{
"Connected": true,
"EndpointId": "d811c915-5421-4e31-afbf-5db608e7ad24",
"MacAddress": "00-15-5D-47-EB-0D"
}
],
"ProcessorCount": 1,
"RuntimeStateFile": "UefiTestVM.vmrs",
"ScsiDevices": [
{
"Path": "D:\\NanaBox VM\\UEFIDebugDisk.vhdx",
"Type": "VirtualDisk"
}
],
"Type": "VirtualMachine",
"Version": 1
}
}
Typical NVIDIA DGX-1 Virtual Machine (In order to bypass the installation detection of the DGX BaseOS)
{
"NanaBox": {
"ChipsetInformation": {
"Family": "Enterprise Server",
"Manufacturer": "NVIDIA",
"ProductName": "DGX-1",
"SerialNumber": "QTFCOU0000001",
"Version": "DGX-1 with V100-32 1.0"
},
"ComPorts": {
"UefiConsole": "Disabled"
},
"Gpu": {
"AssignmentMode": "List",
"SelectedDevices": [
"\\\\?\\PCI#VEN_10DE&DEV_1DB5&SUBSYS_12491215&REV_A1#4&38ab2860&0&0008#{064092b3-625e-43bf-9eb5-dc845897dd59}\\GPUPARAV"
]
},
"GuestType": "Linux",
"MemorySize": 16384,
"Name": "DGX OS",
"NetworkAdapters": [
{
"Connected": true,
"EndpointId": "594f35de-4d8e-4173-8e9f-00f2b372d2f4",
"MacAddress": "00-15-5D-47-EB-71"
}
],
"ProcessorCount": 8,
"ScsiDevices": [
{
"Path": "D:\\NanaBox VM\\DGX OS.vhdx",
"Type": "VirtualDisk"
},
{
"Path": "D:\\Updates\\DGXOS-5.6.0-2024-04-16-06-58-50.iso",
"Type": "VirtualImage"
}
],
"Type": "VirtualMachine",
"Version": 1
}
}