Skip to content

Instantly share code, notes, and snippets.

@xen0l
Created September 30, 2014 15:56
Show Gist options
  • Save xen0l/732fb7a6bb50ffbf0ba9 to your computer and use it in GitHub Desktop.
Save xen0l/732fb7a6bb50ffbf0ba9 to your computer and use it in GitHub Desktop.
How to make QEMU guest-agent work on SmartOS
[root@smartos ~]# UUID="afe2f552-4a35-4c44-8855-a9bac10f27d2"
[root@smartos ~]# vmadm update ${UUID} qemu_extra_opts="-chardev socket,path=/tmp/vm.qga,server,nowait,id=qga0 -device virtio-serial -device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0"
Successfully updated VM afe2f552-4a35-4c44-8855-a9bac10f27d2
[root@smartos ~]# vmadm boot ${UUID}
Successfully started VM afe2f552-4a35-4c44-8855-a9bac10f27d2
[root@smartos ~]# sleep 60 # Machine needs to boot up
[root@smartos ~]# echo '{"execute": "guest-ping" }' | socat stdio unix-connect:/zones/${UUID}/root/tmp/vm.qga # Is GA alive?
{"return": {}}
[root@smartos ~]# echo '{"execute": "guest-info" }' | socat stdio unix-connect:/zones/${UUID}/root/tmp/vm.qga # show information about GA
{"return": {"version": "0.12.1", "supported_commands": [{"enabled": true, "name": "guest-set-vcpus"}, {"enabled": true, "name": "guest-get-vcpus"}, {"enabled": true, "name": "guest-network-get-interfaces"}, {"enabled": true, "name": "guest-suspend-hybrid"}, {"enabled": true, "name": "guest-suspend-ram"}, {"enabled": true, "name": "guest-suspend-disk"}, {"enabled": true, "name": "guest-fstrim"}, {"enabled": true, "name": "guest-fsfreeze-thaw"}, {"enabled": true, "name": "guest-fsfreeze-freeze"}, {"enabled": true, "name": "guest-fsfreeze-status"}, {"enabled": false, "name": "guest-file-flush"}, {"enabled": false, "name": "guest-file-seek"}, {"enabled": false, "name": "guest-file-write"}, {"enabled": false, "name": "guest-file-read"}, {"enabled": false, "name": "guest-file-close"}, {"enabled": false, "name": "guest-file-open"}, {"enabled": true, "name": "guest-shutdown"}, {"enabled": true, "name": "guest-info"}, {"enabled": true, "name": "guest-set-time"}, {"enabled": true, "name": "guest-get-time"}, {"enabled": true, "name": "guest-ping"}, {"enabled": true, "name": "guest-sync"}, {"enabled": true, "name": "guest-sync-delimited"}]}}
[root@smartos ~]# echo '{"execute":"guest-fsfreeze-freeze"}' | socat stdio unix-connect:/zones/${UUID}/root/tmp/vm.qga # freeze guest filesystem
{"return": 2}
[root@smartos ~]# echo '{"execute":"guest-fsfreeze-status"}' | socat stdio unix-connect:/zones/${UUID}/root/tmp/vm.qga
{"return": "frozen"}
[root@smartos ~]# echo '{"execute":"guest-fsfreeze-thaw"}' | socat stdio unix-connect:/zones/${UUID}/root/tmp/vm.qga # thaw guest filesystem
{"return": 2}
[root@smartos ~]# echo '{"execute":"guest-fsfreeze-status"}' | socat stdio unix-connect:/zones/${UUID}/root/tmp/vm.qga
{"return": "thawed"}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment