LinuxKit supports running LinuxKit created VMs on Hyper-V on Microsoft
Windows. linuxkit
must be run from an elevated command prompt,
typically a elevated Powershell and utilises Powershell scripting to
manage the Hyper-V VMs.
Example:
linuxkit.exe run --disk size=1 linuxkit-efi.iso
The Hyper-V VM, by default, is named after the prefix of the ISO, ie
with .iso
and -efi
stripped. Note, You may only have one VM for a
given name. You can specify an alternative name using the -name
command-line option.
Currently, the Hyper-V backend only supports booting EFI ISO images
created with LinuxKit. linuxkit
create a Generation 2 VM and
disables secure EFI boot for booting.
In the future, we may add support for legacy BIOS ISOs, booting from disks, and enable secure boot.
The serial port of the VM is configured to redirect to a Named Pipe,
and when the linuxkit
command is executed an interactive console is
provided in the same window. The serial console may also be redirected
to a file.
Note: The connection to the Named Pipe sometimes seems to be a bit racey, though the code itself should be fine. You may have to try again if the connection to the serial console fails.
If the main console is configured within the VM, one can also connect to it using the Hyper-V manager, or from the command-line:
vmconnect.exe localhost linuxkit
The Hyper-V backend supports multiple disks to be attached to the VM
using the standard linuxkit
-disk
syntax. While Hyper-V typically
stores disk images under a default location, if the VM is created with
linuxkit
, by default, new disks are created in the current
directory.
By default, the Hyper-V backend will try to find an external switch configured by the user and use this for network connectivity for the VM. This means that DHCP will be provided by the normal DHCP server on your network. Depending on your firewall settings, you may be able to access the VM directly via its IP address.
Alternatively, you can specify a Hyper-V switch to use using the
-switch
command-line option. In this case it is the user's
responsibility to provide a DHCP server or to configure the VM's IP
address by some other means.
LinuxKit does not yet have packages for Hyper-V integration agents (KVP and VSS daemons). We plan to add them soon.
The Hyper-V backend currently does not support passing metadata/userdata to the VM.