aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kahn Gillmor <dkg@fifthhorseman.net>2013-09-07 22:32:27 -0400
committerDaniel Kahn Gillmor <dkg@fifthhorseman.net>2013-09-07 22:32:27 -0400
commit506faaf476efe158dd3226f29460b5e02313f726 (patch)
tree2159c509d775917e43aa5d36612a20ca25d73eef
parentd183ba4577d873d431f4c58cc6e7ba81427f1715 (diff)
downloadkvm-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-xkvm-manager11
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 \