Μετά τη δημιουργία νέας εικονικής μηχανής με το VirtualBox και το installation κάποιας διανομής Linux, η πρώτη μας δουλειά αξίζει να είναι η εγκατάσταση των λεγόμενων VirtualBox Guest Additions. Γιατί όμως πρέπει ν’ ασχολούμαστε; Τι κερδίζουμε και πώς ακριβώς εγκαθιστούμε αυτά τα Guest Additions;

Τα Guest Additions του VirtualBox είναι ένα σύνολο device drivers κι εργαλείων για διάφορα guest OSes, τα οποία αφενός βελτιώνουν τις επιδόσεις των αντίστοιχων εικονικών μηχανών, αφετέρου διευκολύνουν την επικοινωνία –ή αν θέλετε τη συνεργασία– μεταξύ host OS (το λειτουργικό του φυσικού υπολογιστή) και guest OS (το λειτουργικό ενός εικονικού υπολογιστή ή αλλιώς μιας εικονικής μηχανής). Εγκαθιστώντας, για παράδειγμα, τα κατάλληλα Guest Additions στο λειτουργικό ενός VM (virtual machine), έχουμε περισσότερες επιλογές για την ανάλυση οθόνης του graphical desktop στον guest, δυναμική αλλαγή ανάλυσης όταν το VM δεν είναι σε full screen, αλλά και δυνατότητα για copy/paste απλού κειμένου μεταξύ εφαρμογών που τρέχουν στο host και στο guest. Υποστηρίζεται, επίσης, το drag’n’drop μεταξύ host και guest, τα shared folders για host και guest – ενώ κατά περιπτώσεις έχουμε και hardware acceleration για το υποσύστημα γραφικών του VM.

Αν και τα VirtualBox Guest Additions δεν διατίθενται για κάθε guest OS, οι διανομές Linux γενικά υποστηρίζονται επαρκώς. Στη συνέχεια δείχνουμε, αναλυτικά και βήμα προς βήμα, πώς μπορούμε να έχουμε την πλέον πρόσφατη έκδοση των Guest Additions σε VMs με openSUSE, Debian ή Fedora. (Παρόμοια θα εργαστείτε και σε άλλες διανομές, όπως, π.χ., Ubuntu και CentOS.) Μην παραλείψετε να διαβάσετε και την τελευταία ενότητα του άρθρου, με απαντήσεις σε συχνές ερωτήσεις περί των VirtualBox Guest Additions.

Πριν προχωρήσετε προτείνουμε να έχετε την πλέον πρόσφατη έκδοση του VirtualBox για το host OS σας, καθώς και την αντίστοιχη έκδοση του λεγόμενου Extension Pack. Αν χρειαστεί, κατεβάστε τα αντίστοιχα αρχεία απευθείας από τον download server του VirtualBox. Για παράδειγμα, τη στιγμή που γράφαμε το παρόν η νεότερη έκδοση του VirtualBox ήταν η 6.0.12, οπότε πήγαμε απευθείας στο https://download.virtualbox.org/virtualbox/6.0.12. Από εκεί κατεβάσαμε την εκδοχή του VirtualBox για το Mac OS X (αρχείο VirtualBox-6.0.12-133076-OSX.dmg), καθώς και το αντίστοιχο Extension Pack (αρχείο Oracle_VM_VirtualBox_Extension_Pack-6.0.12-133076.vbox-extpack).

Περίπτωση openSUSE Leap 15.1

Από ένα παράθυρο τερματικού, αρχικά φρεσκάρουμε τα repositories του openSUSE:

sudo zypper ref

Αμέσως μετά εφαρμόζουμε τις όποιες διαθέσιμες αναβαθμίσεις:

sudo zypper -n up

Αν αναβαθμιστεί κι ο πυρήνας θα χρειαστεί να επανεκκινήσουμε το λειτουργικό – και προτείνεται να το κάνουμε πριν προχωρήσουμε (sudo reboot).

Μετά την εγκατάσταση του Leap 15.1 σε περιβάλλον VirtualBox τα Guest Additions είναι ήδη εγκατεστημένα. Κατά πάσα πιθανότητα, όμως, η έκδοση των Guest Additions από τα repositories του openSUSE θα είναι αρκετά πιο πίσω σε σύγκριση με την έκδοση που συνοδεύει το πλέον πρόσφατο VirtualBox. Επίσης, χρησιμοποιώντας την προαναφερθείσα έκδοση έχουμε καλύτερη κι ομαλότερη συνεργασία μεταξύ host και guest. Για τη συνέχεια, λοιπόν, θα απεγκαταστήσουμε τα Guest Additions που αποκτήσαμε από τα repositories:

sudo zypper -n rm virtualbox-{kmp-default,guest-kmp-default,guest-x11,guest-tools}

Η διαδικασία της εγκατάστασης της νέας έκδοσης των Guest Additions περιλαμβάνει τη μεταγλώττιση συγκεκριμένων modules για τον kernel, οπότε φροντίζουμε να έχουμε τα απαραίτητα πακέτα:

sudo zypper -n in gcc make kernel-devel dkms

Τώρα, με το παράθυρο του openSUSE VM στο focus, πηγαίνουμε στην οριζόντια μπάρα με το μενού της μηχανής, κάνουμε κλικ στο Devices και μετά στο Insert Guest Additions CD image. Η συγκεκριμένη ενέργεια θα έχει ως αποτέλεσμα την προσάρτηση από πλευράς openSUSE του ISO image με τα νέα Guest Additions. Στο VM στο οποίο εργαστήκαμε η προσάρτηση έγινε κάτω από τον κατάλογο /run/media/userson/VBox_GAs_6.0.12. Παρόμοια θα είναι η διαδρομή του καταλόγου και στη δική σας περίπτωση, μόνο που στη θέση του userson θα είναι το user name του χρήστη σας και ίσως διαφέρει κι αυτό το 6.0.12, το οποίο προφανώς αντιστοιχεί στην έκδοση των Guest Additions. Σε κάθε περίπτωση, αν θέλετε να βεβαιωθείτε για τη διαδρομή του καταλόγου προσάρτησης παρατηρήστε την έξοδο της εντολής df -hT (προσέξτε τη στήλη Mounted on, στα δεξιά). Από το τερματικό μας, λοιπόν, πηγαίνουμε στον υπό συζήτηση κατάλογο…

cd /run/media/userson/VBox_GAs_6.0.12

…και με δικαιώματα διαχειριστή εκτελούμε το script ονόματι VBoxLinuxAdditions.run:

sudo ./VBoxLinuxAdditions.run

Μετά από λίγο τα νέα modules για τον πυρήνα θα είναι έτοιμα. Από την πλευρά μας θα προχωρήσουμε σε επανεκκίνηση του guest OS (sudo reboot) και στο εξής στο openSUSE VM θα έχουμε την πλέον πρόσφατη έκδοση των VirtualBox Guest Additions.

Περίπτωση Debian 10

Ξεκινάμε ενημερώνοντας την τοπική cache με τις πληροφορίες των πακέτων από τα repositories που γνωρίζει το σύστημα. Από ένα παράθυρο τερματικού αποκτάμε πρόσβαση στο λογαριασμό του χρήστη root πληκτρολογώντας…

su root

…κι αμέσως ενημερώνουμε την cache δίνοντας…

apt update

Αν θέλουμε να δούμε όλα τα πακέτα για τα οποία υπάρχει νεότερη έκδοση, γράφουμε:

apt list --upgradable

Για την ίδια τη διαδικασία της αναβάθμισης, πληκτρολογούμε:

apt -y upgrade

Σε περίπτωση που αναβαθμιστεί κι ο πυρήνας, κάνουμε και μια επανεκκίνηση του guest OS (/sbin/reboot). Για την εγκατάσταση των VirtualBox Guest Additions χρειαζόμαστε το πακέτο dkms, οπότε από το λογαριασμό του root φροντίζουμε ώστε να είναι παρόν στο σύστημά μας:

apt -y install dkms

Θα παρατηρήσετε ότι η εγκατάσταση του dkms προκαλεί και την εγκατάσταση πρόσθετων πακέτων, μεταξύ αυτών του μεταγλωττιστή gcc, του εργαλείου make καθώς και των kernel headers.

Με το παράθυρο του Debian VM στο focus πηγαίνουμε στην οριζόντια μπάρα με το μενού της μηχανής, κάνουμε κλικ στο Devices και μετά στο Insert Guest Additions CD image. Κατ’ αυτόν τον τρόπο επιτυγχάνουμε την προσάρτηση, από πλευράς Debian, του ISO image με τα Guest Additions. Συγκεκριμένα, η προσάρτηση γίνεται κάτω από τον κατάλογο /media/cdrom0. Πηγαίνουμε σ’ αυτόν τον κατάλογο…

cd /media/cdrom0

…και ξεκινάμε την εγκατάσταση των VirtualBox Guest Additions:

sh ./VBoxLinuxAdditions.run

Τέλος, επανεκκινούμε το σύστημα (/sbin/reboot) και στο εξής το Debian VM θα χρησιμοποιεί τη νεότερη έκδοση των Guest Additions.

Περίπτωση Fedora Workstation 30

Πρώτο μας μέλημα είναι η αναβάθμιση της υπάρχουσας εγκατάστασης. Από ένα τερματικό, πληκτρολογούμε:

sudo dnf upgrade --refresh -y

Στην περίπτωση που αναβαθμιστεί κι ο πυρήνας, κάνουμε και μια επανεκκίνηση του guest (sudo reboot).

Μετά την εγκατάσταση του Fedora Workstation σε περιβάλλον VirtualBox, τα Guest Additions θα είναι ήδη εγκατεστημένα. Είναι σχεδόν βέβαιο, όμως, πως η έκδοση των Guest Additions από τα repositories του Fedora θα είναι αρκετά πιο πίσω σε σύγκριση με την έκδοση που συνοδεύει το νεότερο VirtualBox. Αλλά και πέρα από την έκδοση, η χρήση των Guest Additions που συνοδεύουν το VirtualBox, δηλαδή όχι εκείνων από τα repositories της διανομής, συμβάλλει στην ομαλότερη συνεργασία μεταξύ host και guest. Ας απεγκαταστήσουμε, λοιπόν, τα Guest Additions των repositories:

sudo dnf remove -y virtualbox-guest-additions

Προκειμένου να εγκαταστήσουμε τα νέα Guest Additions θα χρειαστεί να μεταγλωττίσουμε συγκεκριμένα modules για τον πυρήνα του λειτουργικού, συνεπώς χρειάζεται να έχουμε φροντίσει για την παρουσία συγκεκριμένων πακέτων:

sudo dnf install -y gcc make automake kernel-headers kernel-devel dkms

Και μετά απ’ αυτό είμαστε έτοιμοι για τα ολοκαίνουργια Guest Additions. Με το παράθυρο του Fedora VM στο focus πηγαίνουμε στη οριζόντια μπάρα με το μενού της μηχανής, κάνουμε κλικ στο Devices και μετά στο Insert Guest Additions CD image. Επιτυγχάνουμε έτσι την προσάρτηση, από πλευράς Fedora, του ISO image με τα Guest Additions. Στο VM των δοκιμών μας, η προσάρτηση έγινε κάτω από τον κατάλογο /run/media/userson/VBox_GAs_6.12. Και στο δικό σας VM παρόμοιο θα είναι το path, μόνο που στη θέση του userson θα είναι το user name του χρήστη σας και ίσως διαφέρει κι αυτό το 6.0.12, το οποίο προφανώς αντιστοιχεί στην έκδοση των Guest Additions. Αν θέλετε να βεβαιωθείτε για τη θέση προσάρτησης, πληκτρολογήστε df -hT και παρατηρήστε την τελευταία γραμμή της στήλης Mounted on, δεξιά. Μεταβαίνουμε στον κατάλογο…

cd /run/media/userson/VBox_GAs_6.12

…και χωρίς άλλη καθυστέρηση τρέχουμε τον installer:

sudo ./VBoxLinuxAdditions.run

Μένει να επανεκκινήσουμε το σύστημα (sudo reboot) και στο εξής το Fedora VM μας θα είναι εξοπλισμένο με τα ολοκαίνουργια VirtualBox Guest Additions.

Απαντήσεις σε συχνές ερωτήσεις

Για το τέλος αφήσαμε μερικές συχνές ερωτήσεις σχετικές με τα VirtualBox Guest Additions, για τις οποίες δίνουμε και τις αντίστοιχες απαντήσεις.

Πώς ελέγχω στα γρήγορα ότι τα Guest Additions είναι ενεργοποιημένα; Γενικά, ένα VM εφοδιασμένο με τα VirtualBox Guest Additions συμπεριφέρεται ευέλικτα κι έξυπνα εντός του περιβάλλοντος που το φιλοξενεί, το οποίο δεν είναι άλλο από το host computer. Παράδειγμα: Έχουμε ένα VM με Linux και graphical desktop. Το VM είναι ενεργοποιημένο και δεν βρίσκεται σε full screen, αλλά σε παράθυρο. Αν από τον host αλλάξουμε μέγεθος στο παράθυρο του VM, τότε και το desktop του τελευταίου θα αλλάξει δυναμικά ανάλυση ώστε να χωρέσει ή να γεμίσει το περιβάλλον παράθυρο. Σε διαφορετική περίπτωση είτε θα εμφανιστούν sliders στο παράθυρο (το desktop του VM δεν χωράει) είτε μαύρες λωρίδες πάνω-κάτω ή/και αριστερά-δεξιά (το desktop του VM είναι μικρό).

Παρατηρώντας, λοιπόν, τη συμπεριφορά του guest καθώς αλλάζετε το μέγεθος του παραθύρου του από τον host, διαπιστώνετε αν το VM διαθέτει τα Guest Additions ή όχι. Ένας γρηγορότερος τρόπος για να δείτε τι συμβαίνει, είναι μέσα από το ίδιο το VM. Συγκεκριμένα, από ένα παράθυρο τερματικού πληκτρολογήστε:

/sbin/rcvboxadd status

Αν δεν πάρετε κάποιο μήνυμα λάθους αλλά κάτι σαν The VirtualBox Additions are currently running, τότε πράγματι έχετε τα Guest Additions και μάλιστα είναι ενεργοποιημένα.

Γιατί δεν δουλεύει το copy/paste κειμένου μεταξύ host και guest; Από το κεντρικό παράθυρο του VirtualBox, με τίτλο Oracle VM VirtualBox Manager, επιλέξτε το VM που σας ενδιαφέρει, βεβαιωθείτε ότι είναι απενεργοποιημένο κι εμφανίστε το παράθυρο με τις ιδιότητές του. Πηγαίνετε στο General και μετά στο Advanced. Για την επιλογή Shared Clipboard, επιλέξτε:

  • Host To Guest, ώστε κείμενο που αντιγράφετε στον host να μπορείτε να το μεταφέρετε στον guest
  • Guest To Host, ώστε κείμενο που αντιγράφετε στον guest να μπορείτε να το μεταφέρετε στον host
  • Bidirectional, ώστε να μπορείτε να αντιγράφετε και να μεταφέρετε κείμενο προς κάθε κατεύθυνση

Επικυρώστε την επιλογή σας με κλικ στο κουμπί OK, κάτω δεξιά. Ξεκινήστε το VM και ελέγξτε αν η συμπεριφορά του copy/paste απλού κειμένου είναι η αναμενόμενη. (Θα είναι.)

Φροντίζοντας ώστε το Shared Clipboard να είναι Bidirectional, μπορούμε να κάνουμε copy/paste απλού κειμένου από τον host προς τον guest αλλά κι αντίστροφα.Φροντίζοντας ώστε το Shared Clipboard να είναι Bidirectional, μπορούμε να κάνουμε copy/paste απλού κειμένου από τον host προς τον guest αλλά κι αντίστροφα.

Πώς ορίζω έναν φάκελο στα περιεχόμενα του οποίου έχουν πρόσβαση τόσο ο host όσο κι ο guest; Αρχικά οφείλετε να διασφαλίσετε ότι ο (απλός) χρήστης του guest, ο οποίος θα έχει δικαίωμα πρόσβασης στον κοινό φάκελο, ανήκει στο group με όνομα vboxsf. Από ένα τερματικό και με δικαιώματα διαχειριστή συστήματος πληκτρολογήστε κάτι σαν usermod -aG vboxsf userson, όπου στη θέση του userson θα βάλετε το user name του χρήστη σας. Αποσυνδεθείτε από το λογαριασμό του εν λόγω χρήστη και συνδεθείτε εκ νέου. Από το κεντρικό παράθυρο του VirtualBox, με τίτλο Oracle VM VirtualBox Manager, επιλέξτε το αντίστοιχο VM κι εμφανίστε το παράθυρο με τις ιδιότητές του. Πατήστε στο Shared Folders. Κάντε ένα κλικ στο εικονίδιο με τον μπλε φάκελο και τον πράσινο σταυρό, ώστε στη θυρίδα Folder Path να υποδείξετε έναν υπάρχοντα φάκελο από τον host, π.χ., τον Downloads. Στη δε θυρίδα Mount point πληκτρολογήστε μια πλήρη και έγκυρη για τον guest διαδρομή, προς έναν κατάλογο που ήδη υπάρχει: είναι αυτός που θα οδηγεί εντός του φακέλου του host που μόλις υποδείξατε. Προαιρετικά, τσεκάρετε τις επιλογές Auto-mount ή/και Make Permanent. Αν τσεκάρετε και τη Read-only τότε ο guest θα έχει μόνο δικαίωμα ανάγνωσης των περιεχομένων του κοινού φακέλου, δηλαδή δεν θα μπορεί να δημιουργεί, να μετονομάζει ή να διαγράφει αρχεία κι άλλους φακέλους εντός. Επικυρώστε τις επιλογές σας με κλικ στο κουμπί OK, κάτω δεξιά. Προχωρήστε τώρα σε μερικές δοκιμές, π.χ., δημιουργώντας ή διαγράφοντας αρχεία εντός του φακέλου του host ή μέσα στον αντίστοιχο κατάλογο του guest. Παρατηρήστε τις συνέπειες των ενεργειών σας από την άλλη (φυσική ή εικονική) μηχανή.

Χάρη στα shared folders του VirtualBox είναι πολύ εύκολο να μοιράζουμε αρχεία μεταξύ host και guest.Χάρη στα shared folders του VirtualBox είναι πολύ εύκολο να μοιράζουμε αρχεία μεταξύ host και guest.

Γιατί από τον File Manager του VirtualBox βλέπω μόνο τον host; Φροντίστε ώστε το VM, το οποίο θέλετε να βλέπει ο File Manager του VirtualBox, να είναι ενεργοποιημένο και σε focus. Στην οριζόντια μπάρα με το μενού της μηχανής, κάντε κλικ στο Machine και μετά στο File Manager. Εμφανίζεται έτσι ο διαχειριστής αρχείων του VirtualBox και, πράγματι, στο πλαίσιο αριστερά παρατίθενται μόνο κατάλογοι και αρχεία του host, ενώ πουθενά δεν υπάρχει κάτι από τον guest. Πατήστε στο κουμπί Session, πάνω αριστερά. Στο κάτω μέρος του File Manager εμφανίζονται δύο θυρίδες: μία για το user name ενός χρήστη του VM, κι άλλη μία για το password του. Στις θυρίδες αυτές πληκτρολογήστε τα αντίστοιχα στοιχεία ενός υπάρχοντα λογαριασμού χρήστη (στο VM) και κάντε κλικ στο κουμπί Create Session, δεξιά. Σχεδόν ακαριαία, στο πλαίσιο δεξιά θα δείτε το directory tree του guest. Μπορείτε, πλέον, να διεκπεραιώνετε εργασίες διαχείρισης αρχείων στον host, στον guest ή και μεταξύ των δύο.

Το drag’n’drop μεταξύ host και guest δεν δουλεύει – κάνω κάτι λάθος; Δεν κάνετε κάποιο λάθος. Το drag’n’drop πράγματι δεν λειτουργεί μεταξύ host και guest, όταν ο guest αντί για το κλασικό X Window system χρησιμοποιεί το πρωτόκολλο Wayland. Το Fedora Workstation 30 αποτελεί παράδειγμα διανομής που εξ ορισμού χρησιμοποιεί το Wayland. Στην οθόνη σύνδεσης, πριν κάνετε login στο λογαριασμό του χρήστη σας, δηλαδή πριν πληκτρολογήσετε το αντίστοιχο password και κάνετε κλικ στο κουμπί Sign in, πατήστε στο εικονίδιο με το γραναζάκι κι επιλέξτε το GNOME on Xorg.

Ερώτηση Bonus: Πώς απενεργοποιώ το Wayland; Αν δεν θέλετε το Wayland ως το προκαθορισμένο πρωτόκολλο για το υποσύστημα γραφικών, εργαστείτε ως ακολούθως.

  • Με δικαιώματα διαχειριστή συστήματος και με τον text editor της προτίμησής σας, ανοίξτε το αρχείο /etc/gdm/custom.conf.
  • Ενεργοποιήστε τη γραμμή #WaylandEnable=false, μ’ άλλα λόγια διαγράψτε τον χαρακτήρα # στ’ αριστερά της.
  • Ακριβώς από κάτω, προσθέστε τη γραμμή DefaultSession=gnome-xorg.desktop.
  • Αποθηκεύστε τις αλλαγές στο αρχείο /etc/gdm/custom.conf, εγκαταλείψτε τον editor κι επανεκκινήστε το σύστημα.

Σας άρεσε το post; Αν ναι μπορείτε να στηρίξετε το ðhacker, χωρίς κατ’ ανάγκη να ξοδέψετε χρήματα.