ラズパイでレトロゲームを動かす
ラズパイをレトロゲーム専用機にできると聞いたので環境を構築してみました。
Lakkaのインストール
エミュレータ専用のOSであるLakkaを公式サイトからダウンロードします。
インストール手順は、公式サイトのドキュメントに詳しく記載されているので一読ください。
構築環境
ここで使用する機器は、以下のとおりです。
- ラズパイ(Raspberry Pi 3 Model B+)
- マイクロSDカード(16GBを用意しました)
- HDMI対応モニタ
- HDMIケーブル
- USBジョイパッド(Logicool(Logitech)Gamepad F310)
- Windows 10端末(作業用)
- SDカードリーダー(作業用)
公式サイトのハードウェアサポートで使用する機器のサポート状況を確認ください。ロジクールのUSBジョイパッドF310は問題なく認識しました。
SDカードへのOSイメージの書き込み
ダウンロードした圧縮ファイルを展開して、OSのイメージファイル(Lakka 2.3.2 / 2020年2月現在)を取り出します。
SDカードへのイメージファイルの書き込みについては、過去の記事を参考にしてください。
書き込み手順は以下のとおりです。
- Windows 10端末(作業用)にSDカードを接続します。
- 使用済みのSDカードは、
diskpart
コマンドで構成情報を消去します。 - 「SDメモリカードフォーマッター」でSDカードをフォーマットします。
- 「balenaEtcher」でOSイメージファイルをSDカードに書き込みます。
書き込みが完了したSDカードをラズパイに挿入します。
Lakkaの起動と設定
HDMI対応モニタとUSBジョイパッドをラズパイに接続して電源を投入します。
GUIでの設定
Lakkaのメニューが起動したら、ジョイパッドを操作して設定を変更します。
言語設定
「Settings」 > 「User」 > 「Language」から言語設定を変更します。
- 言語を「日本語」に変更します。
サービス設定
「設定」 > 「Lakkaのサービス」からOSに関係するサービス設定を変更します。
- SSHを有効 : ON
- SAMBAを有効 : ON
無線設定
「設定」 > 「Wi-Fi」から無線ネットワークに接続します。
Lakkaを無線ネットワークに接続する際の注意点として、以下の点が挙げられます。
入力デバイスのキー設定
「設定」 > 「入力」から入力デバイスのキー設定を変更します。
- 入力のホットキーバインド
- メニュー切り替えのコンボ入力 : 使用するジョイパッドにあった設定に変更します。(デフォルト設定 L3 + R3)
- 入力ユーザーxのバインド : 使用するジョイパッドにあった設定に変更します。
「メニュー切り替えのコンボ入力」のデフォルト設定は、L3 + R3に設定されているので、使用するジョイパッドにあった設定に変更します。
SSH接続での設定変更
Lakkaのメニュー画面では設定できない項目を設定します。
ターミナルソフトから以下の設定でSSH接続します。
- ホスト名 : lakka.local
- ユーザー名 / パスワード : root / root
タイムゾーン設定
デフォルトのタイムゾーンは、協定世界時(UTC+0)に設定されているので、日本標準時(UTC+9)に変更します。
# echo "TIMEZONE=Asia/Tokyo" > /storage/.cache/timezone # reboot
再起動後、メニュー画面の時刻が日本標準時になったことを確認します。
ロムデータの転送
作業用のWindows端末からロムデータを転送します。
作業用端末のエクスプローラのアドレス欄に「\\lakka」と入力して共有フォルダにアクセスします。
ROMs共有フォルダにロムデータを保存します。機種ごとにフォルダ分けして保存しておくことも可能です。
設定ファイルのバックアップ
設定ファイルretroarch.cfg
のバックアップを作成しておきます。ここでは、retroarch.cfg.org
としてコピーを作成しています。
ゲームの起動と終了
ゲームの起動については、こちらに詳しく書かれています。また、ゲームプレイ中に「メニュー切り替えのコンボ入力」を呼び出せば、ゲームの終了やセーブなどをおこなえます。
SSH接続設定について
SSH接続時のパスワードをpasswd
コマンドで変更しようとすると、以下のメッセージが表示されて変更することができませんでした。
# passwd There is no working 'passwd'. The 'passwd' command changes passwords for user accounts. With LibreELEC it is not possible to change the system password SSH is included only as a last support resort. SSH is off by default. Most users never need SSH and need help using it so we need a default password. If you need to keep SSH always on then this is unsupported but can be secured with certificates. TIP: disable password authentication in ssh and use public key authentication.
LakkaのベースになっているLibreELECは、システムパーティションを読み取り専用としてマウントするので、パスワードを変更することはできないようです。
また、メッセージにもありますが、SSHサービスを常時有効にしておくことはサポート対象外となるので、必要な時だけサービスを有効にするのが正しい運用です。
ですが、それでは手間なので、こちらを参考にして、鍵認証を使用したSSH環境を構築しました。
鍵の生成と公開
Lakka上で鍵ペアを作成します。
公開鍵と秘密鍵を生成します。 # ssh-keygen -t rsa -b 2048 Generating public/private rsa key pair. Enter file in which to save the key (/storage/.ssh/id_rsa): [ENTER]入力 Enter passphrase (empty for no passphrase): [ENTER]入力(ここではパスフレーズを空にします。) Enter same passphrase again: [パスフレーズ]を再入力 Your identification has been saved in /storage/.ssh/id_rsa. Your public key has been saved in /storage/.ssh/id_rsa.pub. The key fingerprint is: SHA256:3PIF3ovmmZpaLdoEvH26534Lvhm2j8raE88bPgCZ1U8 root@Lakka The key's randomart image is: +---[RSA 2048]----+ | . | | . . E | | + .o | | .+. o o. | | o.S o o | | +o+ o . | | . ==@ . | | B.@=X. | | +oXO#*o. | +----[SHA256]-----+ 公開鍵を`authorized_keys`に追記します。 # cd /storage/.ssh # cat id_rsa.pub >> authorized_keys # chmod 600 authorized_keys
秘密鍵の受け渡し
ここでは、共有フォルダ経由で秘密鍵を作業用端末に受け渡します。
ロム共有フォルダに秘密鍵をコピーします。 # cp /storage/.ssh/id_rsa /storage/roms
作業用端末から共有フォルダ(\\lakka\ROMs)にアクセスして、秘密鍵ファイルを受け取ります。共有フォルダのid_rsa
秘密鍵ファイルは、忘れずに削除してください。
秘密鍵を使用したSSH接続
受け取った秘密鍵を使用して、SSH接続ができることをテストします。
SSH接続設定の変更
秘密鍵を使用したSSH接続に成功したら、鍵認証だけでログインできるようにシステム起動時のスクリプトを作成します。
/storage/.config/autostart.sh
ファイルを編集します。
# vi /storage/.config/autostart.sh #!/bin/bash ( SSHDCONF=/storage/.cache/services/sshd.conf [[ -e ${SSHDCONF} ]] && echo 'SSH_ARGS="-o PasswordAuthentication=no"' >> ${SSHDCONF} && systemctl restart sshd ) &
/storage/.config/autostart.sh
ファイルに実行権限を付与して、システムを再起動します。
実行権限を付与します。 # chmod +x /storage/.config/autostart.sh 再起動して鍵認証のみで接続できることを確認します。 # reboot
秘密鍵を紛失すると、SSH接続できなくなるので注意してください。
/storage/.config/autostart.sh
ファイルの作成については、こちらを参考にしました。