Εδώ και καιρό προσπαθώ να αντικαταστήσω το VirtualBox και το VMWare με το Qemu. Σήμερα νομίζω τα κατάφερα με το Qickemu.
Το πρόβλημα και οι απαιτήσεις
Λύσεις όπως το Gnome Boxes (διαβάστε για αυτό εδώ είναι μια καλή λύση αν οι απαιτήσεις σου είναι λίγες, αλλά η ρυθμίσεις που μπορεί να κάνεις είναι ελάχιστες και δεν θέλεις virgil για 3D. Το VirtualBox δεν είχε καλή απόδοση στα 3D γραφικά, και το VMWare παίζει μεν μια χαρά αλλά μπορείς να τρέχεις μόνο μία στην τσάμπα του έκδοση. Το VirManger είναι μια καλύτερη λύση, αλλά είχα πρόβλημα με την επιτάχυνση γραφικών. Ο @GNUTechie έχει γράψει μια πολύ καλή σειρά άρθρων, ψάξτε την στο φόρουμ.
Δυστυχώς τις βλέπεις με το gtk fronted και θέλεις SDL για να έχει γραφικά με Virtio. Δεν ξέρω αν σήμερα το πρόβλημα έχει λυθεί. Οι ρυθμίσεις του είναι με γραφικό τρόπο, αλλά για να μετατρέψεις το XML σε παραμέτρους του Qemu είναι μια ταλαιπωρία. Ω το προσπάθησα αντιγράφοντας τις παραμέτρους από το /proc/cmdline. Ω η φρίκη!!
Αυτό που θέλω είναι μια εύκολη δημιουργία μιας μηχανής χωρίς μετά να εγκαθιστώ το SPICE για κοινό clipboard, να έχω γρήγορη πρόσβαση στα αρχεία του host, καλή επιτάχυνση 3D (και με κλιμάκωση γραφικών – γιατί όχι;) και να μπορώ να τρέχω πολλές ταυτόχρονα. Ζητάω πολλά γιατρέ μου;
Η λύση QuickEmu και Quickgui
Το πρώτο είναι ένα απλό εργαλείο που κατεβάζει αρχεία iso και φτιάχνει εικονικές μηχανές. Έχει πολλές δυνατότητες, και υποστηρίζει πολλά λειτουργικά. Διαβάστε για τις δυνατότητες του εδώ
Το δεύτερο είναι ένα απλό gui. Με αυτό κατεβάζεις, στήνεις και τρέχεις μια εικονική μηχανή. Δυστυχώς δεν υπάρχει ακόμα κάποια δυνατότητα παραμετροποίησης.
Εγκατάσταση
Σε ένα τερματικό
sudo apt-add-repository ppa:flexiondotorg/quickemu
sudo add-apt-repository ppa:yannick-mauray/quickgui
sudo apt update
sudo apt install quickemu quickgui
Χρήση
Αν ξεκινήσουμε το QuickQui θα δούμε ένα πολύ απλό interface
Θα κατεβάσουμε πρώτα μια μηχανή διαλέγοντας μια από αυτές που υποστηρίζει. Δεν ξεχνάμε να φτιάξουμε ένα φάκελο να τις έχουμε εκεί όλες μαζί.
Μετά που θα τελειώσει το κατέβασμα θα πάμε στο επόμενο tab και θα την βρούμε στημένη.
Μετά απλά θα την ξεκινήσουμε και έχουμε τα πάντα έτοιμα.
Η οθόνη μπορεί να λειτουργήσει και σε κατάσταση κλιμάκωσης. Δείτε για παράδειγμα στην εικόνα πόσο καλά παίζει ένα παιγνίδι σε κλίμακα κάπου 50%. Στο Elementary δεν χρειάστηκε να στήσω απολύτως τίποτε άλλο. Είχα 3D και shared clipboard. Στο Ubuntu ίσως να θέλει να στήσεις τα πακέτα spice-vdagent
και spice-webdavd
.
Δείτε το τερματικό πόσο μεγάλα είναι τα γράμματα για να δείτε την σμίκρυνση. Όσο για την ταχύτητα; Δεν έχω κάνει μετρήσεις αλλά είναι ίσως η γρηγορότερη εικονική μηχανή που έχω τρέξει στην συσκευή.
Κοινή χρήση αρχείων
Η μόνη ρύθμιση που έκανα ήταν να ενεργοποιήσω το mount. Για τεχνικούς λόγους είναι λίγο πολύπλοκο να το βάλεις στο /etc/fstab
, οπότε πήγα απλά με ένα oneshot service.
vi virtio.service
[Unit] Description=Mount public folder [Service] Type=oneshot ExecStart=mount -t 9p -o trans=virtio Public-asfodelus /home/odin/Public [Install] WantedBy=multi-user.target
και στην συνέχεια
sudo cp virtio.service /etc/systemd/system/
sudo systemctl enable --now virtio.service
sudo systemctl status virtio.service
Αν στο “κανονικό” λειτουργικό έχεις εγκατεστημένη την samba θα το δει χωρίς να κάνεις τίποτα.
Κάτω από το καπάκι
Μέσα στον φάκελο ~/Quickemu
υπάρχει ένα απλό αρχείο elementary-6.0.conf
που περιγράφει την εικονική μηχανή.
guest_os="linux" disk_img="elementary-6.0/disk.qcow2" iso="elementary-6.0/elementaryos-6.0-stable.20211005.iso"
και μέσα στον φάκελο ~/Quickemu/elementary-6.0
θα βρούμε το iso, το δίσκο της μηχανής και τα logs. Στο αρχείο elementary-6.0.ports
υπάρχουν πληροφορίες για τις πόρτες που θέλεις για να συνδεθείς με ssh ή spice.
asfodelus@pop-os:~/Quickemu/elementary-6.0$ ls disk.qcow2 elementary-6.0.ports elementaryos-6.0-stable.20211005.iso elementary-6.0.log elementary-6.0.sh OVMF_VARS.fd
Επίσης ένα αρχείο κελύφους που την ξεκινάει. Δείτε το
elementary-6.0.sh
#!/usr/bin/env bash
/usr/bin/qemu-system-x86_64 -name elementary-6.0,process=elementary-6.0 -pidfile elementary-6.0/elementary-6.0.pid -enable-kvm -machine q35,smm=off,vmport=off -cpu host,kvm=on,topoext -smp cores=2,threads=2,sockets=1 -m 4G -device virtio-balloon -smbios type=2,manufacturer=“Wimpys World”,product=Quickemu,version=2.3.2,serial=jvzclfjbeyq.pbz,location=wimpysworld.com,asset=elementary-6.0 -device qxl-vga,xres=1152,yres=648 -display none -device usb-ehci,id=input -device usb-kbd,bus=input.0 -device usb-tablet,bus=input.0 -audiodev spice,id=audio0,out.mixing-engine=off -device intel-hda -device hda-duplex,audiodev=audio0 -rtc base=localtime,clock=host,driftfix=slew -spice disable-ticketing=on,port=5930 -device virtio-serial-pci -chardev socket,id=agent0,path=elementary-6.0/elementary-6.0-agent.sock,server=on,wait=off -device virtserialport,chardev=agent0,name=org.qemu.guest_agent.0 -chardev spicevmc,id=vdagent0,name=vdagent -device virtserialport,chardev=vdagent0,name=com.redhat.spice.0 -chardev spiceport,id=webdav0,name=org.spice-space.webdav.0 -device virtserialport,chardev=webdav0,name=org.spice-space.webdav.0 -device virtio-rng-pci,rng=rng0 -object rng-random,id=rng0,filename=/dev/urandom -device qemu-xhci,id=spicepass -chardev spicevmc,id=usbredirchardev1,name=usbredir -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1 -chardev spicevmc,id=usbredirchardev2,name=usbredir -device usb-redir,chardev=usbredirchardev2,id=usbredirdev2 -chardev spicevmc,id=usbredirchardev3,name=usbredir -device usb-redir,chardev=usbredirchardev3,id=usbredirdev3 -device pci-ohci,id=smartpass -device usb-ccid -chardev spicevmc,id=ccid,name=smartcard -device ccid-card-passthru,chardev=ccid -monitor none -serial mon:stdio -device virtio-net,netdev=nic -netdev user,hostname=elementary-6.0,hostfwd=tcp::22220-:22,id=nic -global driver=cfi.pflash01,property=secure,value=on -drive if=pflash,format=raw,unit=0,file=/usr/share/OVMF/OVMF_CODE_4M.fd,readonly=on -drive if=pflash,format=raw,unit=1,file=elementary-6.0/OVMF_VARS.fd -device virtio-blk-pci,drive=SystemDisk -drive id=SystemDisk,if=none,format=qcow2,file=elementary-6.0/disk.qcow2 -fsdev local,id=fsdev0,path=/home/asfodelus/Public,security_model=mapped-xattr -device virtio-9p-pci,fsdev=fsdev0,mount_tag=Public-asfodelus
Φαντάσου να προσπαθήσεις να το καταλάβεις και να το φτιάξεις με το χέρι . Δυστυχώς για την ώρα αν θέλεις αλλαγές θα πρέπει να το σκαλίσεις. Αλλά για απλά πράγματα μπορείς να προσθέσει στο αρχείο conf
:
cpu_cores="4"
ram="4G"
disk_size="16G"
Άλλα λειτουργικά
Κάποια στιγμή θα τσεκάρω να τρέξω Windows και macOS. Αν το κάνω θα ενημερώσω για τα αποτελέσματα, εκτός αν με προλάβει κάποιος άλλος. Επίσης μοιραστείτε εμπειρίες σας με αλλά λειτουργικά.
Το Qemu είναι ένα πολύ δυνατό λογισμικό, μπορεί να τρέξει σχεδόν οτιδήποτε είτε σαν εικονική μηχανή είτε σαν εξομοιωτής, αλλά ταυτόχρονα και πολύ πολύπλοκο. Αλλά η κοινότητα προσπαθεί να βρει λύσεις και ο συνδυασμός Quikemu/Quickgui είναι σε καλό δρόμο. Εσείς τι χρησιμοποιείτε σήμερα για τις εικονικές μηχανές σας;