#!/bin/bash #This script is used to start-up a KVM-based virtual machine with a specific #kernel, specified via command line with -k option #--------------------------------------------------# #virt-xml --edit --boot kernel=args= VIRTXML_BIN=`which virt-xml 2> /dev/null` DEFAULT_OPS="ro vconsole.font=latarcyrheb-sun16 LANG=en_CA.UTF-8 console=ttyS0 crashkernel=128M" # Display usage help function usage() { echo echo "boot_kernel.sh: start a virtual machine with a direct kernel" echo echo "Usage: boot_kernel.sh -d -k -r -o \"\"" echo echo "-d: Specify the virtual machine name (domain name)" echo "-k: Kernel executable path to be loaded in the virtual machine" echo "-o: Kernel Options command line arguments (please use \"\")" echo "-r: Root device, partition where rootfs is stored inside VM" echo "-h: Show this help" } if [ -z $VIRTXML_BIN ]; then echo "virt-xml executable not found..." echo "Please make sure your system has virt-install package installed" echo exit fi add_kernel_to_xml() { echo $VIRTXML_BIN --edit --boot kernel=$KERNEL_PATH kernel_args=$KERNEL_OPS } while getopts "d:hk:o:r:" ARG; do case $ARG in d) #domain name DOMAIN_NAME=$OPTARG ;; h) #help menu usage ;; k) #kernel path KERNEL_PATH=$OPTARG ;; o) #kernel_ops KERNEL_OPS=$OPTARG ;; r) #root_device ROOT_DEV=$OPTARG ;; *) usage exit ;; esac done #Ensure $KERNEL_PATH is valid if [ -z $KERNEL_PATH ]; then echo "Kernel image not specified..." usage exit 1 fi if [ ! -f $KERNEL_PATH ]; then echo "Kernel image not found...exiting" exit 1 fi #add_kernel_to_xml $VIRTXML_BIN $DOMAIN_NAME --edit --boot kernel=$KERNEL_PATH #Set kernel_args if [ -z "$KERNEL_OPS" ]; then $VIRTXML_BIN $DOMAIN_NAME --edit --boot kernel_args="root=$ROOT_DEV $DEFAULT_OPS" else $VIRTXML_BIN $DOMAIN_NAME --edit --boot kernel=$KERNEL_PATH --boot kernel_args="root=$ROOT_DEV ro $KERNEL_OPS" fi #Starting VM virsh start $DOMAIN_NAME