MacintoshPi – Mac OS 7/8/9 dla Raspberry Pi

MacintoshPi to mój mały projekt, pozwalający na uruchomienie pod Raspberry Pi pełnoekranowych wersji systemów Apple: Mac OS 7, Mac OS 8 i Mac OS 9 z dźwiękiem, aktywnym połączeniem internetowym i emulacją modemu. Wszystko bez menadżera X.org, a wyłącznie za pomocą multimedialnej biblioteki SDL2 i z poziomu CLI – Raspberry Pi OS Lite. Dzięki temu emulatory wykorzystują pełną moc Raspberry Pi, są stabilniejsze i użyteczne w połączeniu z dodatkowym retro-oprogramowaniem. Instalacja wymaga uruchomienia jednego skryptu na czystym systemie Raspberry Pi OS Lite i poczekania około dwóch godzin na kompilację i instalację pakietów. Dodatkowo, dzięki zawartemu w projekcie dokumentowi, w dual-boot możliwe jest umieszczenie najszybszego (bare-metal) emulatora Commodore 64/128/PET BMC64 budując w ten sposób ciekawy retro pakiet na jednej karcie SD. Cały projekt MacintoshPi działa z urządzeniami Raspberry Pi Zero 2W, 2, 3, 3B, 3B+ (na razie nie działa z wersją 4).

Poniżej film przedstawiający możliwości projektu MacintoshPi:

Tutaj można znaleźć dużo dłuższą wersję tego filmu.

Składniki projektu

W skład projektu wchodzą poniższe skrypty bash'owe auto-kompilujące i instalujące dla Raspberry Pi:

  • Emulator Macintosh 68K Basilisk II obsługujący systemy Mac OS 7 (System 7.5.5) i Mac OS 8,
  • Emulator PowerPC SheepShaver obsługujący system Mac OS 9,
  • Emulator Commodore 64/128/Pet VICE,
  • Wirtualny Modem wykorzystujący projekty tty0tty i tcpser, działający z powyższymi dwoma emulatorami dla produktów Apple, Commodore oraz z samym Raspberry Pi OS i pozwalający na łączenie się dowolnym oryginalnym retro-oprogramowaniem terminalowym z dzisiejszymi telnetowymi BBSami,
  • Emulator CD-ROM, DVD-ROM CDEmu, pozwalający na montowanie pod Linuxem obrazów CD (iso, toast, cue/bin, mds/mdf itp.) – działa z emulatorami BasiliskII i SheepShaver oraz z Raspberry Pi OS. Emulatory są automatycznie skonfigurowane do obsługi tego wirtualnego napędu CD-ROM.
  • Spójny launcher uruchamiający te wszystkie systemy w różnych rozdzielczościach (po restarcie) i w różnych konfiguracjach,
  • SyncTERM – program do łączenia się z BBSami z poziomu Raspberry Pi OS kompilowany w połączeniu z biblioteką SDL,
  • Informacje jak uruchomić w dual-boot Raspberry Pi OS z najszybszym emulatorem Commodore dla Raspberry Pi BMC64 – (bare metal/low latency emulator).

Obrazy systemów Mac OS zostały prekonfigurowane do obsługi połączeń internetowych.

Instalacja

Projekt należy zainstalować na czystym systemie Raspberry Pi OS Lite (Legacy) lub na pełnej wersji Raspberry Pi OS (Legacy), ale w tym przypadku wcześniej należy ustawić uruchamianie systemu do CLI.

System Raspberry Pi OS (Legacy) można zainstalować z poziomu programu Raspberry Pi Imager wybierając: CHOOSE OS -> Raspberry Pi OS (other) -> Raspberry Pi OS (Legacy), CHOOSE STORAGE -> WRITE.

Instalacja całego pakietu MacintoshPi wymaga uruchomienia pojedynczego polecenia ./build_all.sh – wszystkie zależności i wymagane pakiety zostaną zainstalowane automatycznie:

git clone https://github.com/jaromaz/MacintoshPi
cd MacintoshPi
./build_all.sh
# To wszystko - teraz możesz uruchomić przykładowo Mac OS 8:
mac os8

Proces kompilacji i instalacji pakietów zajmie około dwie godziny.

Każdy z tych podprojektów można zainstalować osobno uruchamiając właściwy skrypt kompilująco-instalacyjny znajdujący się we właściwym dla podprojektu katalogu. Uruchomienia skryptów instalacyjnych należy dokonać z poziomu użytkownika pi.

Szczegółowe opisy części składowych projektu MacintoshPi

Basilisk II (Mac OS 7 i 8) i SheepShaver (Mac OS 9)

Skrypt pobiera wszystkie wymagane do uruchomienia Mac OS pliki – ROMy, obrazy systemów i tworzy pliki konfiguracyjne. Po instalacji katalog /home/pi/Downloads będzie widoczny na pulpicie systemu Apple jako katalog Unix – możliwe jest kopiowanie plików w obie strony pomiędzy tymi zasobami, jednak nie można uruchamiać aplikacji bezpośrednio z tego katalogu. Dodatkowo kompilowany jest również tzw. NetDriver, co umożliwia pełny dostęp do internetu ze zwirtualizowanych systemów Apple.

Do tej pory system Mac OS 9 w pełnoekranowym trybie (bez zbędnego menadżera okien) nie był dostępny dla Raspberry Pi. To chyba pierwsza taka implementacja pozwalająca na korzystanie z Mac OS 9 i SDL2 w trybie pełnoekranowym, z dźwiękiem i połączeniem internetowym – nawet na małym Raspberry Pi 2W.

Każdy z systemów należy uruchamiać odpowiednim poleceniem: mac os7, mac os8 lub mac os9. Dodatkowy plik .img lub .dsk możemy dołaczyć do uruchamianego systemu dodając nazwę pliku obrazu na końcu polecenia wywołującego dany system np.:

mac os9 demo.img

Pracę aplikacji Basilisk II i SheepShaver można przerwać kombinacją klawiszy CTRL+SHIFT+ESC. Następuje wtedy natychmiastowy powrót do linii poleceń. Klawisz COMMAND uzyskamy w Mac OS 9 lewym klawiszem ALT, a w Mac OS 7 i 8 lewym klawiszem CTRL.

Więcej informacji o tych emulatorach można znaleźć na stronach projektu BasiliskII i SheepShaver.

VICE

Skrypt kompiluje emulator komputerów Commodore VICE, który może być wykorzystywany do łączenia emulowanego Commodore z dzisiejszymi BBSami. Pozwala na pobieranie plików, które mogą być używane na tym samym urządzeniu Raspberry Pi, ale już na szybkim emulatorze Commodore BMC64, zainstalowanym w dual boot. Po zamontowaniu partycji BMC64 do rootfs istnieje możliwość pobierania danych z BBS bezpośrednio do wirtualnego napędu, który będzie potem automatycznie dostępny w BMC64. Emulator VICE na Raspberry Pi działa bardzo wolno, dlatego do bardziej wymagający aplikacji zalecane jest wykorzystanie emulatora BMC64. Więcej informacji o emulatorze VICE można znaleźć na stronie projektu.

Wirtualny modem MacintoshPi

Skrypt kompilujący i instalujący w Raspbery Pi OS wirtualny modem, który pozwala na łączenie się z dzisiejszymi, telnetowymi BBSami z wykorzystaniem dowolnego oprogramowania terminalowego uruchomianego na powyższych emulatorach Basilisk II, SheepShaver, VICE oraz na samym Raspberry Pi OS.

Wirtualny Modem MacintoshPi pracuje pod kontrolą systemd i wykorzystuje oprogramowanie tpcser, które za pomocą projektu tty0tty pisze do wirtualnego urządzenia /dev/tnt0. Odczyt tych danych jest możliwy z drugiego wirtualnego urządzenia /dev/tnt1 i właśnie to urządzenie staje się wirtualnym portem seryjnym w systemie.

Modem należy uruchamiać poleceniem:

sudo systemctl start vmodem

Można go resetować lub zatrzymywać standardowymi poleceniami systemd:

sudo systemctl stop vmodem

sudo systemctl reset vmodem

Można też pozostawić uruchomiony wirtualny modem w systemie na stałe poleceniem:

sudo systemctl enable --now vmodem

Opcje zmiany prędkości (bps) modemu można ustawiać w pliku konfiguracyjnym wg. dostarczonych w nim przykładowych wpisów:

/etc/vmodem.conf

Aby połączyć się z telnetowym BBSem wystarczy na dowolnym programie terminalowym uruchomić polecenie:

ATDT adres_telnetowy_BBSa:port

Przykładowo:

ATDT borderlinebbs.dyndns.org:6400

Wirtualny modem współpracuje z emulatorem Commodore 64 VICE, ale tylko z wersją uruchamianą plikiem x64sc.

Prędkości modemu w zależności od emulacji

System Maksymalna prędkość bps
Commodore / VICE 2400
Mac OS 7-8 / BasiliskII 28800
Mac OS 9 / SheepShaver 28800
Raspberry Pi OS 38400

Koniguracja wirtualnego modemu

  • W VICE Commodore 64 uruchom polecenie x64sc i wybierz: F12 -> Machine settins -> RS232 Settings:
    Ustaw ekran wg poniższej grafiki, enterem oznaczając również odpowiednie kropki na kolor zielony:

  • W Basilisk II/SheepShaver konfiguracja jest już wykonana automatycznie w plikach konfiguracyjnych tych emulatorów.
    W programach terminalowych w systemie Apple wystarczy wybrać standardowy serial port i prędkość modemu zgodnie z tą, która jest ustawiona pod Raspberry Pi OS w pliku /etc/vmodem.conf (domyślnie 2400 bps).

  • W programach terminalowych bezpośrednio pod Raspberry Pi OS (np. minicom) wystarczy wskazać serial port:
    /dev/tnt1 i prędkość zgodną z zapisem w pliku /etc/vmodem.conf.

CDEmu

Skrypt kompilujący emulator CD/DVD CDEmu, pozwalający na zamontowanie obrazów CD i DVD w formatach iso, toast, cue/bin, mds/mdf i wielu innych. Aplikacja jest zbliżona do programu Daemon Tools dla Windows i działa z emulatorami BasiliskII i SheepShaver jak i z Raspberry Pi OS. Można wykonać obraz starej płyty CD-ROM, skopiować go do Raspberry Pi i zainstalować z niego oprogramowanie w emulowanym na Raspberry systemie Apple.
Nie trzeba już przegrywać na obraz dysku plików .toast i montować ich oprogramowaniem dla Mac OS – teraz można wypakować plik .sit pod Raspberry Pi OS poleceniem unar a następnie wypakowany plik .toast zamontować również pod Raspberry Pi OS poleceniem cdload i korzystać z takiego obrazu CD na dowolnym z systemów Mac OS, tak jak ze zwykłego CD-ROMu.
Płyty audio CD uruchomione w CDEmu, działają poprawnie w Raspberry Pi OS zarówno w trybie graficznym, jak i tekstowym, dźwięk audio nie działa jednak w emulatorach Basilisk II i SheepShaver.
Więcej informacji o CDEmu można znaleźć na stronie projektu.

Obraz CD najłatwiej zamontować poleceniem:

cdload obraz.iso lub cdload obraz.toast

Płyta będzie dostępna w wirtualnym urządzeniu:

/dev/sr0

Usunięcie obrazu z wirtualnego napędu, możliwe jest za pomocą polecenia:

cdunload

MacintoshPi Launcher

Największą wydajność emulatora uzyskuje się w natywnej rozdzielczości działania emulowanego systemu, czyli zalecane jest, aby Raspberry Pi startował np. w rozdzielczości 640×480, jeżeli chcemy uruchomić na nim Mac OS w rozdzielości 640×480.

Launcher ma za zadanie uruchomić daną wersję systemu Mac OS. Jeżeli jednak jest uruchomiony z odpowiednimi parametrami, to ma nadpisać config.txt i inne dowolne pliki systemowe plikami z wybraną właściwą rozdzielczością i pozycją ekranu, które są przypisane do konkretnego systemu Mac OS lub innej dowolnej, zdefiniowanej aplikacji, a następnie ma za zadanie uruchomić dany emulator lub program od razu po restarcie systemu, ale już w nowej rozdzielczości.

Uwaga: w katalogach zawarte są przykładowe pliki konfiguracyjne – należy zastąpić je własnymi lub dodać nowe. Nazwa katalogu z danymi, którymi ma być nadpisany system, jest identyczna jak nazwa parametru po poleceniu mac np.: mac os8-480 uruchomi ponownie Raspberry Pi OS w rozdzielczości 640×480, a następnie uruchomi system Mac OS 8 również w tej rozdzielczości, ale już polecenie mac os8 po prostu uruchomi Mac OS 8 w ostatniej wybranej rozdzielczości.

Launcher pozwala również dołączyć do systemu Mac OS plik .img lub .dsk poleceniem np.: mac os7 plik.img – wtedy po prostu uruchomi się dany system Mac OS i zawartość obrazu pojawi się jako dodatkowy napęd na pulpicie.

SyncTERM

To obecnie najlepszy program do łączenia się dzisiejszymi BBSami z wykorzystaniem protokołu telnet. Jest kompilowany z opcjami wykorzystującymi graficzną biblioteką SDL, dzięki czemu nie korzysta z fontów systemowych, a z szerokiego wyboru odpowiednio przystosowanych fontów w trybie graficznym. Ponownie – do działania SyncTERM nie jest wymagany X.org, a sam program domyślnie uruchamia się w trybie pełnoekranowym.

Rapberry Pi OS dual-boot

Informacje o możliwości uruchomienia Raspberry Pi OS w dual boot, wraz z szybkim emulatorem Commodore – są zawarte na spodzie tej strony.

Jak instalować dodatkowe oprogramowanie

Oprogramowanie na wersje systemów Mac OS 7, Mac OS 8 i Mac OS 9 można znaleźć na stronach:

z serwisów tych można komfortowo korzystać bezpośrednio w Raspberry Pi OS w przeglądarce Chromium – pobrane pliki zapisują się domyślnie w katalogu /home/pi/Downloads i ten katalog jest ustawiony jako współdzielony dla wszystkich systemów Mac OS zawartych w tym projekcie – pod Mac OS wyświetla się on jako napęd Unix.

Nie każdy z pobranych programów zadziała w emulacji Basilisk II, czy SheepShaver (m.in. nie działają programy wykorzystujące OpenGL) duża ich część będzie funkcjonowała poprawnie. Przed pobraniem należy się upewnić, że oprogramowanie jest z grupy abandonware lub zakupić wymaganą licencję, jeżeli jest to jeszcze możliwe.

Istnieją trzy metody instalacji oprogramowania w zależności od rodzaju pobieranego pliku:

  1. Pobierany plik ma rozszerzenie .sit i wewnątrz zawiera obraz CD .toast lub .iso:

    należy rozpakować plik pod Raspberry Pi OS poleceniem unar plik.sit; wypakowanemu plikowi .toast usunąć spacje w nazwie pliku (jeżeli występują), a następnie zamontować plik .toast poleceniem cdload plik.toast. Później uruchomić daną wersję Mac OS i zainstalować oprogramowanie z wirtualnego napędu CD, który wyświetli się na pulpicie.

  2. Pobierany plik ma rozszerzenie .sit lub .zip, a wewnątrz zawiera plik .img lub .dsk:

    należy rozpakować plik pod Raspberry Pi OS poleceniem unar plik.sit lub unzip plik.zip; wypakowanemu plikowi .img lub .dsk usunąć spacje z nazwy pliku i uruchomić dany system Mac OS poleceniem mac os7 plik.img – wtedy obraz zostanie automatycznie dołączony do systemu i pojawi się jako dodatkowy napęd na pulpicie.

  3. Pobierany plik ma rozszerzenie .sit i wewnątrz zawarte jest oprogramowanie przeznaczone bezpośrednio dla Mac OS:

    należy wcześniej pobrać obraz programu Stuffit Expander i zainstalować to oprogramowanie w systemie Mac OS, a następnie pobrany do katalogu Downloads właściwy plik .sit już w Mac OS przegrać z katalogu Unix na wirtualny dysk Macintosh HD i dwukrotnie nacisnąć myszą na tym pliku, dzięki czemu zostanie on rozpakowany bezpośrednio w systemie Mac OS.

O moim Macintosh Classic II

Moją wersję MacintoshPi napędza Raspberry Pi 3B+. Obudowę Macintosh Classic II zakupiłem na eBay – była kompletnie żółta, ale do stanu zgodnego z fabrycznym przywróciłem ją korzystając z wody utlenionej 18% i odpowiedniego naświetlania.

Ekran LCD IPS 10,1'' 1024x600px HDMI Waveshare 11870 jest obrócony o 180°, aby okablowanie nie przeszkadzało górnej, wąskiej ramce Macintosha. Przestrzeń między płaskim ekranem, a pozostałościami kształtu CRT uzupełniłem wydrukiem 3D, który został zaprojektowany na potrzeby projektu twórców kanału YouTube 2GuysTek. Ekran Waveshare jest nieco zbyt szeroki, ale odpowiednie operowanie plikiem config.txt pozwala software'owo obrócić ekran i ustalić dokładną pozycję wyświetlanego obrazu, dla każdego z systemów lub programów oddzielnie (po każdorazowym restarcie). Ekran jest też nieco zbyt niski, dlatego puste przestrzenie wypełniłem czarnym bristolem i praktycznie nie widać tych elementów (wyglądają jak czarne tło ramki otaczającej ekran) – zalecam jednak wykorzystanie innego monitora, którego rozmiar będzie nieco większy, a dopiero software'owo zmniejszyć rozmiar i ustalić właściwą pozycję wyświetlanego obrazu.

Klawiatura i mysz to zestaw Logiteh MK295 Silent Wireless Combo – są tylko nieznacznie zbliżone stylem do dostarczanych w tamtych latach peryferii, ale są też bezprzewodowe i korzystają z pojedynczego dongla bluetooth. Dodałem dwa głośniki podłączone do wejścia audio analog/jack Raspberry Pi 3B+ i do rozgałęźnika. Wszystkie te elementy są zintegrowałem wewnątrz obudowy komputera Apple Macintosh Classic II.

Źródła projektu można znaleźć na

Ten film znalazł się na stronie głównej serwisu wykop.pl otrzymując 311 wykopów. Zobacz też inne wpisy z tego bloga, które trafiły na stronę główną.

Piszą o projekcie










Podcasty o projekcie

@ 33:25
@ 36:26
@ 47:15

Dual-boot Raspberry Pi OS i BMC64

Kliknij tutaj, aby wyświetlić instrukcję uruchomienia MacintoshPi w trybie dual-boot z BMC64.

Wsparcie

Możesz przelać dowolne środki na moje konto PayPal, jeżeli chcesz wesprzeć ten projekt.

7 myśli na temat “MacintoshPi – Mac OS 7/8/9 dla Raspberry Pi

  1. podziwiam pracę wykonaną, żeby to wszystko śmigało. Zainstalowałem na Raspberry Pi B+ Zostało mi przygotować obudowę dla Malinki z 2,8 calowym wyświetlaczem i jakimś rozwiązaniem dla zasilania – nie ma jak spełnienie marzeń z dzieciństwa. DZIĘKUJĘ

  2. Uruchomiłem na Pi400 wystarczyło wykorzystać nowszą wersje SDL2 tj. zamiast https://www.libsdl.org/release/SDL2-2.0.7.tar.gz wykorzystać https://www.libsdl.org/release/SDL2-2.0.18.tar.gz.
    Dodatkowo miałem problem z cd-rom oraz ethernetem więc na szybko zmieniłem w plikach konfiguracyjnych:
    – ‚nocdrom false’ -> ‚nocdrom true’
    – ‚ether slirp’ -> ‚#ether slirp’.
    Zakładam że zarówno cd-rom jak i ethernet jest do uruchomienia (np. ethernet może działa tylko wymaga podłączenia przewodu i postawienia interfejsu, może analogicznie jest z cd-rom tj. może wystarczy coś podmontować – nie wiem nie próbowałem, powyższa proteza w plikach konfiguracyjnych była tylko wynikiem mojego pośpiechu). Jak będę miał chwile czasu to może spróbuje uruchomić powyższe.
    Ogólnie skrypty to mega profeska :)

      1. To może dodaj do repozytorium GitHub swoją wersję (jako nowy plik dla Pi400) i zrób Pull Requesta. Chętnie przetestuję i może wspólnie naprawimy te bolączki. Projekt idealnie pasuje na Pi400 – naklejka Macintosha na klawiaturę Pi400 i gotowe :)

Pozostaw odpowiedź jaromaz Anuluj pisanie odpowiedzi

This site uses Akismet to reduce spam. Learn how your comment data is processed.