Ich benutze Qemu Emulator für aarch64 und möchte einen externen Checkpoint (oder eine schnelle Weiterleitung) erstellen, um alles zu speichern, was ich brauche, um das System neu zu starten, nur wenn ich einen Checkpoint erstelle. (In der Tat, ich möchte den Boot-Schritt überspringen) Ich habe nur etwas auf qemu VM-Snapshot und schnelle Weiterleitung gefunden, aber es funktioniert nicht für den Emulator. Gibt es eine Checkpoint-Funktion für den Qemu-Emulator?Hat Qemu-Emulator Checkpoint-Funktion?
Antwort
Ein savevm Snapshot sollte tun, was Sie wollen. Die kurze Antwort ist, dass Sie eine QCOW2-Diskette für die zu speichernden Snapshots einrichten müssen, und dann können Sie im Monitor den Befehl "savevm" verwenden, um den Snapshot zu erstellen. Dann können Sie über die Befehlszeile '-Loadvm' von dort aus fortfahren. Dies alles funktioniert gut in der Emulation von AArch64.
https://translatedcode.wordpress.com/2015/07/06/tricks-for-debugging-qemu-savevm-snapshots/ hat ein ausführlicheres Tutorial.
Minimal Beispiel
Pete Antwort nur für mich gearbeitet, aber lassen Sie mich ein vollständig reproduzierbar Beispiel liefern.
Ich habe voll automatisiert alles an: https://github.com/cirosantilli/linux-kernel-module-cheat/tree/1e0f0b492855219351b0bfa2eec4d3a6811fcaaa#snapshot
Der entscheidende Schritt ist das Bild zu konvertieren auf wie erklärt qcow2: https://docs.openstack.org/image-guide/convert-images.html
cd buildroot/output.x86_64~/images
qemu-img convert -f raw -O qcow2 rootfs.ext2 rootfs.ext2.qcow2
Und der letzte QEMU Befehl war:
./buildroot/output.x86_64~/host/usr/bin/qemu-system-x86_64 -m 128M -monitor telnet::45454,server,nowait -netdev user,hostfwd=tcp::45455-:45455,id=net0 -smp 1 -M pc -append 'root=/dev/vda nopat nokaslr norandmaps printk.devkmsg=on printk.time=y console=ttyS0' -device edu -device virtio-net-pci,netdev=net0 -drive file=./buildroot/output.x86_64~/images/rootfs.ext2.qcow2,if=virtio,format=qcow2 -kernel ./buildroot/output.x86_64~/images/bzImage -nographic
Um es zu testen, melden Sie sich bei der VM an und führen Sie Folgendes aus:
i=0; while true; do echo $i; i=$(($i + 1)); sleep 1; done
dann auf einer anderen Schale, öffnen den Monitor:
telnet localhost 45454
savevm my_snap_id
Die Zählung wird fortgesetzt. Dann, wenn wir die vm:
laden, geht die Zählung zurück, wo wir gespeichert haben. Dies zeigt, dass CPU- und Speicherstatus zurückgesetzt wurden.
Wir können auch überprüfen, ob der Plattenzustand auch umgekehrt ist. Gast:
echo 0 >f
Monitor:
savevm my_snap_id
Gast:
echo 1 >f
Monitor:
loadvm my_snap_id
Gast:
cat f
Und der Ausgang ist 0
.
- 1. Hat hat TestNG wie SpringJUnit4ClassRunner Läufer
- 2. Aktivität hat
- 3. VIM: hat ('macunix') oder hat ('Mac') funktionieren nicht
- 4. hat clisp (Ubuntu-Port) hat einen Einzug und parenthese Abschluss
- 5. "Ersatz hat n Zeilen, Daten hat p" Fehlermeldung mit Löss()
- 6. launch4j exe hat nichts zu sagen, hat jemand einen Vorschlag?
- 7. Ersatz x Reihen hat, Daten hat y - Paste() Funktion
- 8. Was hat TypeError: 'Datei' Objekt hat kein Attribut '__getitem__'?
- 9. Hat Xpath Abfrage hat Limit-Option wie mysql
- 10. collectionView hat didSelectItemAtIndexPath nicht aufgerufen, wenn superview eine Geste hat
- 11. Hat D "newtype"?
- 12. Hat Fortran eine Standardbibliothek?
- 13. Postgresql JSON hat Schlüssel
- 14. Hat IronRuby einen CodeDomProvider?
- 15. Hat Ruby Atomvariablen?
- 16. Warum hat Java neue?
- 17. Hat Python eine Synchronisierung?
- 18. Hat POSIX ein Änderungsprotokoll?
- 19. Hat Ruby keine Isalpha?
- 20. Hat Trac Remote-API?
- 21. Enumerable.Repeat hat einige Speicherprobleme?
- 22. Hat PrinterSettings.GetHdevmode() einen Fehler?
- 23. Hat OpenFileDialog.Filenames ein Limit?
- 24. Hat Python automatische Ressourcenverwaltung?
- 25. Typ hat kein Mitglied
- 26. Hat MySQL zeitbasierte Trigger?
- 27. Hat jemand versucht, Flax?
- 28. Hat Java Schnittstellen erfunden?
- 29. App Transport Security hat
- 30. IAudioSessionNotification, hat jemand Arbeitscode?
Ist es dem Gast möglich, QEMU mitzuteilen, wann der Snapshot erstellt werden soll? –