起動した QEMU VM の名前を判別したいと思います。
qemu-system-x86_64 -m 4096 -smp 1 \
-net user -net nic,model=virtio -boot menu=on \
-drive file=guixsd-usb-install-0.13.0.x86_64-linux.img \
-drive file=guixsd.img
(GuixSD VM インストール ガイド)。VM の名前を決定したい理由は、コマンドを使用してマシンの状態を保存できるようにするためです (VirtualBox VM の場合と同様に) savevm
。私は以下を使用してみました:
virsh -c qemu:///system list
しかし、これは次の結果を返します:
Id Name State
----------------------------------------------------
同様に実行中:
ps -ef | grep qemu-system-x86_64
(あたりこの AskUbuntu の回答) は、VM を起動するために使用したコマンドのため役に立ちません。何らかの関連があるのであれば、私はホスト OS として Gentoo Linux を実行しています。
答え1
virsh
は、仮想化管理フレームワークを操作するための CLI ツールです。このフレームワークでは、管理インターフェイスを介して、、など、libvirt
でサポートされているハイパーバイザーのいずれかを使用して仮想マシンを定義します。libvirt
qemu
xen
virtualbox
libvirt
は、のようなものよりも抽象度の高いレベルを提供します。これを使用すると、 を直接qemu
開始することはありません。代わりに、と対話できるようにする特別なオプションを使用して を開始します。qemu
libvirt
qemu
qemu
たとえば、私のシステムでは、libvirt
VM の 1 つに対して次のパラメータを使用して qemu を起動しました。
qemu-system-x86_64 -enable-kvm \
-name freebsd11.0 -S \
-machine pc-i440fx-wily,accel=kvm,usb=off \
-cpu Nehalem \
-m 1536 \
-realtime mlock=off \
-smp 3,sockets=3,cores=1,threads=1 \
-uuid 82f3448e-2767-46b1-a7d1-7072184ef924 \
-no-user-config \
-nodefaults \
-chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-freebsd11.0/monitor.sock,server,nowait \
-mon chardev=charmonitor,id=monitor,mode=control \
-rtc base=utc,driftfix=slew \
-global kvm-pit.lost_tick_policy=discard \
-no-hpet \
-no-shutdown \
-global PIIX4_PM.disable_s3=1 \
-global PIIX4_PM.disable_s4=1 \
-boot strict=on \
-device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x6.0x7 \
-device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x6 \
-device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x6.0x1 \
-device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x6.0x2 \
-device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 \
-drive file=/home/chazelas/Downloads/FreeBSD-11.0-RC1-amd64.qcow2,format=qcow2,if=none,id=drive-virtio-disk0 \
-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x7,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 \
-netdev tap,fd=26,id=hostnet0,vhost=on,vhostfd=28 \
-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:11:8a:53,bus=pci.0,addr=0x3 \
-chardev pty,id=charserial0 \
-device isa-serial,chardev=charserial0,id=serial0 \
-chardev spicevmc,id=charchannel0,name=vdagent \
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 \
-spice port=5900,addr=127.0.0.1,disable-ticketing,image-compression=off,seamless-migration=on \
-device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16,bus=pci.0,addr=0x2 \
-device intel-hda,id=sound0,bus=pci.0,addr=0x4 \
-device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 \
-chardev spicevmc,id=charredir0,name=usbredir \
-device usb-redir,chardev=charredir0,id=redir0 \
-chardev spicevmc,id=charredir1,name=usbredir \
-device usb-redir,chardev=charredir1,id=redir1 \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 \
-msg timestamp=on
そのほとんどは仮想マシンの仮想ハードウェアの仕様ですが、次の内容も表示されます。
-chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-freebsd11.0/monitor.sock,server,nowait
-mon chardev=charmonitor,id=monitor,mode=control
(JSONベースのいくつlibvirt
かのqemu
機械プロトコル)
しかし、これを直接使用することはできません。virsh
のようなコマンドを発行しvirsh shutdown
、virsh
それをデーモンに送信し、デーモンがそのチャネルを使用してlibvirtd
それを特定の命令に変換します。qemu
ただし、あなたの場合は は使用されていません。または(または)libvirt
を使用して VM を定義していません。代わりに、自分で手動で起動しました。virt-manager
virt-install
virsh define/create
qemu
libvirt
virsh
がインストールされていても、その VM についての知識はありません。そのため、それを使用して VM と対話しようとしても意味がありません。
あなたが始めた方法ではqemu
、特に何も指定していませんモニター対話するためのチャネルなので、デフォルトが取得されます。
デフォルトでは、通常はSDLグラフィックコンソール。
そこに入力Ctrl+Alt+2すると、人間モニターインターフェースです。これはコマンドラインインターフェースです。
(qemu)
コマンドを入力できるプロンプト。help
概要を確認してください。
もしあなたが名前を VM に追加すると-name
、そこにあるコマンドで取得できるようになりますinfo name
。
ここでsavevm
qemu コマンドを実行します。ただし、私の知る限り、このコマンドを使用するにはsavevm
、VM に少なくとも 1 つのqcow2
ディスク イメージが接続されている必要がありますが、これは当てはまらないようです。
VM を一時停止して状態を保存するには、プロンプトで次のように実行します(qemu)
。
migrate "exec:gzip>/path/to/savedstate.gz"
これにより、VM が一時停止され、圧縮された状態がファイルに保存されます。その後、コマンド ラインに をquit
追加することで、保存された状態から VM を復元できます。-incoming 'exec:gunzip</path/to/savestate.gz'
qemu-system
qemu をよく知っていればできることはたくさんありますが、作業を楽にしたい場合は、libvirt のような qemu の管理ラッパーを使用するとよいでしょう。