Infinite Mac OS X
(blog.persistent.info)- Trên nền tảng Infinite Mac, giờ đây có thể chạy các phiên bản đầu của dòng Mac OS X (10.1, 10.3) ngay trong trình duyệt web
- Đã đạt được tiến triển trong việc cải thiện khả năng tương thích và độ ổn định bằng cách port trình giả lập PowerPC PearPC sang Emscripten/WebAssembly
- Thông qua việc so sánh với DingusPPC, dự án đã cải thiện hiệu năng và các lỗi khó xác định nguyên nhân, đồng thời trải qua quá trình tối ưu hóa thuật toán
- Cũng đã xây dựng mới ảnh đĩa Infinite HD phù hợp với Mac OS X, cho phép truy cập nhiều phần mềm và công cụ phát triển của thập niên 2000
- Cùng với việc áp dụng phong cách Aqua cho UI để tăng trải nghiệm hoài cổ, dự án cũng tính đến khả năng phát triển thêm trong tương lai
Tóm tắt
Infinite Mac, dự án cho phép trải nghiệm trực tuyến các hệ thống legacy lâu đời trên nền tảng Infinite Mac, nay đã có thể chạy trên trình duyệt web hiện đại bằng cách hỗ trợ các phiên bản đầu của Mac OS X như 10.1 và 10.3. Trong quá trình này, các trình giả lập PowerPC như PearPC và DingusPPC đã được port sang nền tảng Emscripten/WebAssembly, kèm theo nhiều nỗ lực để cải thiện hiệu năng và đảm bảo độ ổn định. Thông qua tối ưu hóa thuật toán và khắc phục lỗi, dự án nâng cao độ phân giải và độ tin cậy so với phần cứng gốc, đồng thời tái cấu trúc Infinite HD chứa phần mềm và công cụ phát triển của thời kỳ đó để tăng tính thực dụng. Ngoài ra, giao diện trang web được áp dụng chủ đề Aqua nhằm mang lại trải nghiệm giàu cảm xúc, và còn xem xét mở rộng trong tương lai tới các OS cổ điển hơn như A/UX và Lisa. Dự án này cho thấy một nỗ lực kỹ thuật đa mục tiêu, bao gồm giả lập chương trình, mở rộng kho lưu trữ mã nguồn mở và phục dựng UI.
Mở rộng hỗ trợ Mac OS X
- Infinite Mac đã được port để có thể chạy các phiên bản OS X đời đầu như Mac OS X 10.1 và 10.3 trong trình duyệt web
- Dự án tái hiện nguyên trạng hiệu năng chậm trên phần cứng thực, đồng thời cho phép trải nghiệm sử dụng các ứng dụng tiêu biểu thời đó như NetNewsWire Lite và Terminal
- Ảnh đĩa mới nhất cũng bao gồm một phần phần mềm indie thời kỳ đó, giúp việc khám phá phần mềm retro trở nên dễ dàng hơn
Quá trình port PearPC
- Ban đầu dự án tập trung vào việc port và chỉnh sửa trình giả lập DingusPPC, nhưng đã chuyển hướng sang PearPC do gặp vấn đề kernel panic và lỗi đồ họa
- PearPC là một codebase đa nền tảng được thiết kế để chạy Mac OS X trên hệ x86 vào đầu những năm 2000, nên tương đối dễ port sang đích WebAssembly mà không cần quá nhiều công việc bổ sung
- Gần đây, maintainer chính của Basilisk II và SheepShaver đã tạo một nhánh thử nghiệm của PearPC, giúp có thể build trên macOS hiện đại
- Mã nguồn đã cũ và dựa trên C++ legacy, nhưng có những đặc điểm riêng như string class tùy chỉnh,
sprintf, bộ giải mã GIF, v.v. - Nhờ cấu trúc đa nền tảng, thiết kế gần như không dùng thread và các lớp trừu tượng hóa có tổ chức, việc port diễn ra nhanh chóng
Tối ưu hiệu năng và giới hạn
- Dù độ tin cậy khi khởi động và chạy Mac OS X 10.2 trên PearPC khá cao, tốc độ chạy vẫn chậm hơn so với DingusPPC
- Sự suy giảm hiệu năng do thiếu MMU caching là khá đáng kể
- Các tối ưu hóa dựa trên thuật toán từng áp dụng ở DingusPPC cũng được chuyển sang PearPC, giúp rút ngắn phần nào thời gian khởi động
- PearPC chỉ triển khai tập con các lệnh PowerPC cần thiết và tận dụng nhiều “mánh” như firmware, driver tùy chỉnh
- Dự án vẫn kỳ vọng rằng về lâu dài, DingusPPC sẽ hứa hẹn hơn cho việc giả lập Mac OS X nhanh và ổn định
Phát hiện phụ: xử lý ngoại lệ FP
- Khi áp dụng phương thức giải mã hợp nhất trong interpreter của PearPC, lỗi render đã xảy ra trong các phép toán dấu phẩy động
- Kernel Mac OS X đăng ký xử lý ngoại lệ dựa trên trạng thái bit FP trong thanh ghi MSI; khi cơ chế này được triển khai vào mã, vấn đề render đã được giải quyết
- DingusPPC cũng gặp vấn đề tương tự do thiếu bit FP, gây lỗi render văn bản; sau khi sửa, độ ổn định đã cải thiện đáng kể
- Từ cách xử lý mang tính chắp vá, dự án đã tiến tới triển khai “đúng bài”, và cuối cùng độ tin cậy khi chạy 10.1 cũng tăng mạnh
- Bằng cách kết hợp hai trình giả lập, phạm vi hỗ trợ chạy nhiều phiên bản OS X khác nhau đã được mở rộng
Tái cấu trúc ảnh đĩa Infinite HD
- Đã build mới ảnh đĩa phù hợp với thời kỳ Mac OS X, bao gồm nhiều phần mềm indie và công cụ dành cho nhà phát triển của giai đoạn đó
- Các tệp
.dmgphiên bản cũ không thể mount trực tiếp trên macOS mới, nên dự án đã xây dựng pipeline chuyển đổi và tự động hóa bằng các công cụ như dmg2img - Dù có một số hạn chế do khác biệt giữa hệ thống tệp HFS và HFS+, phần lớn phần mềm vẫn hoạt động bình thường
- Môi trường chạy phần mềm đầu những năm 2000 được hoàn thiện nhờ nhiều nguồn khác nhau như các trang thư viện phần mềm và Wayback Machine
- Kỹ thuật tạo động ảnh đa phân vùng được áp dụng, cho phép mount tối đa 3 volume gồm đĩa khởi động, Infinite HD và Saved HD để lưu dữ liệu
UI: áp dụng phong cách Aqua
- Chủ đề Aqua cũng được áp dụng cho UI của Infinite Mac để đẩy mạnh cảm giác hoài cổ
- Các tài nguyên hình ảnh theo phong cách Mac OS X 10.0/10.1 được tự trích xuất và tái hiện cả hiệu ứng bán trong suốt
- Phong cách của các thành phần điều khiển trên trang cũng tự động được áp dụng theo diện mạo từng OS (Classic, Platinum, NeXT, v.v.)
- Trong bối cảnh Apple chuẩn bị cho các thay đổi UI lớn trên macOS trong tương lai, dự án còn đóng vai trò như một “điểm tham chiếu” cho giao diện quá khứ
Tính năng bổ sung và cột mốc
- Đã bổ sung khả năng mount phân vùng Mac OS 9 và chạy môi trường Classic (chỉ hỗ trợ trên 10.1)
- Có thể đối chiếu chính xác khác biệt UX giữa các OS, chẳng hạn hành vi tính lặp trong ứng dụng Calculator cũ
- Chế độ thông điệp khởi động (Verbose) tích hợp trong PearPC đã được kích hoạt, còn trên DingusPPC thì cơ chế chỉ định biến Open Firmware đã được triển khai
- Dự án cũng đang thử mở rộng nhận diện thương hiệu thông qua miền
macosx.app, nhưng hiện miền này thuộc sở hữu của người khác
Mở rộng trong tương lai và kết luận
- Việc mở rộng hỗ trợ Mac OS X giúp Infinite Mac tạo ra cầu nối với macOS hiện đại
- Để đi sâu hơn vào thế giới retro, dự án cũng nhắc đến khả năng port A/UX, Lisa, Pippin, Newton và các hệ khác
- QEMU nền WebAssembly (
wasm) cũng được quan tâm ở mức thử nghiệm, với những tín hiệu tích cực từ các bài kiểm tra hiệu năng - Giả lập Mac OS X trên web mang lại giá trị trong nhiều kịch bản IT/startup như trải nghiệm, bảo tồn phần mềm legacy và thử nghiệm phát triển
1 bình luận
Ý kiến trên Hacker News
dmg), bookmark trong Finder, cách Dock hoạt động cho tới sự xuất hiện của Spotlight đều đã có từ khi đó; và so với mức thay đổi giữa Windows XP và Windows 11 thì Mac thay đổi không nhiềusegmentation faultcũng là chuyện như cơm bữa; việc đi tìm codec để phát đủ loại định dạng tập tin (wmvhaydivx) là công việc hàng ngày, và vì máy được thiết kế không có khe thoát nhiệt chỉ để trông đẹp nên tình trạng quá nhiệt cũng rất thường gặp