mirror of
https://git.yoctoproject.org/poky
synced 2026-06-01 13:09:50 +00:00
runqemu: add support for FSTYPE=vmdk
Allow vmdk images to be run through the 'runqemu' facility. (From OE-Core rev: 9efa0aa914cae9e13d90ddf99b482ccf0936573c) Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
b70784ce58
commit
b05efc27d0
+29
-10
@@ -27,6 +27,7 @@ usage() {
|
|||||||
echo " ROOTFS - the rootfs image file or nfsroot directory to use"
|
echo " ROOTFS - the rootfs image file or nfsroot directory to use"
|
||||||
echo " MACHINE - the machine name (optional, autodetected from KERNEL filename if unspecified)"
|
echo " MACHINE - the machine name (optional, autodetected from KERNEL filename if unspecified)"
|
||||||
echo " RAMFS - boot a ramfs-based image"
|
echo " RAMFS - boot a ramfs-based image"
|
||||||
|
echo " VM - boot a vmdk image"
|
||||||
echo " Simplified QEMU command-line options can be passed with:"
|
echo " Simplified QEMU command-line options can be passed with:"
|
||||||
echo " nographic - disables video console"
|
echo " nographic - disables video console"
|
||||||
echo " serial - enables a serial console on /dev/ttyS0"
|
echo " serial - enables a serial console on /dev/ttyS0"
|
||||||
@@ -41,6 +42,7 @@ usage() {
|
|||||||
echo " $MYNAME qemux86 ramfs"
|
echo " $MYNAME qemux86 ramfs"
|
||||||
echo " $MYNAME qemux86 qemuparams=\"-m 256\""
|
echo " $MYNAME qemux86 qemuparams=\"-m 256\""
|
||||||
echo " $MYNAME qemux86 bootparams=\"psplash=false\""
|
echo " $MYNAME qemux86 bootparams=\"psplash=false\""
|
||||||
|
echo " $MYNAME path/to/<image>-<machine>.vmdk"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,6 +58,7 @@ error() {
|
|||||||
MACHINE=${MACHINE:=""}
|
MACHINE=${MACHINE:=""}
|
||||||
KERNEL=${KERNEL:=""}
|
KERNEL=${KERNEL:=""}
|
||||||
ROOTFS=${ROOTFS:=""}
|
ROOTFS=${ROOTFS:=""}
|
||||||
|
VM=${VM:=""}
|
||||||
FSTYPE=""
|
FSTYPE=""
|
||||||
LAZY_ROOTFS=""
|
LAZY_ROOTFS=""
|
||||||
SCRIPT_QEMU_OPT=""
|
SCRIPT_QEMU_OPT=""
|
||||||
@@ -84,6 +87,10 @@ process_filename() {
|
|||||||
error "conflicting FSTYPE types [$FSTYPE] and [$EXT]"
|
error "conflicting FSTYPE types [$FSTYPE] and [$EXT]"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
/vmdk/)
|
||||||
|
FSTYPE=$EXT
|
||||||
|
VM=$filename
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
error "unknown file arg [$filename]"
|
error "unknown file arg [$filename]"
|
||||||
;;
|
;;
|
||||||
@@ -192,19 +199,27 @@ elif [ ! -w /dev/net/tun ] ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Report errors for missing combinations of options
|
# Report errors for missing combinations of options
|
||||||
if [ -z "$MACHINE" -a -z "$KERNEL" ]; then
|
if [ -z "$MACHINE" -a -z "$KERNEL" -a -z "$VM" ]; then
|
||||||
error "you must specify at least a MACHINE or KERNEL argument"
|
error "you must specify at least a MACHINE, VM, or KERNEL argument"
|
||||||
fi
|
fi
|
||||||
if [ "$FSTYPE" = "nfs" -a -z "$ROOTFS" ]; then
|
if [ "$FSTYPE" = "nfs" -a -z "$ROOTFS" ]; then
|
||||||
error "NFS booting without an explicit ROOTFS path is not yet supported"
|
error "NFS booting without an explicit ROOTFS path is not yet supported"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$MACHINE" ]; then
|
if [ -z "$MACHINE" ]; then
|
||||||
MACHINE=`basename $KERNEL | sed 's/.*\(qemux86-64\|qemux86\|qemuarm\|qemumips64\|qemumips\|qemuppc\|qemush4\).*/\1/'`
|
if [ "x$FSTYPE" = "xvmdk" ]; then
|
||||||
if [ -z "$MACHINE" ]; then
|
MACHINE=`basename $VM | sed 's/.*\(qemux86-64\|qemux86\|qemuarm\|qemumips64\|qemumips\|qemuppc\|qemush4\).*/\1/'`
|
||||||
error "Unable to set MACHINE from kernel filename [$KERNEL]"
|
if [ -z "$MACHINE" ]; then
|
||||||
|
error "Unable to set MACHINE from vmdk filename [$VM]"
|
||||||
|
fi
|
||||||
|
echo "Set MACHINE to [$MACHINE] based on vmdk [$VM]"
|
||||||
|
else
|
||||||
|
MACHINE=`basename $KERNEL | sed 's/.*\(qemux86-64\|qemux86\|qemuarm\|qemumips64\|qemumips\|qemuppc\|qemush4\).*/\1/'`
|
||||||
|
if [ -z "$MACHINE" ]; then
|
||||||
|
error "Unable to set MACHINE from kernel filename [$KERNEL]"
|
||||||
|
fi
|
||||||
|
echo "Set MACHINE to [$MACHINE] based on kernel [$KERNEL]"
|
||||||
fi
|
fi
|
||||||
echo "Set MACHINE to [$MACHINE] based on kernel [$KERNEL]"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
YOCTO_KVM_WIKI="https://wiki.yoctoproject.org/wiki/How_to_enable_KVM_for_Poky_qemu"
|
YOCTO_KVM_WIKI="https://wiki.yoctoproject.org/wiki/How_to_enable_KVM_for_Poky_qemu"
|
||||||
@@ -366,7 +381,7 @@ if [ -e "$ROOTFS" -a -z "$FSTYPE" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$KERNEL" ]; then
|
if [ -z "$KERNEL" -a "x$FSTYPE" != "xvmdk" ]; then
|
||||||
setup_tmpdir
|
setup_tmpdir
|
||||||
eval kernel_file=\$${machine2}_DEFAULT_KERNEL
|
eval kernel_file=\$${machine2}_DEFAULT_KERNEL
|
||||||
KERNEL=$OE_TMPDIR/deploy/images/$kernel_file
|
KERNEL=$OE_TMPDIR/deploy/images/$kernel_file
|
||||||
@@ -395,7 +410,7 @@ if [ "$LAZY_ROOTFS" = "true" ]; then
|
|||||||
ROOTFS=$OE_TMPDIR/deploy/images/$ROOTFS-$MACHINE.$FSTYPE
|
ROOTFS=$OE_TMPDIR/deploy/images/$ROOTFS-$MACHINE.$FSTYPE
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$ROOTFS" ]; then
|
if [ -z "$ROOTFS" -a "x$FSTYPE" != "xvmdk" ]; then
|
||||||
setup_tmpdir
|
setup_tmpdir
|
||||||
T=$OE_TMPDIR/deploy/images
|
T=$OE_TMPDIR/deploy/images
|
||||||
eval rootfs_list=\$${machine2}_DEFAULT_ROOTFS
|
eval rootfs_list=\$${machine2}_DEFAULT_ROOTFS
|
||||||
@@ -409,8 +424,12 @@ fi
|
|||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Continuing with the following parameters:"
|
echo "Continuing with the following parameters:"
|
||||||
echo "KERNEL: [$KERNEL]"
|
if [ "x$FSTYPE" != "xvmdk" ]; then
|
||||||
echo "ROOTFS: [$ROOTFS]"
|
echo "KERNEL: [$KERNEL]"
|
||||||
|
echo "ROOTFS: [$ROOTFS]"
|
||||||
|
else
|
||||||
|
echo "VMDK: [$VM]"
|
||||||
|
fi
|
||||||
echo "FSTYPE: [$FSTYPE]"
|
echo "FSTYPE: [$FSTYPE]"
|
||||||
|
|
||||||
setup_sysroot
|
setup_sysroot
|
||||||
|
|||||||
@@ -260,13 +260,13 @@ case "$MACHINE" in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [ ! -f "$KERNEL" ]; then
|
if [ ! -f "$KERNEL" -a "x$FSTYPE" != "xvmdk" ]; then
|
||||||
echo "Error: Kernel image file $KERNEL doesn't exist"
|
echo "Error: Kernel image file $KERNEL doesn't exist"
|
||||||
cleanup
|
cleanup
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$FSTYPE" != "nfs" -a ! -f "$ROOTFS" ]; then
|
if [ "$FSTYPE" != "nfs" -a "$FSTYPE" != "vmdk" -a ! -f "$ROOTFS" ]; then
|
||||||
echo "Error: Image file $ROOTFS doesn't exist"
|
echo "Error: Image file $ROOTFS doesn't exist"
|
||||||
cleanup
|
cleanup
|
||||||
return
|
return
|
||||||
@@ -342,6 +342,9 @@ if [ "$MACHINE" = "qemux86" ]; then
|
|||||||
KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
|
KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
|
||||||
QEMUOPTIONS="$QEMU_NETWORK_CMD $QEMU_UI_OPTIONS"
|
QEMUOPTIONS="$QEMU_NETWORK_CMD $QEMU_UI_OPTIONS"
|
||||||
fi
|
fi
|
||||||
|
if [ "$FSTYPE" = "vmdk" ]; then
|
||||||
|
QEMUOPTIONS="$QEMU_NETWORK_CMD $QEMU_UI_OPTIONS"
|
||||||
|
fi
|
||||||
# Currently oprofile's event based interrupt mode doesn't work(Bug #828) in
|
# Currently oprofile's event based interrupt mode doesn't work(Bug #828) in
|
||||||
# qemux86 and qemux86-64. We can use timer interrupt mode for now.
|
# qemux86 and qemux86-64. We can use timer interrupt mode for now.
|
||||||
KERNCMDLINE="$KERNCMDLINE oprofile.timer=1"
|
KERNCMDLINE="$KERNCMDLINE oprofile.timer=1"
|
||||||
@@ -366,6 +369,9 @@ if [ "$MACHINE" = "qemux86-64" ]; then
|
|||||||
KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
|
KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY"
|
||||||
QEMUOPTIONS="$QEMU_NETWORK_CMD $QEMU_UI_OPTIONS"
|
QEMUOPTIONS="$QEMU_NETWORK_CMD $QEMU_UI_OPTIONS"
|
||||||
fi
|
fi
|
||||||
|
if [ "$FSTYPE" = "vmdk" ]; then
|
||||||
|
QEMUOPTIONS="$QEMU_NETWORK_CMD $QEMU_UI_OPTIONS"
|
||||||
|
fi
|
||||||
# Currently oprofile's event based interrupt mode doesn't work(Bug #828) in
|
# Currently oprofile's event based interrupt mode doesn't work(Bug #828) in
|
||||||
# qemux86 and qemux86-64. We can use timer interrupt mode for now.
|
# qemux86 and qemux86-64. We can use timer interrupt mode for now.
|
||||||
KERNCMDLINE="$KERNCMDLINE oprofile.timer=1"
|
KERNCMDLINE="$KERNCMDLINE oprofile.timer=1"
|
||||||
@@ -561,8 +567,14 @@ fi
|
|||||||
|
|
||||||
echo "Running $QEMU..."
|
echo "Running $QEMU..."
|
||||||
# -no-reboot is a mandatory option - see bug #100
|
# -no-reboot is a mandatory option - see bug #100
|
||||||
echo $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append '"'$KERNCMDLINE $SCRIPT_KERNEL_OPT'"'
|
if [ "$FSTYPE" = "vmdk" ]; then
|
||||||
LD_PRELOAD="$GL_LD_PRELOAD" $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE $SCRIPT_KERNEL_OPT"
|
echo $QEMUBIN $VM $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT
|
||||||
|
LD_PRELOAD="$GL_LD_PRELOAD" $QEMUBIN $VM $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT
|
||||||
|
else
|
||||||
|
echo $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append '"'$KERNCMDLINE $SCRIPT_KERNEL_OPT'"'
|
||||||
|
LD_PRELOAD="$GL_LD_PRELOAD" $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE $SCRIPT_KERNEL_OPT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cleanup
|
cleanup
|
||||||
|
|||||||
Reference in New Issue
Block a user