| Index: lib/cros_vm_lib.sh
|
| diff --git a/lib/cros_vm_lib.sh b/lib/cros_vm_lib.sh
|
| index 7a99cbebe25774791d68a0892780977a8a402f22..0ed87891bb10395d4bbdbd83e998f3f510baccfd 100644
|
| --- a/lib/cros_vm_lib.sh
|
| +++ b/lib/cros_vm_lib.sh
|
| @@ -14,6 +14,7 @@ DEFINE_string vnc "" "VNC Server to display to instead of SDL."
|
|
|
| KVM_PID_FILE=/tmp/kvm.$$.pid
|
| LIVE_VM_IMAGE=
|
| +KVM_MONITOR_SOCKET=
|
|
|
| function get_pid() {
|
| sudo cat "${KVM_PID_FILE}"
|
| @@ -40,6 +41,7 @@ function start_kvm() {
|
| echo "Starting a KVM instance" >&2
|
| local nographics=""
|
| local usesnapshot=""
|
| + local save_vm_state=""
|
| if [ ${FLAGS_no_graphics} -eq ${FLAGS_TRUE} ]; then
|
| nographics="-nographic -serial none"
|
| fi
|
| @@ -51,6 +53,14 @@ function start_kvm() {
|
| snapshot="-snapshot"
|
| fi
|
|
|
| + if [ ${FLAGS_save_vm_state} -eq ${FLAGS_TRUE} ]; then
|
| + # Redirect the QEMU monitor to the guest usb serial port so tests
|
| + # can trigger a "savevm" command from inside the guest.
|
| + KVM_MONITOR_SOCKET=/tmp/kvm.mon.socket.$$
|
| + save_vm_state="-monitor unix:${KVM_MONITOR_SOCKET},server,nowait
|
| + -usbdevice serial::unix:${KVM_MONITOR_SOCKET}"
|
| + fi
|
| +
|
| sudo kvm -m 1024 \
|
| -vga std \
|
| -pidfile "${KVM_PID_FILE}" \
|
| @@ -58,6 +68,7 @@ function start_kvm() {
|
| -net nic,model=e1000 \
|
| ${nographics} \
|
| ${snapshot} \
|
| + ${save_vm_state} \
|
| -net user,hostfwd=tcp::${FLAGS_ssh_port}-:22 \
|
| -hda "${1}"
|
|
|
| @@ -100,6 +111,9 @@ function stop_kvm() {
|
| echo "Killing ${pid}" >&2
|
| sudo kill ${pid}
|
| sudo rm "${KVM_PID_FILE}"
|
| + if [ -n "${KVM_MONITOR_SOCKET}" ]; then
|
| + sudo rm "${KVM_MONITOR_SOCKET}"
|
| + fi
|
| else
|
| echo "No kvm pid found to stop." >&2
|
| return 1
|
|
|