Στον σημερινό οδηγό θα δούμε πως μπορούμε να εγκαταστήσουμε το macOS μέσα σε εικονική μηχανή μέσω KVM στο Linux. Θα χρησιμοποιήσουμε μερικά έτοιμα script για εύκολη δημιουργία του κατάλληλου virtual machine για το macOS.
Λίγα λόγια για το macOS
Το macOS είναι το λειτουργικό σύστημα που χρησιμοποιείται στους υπολογιστές mac. Αρχιτεκτονικά μιλώντας, βασίζεται στο λειτουργικό σύστημα Unix και στις τεχνολογίες που αναπτύχθηκαν μεταξύ 1985 και 1997 στη NeXT, εταιρεία που ο ίδιος ο ιδρυτής της Apple Steve Jobs δημιούργησε μετά την αποχώρηση από την Apple το 1985.
Ο πυρήνας του macOS είναι ο XNU (Xnu is Not Unix) και μαζί με τον Mach αποτελεί υποσύνολο του Darwin. O Darwin είναι ένα ανοιχτού κώδικα λειτουργικό σύστημα τύπου-Unix , που κυκλοφόρησε για πρώτη φορά η Apple το 2000. Αποτελείται από κώδικα που αναπτύχθηκε από την Apple, καθώς και κώδικα που προέρχεται από τα λειτουργικά NeXTSTEP, BSD, Mach και άλλων έργων ανοιχτού κώδικα.
Λόγο των παραπάνω, είναι ιδιαίτερα δημοφιλές λειτουργικό στους developers, στους DevOps κλπ που αναπτύσσουν εφαρμογές και λύσεις για web και cloud υπηρεσίες. Είναι και ένας από τους λόγους που η Microsoft αναγκάστηκε να ενσωματώσει το Linux στο Windows 10 με σκοπό να διατηρήσει αλλά και να προσελκύσει αυτούς τους developers.
Το macOS σε Virtual Machine
Για τους ίδιους λόγους, η ίδια η Apple έχει «επιτρέψει» να μπορεί να χρησιμοποιεί κάποιος το macOS μέσω των εμπορικών λύσεων Virtualization όπως είναι το VMware Fusion/ESXi και το Parallels αρκεί βέβαια η όλη διαδικασία να γίνεται σε υπολογιστή Mac.

Παρόλο που έχει δημιουργηθεί μια τεράστια κοινότητα Hackintosh (χρήστες που κάνουνε εγκατάσταση το macOS ως βασικό λειτουργικό σε PC) η Apple δεν επιτρέπει την χρήση του με αυτή την μορφή. Επίσης, επειδή όλο το υλικό του PC πρέπει να είναι προσεκτικά επιλεγμένο για να μπορεί να δουλέψει ως Hackintosh, αρκετοί Dev, DevOps, Sysadmins, Pentesters καταφεύγουν στην λύση του Virtualization.
Στην περίπτωσή μας, μιας και το κάνουμε για εκπαιδευτικούς λόγους, θα χρησιμοποιήσουμε την ενσωματωμένη στον πυρήνα Linux, τεχνολογία Visrtualization που ονομάζεται KVM. Πριν όμως ξεκινήσετε υπάρχουν κάποιες προαπαιτήσεις για να μπορέσετε να το καταφέρετε:
- Έχετε μια μικρή έστω εμπειρία στο Qemu ή το Virt-Manager και έχετε διαβάσει τους οδηγούς
– Virt-Manager: Εγκατάσταση και δημιουργία Virtual Machine με χρήση KVM
– Χρήση QEMU για δοκιμή ISO ή USB stick - CPU με Intel VT-x / AMD ενεργό
- 64bit διανομή με πυρήνα Linux v4+ πχ Ubuntu 18.04 LTS 64-bit
- να έχετε την τύχη με το μέρος σας…
Προετοιμασία της εγκατάστασης macOS σε εικονική μηχανή
Πρώτα από όλα θα προετοιμάσουμε τον πυρήνα Linux ώστε να αποφευχθούν κάποια κρασαρίσματα της εικονικής μηχανής:
sudo su
echo 1 > /sys/module/kvm/parameters/ignore_msrs
Για να διατηρηθεί η αλλαγή στην επόμενη επανεκκίνηση, πάλι ως root, θα πρέπει να το ρυθμίσουμε:
echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
exit
Έπειτα θα χρειαστεί να εγκαταστήσουμε τα απαραίτητα εργαλεία :
# Ubuntu:
sudo apt install qemu-system qemu-utils python3 python3-pip virt-manager git
# openSUSE Tumbleweed:
sudo zypper in qemu-tools qemu-kvm qemu-x86 qemu-audio-pa python3-pip
# Fedora
sudo dnf install qemu qemu-img python3 python3-pip
Τέλος κατεβάζουμε τα εργαλεία που θα μας αυτοματοποιήσει την διαδικασία εγκατάστασης του macOS μέσα σε VM:
git clone https://github.com/foxlet/macOS-Simple-KVM.git
Δημιουργία τη εικονικής μηχανής για το macOS
Μπαίνουμε στον φάκελο που δημιουργήθηκε με το git και χρησιμοποιούμε το jumpstart.sh
για να κάνουμε λήψη των μέσων εγκατάστασης για macOS. Η προεπιλεγμένη εγκατάσταση χρησιμοποιεί Catalina, αλλά μπορείτε να επιλέξετε την έκδοση macOS προσθέτοντας είτε --high-sierra
, --mojave
, είτε --catalina
. Για παράδειγμα:
./jumpstart.sh --mojave
Έπειτα δημιουργήστε έναν κενό δίσκο χρησιμοποιώντας το qemu-img
, αλλάζοντας το όνομα και το μέγεθος (όχι μικρότερα από 20G) του ανάλογα με την προτίμηση σας:
qemu-img create -f qcow2 MyDisk.qcow2 64G
Ανοίξτε το αρχείο basic.sh
και προσθέστε το στο τέλος
-drive id=SystemDisk,if=none,file=MyDisk.qcow2 \
-device ide-hd,bus=sata.4,drive=SystemDisk \
Αποθηκεύστε και κλείστε το αρχείο.
Εγκατάσταση του macOS στον εικονικό υπολογιστή
Αφού κάνατε την απαραίτητη αλλαγή, όπως δείξαμε πιο πάνω, μένει να τρέξετε το basic.sh
για να ξεκινήσει η εγκατάσταση.
./basic.sh
Θα ανοίξει ένα παράθυρο Qemu στο οποίο θα μπορέσετε να κάνετε εγκατάσταση το macOS

Μόλις κάνετε κλικ με το ποντίκι μέσα στο παράθυρο, θα δεσμευτεί απο την εικονική μηχανή οπότε όταν χρειαστεί να το αποδεσμεύσετε, πατάτε τον συνδυασμό πλήκτρων ctrl+alt+g
Πατήστε λοιπόν enter στο κεντρικό εικονίδιο για να ξεκινήσετε πρώτα την διαμόρφωση του δίσκου που φτιάξατε επιλέγοντας το Disk Utility

Εκεί διαλέγετε τον δίσκο που είχατε ετοιμάσει πριν (θα το καταλάβετε από το μέγεθος του) και πατάτε Erase
. Κλείνετε το Disk Utility για να επιστρέψετε στην προηγούμενη οθόνη και στην οποία επιλέγετε Reinstall macOS
.

macOS με Virt-manager
Αν επιθυμείτε να διαχειρίζεστε την εικονική μηχανή macOS μέσω γραφικού περιβάλλοντος τότε θα χρησιμοποιήσετε το make.sh
για να εισάγετε το προφίλ της μηχανής στο Virt-manager:
sudo ./make.sh --add
Μόλις ανοίξετε το virt-manager λογικά το macOS θα είναι στις διαθέσιμες εικονικές μηχανές.
Για περισσότερες πληροφορίες σχετικά με το πως θα βελτιώσετε την απόκριση της μηχανής, η θέματα όπως bridged networking, GPU passthrough, screen resolution δείτε την παραπομπή απο κάτω.
Πολύ ωραίο αρθράκι, τώρα που φτιάχνω το νέο PC το πρώτο πράγμα που θα δοκιμάσω θα είναι αυτό, γιατί το laptopάκι δεν είναι για πολλά πλέον και σε Virtual Machine το λειτουργικό τρέχει απίστευτα αργά.
Εφόσον εγκατασταθεί το macOS στο VM, υπάρχει δυνατότητα να εγκατασταθεί μετά και κανονικά σε dual-boot με κάποια Linux διανομή;
Όχι, το MacOS δεν είναι φτιαγμένο για dualboot. Από την άλλη δεν είναι καν νόμιμο αυτό διότι επίσημα η άδεια χρήσης αναφέρει την χρήση του MacOS μόνο σε μηχάνημα Apple Mac
Το φαντάστηκα ότι αυτή θα ήταν η απάντηση, αλλά λέω δεν έχω τι να χάσω χαχ. Σε ευχαριστώ!!
Καλά έκανες και ρώτησες :)
Σε ευχαριστούμε πολύ για αυτό τον οδηγό/προσπάθεια!
Μου αρέσει ιδιαίτερα το γεγονός πως το όλο εγχείρημα γίνεται δια μέσω του KVM και το παλικάρι Foxlet αδιαμφισβήτητα έχει κάνει μια πολύ αξιόλογη προσπάθεια για να μας κάνει την όλη διαδικασία πιο εύκολη.
Παρόλα αυτά όταν έκανα τις δοκιμές μου δυστυχώς δεν τα κατάφερα.
Στο `./basic.sh` προτού το εκτελέσω, πέρα από ένα εικονικό 80GB δίσκο που του πρόσθεσα, του έβαλα και 8GB RAM `-m 8G`, αλλά έπειτα από την επιλογή του κεντρικού εικονιδίου όπως λες, κάνει μια επανεκκίνηση, κάνει ότι κάνει ( πως μπορώ να κρατήσω logs ώστε να σας τα δείξω ; ) και έπειτα με ξανά βάζει στο ίδιο παράθυρο. Δεν προχωράει η διαδικασία. Μάλλον υπάρχει κάποιο πρόβλημα.
Το σύστημα μου είναι :
OS : Debian GNU/Linux 9.11 (stretch) 4.9.0-11-amd64 #1 SMP Debian 4.9.189-3+deb9u2 (2019-11-11) x86_64 GNU/Linux
CPU : AMD FX(tm)-8350 Eight-Core Processor
RAM: 16 GB
Έχετε να μου προτείνετε οτιδήποτε ;
Ευχαριστώ.
Δυστυχώς επειδή είναι εντελώς ανορθόδοξος τρόπος χρήσης, πολύ πιθανόν να χρειαστεί να παίξεις με τις ρυθμίσεις ή να κάνεις και αναζήτηση για το πως να το ρυθμίσεις για την έκδοση Debian που έχεις.
Αν το επιχειρούσα μέσω VirtualBox – σε σχέση με τον KVM στην προκειμένη περίπτωση παίζει να έχω καλύτερα αποτελέσματα ;
Είναι εντελώς άλλη διαδικασία ! Δες μήπως βρεις online οδηγούς.
Φαντάζομαι ότι έχεις ενεργό στο BIOS σου τα Vt-X/AMD (δεν θυμάμαι ακριβώς) που έχουν να κάνουν με virtualization σωστά ;
Ναι γνωρίζω ότι είναι εντελώς άλλη διαδικασία μέσω VirtualBox.
Όχι δεν το ήξερα πως υπάρχει ρύθμιση για Virtualazation στο BIOS… θα το ψάξω! Ευχαριστώ.