Infinite Mac'te Mac OS X Çalıştırmak
(blog.persistent.info)- Infinite Mac, artık tarayıcıda ilk dönem Mac OS X sürümlerini çalıştırabiliyor; şu anda en iyi desteklenen sürümler 10.1 ve 10.3
- Mevcut DingusPPC yaklaşımı kernel panic ve grafik sorunlarına takılınca, 2000'lerin başındaki Mac OS X emülasyonunu hedefleyen bir PearPC portuna yönelindi
- Performans hâlâ yavaş; Mac OS X 10.2'nin tamamen kullanılabilir hâle gelmesi neredeyse 2 dakika sürüyor ve optimizasyonlarla azaltılan süre de yaklaşık 15 saniye düzeyinde
- PowerPC kayan nokta işlemlerinde
FPbitinin kontrol edilmemesinden kaynaklanan bir hata, Dock render etme ve Finder pencere sorunlarına yol açtı; düzeltme sürecinde DingusPPC kararlılığı da iyileşti - Infinite HD, ilk dönem Mac OS X çağının bağımsız yazılımları ve Developer CD araçlarını içerecek şekilde yeniden düzenlendi; ancak HFS/HFS+ farkları ve eski
.dmguyumluluğu hâlâ kısıt oluşturuyor
Tarayıcıda ilk dönem Mac OS X çalıştırma
- Infinite Mac artık ilk dönem Mac OS X çalıştırabiliyor
- Mac OS X 10.1 ve Mac OS X 10.3 en iyi desteklenen sürümler
- Çalışma hızı çok yüksek değil, ancak o dönemin gerçek donanımının da hissedilir biçimde çok daha iyi olmadığı söylenebilir
- Döneme uygun yazılımları birlikte sunan Infinite HD de ilk dönem Mac OS X devrine ait bağımsız yazılımlar etrafında yeniden düzenlendi
PearPC portuna yönelme
- Başlangıçta DingusPPC ile Mac OS X'i Infinite Mac'te çalıştırmak istendi, ancak geçen yaz civarında kernel panic ve bozuk grafiklerin ötesine geçilemedi
- Sorun alanını deterministik çalıştırma moduyla daraltmaya çalışıldı ama sonraki adım net değildi
- Alternatif olarak PearPC seçildi
- PearPC, 2000'lerin başında x86 Windows ve Linux makinelerde Mac OS X emüle etmek için yapılmıştı
- Intel geçişinden sonra ilgi azaldı ve fiilen durmuş bir kod tabanı olarak görülmeye başladı
- kanjitalk755'in modern macOS üzerinde derlenip çalışabilen deneysel bir PearPC dalı hazırlamış olması, portun çıkış noktası oldu
- PearPC çok platformlu bir kod tabanıydı ve thread gibi porta zor kavramları yoğun kullanmadığı için WebAssembly/Emscripten ve Infinite Mac çalışma zamanına taşınması daha kolaydı
- Birkaç gün içinde derleme, video çıkışı, disk imajı yükleme ve fare/klavye girişlerini bağlama aşamaları tamamlandı
- Sonuç olarak Mac OS X 10.2, tarayıcıda eskisine göre daha kararlı biçimde çalıştırılabildi
Performans optimizasyonları ve kalan darboğazlar
- PearPC, Mac OS X 10.2'yi daha kararlı çalıştırdı ama DingusPPC'ye göre daha yavaş hissettirdi
- DingusPPC'nin benchmark harness'i PearPC'ye taşındı ve daha önce DingusPPC için yapılan optimizasyonlar PearPC'ye de tekrar uygulandı
- İki emülatör de lookup table tabanlı saf interpreter kullandığı için iş görece doğrudandı
- Mac OS X 10.2 açılış süresinden yaklaşık 15 saniye kazanıldı
- Optimizasyonlardan sonra bile tamamen kullanılabilir duruma gelmesi neredeyse 2 dakika sürüyor
- Infinite Mac arayüzüne, Mac OS X açılışının yavaş olabileceğini belirten bir uyarı eklendi
- En büyük darboğaz, PearPC'de MMU cache eksikliği
- Tüm load/store işlemleri karmaşık adres hesaplamalarından geçtiği için pahalıya mal oluyor
- DingusPPC'de daha olgun bir hiyerarşik cache bulunduğundan bunun etkili olduğu görülüyor
- PearPC, 10.2~10.4 çalıştırmada DingusPPC'den daha kararlı olabilir, ancak kod tabanı daha az ilkesel
- Özel firmware ve video driver kullanıyor
- Mac OS X'in ihtiyaç duyduğu PowerPC komutlarının yalnızca bir kısmını uyguluyor
- Uzun vadede hızlı, kararlı ve doğru seçenek olarak DingusPPC'nin öne çıkması umuluyor
FP bit kontrolü ve render etme hatası
- PearPC interpreter'ına opcode ailesi bazında “birleşik decode table” yaklaşımı uygulanırken, kayan nokta işlemlerindeki değişiklik yüzünden bir regresyon oluştu
- Dock'ta render etme bozulmaları görüldü
- Finder pencereleri açılmadı
- Opcode grup 59 ve 63 için dispatch işlemi yalnızca basit bir lookup değildi; önce Machine State Register içindeki
FPbitinin kontrol edilmesi gerekiyorduFPbiti ayarlı değilse “floating point unavailable” exception'ı fırlatılmalıydı
- O dönemdeki Mac'lerde kullanılan PowerPC çiplerinde FPU vardı, ancak Mac OS X açılışı sırasında bu exception sık sık tetikleniyordu
- Dönemin xnu kernel source içinde
FPbitini temizleyen yerler ve exception handler bulunuyor - Bunun, context switch sırasında FPU register'larını kaydetme/geri yükleme maliyetinden kaçınmaya yönelik bir optimizasyon olduğu düşünülüyor
- Dönemin xnu kernel source içinde
- Optimize edilmiş dispatch koduna da aynı
FPkontrolü eklenince render etme sorunları kayboldu - Aynı hata DingusPPC'de de vardı
- DingusPPC,
FPbitini kontrol etmeden kayan nokta komutlarını her zaman geçiriyordu - Hızlı bir düzeltmeyle exception oluşturulunca Mac OS X render etme bozulmaları ortadan kalktı
- Sonrasında resmî uygulama ve performans kaybını önleyen düzeltmeler eklenince DingusPPC kararlılığı ciddi biçimde arttı
- DingusPPC,
- İki emülatörün birlikte kullanılması, çalıştırılabilen ilk dönem Mac OS X aralığını genişletti
- DingusPPC, 10.1'i kararlı biçimde çalıştırabiliyor
- PearPC, 10.1'i kararlı biçimde çalıştıramıyor
- 10.0 hâlâ kararsız ve Public Beta anında kernel panic veriyor
Infinite HD'nin yeniden düzenlenmesi
- Infinite Mac'in çekici yanlarından biri, döneme uygun yazılımlar içeren Infinite HD'nin birlikte mount edilmesi
- Mac OS X desteğine uyum sağlamak için 80'ler ve 90'lardaki klasik Mac uygulamalarının ötesine geçen, ilk dönem Mac OS X yazılımlarını içeren ayrı bir sürüm hazırlandı
- Kişisel olarak sevilen uygulamaların yanı sıra önerilerle liste genişletildi
- Disk imajları mevcut otomasyon yaklaşımı genişletilerek üretildi
- İlk dönem Mac OS X zamanında disk imajı kullanımı çok yaygın olduğundan,
.dmgdosyalarını üretilen imajın içindeki ek klasör olarak içe aktarma özelliği eklendi
- İlk dönem Mac OS X zamanında disk imajı kullanımı çok yaygın olduğundan,
- Eski
.dmgdosyaları, aynı uzantıyı taşısa da pek çok varyanta sahipti ve modern macOS'takihdiutilbunları her zaman mount edemedi- Sonunda dmg2img ile önce raw partition çıkarıldı
- Ardından modern macOS'un mount edip kopyalayabildiği yeni bir disk imajı yeniden oluşturularak dolaylı bir yöntem kullanıldı
- Gerçek yazılım arşivleme sürecinde, 2000'lerin başı ve ortasındaki Mac OS X yazılımları bir kör nokta oldu
- Macintosh Garden'da bir kısmı var ama önceliği yüksek değil
- Asıl üreticiler tarafında ise çoğu fazla eski olduğu için kaldırılmış durumda
- Wayback Machine yoğun biçimde kullanıldı
- Her Mac OS X sürümünün eşlik eden Developer CD'leri de kurularak Project Builder ve Interface Builder gibi araçların kullanılabilmesi sağlandı
Dosya sistemi ve çoklu disk mount etme
- Disk oluşturma süreci HFS odaklı, ancak o dönemin varsayılanı HFS+ idi
- HFS+, daha uzun dosya adları ve rastgele Unicode karakterler gibi daha gelişmiş özellikler sunuyor
- HFS+ özelliklerine dayanan disk imajı dosyaları kayıpsız dönüştürülemiyor
- Çoğu yazılım için bu büyük bir sorun olmadı
- Boot diski, Infinite HD ve Saved HD dahil en fazla üç sürücüyü mount etmek için DingusPPC fork'undaki yöntem benimsendi
- Başlangıçta belirtilen rastgele sayıdaki partition imajından anlık olarak çok partition'lı bir disk imajı oluşturuluyor
Aqua modu ve site arayüzü
- Infinite Mac'e Mac OS X eklenmesini tamamlamak için site kontrollerine Aqua modu da eklendi
- Daha önce classic, Platinum ve NeXT görünümleri vardı
- Aqua tasarımında 10.0/10.1 stili seçildi
- 10.3 ve 10.4'ün daha sade sürümleri tercih edilse de, 10.0/10.1 tarafının nostaljisi daha güçlü bulundu
- İşletim sistemiyle aynı görsel varlıkları kullanmak için ekran görüntüsü yerine özgün kaynaklar çıkarıldı
- Aqua varlıkları çok sayıda yarı saydam öğe kullandığından sıradan ekran görüntüleri yeterli olmadı
Extras.rsrciçinden özgün varlıkları çıkarmak için resource_dasm ve pxm2tga kullanıldı
Classic çalıştırma, verbose modu ve küçük keşifler
- Birden çok imaj mount edilebildiği için yanına Mac OS 9 partition'ı eklenip Classic uyumluluk ortamı başlatılabiliyor
- Bu özellik yalnızca 10.1'de çalışıyor
- PearPC, Classic'i desteklemiyordu
- Sonuç olarak WebAssembly sanal makinesi içindeki emüle edilmiş Mac OS X içinde klasik Mac uygulamaları emüle edilebiliyor
- Mac OS X imajlarıyla Calculator davranışındaki değişim de görülebildi
- 10.3'e kadar
=tuşuna art arda basma davranışı yoktu - 10.4'te bu davranış vardı
- 10.3'e kadar
- Mac OS X açılışı yavaş olduğundan, ilerlemeyi daha görünür kılmak için verbose modu açığa çıkarıldı
- PearPC'de bunun için yerleşik bir yöntem vardı
- DingusPPC'ye ise başlangıçta Open Firmware değişkenlerini belirtme özelliği eklendi
- Infinite Mac'in özel örnek iletişim kutusunda bu, “Debug Mode” anahtarı olarak sunuluyor
macosx.appalan adı da alınmak istendi ama daha önce kayıt edilmişti- Bu alan adı belirli bir YouTube videosuna yönlendiriyor
- Videodaki YouTuber, bunu kendisinin kaydetmediğini söyledi
Sonraki adaylar ve QEMU olasılığı
- Mac OS X desteğiyle Infinite Mac, modern macOS'e yakın bir noktaya ulaştı
- Bundan sonra da iki CPU geçişi ve çeşitli küçük değişiklikler kalıyor
- Tiger, bugünün macOS kullanıcılarına bile varsayılan olarak tanıdık gelecek bir görünümde
- Daha derin veya daha özel retro bilişim hedefleri olarak A/UX, Lisa, Pippin ve Newton duruyor
- Geçmişte QEMU'yu WebAssembly'ye port etmenin fazla büyük bir proje olduğu düşünülmüş, qemu.js performansı da pratik görünmemişti
- Son dönemde qemu-wasm ve FOSDEM sunumu, bunun yeniden mümkün göründüğünü gösterdi
- Linux guest demosunun performansı cesaret verici
- 100MB verinin MD5 checksum'unu hesaplayan hızlı bir benchmark'ta qemu-wasm 8 saniye, DingusPPC 13 saniye, PearPC ise 18 saniye sürdü
- Grafik ağırlıklı bir guest olan Mac OS X ile arasında ise hâlâ büyük bir fark var
1 yorum
Hacker News yorumları
PearPC'nin birkaç yıl iyi dayandığı doğru, ancak asıl bakımcısı bir tren kazasında öldükten sonra ivmesinin büyük kısmını kaybetti
O dönemde hevesli bir kullanıcı ve topluluk üyesiydim; şimdi bile düşününce gözlerim doluyor
https://www.wired.com/2004/07/pearpc-coauthor/
Infinite Mac, klasik Macintosh ve NeXT sistem sürümleriyle yazılımlarını bir araya getirip web tarayıcısından kolayca erişilebilir kılan bir koleksiyon
https://infinitemac.org/
Yazıdaki en ilginç kısımlardan biri 700 satırın altındaki PPC CPU emülatörü bağlantısıydı
https://github.com/kwhr0/macemu/blob/master/SheepShaver/src/...
6502 emülatörlerinde bu tür bir sadelik görüyoruz, ama nispeten modern mimarilerde pek yaygın değil
Bugün 20 yaşında olan bir teknoloji meraklısının OS X 10.4 ya da 10.5, 10.6 ile karşılaşınca ne hissedeceğini hayal edemiyorum
Acı tatlı bir şekilde, karanlık çağlardan birinin klasik bir heykelin karşısında “İnsanlık bir zamanlar böyle bir şeyi nasıl yapabilmiş?” diye düşündüğü bir sahne geliyor aklıma
Yine de zevkler değişir. Gerçek karanlık çağ insanları “Bu pagan yozlaşması da ne?” diye düşünmüş olabilir; bugün de “Fotoğraf gibi ikonlar mı, ne kadar cringe!” diye bakılabilir
Uygulama kurma hâlâ “IKEA usulü dmg'den uygulamayı sürükleyip bırakma”dır; arada zip ya da pkg olur. Finder penceresinde zaten solda kenar çubuğu yer imleri vardır ve Dock da aynı şekilde çalışır. Garip bir 3D Dock döneminden geçildi, sanırım Leopard'dı
Mac App Store yok ama bugünlerde de neredeyse kimse kullanmıyor; Spotlight ise Tiger'da yeni çıkmıştı. Windows XP ile 11 arasındaki farktan çok daha kolay tanınır. XP'nin çalışma biçimi 11'den epey farklıdır
O zamanlar sistem klasörüne dokunmak bugünkü kadar karmaşık değildi
Erken Orta Çağ'da da çok sayıda güzel eser ve yapı vardı. Çok fazla kalmamış olsa da, bizzat gördüklerimden Sutton Hoo gemi mezarı ya da Anglosakson kiliseleri örnek sayılabilir
Ekran görüntüsü gerçekten şaşırtıcı. Bana göre Mac OS X, bugünkü Mac OS'ten çok daha iyi görünüyor
Net ve düzenli; “Tamam, bu ortamda iş yapabilirim!” hissi veriyor
Şimdiki Mac OS ise “İmdat, şeker çuvalının içine düştüm, buradan nasıl çıkarım?” gibi hissettiriyor. Başkaları da böyle hissediyor mu merak ediyorum
Windows için de aynı şey geçerli. İşleri işletim sisteminin kendisiyle neredeyse hiç yapmıyoruz; yerel uygulamalar da nadir, çoğu tarayıcı tabanlı ya da üçüncü taraf tasarım sistemi kullanan çapraz platform uygulamalar
Yazılım şirketlerinin yazılımı iyi yapıyormuş gibi davranmasından da bıktım
10.4 Tiger da benzerdi ama üst menü çubuğu parlak olduğundan zamanla hoşuma gitmemeye başladı. 10.5 Leopard'da gösterişli ve zevksiz bir 3D Dock, şeffaf üst menü çubuğu ve daha modern gradyanlar vardı
O zamanlar havalıydı, ama gradyanlar brushed metal ve Aqua kadar iyi değildi. Ondan sonrası biraz sıkıcı
10 yıldan uzun süredir son commit almamış pearpc projesiyle başarılı olması şaşırtıcı: https://github.com/sebastianbiallas/pearpc
Onun fork'u şurada: https://github.com/mihaip/pearpc
WebAssembly hedefi eklemiş, ama x86-64 desteğini de koruyor gibi görünüyor
Ayrıca NextStep'i Infinite Mac'e ekleme sürecini de blogunda yazmış: https://blog.persistent.info/2024/03/infinite-mac-nextstep.h...
Bu tür şeyler gerçekten harika. O dönemde Aqua adeta bir vahiy gibiydi
Büyükannenin bile kullanabileceği kullanılabilirliğe sahip ana akım bir Unix’ti ve önemli üçüncü taraf uygulamaları da destekliyordu; tam anlamıyla bir home run’dı
Liquid Glass’ta bu unsurların bir kısmının geri dönmesini umuyorum ama açıkçası Aqua hâlâ iyi görünüyor
Windows Vista ya da Linux temaları gibi taklitlerin kaçırdığı şey, her şeyin ne kadar tutarlı ve kullanılabilir olduğuydu. Harika görünüyordu ama bundan daha önemlisi gerçekten çok iyi çalışmasıydı
Tanıdık UI’ları görmek sevindirici. Macintosh OS 8 civarındaki Platinum’u, OS X 10.3 ve 10.4 civarındaki yalanmak istenen MacOS X UI’ını özlüyorum
SunOS/Slowlaris’in OpenLook’u, NeXTStep/OpenStep UI’ı, turuncu ile yeşilin asla karıştırılmaması gereken Winblows XP öncesinin zirvesi Microsoft Windows 2000 de güzeldi; SGI’nin IRIX’i ve Motif ailesinden keyifler de akla geliyor
UI öğeleri neredeyse her zaman ayırt edilebilir, anlaşılabilir ve tutarlıydı. Standart UI kontrollerini kullandığınızda, çalıştırmadan önce ne olacağını tam olarak bilirdiniz ve gerçekten de tam olarak öyle olurdu
Özelleştirilebilir, tema uygulanabilir, değiştirilebilir ve daha havalı hâle getirilmiş olmalarının sonucu, bugün elimizde olan şeyler gibi görünüyor
Erken OS X dönemi Mac’in gerçek altın çağıydı. Donanım x86 ile epey rekabetçiydi ve işletim sistemi tüm zamanların en iyilerinden biriydi
Sonunda ikisi de teklemeye başladı ama şimdi donanımın ikinci altın çağındayız; bu yüzden bir gün yakında Mac OS’un yeniden harika olabileceğini hayal edebiliyoruz
Ancak yeni donanım altın çağında bile buradaki emülasyon performansı M1 ve Safari’de neredeyse kullanılamaz düzeye yakın
Her gün kernel panic oluyordu, video izlerken QuickTime segmentation fault ile çöküyordu
wmv veya divx gibi dosya biçimlerini oynatmak için uygun codec’i bulup kurma görevine çıkmak gerekiyordu
Güzel görünsün diye hava akışı için havalandırma delikleri doğru düzgün konmadığından aşırı ısınma da vardı
Giriş seviyesi temel M4 mini şaşırtıcı. Bilgisayarın tamamı, benzer performanstaki tek bir x86 GPU’dan daha az güç tüketiyor
Dark Castle! Çocukken babamda bir Apple Lisa vardı. Apple için bir muhasebe paketi geliştirdiği için Apple’ın nazikçe sağladığı bir makineydi
O zamanlar bu inanılmaz makineyi olağan karşılıyordum ve sadece oyunlar ile MacPaint için kullanıyordum. Babamın 3,5 inçlik disk koleksiyonunda üzerinde “Dark Castle” yazan bir disk vardı; hatırlamadığım bir nedenle Lisa’da çalışmıyordu
Bunun bir oyun olduğunu tahmin ediyordum ama oynayamadığım için çok üzülmüştüm ve o gizemli diske kapılıp kalmıştım
2025’e geldik ve Infinite Mac System 7 emülatörünü çalıştırdım: https://infinitemac.org/1991/System%207.0
Yüreğim ağzıma geldi. “Games” klasörünün içinde Dark Castle hemen oradaydı
30 yıl sonra sonunda bu oyunu oynayabileceğim. Grafikleri çekici; Sierra klasiği King’s Quest ve Prince of Persia’dan öğeler de hissettiriyor
https://en.wikipedia.org/wiki/Dark_Castle
Bu akşamın programı belli oldu