Age | Commit message (Collapse) | Author |
|
OK mlarkin@
|
|
specifically: vmctl (load|reload|reset|log)
Reported by Christian Barthel
|
|
When a local interface is configured, vmd configures a /31 address on
the tap(4) interface of the host and provides another IP in the same
subnet via DHCP (BOOTP) to the VM. vmd runs an internal BOOTP server
that replies with IP, gateway, and DNS addresses to the VM. The
built-in server only ever responds to the VM on the inside and cannot
leak its DHCP responses to the outside.
Thanks to Uwe Werler, Josh Grosse, and some others for testing!
OK deraadt@
|
|
Spotted by Ilya Kaliman, thanks.
|
|
Each VM has two IDs: one from the kernel (vmm) and a different one
from userland (vmd). The vmm ID is not consistent and incremented on
every boot during runtimg of the host system. The vmd ID remains the
same during the lifetime of a configured VM, even after reboots.
Configured VMs will even get and keep their IDs when the configuration
is loaded. This is more what users expect.
Pointed out and tested by otto@
OK deraadt@
|
|
sure the interfaces are up on startup.
OK deraadt@, reky@
|
|
Instead of using the internal "vmboot", VMs will now be booted using
the external BIOS firmware in /etc/firmware/vmm-bios (which is subject
to a LGPLv3 license). Direct booting of OpenBSD kernels or
non-default BIOS images is still supported for now using the -b/boot
option that is replacing the -k/kernel option.
As requested by Theo, vmd(8) fails if neither the default BIOS is
found nor a kernel has been specified in the VM configuration. The
"vmm" BIOS has to be installed using fw_update(1), which will be done
automatically in most cases where the OpenBSD can fetch it after
install/upgrade.
OK mlarkin@
|
|
|
|
destination in snprintf(). Use a temporary variable instead.
Found and OK by jsg@
|
|
|
|
something from vmd.h . Temporary fix until the original committer can
fix it the way he desires.
|
|
This allows matching users to start or stop VMs that they "own" and to
access the console accordingly.
OK mlarkin@
|
|
This matches the accepted input in vmctl start and vm.conf that
supports using M, G, T etc. instead of a hardcoded MB. It also allows
to shrink the column size as the unit will be scaled automatically.
OK mlarkin@
|
|
|
|
ok mlarkin@
|
|
ok mlarkin@
|
|
The semantics agreed with reyk@ are:
* ad-hoc created vms, created with `vmctl start`, are removed once stopped.
* Stopped VMs defined in a config file are flushed before a `vmctl reload`.
OK reyk@
|
|
|
|
For now, this is only used to forward "log verbose|brief" requests,
but it will be used for better things later.
OK mlarkin@
|
|
With testing from Jon Bernard
OK mlarkin@
|
|
Default value picked with mlarkin - not too small and not too large.
OK mlarkin@
|
|
|
|
the specified virtual switch from the command line.
OK mlarkin@
|
|
This make the kernel/-k argument optional and, if not specified, tries
to find the /bsd kernel in the primary hd0a partition of the first
disk image itself. It doesn't support hd0a:/etc/boot.conf yet, and it
is no BIOS or full boot loader, but it makes booting and handling of
VMs a bit easier - booting an external kernel is still supported.
The UFS file system code ufs.c is directly from libsa which is also
used by the real boot loader. The code compiles with a few signedness
warning which will be fixed separately.
OK mlarkin@
|
|
Tested by Jon Bernard and reyk@.
OK reyk@, no objections mlarkin@.
Thanks
|
|
fixed in tree, but the changes required were pretty minimal.
Note that i386 hosts are still presently limited to running i386 guests.
ok deraadt, stefan, jca
|
|
OK mlarkin@
|
|
OK rzalamena@
|
|
vmop_create_params" that also includes configuration that is only for
userland. I forgot to commit this chunk.
Found the hard way by mlarkin@
|
|
|
|
|
|
|
|
|
|
|
|
further documentation.
|
|
from a diff posted to tech@ by Fabien Siron, thanks.
|
|
|
|
|
|
Just NULL is not good practise as NULL is theoretically allowed to
be an integer rather than a pointer.
Use (char *)NULL consistently instead of scattering a few (char *)0
and (void *)NULL into the mix.
Prompted by and probably ok deraadt@ millert@ kettenis@
Definitely ok mestre@ ratchov@
|
|
Kernel bits:
- When creating a VM, a list of memory ranges has to be specified,
similar to the BIOS memory map. This is necessary for VMs with
RAM sizes approaching 4G because we'll need PCI MMIO space in
the higher parts of the 32 bit address space.
vmctl and vmd bits:
- Construct appropriate memory ranges to create a VM with a given
RAM size
- Construct a corresponding BIOS memory map from the memory ranges
and update the boot params page accordingly.
- Make sure that all variables that represent guest physical addresses
match the address width of the target CPU instead of using uint32_t.
- Fix some integer promotion glitches that actually restricted VM
RAM size to 2G.
This changes the VM create ioctl interface, so update your kernel,
vmd, and vmctl.
ok mlarkin@
|
|
call. Note that using ftruncate() to extend a file is not portable
(POSIX allows either zero-filling until the given size is reached, or
alternatively erroring out), but that shouldn't be a proble as vmm(4)
isn't cross-platform either. unlink() the image file when extending
it fails for consistency with the other error case (the file can't be
created).
From Martin Natano
OK mlarkin@
|
|
evaluated first, resulting in res->size /= 1. Remove the division and
the following check, as it can never fail; it is a left-over from
previous code that didn't check the size in the caller.
From Martin Natano
OK mlarkin@
|
|
|
|
for now.
ok reyk@
|
|
From Michal Mazurek, thanks!
|
|
ok reyk@, beck@, mpi@
|
|
vmctl stop 3
vmctl stop "openbsd.vm"
|
|
|
|
|
|
comes from sys/types.h (include-what-you-use doesn't know this policy).
Pointed out by Jan Schreiber
|