VirtualBox'a tek tuşla macOS yükleme

Durum
Mesaj gönderimine kapalı.
macos-guest-virtualbox.sh, Apple sunucularından orijinal macOS kurulum dosyasını indirerek Virtualbox macOS sanal makinesini oluşturmaya yarayan bir Bash script dosyasıdır. Bunun dışında hiçbir kapalı kaynak eklentiler ve bootloader yüklemesi yapmamaktadır. Cygwin'de test edilmiştir. macOS, Windows Subsystem for Linux, ve centOS 7'de çalışmaktadır.

Varsayılan kurulum için sabırlı olun, bunun dışında script zaman zaman sizden Enter'a basmanızı isteyebilir. Script bu isteği yolladığında Enter'a basın ve işlem tamamlanana kadar sanal makine ile etkileşime geçmeyin.

macOS Catalina (10.15), Mojave (10.14), ve High Sierra (10.13) an itibariyle desteklenmektedir.

Kullanım klavuzu

Kullanım klavuzu şu komut ile görüntülenebilir: ./macos-guest-virtualbox.sh documentation

Kurulum çeşitli aşamalara bölünmüştür. Aşamalar komut satırı argümanı olarak verilebilir. Eğer script argümansız çalıştırılırsa aşağıdaki sıraya göre aşamalar gerçekleşir. Bunun dışında documentation ve troubleshoot argümanları tanımlanmıştır. troubleshoot, VirtualBox loglarını ve bazı kurulum dosyaları için checksum bilgisini görüntüler. Eğer documentation ilk argüman olarak verilirsa başka verilen hiçbir argüman dikkate alınmaz.

"check_shell" aşaması script her yüklendiğinde çalışır. "check_gnu_coreutils_prefix", "set_variables", ve "check_dependencies" aşamaları, ilk argüman olarak documentation dışında verilen argümanlarda çalışır. Bunun dışında belirtilen aşamalar sadece kontrol aşaması tamamlandıktan sonra çalışır.

Örnekler
main.sh configure_vm
Yukarıdaki aşama, var olan bir VM VDI başka bir VirtualBox kurulumuna kopyalandığında script'in sanal makineyi (VM) otomatik olarak konfigüre etmesi amacıyla kullanılabilir.

main.sh delete_temporary_files
Yukarıdaki aşama başka hiçbir sanal makine kurulumu yapılmasına ihtiyaç kalmadığında çalıştırılabilir. Böylece geçici dosyalar silinecektir.

main.sh \ configure_vm create_nvram_files create_macos_installation_files_viso
Yukarıdaki aşamalar da iCloud, iMessage bağlantısı ve diğer Apple bağımlı uygulamalarda gerekli EFI ve NVRAM değişkenlerini güncellemekte kullanılabilir.

Yapılandırma

Script'in varsayılan yapılandırması en üst satırlarda tanımlanmış set_variables() fonksiyonunda tutulmaktadır. Script hiçbir ek yapılandırmaya ihtiyaç duymamaktadır.

Varsayılan yapılandırma iki şekilde değiştirilebilir:
  1. set_variables() fonksiyonundaki değişken tanımını düzenleyerek
  2. Script'i çalıştırmadan önce bu komutu girerek: export macos_vm_vars_file=/path/to/variable_assignment_file
export macos_vm_vars_file=/path/to/variable_assignment_file

"variable_assignment_file" adlı dosya, set_variables() fonksiyonunda tanımlı değişken atamalarının yapıldığı sıfır ya da daha fazla satıra sahip basit bir metin belgesidir. Örnek atamalar:
  • macOS_release_name="HighSierra"
  • DmiSystemFamily="iMac"
iCloud, iMessage bağlantısı ve NVRAM

iCloud, iMessage ve diğer bağlı Apple hizmetleri için geçerli bir aygıt adı ve seri numarası, kart kimliği ve seri numarası ve diğer orijinal (veya orijinal-gibi) Apple parametreleri gerekir. Bu parametreler scriptin dosyasının en üstünden düzenlenebilir ya da yukarıda bahsedilen yapılandırma dosyasından yüklenebilir.

iMessage bağlantısı için gereken değişkenler:

DmiSystemFamily # Model adı DmiSystemProduct # Model tanımlayıcısı DmiSystemSerial # Sistem seri numarası DmiSystemUuid # Donanım UUID DmiOEMVBoxVer # Apple ROM info (büyük sürüm) DmiOEMVBoxRev # Apple ROM info (revizyon) DmiBIOSVersion # Boot ROM sürümü DmiBoardProduct # Ana Mantık Kartı Tanımlayıcısı DmiBoardSerial # Ana Mantık Kartı seri numarası (EFI) MLB # Ana Mantık Kartı seri numarası (NVRAM) ROM # ROM tanımlayıcısı (NVRAM) SYSTEM_UUID # Sistem tanımlayıcısı (NVRAM)

Script'in üst kısmındaki yorumlar bu değişkenleri gerçek bir Mac'te nasıl görüntüleyeceğinizi belirtiyor.


EFI ve NVRAM parametrelerini uygulama

EFI ve NVRAM parametreleri kurulumdan önce script içinden düzenlenebilir ve kurulumun son aşamasında sanal makine resetlenip EFI Internal Shell'e boot ederek uygulanabilir. Sanal makineyi resetlerken ya da sanal makineye güç verirken VirtualBox logosu çıktığında hemen Esc'ye basın. Bu işlem EFI Internal Shell ya da boot menüsünü açacaktır. Eğer boot menüsü açılırsa "Boot Manager" seçin, sonra "EFI Internal Shell" seçin ve sonra startup.nsh script dosyasının otomatik olarak çalışmasına izin verin macOS'u başlatmadan önce EFI ve NVRAM değişkenlerini otomatik olarak uygulayarak.

Kurulum sonrası EFI ve NVRAM parametrelerini değiştirme

Yukarıda bahsedilen değişkenler, var olan bir macOS sanal makinesinde aşağıdaki komut çalıştırılarak ve sonrasında oluşturulan dosyaları macOS EFI bölümüne kopyalamanız sonucunda değiştirilebilir.

main.sh \ configure_vm create_nvram_files create_macos_installation_files_viso

  1. Komutu çalıştırdıktan sonra gelen VISO dosyasını VirtualBox Manager ya da VBoxManager ile sanal makinenin depolama bölümüne iliştirin.
  2. Sanal makineyi ateşleyin ve macOS'e boot edin.
  3. Terminal'i açın ve aşağıdaki komutları sırayla çalıştırın.
    • "/Volumes/path/to/VISO/" dizinini doğru dizinle değiştirmeyi unutmayın!
  4. mkdir ESP
    sudo su # this will prompt for a password
    diskutil mount -mountPoint ESP disk0s1
    cp -r /Volumes/path/to/VISO/ESP/* ESP/
Dosyaların kopyalanması bittikten sonra "EFI ve NVRAM parametrelerini uygulama" bölümünde anlatıldığı gibi EFI Internal Shell'e boot edin.

Depolama boyutu

Script dosyası varsayılan olarak 80GB'lık bir hedef sanal disk depolama boyutu atar. İlk kurulum sonrası ana makinede yaklaşık 20 GB kullanılmış olur. Kurulum tamamlandığında, depolama boyutu daha da artabilir. İlk önce VirtualBox Manager veya VBoxManage ile sanal disk görüntü boyutunu artırın. Ardından sanal makinedeki Terminalden şu komutu çalıştırın:
sudo diskutil repairDisk disk0

Sonra şu komutu çalıştırın: sudo diskutil apfs resizeContainer disk1 0
Ya da Terminalden diski onardıktan sonra Disk İzlencesinden "Boş alan" bölümünü silin. Böylece APFS boş alanı kendine alacaktır.

Birincil ekran çözünürlüğü

Aşağıdaki komut sanal makineye birinci ekran çözünürlüğü atayacaktır.
VBoxManage setextradata "${vm_name}" \ "VBoxInternal2/EfiGraphicsResolution" "${resolution}"

Desteklenen çözünürlükler: 5120x2880 2880x1800 2560x1600 2560x1440 1920x1200 1600x1200 1680x1050
1440x900 1280x800 1024x768 640x480
İkinci monitör istenilen bir çözünürlükte çalıştırılabilir.

İşlemci profilleri
macOS, VirtualBox2ta her işlemciyi desteklememektedir. macOS ana sistemi boot etmezse sanal makineye aşağıdaki komut ile başka bir CPU profili atamayı deneyin:
VBoxManage modifyvm "${vm_name}" --cpu-profile "${cpu_profile}"

Kullanılabilir işlemci profilleri
"Intel Xeon X5482 3.20GHz" "Intel Core i7-2635QM" "Intel Core i7-3960X"
"Intel Core i5-3570" "Intel Core i7-5600U" "Intel Core i7-6700K"

iCloud ile iMessage bağlantısı ve NVRAM

iCloud, iMessage ve diğer bağlı Apple hizmetleri için geçerli bir aygıt adı ve seri numarası, kart kimliği ve seri numarası ve diğer orijinal (veya orijinal-gibi) Apple parametreleri gerekir. Bunlar, komut dosyası düzenlenerek NVRAM’de ayarlanabilir. Detaylı bilgi kullanım klavuzundadır.

Depolama boyutu

Script dosyası varsayılan olarak 80GB'lık bir hedef sanal disk depolama boyutu atar. İlk kurulum sonrası ana makinede yaklaşık 20 GB kullanılmış olur. Kurulum tamamlandığında, depolama boyutu daha da artabilir. Detaylı bilgi kullanım klavuzundadır.

Birincil ekran çözünürlükleri

Aşağıdaki birincil ekran çözünürlükleri VirtualBox altında macOS tarafından desteklenmektedir:
  • 5120x2880
  • 2880x1800
  • 2560x1600
  • 2560x1440
  • 1920x1200
  • 1600x1200
  • 1680x1050
  • 1440x900
  • 1280x800
  • 1024x768
  • 640x480

Desteklenmeyen özellikler

VirtualBox ya da macOS özelliği geliştirmek/bakımını sağlamak bu script dosyasının kapsamı dışındadır. Bazı özellikler beklenmedik bir şekilde davranabilir. Örneğin USB cihaz desteği, ses desteği, FileVault boot şifresi ekranı gibi diğer özellikler.

Performans

Çalışan bir macOS sanal makinesi oluşturduktan sonra bunu QEMU/KVM'e aktarmanız(import) tavsiye edilir. Böylece donanımla birlikte gerçek performansına yakın bir şekilde çalışabilir. Yalnız QEMU/KVM ek konfigürasyon gerektiriyor ve bu script dosyasının kapsamında değil.

Bootloaderlar

macOS Virtualbox misafir kullanıcısı ek bir bootloader olmadan yüklenmektedir fakat yine de OpenCore ile uyumludur. OpenCore da ek konfigürasyon gerektiriyor ve bu script dosyasının kapsamında değil.

Ses

macOS, dahili VirtualBox ses kontrolcülerini desteklemeyebilir. OpenCore Bootloader, STAC9221 (Intel HD Audio) ya da SigmaTel STAC9700,83,84 (ICH AC97) konfigürsayonlarını sunarak açık kaynaklı ya da VirtualBox'daki dahili ses sürücülerini yükleyebilir.

FileVault

VirtualBox EFI uygulaması, boot esnasında FileVault disk şifre giriş ekranını düzgün bir şekilde yüklemiyor. Açık kaynaklı OpenCore ise şifre giriş ekranını ProvideConsoleGop parametresi true olduğu sürece yükleyecektir. config.plist.txt'e bakın.

Bağımlılıklar

Tüm bağımlılıklar bir paket yöneticisi sayesinde erişilebilir olmalıdır:
bash coreutils gzip unzip wget xxd dmg2img virtualbox

VirtualBox≥6.1.6 ile Extension Pack, tabii 5.2 gibi eski sürümler çalışmayabilir.
GNU Bash≥4.3, dosyayı Windows altında çalıştırmak için Cygwin veya WSL kullanabilirsiniz.
GNU coreutils≥8.22, GNU gzip≥1.5, Info-ZIP unzip≥v6.0, GNU wget≥1.14, xxd≥1.7
dmg2img≥1.6.5, Cygwin altında ilgili paket paket yöneticisinden erişilemiyor. Bu yüzden script bunu otomatik olarak indirmektedir.
 
Durum
Mesaj gönderimine kapalı.

Geri
Yukarı