Εύκολες εικονικές μηχανές με το Quickemu

Εδώ και καιρό προσπαθώ να αντικαταστήσω το 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

Φαντάσου να προσπαθήσεις να το καταλάβεις και να το φτιάξεις με το χέρι :smiley:. Δυστυχώς για την ώρα αν θέλεις αλλαγές θα πρέπει να το σκαλίσεις. Αλλά για απλά πράγματα μπορείς να προσθέσει στο αρχείο conf:

cpu_cores="4"
ram="4G"
disk_size="16G"

Άλλα λειτουργικά

Κάποια στιγμή θα τσεκάρω να τρέξω Windows και macOS. Αν το κάνω θα ενημερώσω για τα αποτελέσματα, εκτός αν με προλάβει κάποιος άλλος. Επίσης μοιραστείτε εμπειρίες σας με αλλά λειτουργικά.

Το Qemu είναι ένα πολύ δυνατό λογισμικό, μπορεί να τρέξει σχεδόν οτιδήποτε είτε σαν εικονική μηχανή είτε σαν εξομοιωτής, αλλά ταυτόχρονα και πολύ πολύπλοκο. Αλλά η κοινότητα προσπαθεί να βρει λύσεις και ο συνδυασμός Quikemu/Quickgui είναι σε καλό δρόμο. Εσείς τι χρησιμοποιείτε σήμερα για τις εικονικές μηχανές σας;

7 «Μου αρέσει»

Όταν, ρίξε μου αν το θυμηθείς ένα mention… ;)

Δεν έχω χρησιμοποιήσει το quickemu, οπότε δεν γνωρίζω το εύρος των δυνατοτήτων του και αν μπορεί να συγκριθεί με τα vmware/virtualbox, έμαθα όμως πριν μερικές μέρες για το Quickgui και είπα να το δοκιμάσω με την ελπίδα αντικατάστσης του virtualbox, αλλά γρήγορα απογοητεύτηκα κι έτσι ασχολήθηκα τελικά ελάχιστα μ’ αυτό. Αφού διάβασα το παρόν θέμα όπου αναφέρονται κάποια αρκετά σημαντικά πλεονεκτήματα το qemu είπα να το ρίξω μια δεύτερη ματιά. Δεν μπορώ να πω ότι άλλαξα γνώμη μιας και το quickguι είναι αρκετά απλοποιημένο και στερείται επιλογών και ευελιξίας οπότε νομίζω ότι περιορίζει τις δυνατότητες το qemu και είναι(τουλάχιστον προς το παρόν) πολύ απλοποιημένο ώστε να μπορεί να συγκριθεί με τα vmware/virtualbox. Και πάλι δεν ασχολήθηκα ιδιαίτερα αφού εξ’ αρχής περιορίζει τις επιλογές, έχοντας περιορισμένες επιλογές στην επιλογή λειτουργικού και εκδόσεών του, χωρίς να δίνει τη δυνατότητα χρήσης κάποιο άλλου/άλλης έκδοσης. Δε μπορείς για παράδειγμα να επιλέξεις windows XP ή 7. Επίσης δε μπορείς να χρησιμοποιήσεις κάποιο υπάρχον iso. Πρέπει υποχρεωτικά να κάνεις λήψη του iso, κι έτσι δε μπορείς ούτε με αυτό τον έμμεσο τρόπο να παρακάμψεις τις περιορισμένες επιλογές λειτουργικών ή τη χρονοβόρα λήψη(σε σχέση με τη χρήση ήδη ληφθέντος αρχείου).

Ευχαριστώ για την κριτική ματιά. Στα περισσότερα έχεις δίκιο. Η δική μου προσπάθεια πριν 2 εβδομάδες ήταν ακόμα ποιο απογοητευτική, περίμενα μετά το κατέβασμα να με ρωτήσει κάτι ή να πει πως είναι έτοιμη. Δεν είχα καταλάβει πως την είχε φτιάξει λολ.

Μπορείς να το παρακάμψεις αυτό και να φτιάξεις το αρχείο ρυθμίσεων με το χέρι καθώς και τον δίσκο. Ως προς τον περιορισμό των επιλογών είναι ποιο κοντά στο GnomeBoxes παρα στο virt-manager και η σύγκριση πρέπει να γίνει με αυτό.

Αυτήν την στιγμή υπάρχουν πολλές λύσεις από το proxmox μέχρι τo gnomeboxes. Για την χρήση που το θέλω, δηλαδή οικιακή χρήση και όχι κάποιο cluster managment, δοκιμή διανομών καμία φορά και παιγνίδια καμία από τις λύσεις σε qemu/kvm δεν με ικανοποιεί. Αλλά το βρήκα την απλούστερη VFM λύση. Και τα δυο είναι απλά εργαλεία από το πουθενά, αλλά είναι πιστεύω σε καλό δρόμο παρά το νεαρό της ηλικίας τους.

Και το quickemu είναι μόλις 1200 γραμμές σε κατανοητό bash !

Τώρα αν κάποιος παίζει το qemu στα δάκτυλα, έχει τόσες δυνατότητες που δεν θα τον καλύψει κανένα gui ¨-)

Virtual manager όπως προτείνει ο @GNUTechie!

Δυστυχώς, δεν τα κατάφερα με το Quickemu και το Quickgui, γιατί:
ERROR! Qemu 6.0.0 or newer is required, detected 4.2.1.

και δεν μπορώ να το διορθώσω με
sudo apt install qemu
ούτε με την εγκατάσταση του αρχείου qemu-6.2.0-rc1.

Δεν μπορώ να καταλάβω γιατί δεν κάνει αναβάθμιση το qemu σε 6 το οποίο είναι προϋπόθεση για το quickemu και παραμένει σε 4.2.1.

( Three days later :infinity: ).Αφαίρεσα το ήδη υπάρχον qemu
sudo apt remove qemu
και έκανα πάλι από την αρχή την εγκατάσταση.
Λειτούργησε άψογα!

Το δοκίμασα πριν κάνα μήνα. Γρήγορο κι απλό, μα δεν κατάφερα να στήσω μηχανή σε 2ο hdd.
Με τον virt-manager ήταν εύκολα τα pools κλπ.
Δυστυχώς για μένα δεν κατάφερα να βρω τρόπο να λειτουργήσει σε 2ο hdd, ώστε όταν κάθε 2 χρόνια κάνω καθαρή εγκατάσταση του Ubuntu να έχω έτοιμα τα vms.

Τα Windows 10 που δοκίμασα, μια χαρά λειτουργούν:

Τι εννοείς ότι δεν κατάφερες να λειτουργήσει σε δεύτερο δίσκο? Απ’ ότι βλέπω από τις λίγες ρυθμίσεις που έχει, δίνει τη δυνατότητα επιλογής “working directory” όπου μπορείς να επιλέξεις μεταξύ όλων των προσαρτημένων δίσκων/διαμερισμάτων. Αν λοιπόν ο δίσκος είναι προσαρτημένος θα εμφανίζεται εκεί και μπορείς να επιλέξεις κάποιο φάκελο όπου θα “εγκατασταθεί” η εικονική μηχανή.

1 «Μου αρέσει»

Χμ, έχω 2 partitions σε 2ο σκληρό, και τα 2 είχαν τον ίδιο ελεύθερο χώρο (200Gb) με auto mount, στο ένα λειτουργεί στο άλλο όχι. Μετά την ανάρτηση σου το διαπίστωσα. Δεν ξέρω γιατί

Για κάποιο λόγο η εφαρμογή δεν έχει δικαιώματα εγγραφής στο διαμέρισμα πιθανότατα. Δες αν και τα 2 έχουν προσαρτηθεί με τις ίδιες παραμέτρους. Επίσης αν είναι ntfs και έχεις και windows εγκατεστημένα στο σύστημά σου μπορεί αυτά να το έχουν κλειδώσει. Σε τέτοια περίπτωση δοκίμασε να μπεις στα windows, να τ’ αφήσεις να φορτώσουν κανονικά και μετά να κάνεις επανεκκίνηση. Ίσως επίσης να χρειάζεται ν’ απενεργοποιήσεις το fast startup των windows.

1 «Μου αρέσει»