diff options
author | Daniel Kahn Gillmor <dkg@fifthhorseman.net> | 2013-09-07 22:32:27 -0400 |
---|---|---|
committer | Daniel Kahn Gillmor <dkg@fifthhorseman.net> | 2013-09-07 22:32:27 -0400 |
commit | 506faaf476efe158dd3226f29460b5e02313f726 (patch) | |
tree | 2159c509d775917e43aa5d36612a20ca25d73eef | |
parent | d183ba4577d873d431f4c58cc6e7ba81427f1715 (diff) | |
download | kvm-manager-506faaf476efe158dd3226f29460b5e02313f726.tar.gz kvm-manager-506faaf476efe158dd3226f29460b5e02313f726.tar.bz2 |
enable booting the guest from a local kernel directly
the user in control of a kvm-manager guest can now choose a kernel to
boot directly by placing two files (symlinks are fine) at:
~/vms/$VMNAME/kernel
~/vms/$VMNAME/initrd
This is by analogy with ~/vms/$VMNAME/cd.iso.
If those two files are present, then the kvm guest will boot directly
to the provided kernel rather than doing BIOS emulation that hands off
control to the MBR of the first emulated disks.
In this case, the first line of the contents of
/etc/sv/kvm/env/CMDLINE will be passed as the kernel parameters, and
no bootloader will be run.
-rwxr-xr-x | kvm-manager | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/kvm-manager b/kvm-manager index 7838c04..574737b 100755 --- a/kvm-manager +++ b/kvm-manager @@ -35,11 +35,19 @@ up() { CDISO="$OWNERHOME/vms/$VMNAME/cd.iso" NETBOOT="$OWNERHOME/vms/$VMNAME/netboot" + KERNEL="$OWNERHOME/vms/$VMNAME/kernel" + INITRD="$OWNERHOME/vms/$VMNAME/initrd" KVMARGS= + unset KERNEL_CMDLINE BOOTCHOICE=c - if [ -e "$NETBOOT" ] ; then + if [ -e "$KERNEL" -a -e "$INITRD" ] ; then + KVMARGS="-kernel $KERNEL -initrd $INITRD" + if [ "$CMDLINE" ]; then + KERNEL_CMDLINE="$CMDLINE" + fi + elif [ -e "$NETBOOT" ] ; then BOOTCHOICE=n elif [ -e "$CDISO" ] && [ -e $(readlink -f "$CDISO") ] ; then KVMARGS="-cdrom $CDISO" @@ -88,6 +96,7 @@ EOF chpst -u "$OWNER:$OWNERGROUP:kvm" \ /usr/bin/kvm $KVMARGS \ -M "${MACHINE:-pc}" \ + ${KERNEL_CMDLINE:+-append "$KERNEL_CMDLINE"} \ -enable-kvm \ -nodefaults \ -nographic \ |