Ich finde ja, mittlerweile ist ein Linux das universale System geworden. Wünsche äußern, alles einrichten, klappe halten. Dennoch gibt es nach wie vor nicht alle Tools die unter einem Linux System gut lauffähig gebracht werden können. Also braucht man eine VM mit Windows - oder sogar Mac OSX. Egal, ob es sich dabei um Catalina, Mojave, Big Sur oder Monterey handelt.
Allerdings ist es bei Apple nicht ganz einfach wie mit Windows eine VM zu laufen zu bekommen.
Das ging (Gott sei Dank) auch ein paar anderen Leuten auf den Zeiger und so kamen mehere Projekte ans Licht der Sonne, die einem das Einrichten auch gleich freundlich abnehmen:
Alle basieren auf der Idee sich ein Qemu Image zu basteln, was dann mit HIlfe von KVM betrieben wird und so eine vollständige Mac Umgebung aufbaut.
Ein valider Ansatz wie ich finde und zum Testen oder für das eine oder andere notwendige Tool bestimmt Hilfreich. Aktuell bevorzuge ich OSX-KVM, weil es mir mehr Möglichkeiten gibt.
Bitte achtet nur darauf, dass es sich um ein Kravattenträger-OS handelt, und Kravattenträger sind in der Regel unflexibel und komisch, sodass sie mit Dingen wie Lizenzen und Vereinbarungen kommen und man ggf ärger bekommt, wenn man solche Projekte falsch benutzt.
Wer Lust hat sich mal mit KVM zu befassen, der solllte sich auch gleich mal diese kleine Präsentation anschauen. Meiner Ansicht nach auch heute noch aktuell und vor allem ermöglicht sie sich selbst einen umfassenden Einblick zu verschaffen, was und vor allem wie man damit arbeiten kann.
Tolle Sache!
Quelle: Hier!
Es wäre gelogen wenn ich sagen würde, das ich "immer wieder" in die Situation gelange KVM Hosts zu bearbeiten oder zu migrieren. Dennoch ist KVM ein toller Hypervisor der sowohl Spaß macht, als auch interessante Features mit sich bringt und gleichzeitig vom Handling her den Eindruck vermittelt vieles noch handhaben zu können, auch wenn es mal zu dicken Schwierigkeiten kommt.
Daher habe ich für mein Setup ein Skript gebastelt, welches mir die Konfigurationen (XML - Daten) der eingerichteten virtuellen Maschinen mittels virsh exportiert um im falle eines Ausfalls die Maschinen wieder rekonstruieren zu können (mit wirsch define oder wirsch create).
Wichtig dafür ist natürlich das es ein externes Medium gibt auf dem die Daten gespeichert werden können. In meinem Fall ist es ein zentrales FreeNAS Storage.
Wenn man noch zwischen unterschiedlichen Linux Distributionen hin- und her switched hat man unter umständen das Problem, dass bestimmte Maschine types nicht vorhanden sind oder andere Werte angepasst werden müssen. Dazu nutze ich einfach "sed" das mir unter die Arme greift.
Als Ergebnis habe ich mittels Cron alle voll Stunde frische Konfigurationsdateien die ich einfach auf einem anderen KVM Host importieren kann.
Mit Hilfe meines Skript kann ich nun mit Hilfe von Parametern sowohl alle virtuellen Maschinen an ohne Angabe eines Parameters an einen in "CONFIGDESTDIR" definiertenOrt speichern, oder diesen angeben.
Beim Import verhält es sich ein wenig anders. Hier kann ich zusätzlich noch eine bestimmte Maschine angeben
#!/bin/bash CONFIGDESTDIR=/PATH/TO/STORAGE/ if [ "$1" == "export" ]; then if [ -z "$2" ]; then echo "Konfigurationen werden nach $CONFIGDESTDIR exportiert!"; else CONFIGDESTDIR=$2 echo "Konfigurationen werden nach $CONFIGDESTDIR exportiert!"; fi if [ -d $CONFIGDESTDIR ]; then echo "Exportverzeichnis ist vorhanden."; else echo "Exportverzeichnis ist nicht vorhanden und wird angelegt!"; mkdir $CONFIGDESTDIR; fi for i in $(virsh list --all | sed '1,2d' | awk '{print $2}') do VMNAME=$(basename $i .xml) virsh dumpxml --migratable $VMNAME > $CONFIGDESTDIR/$VMNAME.xml; sed -i "s/\/usr\/bin\/kvm/\/usr\/libexec\/qemu-kvm/" $CONFIGDESTDIR/$VMNAME.xml; sed -i "s/machine='pc-1.1'/machine='pc-i440fx-rhel7.0.0'/" $CONFIGDESTDIR/$VMNAME.xml; sed -i "s/machine='pc-0.12'/machine='pc-i440fx-rhel7.0.0'/" $CONFIGDESTDIR/$VMNAME.xml; sed -i "s/type='vmvga'/type='vga'/" $CONFIGDESTDIR/$VMNAME.xml; done fi if [ "$1" == "import" ]; then if [ -z "$2" ]; then echo "Konfigurationen werden aus $CONFIGDESTDIR importert!"; else CONFIGDESTDIR=$2 echo "Konfigurationen werden aus $CONFIGDESTDIR importert!"; fi if [ -d $CONFIGDESTDIR ]; then echo "Importverzeichnis ist vorhanden."; else echo "Importverzeichnis ist nicht vorhanden!"; exit; fi if [ -z "$3" ]; then echo "Es werden alle Maschinen importiert!"; for i in $(ls $CONFIGDESTDIR/*.xml) do echo "Definiere Maschine $i"; virsh define $i; echo "Richte Autostart ein fuer: $i"; virsh autostart $i; done else echo "Definiere Maschine $3"; virsh define $CONFIGDESTDIR/$3; echo "Richte Autostart ein fuer: $3"; virsh autostart $CONFIGDESTDIR/$3; fi fi