SSブログ

ラズパイでBasilisk II,X無しの方向で… [Raspberry Pi]

20201216 18:04 追記
できちゃったので,『vncする』を追加しました。
20201223 12:00 追記
『じゃ〜ん』(続 ラズパイでBasilisk II) Startup Soundを鳴らしてみました。
20210225 12:00 追記
ラズパイでBasilisk II... OS起動画面をどうにかする。


年末の在庫整理(?)で,押入れからMacOSなCDやらフロッピが大量に出てきた。
# まだ持ってたんかい!(笑

ブツを手にとって,強烈なノスタルジック感に浸っていると…

『汝,"FlyingToaster" を起動せよ!』

ってお告げが(笑,例の音楽が頭の中でループしてるんだよぉ

普段使いのラズパイを4Bに移行して,3Bや3B+が余ってるし…
まぁ,やってみますか… が今回のお題。

で,結果

FlyingToaster.jpg

ちゃんと,みられました。


以下は,X無しのネタを探すのに苦労したので,自分向けの忘備録を残しておきます。
で,『続きはこちら…』はセットアップネタ,無駄に長々なので,先に感想などを。

  • セットアップ
    • 添付のREADMEを元にセットアップを進めて,うまく動かせました。
      # 寄り道しすぎて,どツボったのは内緒。(最初っからマニュアル嫁)
    • ただ,256色切り替えでクラッシュする問題には難儀しました。
  • MacOS 7.5 or 8
    • 実験中に7.5.3と8.1を試したのですが,7.5.3の方が起動が早く,動作もキビキビしていました。
      # 7.5.3では,アイコンパレードが見えないくらい早い!
    • 結局,新しいのを使いたかったので,8.1にしました。(アイコンパレードが見たかったし)
  • Hello World… Hell o MacOS
    • OSのインストールは,時間がかかりますが恙無く… しかし,ソフトを動作させる為,四苦八苦。
      理由は単純,物理CDやFDのハンドリング,OSXとMacOSとの間でのやり取り方法。 特に,*.sitが開けない…とか,isoがマウントできない…とか。
    • FDのハンドリングで苦労しましたが,After Darkは,無事起動できました。
    • ゲームは?って事で,Marathonを入れてみました。 ちゃんと遊べます。
    • "MacOS設定アシスタント" が動かない?!
      2020年問題+αで完走できない orz 誕生日の設定だけは,したかったなぁ
    • 昔集めた"便利ソフト"をCD-Rで保管していたのですが,高確率で読めなくなっていた orz
    • FDも2DD(800kB)が読めず(泣
    • 今更MacOSをゴリゴリ使うことは無いと思いますが,まぁ何かの為の準備でしょうか…

結構(無駄に)長いので,興味のある人限定で。
また,エミュレータ関連ネタは色々あるので,やるなら全て自己責任でお願いします。
# 真似たけど動かねぇ!!って苦情も無しの方向で(笑

目次(が必要なくらい長い…笑):


目指すところ(?)

先にも書きましたが,概ねこんな感じ…

  • ラズパイをMacOS専用機にする。
    • Pixel Desktopは入れない。
    • ラズパイの電源を入れたら,MacOSまで起動するようにする。
    • CD/FDと一緒に出てきた5-inch LCDを使ってみる。
  • FlyingToasterを音付きで見る。(ぴぃーぴぃーぴっぴっぴ!)
  • ついでに,手持ちのソフトを色々動かし,ノスタルジーにどっぷり浸かる。
Hints: エミュの比較
  • SheepShaver
    • MacOS7.5.2〜9.0.4まで対応。
    • 680x0,PowerPC両方のアプリが動かせる。
    • X11無しだと使えない(らしい)。
  • BasiliskII
    • MacOS7〜8.1まで対応,8.5以降は動かない。
    • 680x0エミュなので,PowerPC専用アプリは使えない?
    • 使用できるROMファイルは,1MB以下の物,2MB以上では動かない
    • X11無しだと設定用のGUIが使えない。 設定ファイルをテキストエディタで直接編集するようになる。
    • 256色に切り替えた途端クラッシュする。(文末 256色問題 参照)
      • 古いゲームで,256色を要求する物には注意
  • Mini vMac
    • MacOS 7.5.5まで対応,白黒画面でSystem 6のMacを見たいならコレが良さげ。
    • でもOSは,出来るだけ新しい物を使いたい。

→ 上記のことから,BasiliskIIを使う事とします。

ご参考:


材料

ざっくり,こんな感じ。 全部手持ちの部材。

  • Raspberry Pi 3B+
  • 5-inch LCD with Touch Panel (今回,Touch Panelは使いません)
  • SD: 16GB(SiliconPower製)
  • その辺に転がっていた,USBキーボード,マウス

発掘されたネタから

  • Mac OS 8 CD
  • After Dark V3 …などなど

* OSは Raspi OS Lite (20201202)を使いました。
* 3B+は,元々OSMCで使っていた物,LCDは大昔Gimix箱で使った物です。
* MacOSを含めソフト関係は,手持ちのものを使います。


基礎セットアップ

SDカードの作成は,いつも通り。
ラズパイに刺す前に,ssh有効化と,家中WiFiの設定を書き込んでおきます。
今回は,5-inch LCDを使うので,追加でconfig.txtにLCDとタッチパネルの設定も記述しておきました。

参考: 5 inch LCDの設定(config.txtに追加)

# 5inch LCD Display hdmi_force_hotplug=1 hdmi_group=2 hdmi_mode=87 hdmi_cvt 800 480 60 6 0 0 0 framebuffer_width=800 framebuffer_height=480 # 5inch LCD TouchPanel dtparam=spi=on dtoverlay=ads7846,penirq=25,speed=10000,penirq_pull=2,xohms=150

RaspiOS初起動から

$ sudo apt update && sudo apt upgrade

raspi-config はこんな感じ

  1. System Options
    • S2 Audio →1 Headphones (5-inch LCDの場合)
    • S3 Password → 要設定
    • S4 Hostname → お好みで。
    • S5 Boot/Auto Login →B2 Console Autologin
  2. Display Options
  3. Interface Options
  4. Performance Option
    • P2 GPU Memory → 64→256 (変更の要不要不明)
  5. localisation Options
    • L1 locale →ja_JP.UTF-8 UTF-8
    • L2 Timezone →Asia Tokyo
  6. Advanced Options
    • A2 GL Driver → G2 Fake KMS

あとは適時,設定を調整します。


Basilisk IIのインストール

GitHubネタの為,gitフォルダを作成して,そこで作業します。

$ sudo apt install -y git libsdl1.2-dev automake $ mkdir ~/git && cd ~/git $ git clone https://github.com/cebix/macemu.git $ cd macemu/BasiliskII/src/Unix $ NO_CONFIGURE=1 ./autogen.sh && \ ./configure \ --enable-sdl-video \ --enable-sdl-audio \ --disable-vosf \ --disable-jit-compiler $ sudo make -j3 && sudo make install

ネットにつなぐ準備

どの程度使えるかは,不明。
# MacOS8.1に入っていたIE3.0.1で,家中サーバにアクセス出来る事を確認しましたが,AppleShareなどは未確認。

ethernet card ドライバをビルド,設置する。
# 詳細は添付READMEの ether <ethernet card description>項 参照の事。

$ sudo apt install -y linux-headers $ cd ~/git/macemu/BasiliskII/src/Unix/Linux/NetDriver $ sudo make $ sudo make dev mknod /dev/sheep_net c 10 198 $ sudo insmod sheep_net.ko $ lsmod Module Size Used by sheep_net 16384 0 cmac 16384 1 : $ sudo cp sheep_net.ko /lib/modules/$(uname -r)/kernel/drivers/net/

起動時にLoadするように設定。

$ sudo nano /etc/modules-load.d/sheep_net.conf # 中身 sheep_net

$ sudo nano /etc/modprobe.d/sheep_net.conf # 中身 alias char-major-10-198 sheep_net

な感じ…

ここで,一旦,RaspiOSをreboot。

確認

$ lsmod | grep sheep_net sheep_net 16384 0 $ ls /dev | grep [s]heep_net sheep_net

あとは,BasiliskIIの定義を行えば,使えるようになる。(後述)


MacOSのネタ準備

  • OSのInstall Disk: 今回は,Mac OS 8 v8.1
  • ROM: 今回は動作テストとして,Quadra-650.ROM

* ROMは後で,PowerBook Duo270cから引っこ抜いたものへ入れ替え。

OSのディスクは,あらかじめISOファイルにしておきます。
ROMは,1MB以下の物を使います。(2MB以上の物ではBasiliskIIは動かないようです)


適当なフォルダを作成して,そこに構築すべきですが,専用機という事で,/home/pi 直下に構築していきます。

HDDイメージ作成

$ sudo apt install -y hfsutils $ cd ~/ $ dd if=/dev/zero of=macos81.hd bs=1024k count=1024 # 1GBのHDDイメージ $ hformat -l 'Macintosh HD' macos81.hd # HFSでフォーマット

MacOSに自動マウントする共有ドライブ "Unix" のパス(フォルダ)を用意
# samba共有の対象にしておくと便利かも…

$ mkdir ~/share/

結果,ファイルの配置は,こんな感じに…

$ ls ~/ 'Mac OS 8.1.iso' Quadra-650.ROM git/ macos81.hd share/

Basilisk IIの設定

定義ファイルを用意します。

$ nano ~/.basilisk_ii_prefs

.basilisk_ii_prefs の中身

# ROM(1MB以下の物を使う事) rom /home/pi/Quadra-650.ROM # CD-ROM cdrom /home/pi/Mac OS 8.1.iso # 仮装HDD disk /home/pi/macos81.hd # 共有ドライブ(MacOSで”Unix"ドライブとしてマウントされる) extfs /home/pi/share/ # メモリサイズ ramsize 67108864 # その他 Option frameskip 0 #nosound true # 音声出力が無いディスプレイの場合 keycodes true # 非Mac用キーボードを使う場合 true modelid 14 # MacOS8以降を入れる場合必須(7.x,7.5.xなら不要) screen dga/800/480 # 5-inchLCDでFull Screen #screen dga/1920/1080 # for HDTV(with vc4-fkms-v3d) ether slirp # ether driverを構成出来たら有効にする事
Tips:
  • 音声出力が無いLCDを使用する場合,raspi-configで音声出力をHDMIにしていると,BasiliskIIがうまく動作しません。
    nosound true するか,raspi-configで音声出力をHeadphomesに切り替えておいてください。
  • raspi-configのGL DriverがLegacyだと,256色に切り替えた際,クラッシュします。

BasiliskII初起動 〜 OSインストール

BasiliskIIの起動

$ BasiliskII

MacOSインストールCD(iso)で起動されます。

普通(?)にMacOSをインストールすます。
SDが遅いせいなのか,8.1のボリュームが大きいのか,結構時間がかかります。

インストールが終わったら,一旦,MacOSを終了して,.basilisk_ii_prefsを再編集,cdrom項をコメントアウトします。


MacOS初起動

"MacOS設定アシスタント" が立ち上がってきますが,OS巻き込んで,盛大にクラッシュします(笑
これは,"MacOS設定アシスタント"の2020年問題などの為。

"MacOS設定アシスタント"は,初回起動時のみなので,RaspiOSをRebootすればOK。
# MacOS8.5以降の場合,MacOS設定アシスタントのエイリアスが起動項目にあるので,そいつを削除する必要があるっぽい。


"MacOS設定アシスタント" をなんとか実行する。

いろいろ調べてみたら,"プリンタの設定" で止まるのは回避不能らしい。(参考)

回避するには,MacOSの日付を2020年以前にする必要がある。
が,BasiliskII上のMacOSの日付は,RaspiOSに同期するので,MacOS側から変更する事ができない。

BasiliskIIを終了し,RaspiOSの日付を変える。

sudo timedatectl set-ntp false sudo timedatectl set-time 2019-01-01

BasiliskII(MacOS)を起動。

MacOSで "MacOS設定アシスタント" 起動する。

  • キーボード入力の質問を省略する? =いいえ
  • 日本語の入力方法[ローマ字]
  • あなたの名前と所属 最低限,名前の入力が必要
  • 日付&時刻 日付の変更はしなこと!
    • 時間帯の設定 →東京 日本 …など
      • 時刻の書式は,お好みで…
    • 誕生日 →ここでのみ設定可能な項目!!
  • 現在地 [東京 日本]
  • Finderの設定 簡易=いいえ
  • ネットワークの設定
    • hostname(?)
    • password
  • プリンタの設定 →探しに行って帰ってこない orz

自動起動について

* BasiliskIIの設定を済ませ,動作に問題が無い事を確認できるまで,自動起動はさせないように!
* Auto Loginを使うので,セキュリティ上,大分緩くなります。

ご参考:

先に,raspi-configで,Auto loginを有効にします。
# raspi-configで1 →S5 →B2

以下を実行。 .bashrcに小細工をします。

$ sed -i "1 i if [ \`tty\` == '/dev/tty1' ]; then /usr/local/bin/BasiliskII;sudo halt; fi" .bashrc

これで,ラズパイ起動時にBasiliskIIが起動してきて,BasiliskII(MacOS)終了時にShutdownするようになります。
* MacOS再起動では,電源は落ちません。

自動起動を解除したい場合,.bashrcの1行目をコメントアウトする。

nano ~/.bashrc : if [ `tty` == '/dev/tty1' ]; then /usr/local/bin/BasiliskII;sudo halt; fi # ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples :

ご参考:


起動時間

ご参考:

ラズパイ3B+で,25秒くらいでした。(MacOSの起動時間のみ,RaspiOSを含めず)
上記ご参考のネタによると,MacOS8.1は,オリジナルマシンで1分〜2分位かかるらしいので,(ラズパイのくせに)結構速い?

SDカードを速い物にするとか,RaspiOSをチューニングするとかすれば,もっと速くできるかな…


SSHで,コンソール上にBasilisk IIを起動する。

通常,ラズパイで何かをセットアップする時は,ssh経由で行なっていますが,Basilisk IIの起動は,物理コンソールで行う必要があります。

ここでは,MacOS起動までsshで行えるようにします。
# でも,起動出来てもMacOSの操作は物理コンソール上なので…
# 使い所が,ちょっと微妙… VNCとかあるのかな? →『vncする』を参照

ttyechoを使って,tty1でBasilisk IIを起動させる。

# ttyechoをセットアップ(以下を1行で実行) curl -O "http://aoakley.com/articles/artifacts/retropie-pixel/ttyecho" && sudo mv ttyecho /usr/local/sbin && sudo chmod 755 /usr/local/sbin/ttyecho && sudo chown root.root /usr/local/sbin/ttyecho # BasiliskII起動 sudo su -c "ttyecho -n /dev/tty1 \"BasiliskII\""

いちいち,これを入力するのは億劫なので,簡単な起動スクリプトを用意します。

nano bii.sh

中身

#!/bin/bash sudo su -c "ttyecho -n /dev/tty1 \"BasiliskII\""

実行権限をつけて,起動してみる。

chmod 755 bii.sh ./bii.sh # これでBasiliskIIが起動してくる。

256色問題

MacOS上で256色に切り替えるとクラッシュする問題。
GL Driverの設定で,回避する事が出来るようです。

特に,MacOS上でゲームをしたい場合,"Fake KMS" にする事で,"起動時クラッシュ" は避けられそうです。
# ゲームソフト等では,VRAMが少ない機体でも起動できるように,初回起動時は256色でって事が多い気がする。


OpenGL ドライバ,どれ使う?
# raspi-configの 6. Advanced Options →A2 GL Driver

  • G1. Legacy …OpenGL無し?
  • G2. Fake KMS …現状,Pi4はこれ一択
  • G3. Full KMS …現在開発進行中?

* 初期値はLegacy?

ネタ: Pi4でkodiを使った際,Legacyだとメニュー動作が遅くなる。


TV(1920x1080)に繋いで実験

* 確認していないが,LCDでも同様と思われる。

raspi-config: DL Driver をLegacyとFakeKMSを切り替えてみる

config.txt: HDMI周りは基本,未定義,CEC任せ

.basilisk_ii_prefs: BasiliskIIの設定(画面周り)

screen dga/1920/1080 # HDTV

displaycolordepth の設定は,していません。


Legacyで…

  • MacOSの画面は,TV中央に4:3表示(周りに黒枠)になる。
  • MacOSのコントロールパネル "モニタ" で解像度を変更すると,画面中央に拡大表示される。
  • 1920x1080の選択肢が出てこない。(1280x1024まで)
  • 256色に変更すると,必ずクラッシュする。
    • 256色を要求するゲームは,起動時にクラッシュする。
    • グレーは,白黒〜16色まで有効,32Kは,必ずカラーになる。

Fake KMSで…

  • MacOSの画面は,Full表示,ただしOverScanぽい画面(周りに黒枠)になる。
  • MacOSでモニタの設定を1920x1080以外にすると,左寄せになる。
  • 色数は全て有効。(ただし,Full Colorは選択肢に出てこない,32Kまで)
  • グレー/カラーの切り替えも良好。
  • "モニタ"を弄ってからゲームを起動するとクラッシュする事がある。
  • Desktopは32kカラーでも,ゲームでは256色以外選べなくなる?
    # Marathonがそうでした。

1920x1080でFull Color(約1,670万)が選択肢に出てこないのは,解像度が高すぎてVRAMが足りない為?
解像度を下げれば,選択肢が出てきます。

他にも,色々制限,制約があると思われます…
継続利用する際は,留意する事。


vncする

raspi-configでVNCを有効にしてもX11用の物がセットアップされる。
当然,RaspiOS Liteでは使えない orz

そこで裏技?
GitHub - hanzelpeter/dispmanx_vnc: VNC Server for Raspberry PI using dispmanx

# Build $ sudo apt-get install libvncserver-dev $ cd ~/git/ $ git clone https://github.com/hanzelpeter/dispmanx_vnc.git $ cd dispmanx_vnc $ sh ./makeit # 設置 $ sudo cp ./dispmanx_vncserver /usr/local/bin/ $ sudo chown root:root /usr/local/bin/dispmanx_vncserver # テスト起動 $ sudo dispmanx_vncserver -r

サービス化する。

$ sudo nano /etc/systemd/system/dispmanx_vncserver.service

中身(OMSCでVNCを参考にして,いいかげんな修正を加えてます)

[Unit] Description=VNC Server After=syslog.target network.target network-online.target [Service] Restart=on-failure RestartSec=30 Nice=15 User=root Group=root Type=simple ExecStartPre=/sbin/modprobe evdev ExecStart=/usr/local/bin/dispmanx_vncserver -r KillMode=process [Install] WantedBy=multi-user.target

サービスとして稼働テスト

$ sudo systemctl daemon-reload $ sudo systemctl enable dispmanx_vncserver.service $ sudo systemctl start dispmanx_vncserver.service $ sudo systemctl status dispmanx_vncserver.service ● dispmanx_vncserver.service - VNC Server Loaded: loaded (/etc/systemd/system/dispmanx_vncserver.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-12-16 17:42:33 JST; 4s ago Process: 699 ExecStartPre=/sbin/modprobe evdev (code=exited, status=0/SUCCESS) Main PID: 700 (dispmanx_vncser) Tasks: 5 (limit: 1173) CGroup: /system.slice/dispmanx_vncserver.service └─700 /usr/local/bin/dispmanx_vncserver -r 12月 16 17:42:33 raspberrypi systemd[1]: Starting VNC Server... 12月 16 17:42:33 raspberrypi systemd[1]: Started VNC Server. 12月 16 17:42:33 raspberrypi dispmanx_vncserver[700]: 16/12/2020 17:42:33 Listening for VNC connections on TCP port 5900 12月 16 17:42:33 raspberrypi dispmanx_vncserver[700]: 16/12/2020 17:42:33 Listening for VNC connections on TCP6 port 5900

注意:

  • HDMIの解像度はcec任せにせず,config.txtで,指定する事。
    • Displayが接続されていない場合,初期値の640x480になってしまう。
  • VNC通信の暗号化は,していません。(できるかも不明)
  • BasiliskIIを起動前でも接続できます。(コンソールが見えます)
  • 音は出ません。
  • マウスカーソルがズレる事があります。
    • 一旦,カーソルを画面の左上角に移動すれば,合わせられます。
  • 負荷になると思うので,不要ならサービスを止めましょう。


コメント(0) 
共通テーマ:趣味・カルチャー

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。