Skip to content
/ vmd Public

The vmd application from OpenBSD adjusted to work on macOS. Using the Apple Virtualization Framework.

Notifications You must be signed in to change notification settings

ren-e/vmd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

macOS vmd

The vmd application from OpenBSD has been adjusted to work on macOS. This version uses the Apple Hypervisor Framework, which came with macOS Big Sur.

This tool is like SimpleVM and vftool, but followes the vmd/vmctl syntax.

Requirements

  • macOS >= 11.0

Compile

make

Run

To start the VM in verbose mode:

./vmctl -v start -cb vmlinuz \
	-i initrd.gz \
	-k "console=hvc0 root=/dev/vda" \
	-d disk.img \
	-l 01:23:45:67:89:ab \
	-m 1g \
	-p 1 \
	vm_name

This will automatically spawn a new console session to interact with the guest.

Multiple disks can be attached by repeating the -d flag.

The -l flag can be used to specify the link layer address (MAC address). This should be specified as six colon-separated hex values.

Shutdown

To shutdown a running VM press CTRL+C in the terminal, or send the SIGINT signal. When a cu session is still running, first enter ~., and then CTRL+C. Keep repeating the signal to forcefully shutdown the VM.

Console handling

The program cu is used to facilitate the console. When the -c flag has been used with vmctl, then the console will automatically open. The uucp directory must be writable, which can be fixed with:

sudo chmod 775 /var/spool/uucp/
sudo chgrp staff /var/spool/uucp/

If cu doesn't respond to ~ commands, make sure to enter CTRL+D first.

Linux guests

Currently, only Linux guests are supported due to the framework limitations. Not all distributions support the virtio console out of the box (like Debian). Make sure to boot these systems with console=tty1, so you can add the required modules to /etc/initramfs-tools/modules:

virtio
virtio_pci
virtio_blk
virtio_net
virtio_console

After changing the modules file re-create the initramfs image:

update-initramfs -u

Copy the new initramfs image to the host, and then you should be able to use the virtio console (hvc0).

About

The vmd application from OpenBSD adjusted to work on macOS. Using the Apple Virtualization Framework.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published