ラズパイで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+が余ってるし…
まぁ,やってみますか… が今回のお題。
で,結果
ちゃんと,みられました。
以下は,X無しのネタを探すのに苦労したので,自分向けの忘備録を残しておきます。
で,『続きはこちら…』はセットアップネタ,無駄に長々なので,先に感想などを。
- セットアップ
- 添付のREADMEを元にセットアップを進めて,うまく動かせました。
# 寄り道しすぎて,どツボったのは内緒。(最初っからマニュアル嫁) - ただ,256色切り替えでクラッシュする問題には難儀しました。
- 添付のREADMEを元にセットアップを進めて,うまく動かせました。
- MacOS 7.5 or 8
- 実験中に7.5.3と8.1を試したのですが,7.5.3の方が起動が早く,動作もキビキビしていました。
# 7.5.3では,アイコンパレードが見えないくらい早い! - 結局,新しいのを使いたかったので,8.1にしました。(アイコンパレードが見たかったし)
- 実験中に7.5.3と8.1を試したのですが,7.5.3の方が起動が早く,動作もキビキビしていました。
- Hello World… Hell o MacOS
- OSのインストールは,時間がかかりますが恙無く… しかし,ソフトを動作させる為,四苦八苦。
理由は単純,物理CDやFDのハンドリング,OSXとMacOSとの間でのやり取り方法。 特に,*.sitが開けない…とか,isoがマウントできない…とか。 - FDのハンドリングで苦労しましたが,After Darkは,無事起動できました。
- ゲームは?って事で,Marathonを入れてみました。 ちゃんと遊べます。
- "MacOS設定アシスタント" が動かない?!
2020年問題+αで完走できない orz 誕生日の設定だけは,したかったなぁ
- OSのインストールは,時間がかかりますが恙無く… しかし,ソフトを動作させる為,四苦八苦。
- 雑
- 昔集めた"便利ソフト"をCD-Rで保管していたのですが,高確率で読めなくなっていた orz
- FDも2DD(800kB)が読めず(泣
- 今更MacOSをゴリゴリ使うことは無いと思いますが,まぁ何かの為の準備でしょうか…
結構(無駄に)長いので,興味のある人限定で。
また,エミュレータ関連ネタは色々あるので,やるなら全て自己責任でお願いします。
# 真似たけど動かねぇ!!って苦情も無しの方向で(笑
目次(が必要なくらい長い…笑):
目指すところ(?)
先にも書きましたが,概ねこんな感じ…
- ラズパイをMacOS専用機にする。
- Pixel Desktopは入れない。
- ラズパイの電源を入れたら,MacOSまで起動するようにする。
- CD/FDと一緒に出てきた5-inch LCDを使ってみる。
- FlyingToasterを音付きで見る。(ぴぃーぴぃーぴっぴっぴ!)
- ついでに,手持ちのソフトを色々動かし,ノスタルジーにどっぷり浸かる。
- 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を使う事とします。
ご参考:
- The Official SheepShaver Home Page
- The Official Basilisk II Home Page
- Mini vMac - early Macintosh emulator
- E-Maculation: All About Macintosh Emulation [E-Maculation wiki]
→このサイト,一見の価値あり。 良い感じです。
材料
ざっくり,こんな感じ。 全部手持ちの部材。
- 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
はこんな感じ
- System Options
- S2 Audio →1 Headphones (5-inch LCDの場合)
- S3 Password → 要設定
- S4 Hostname → お好みで。
- S5 Boot/Auto Login →B2 Console Autologin
- Display Options
- Interface Options
- Performance Option
- P2 GPU Memory → 64→256 (変更の要不要不明)
- localisation Options
- L1 locale →ja_JP.UTF-8 UTF-8
- L2 Timezone →Asia Tokyo
- 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を構成出来たら有効にする事
- 音声出力が無い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