ど~もeagle0wlです(再)

140文字では収まらないネタを記録するブログ

Raspberry Pi 2B に RetroPie 4.0 を導入する その2 初期設定

2017/05/24追記 RetroPie 4.2 で動作確認を行いました。SSHの項目のみ追記があります。

ここからRetroPieのインストール方法を記す。RetroPieの現在のバージョンは4.0だが、それ以前と比較すると設定項目が結構変わっている。本稿ではver4.0(4.2対応済み)をベースにして説明する。

Raspberry Piの入手

今回使用したハードウェアを以下に記す。

Raspberry Pi 2 Model B (2015年2月発売品)

Raspberry Pi 2 Model B (2015年2月発売品)

今回手元にあったのがRaspberry Pi 2 Model B(以下RPi2Bと略す)だったが、RPi3Bでも問題ない。

周辺機器の調達

microSD マーケットプレイス詐欺に注意! 発送元をよく確認しましょう。ここではAmazon.co.jp限定版をリンクする。

後々のことを考えると16GBは欲しい。32GBがあればそれに越したことは無いが、プレステとかのCD-ROMメディア機に手を出さないのであれば、フルコンプリートでも経験上16GBを使い切るのはなかなか難しいように思う。別用途で複数台稼働している手前いろんなブランドを使っているが、SanDisk/TOSHIBA/Transcendで今のところ不具合は起こっていない。

電源

電源は2Aが出るものを使ったほうが良い。スマホ付属の電源は大抵1A、iPadであれば2Aのはず。電力不足だとファイルシステムが破壊されることがあるようだ。RetroPie 4.2 から、電力不足の時には画面右上に稲妻のアイコンが表示されるようになっている。

秋月電子で買った2A出るACアダプタは手軽なので1個は持ってると便利。
f:id:eagle0wl:20171029025041j:plain

無線LAN子機

RPi3BであればWi-Fi子機を内蔵しているので不要。有線LANを使う場合でも不要。

ゲーム操作に必要なデバイス

他、マウス、キーボード、当然ながらゲームパッドが必要。ゲームパッドのボタン数は、最低でもスーファミ以上欲しい(LRボタンがないときつい)。安物で構わない。

RetroPieの入手

ここから retropie-4.2-rpi2_rpi3.img.gz といったファイル名のイメージをダウンロードする。

microSDSDFormatterでフォーマットする。win32 Disk Imagerでイメージを焼く。空き領域が未割当になるが後で広げる。HDMIケーブル、ゲームパッドを挿してから電源ケーブルを挿して電源を入れる。

ゲームパッドの設定

まずゲームパッドの設定を求められるので、こちらを参考に設定を行う。
https://github.com/retropie/retropie-setup/wiki/First-InstallationFirst Installation · RetroPie/RetroPie-Setup Wiki · GitHub

設定後、RetroPieのメニューが表示される。

RetroPieメニューからの設定

Wi-Fi

有線LANを使うのであれば読み飛ばして良い。

f:id:eagle0wl:20160830222450p:plain
メインメニューのRetroPieからWIFI を選択。 1 Connect to WiFi network を選択するとSSID一覧が表示されるので該当するものを選んで、パスワードを入力するだけ。成功するとIPアドレスが降ってくるので控えておく。以下、RetroPieからインターネットに接続できる環境であることを前提として説明する。

SSHを有効にする(2017/05/24 追記)

RASPBIAN JESSIE 2016-11-25 から SSH が初期設定でオフになったので、RetroPie 4.2 からはこの作業を行う必要がある。RetroPieメニューのRASPI-CONFIG からSSHを有効にする。

RASPI-CONFIG
→ 5 Interfacing Options
→ P2 SSH
→ はい

f:id:eagle0wl:20170524230918p:plain
f:id:eagle0wl:20170524230931p:plain
f:id:eagle0wl:20170524230941p:plain
f:id:eagle0wl:20170524231009p:plain
選択肢の日本語[はい][いいえ]が文字化けしているが左の[はい]を選ぶ。

SSHでログインしてからの操作

ここからはSSHでログイン(pi/raspberry)して設定を行う。ここではTeraTermを使う。
f:id:eagle0wl:20171029024414p:plain
f:id:eagle0wl:20171029024422p:plain
f:id:eagle0wl:20171029024431p:plain
ローカルアドレスなので特に隠すものでもないのですが…。

まずは最新版にする

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install rpi-update
$ sudo rpi-update
$ sudo reboot

再起動する。

$ sudo ~/RetroPie-Setup/retropie_setup.sh

U Update all installed packages を選択
 S Update RetroPie-Setup script を選択

$ sudo reboot

再起動する。

raspi-configからの操作

$ sudo raspi-config
空き領域の確保

1 Expand Filesystem を選択
再起動

言語/タイムゾーン/キーボード

5 Internationalisation Options を選択
I1 Change Locale
 Ja_JP.UTF-8 を追加
I2 Change Timezone
 Asia -> Tokyo を選択
I3 Change Keyboard Layout
 Generic 105-key (Intel) PC -> Other -> Japanese -> Japanese -> The default for the keyboard layout -> No compose key を選択

RetroPie-Setup Scriptからの操作

$ sudo ~/RetroPie-Setup/retropie_setup.sh

C Configuration / tools を選択

キーボードにゲームパッドのボタンを割り当てる

817 retroarchinput - Configure input devices for RetroArch を選択
 1 Configure keyboard for use with RetroArch

必要だと思うならどうぞ。

Samba

821 samba - Configure Samba ROM Shares を選択
 1 Install RetroPie Samba shares を選択
共有フォルダにアクセスできるようになる

エクスプローラに \\[IPアドレス] を入力すると見えるようになる。
f:id:eagle0wl:20160830223136p:plain
※画像に見えるscreenshotフォルダは後で追加する

USB ROM Service

これを有効にすると、ROMイメージを入れたUSBメモリを挿すと自動で取り込まれるようになる。
※コメント欄からの情報提供、ファイル名に日本語を含めると文字化けを起こすそうである。この機能は使わず、SFTPかSamba経由で転送するのが良いと思う。

827 usbromservice を選択
 1 Enable USB ROM Service

オーバークロック

個人的には推奨しない。旧バージョンでは4段階ぐらいから選択できたはずだが、ver4.0あたりから2種類に減っていた。

シェルからの操作

RetroPie-Setup Scriptを抜けてシェルに戻る。

日本語フォント

EmulationStationでは、/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttfが決め打ちされている(=他のフォントを想定していない)が、フォントのインストールは手動で行う。

$ sudo apt-get install fonts-droid

これで日本語も表示されるようになるが、EmulationStationは半角スペースを区切りとして折り返すチープなアルゴリズムであるため、日本語の折り返しが考慮されていない。これはソースを修正する必要がある。

スクリーンショット機能

エミュレータにはスクリーンショット機能を備えているものもあるが、EmulationStation自体には無いようなので、raspi2pngを導入する。下記のサイトを参考にした。

RaspberryPiでスクリーンショットを撮る - Qiita

$ cd ~
$ mkdir Dev
$ cd Dev
$ git clone https://github.com/AndrewFromMelbourne/raspi2png
$ cd raspi2png
$ sudo make

シェルから

$ ~/Dev/raspi2png/raspi2png -p hoge.png

とすると、HDMIから出力されている現在の画面がキャプチャされ、hoge.pngに出力される。

スクリーンショットを一括保存するフォルダを作る。このフォルダはSamba経由で取れるようにしたいので、~/RetroPie/ 以下に作る。

$ mkdir ~/RetroPie/screenshot

シェルスクリプトを書く。

$ cd ~
$ nano screenshot.sh

screenshot.shに以下のシェルスクリプトを記述して保存する。

#!/bin/sh
/home/pi/Dev/raspi2png/raspi2png -p /home/pi/RetroPie/screenshot/Screenshot_$(date +%Y-%m-%d_%H%M%S).png

※nanoは、Ctrl+Oで保存、Ctrl+Xで終了

シェルスクリプトに実行権限を付与する。

$ chmod +x screenshot.sh

これで、

$ ~/screenshot.sh

とするだけでHDMIから出力されている画面をキャプチャして、 /home/pi/RetroPie/screenshot/ にスクリーンショットが出力される。

あとはこのフォルダをSambaで共有できるようにする。

$ sudo nano /etc/samba/smb.conf

/etc/samba/smb.conf を開くと、ファイル末尾に共有フォルダの設定が見えるので、これに倣って追記する。

(略)
[roms]
comment = roms
path = "/home/pi/RetroPie/roms"
writeable = yes
guest ok = yes
create mask = 0644
directory mask = 0755
force user = pi
[bios]
comment = bios
path = "/home/pi/RetroPie/BIOS"
writeable = yes
guest ok = yes
create mask = 0644
directory mask = 0755
force user = pi
[configs]
comment = configs
path = "/opt/retropie/configs"
writeable = yes
guest ok = yes
create mask = 0644
directory mask = 0755
force user = pi
[bios]
comment = bios
path = "/home/pi/RetroPie/BIOS"
writeable = yes
guest ok = yes
create mask = 0644
directory mask = 0755
force user = pi
[configs]
comment = configs
path = "/opt/retropie/configs"
writeable = yes
guest ok = yes
create mask = 0644
directory mask = 0755
force user = pi
[splashscreens]
comment = splashscreens
path = "/home/pi/RetroPie/splashscreens"
writeable = yes
guest ok = yes
create mask = 0644
directory mask = 0755
force user = pi
[screenshot]
comment = screenshot
path = "/home/pi/RetroPie/screenshot"
writeable = yes
guest ok = yes
create mask = 0644
directory mask = 0755
force user = pi

※末尾の赤文字が追記した設定

この変更は即座に反映されるので、Sambaを再起動する必要はない。

IPアドレスを固定する

最初のエントリでRetroPieをWi-Fi接続にしているが、有線無線に関わらずIPアドレスDHCP任せである。再起動などでIPアドレスが変わってしまった場合、RetroPieのメニューから[SHOW IP]を選択すると表示される。

f:id:eagle0wl:20160901001930p:plain
f:id:eagle0wl:20160901001939p:plain

それも面倒であれば、固定IPにしてしまえば良い。

すでにネットワーク設定自体は整っているはずだが、設定を確認する。有線LANであればこのコマンドで確認する必要はない。Wi-Fi接続の設定を行なった場合はSSIDとパスワードが記述されていることがわかる。

pi@retropie:~ $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
# RETROPIE CONFIG START
network={
        ssid="(ここにSSID"
        psk="(ここに平文のパスワード)"
}
# RETROPIE CONFIG END
pi@retropie:~ $ 
pi@retropie:~ $ sudo cat /etc/resolv.conf
# Generated by resolvconf
domain (ここにドメイン
nameserver (ここにネームサーバのIPv4アドレス)
pi@retropie:~ $

ドメインとネームサーバのIPv4アドレスが記載されている。ここまで来て意味が良くわからないという人は迂闊に変更しないほうが良いと思う。自信がなければ次の操作は行わず読み飛ばして欲しい。

$ sudo nano /etc/network/interfaces

無線LANを使っているので、有線の場合はiface eth0 inet manualの次の行から追記・変更してほしい。また、IPアドレスは自分の環境に置き換えて欲しい。

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0

#iface wlan0 inet manual
iface wlan0 inet static
address 192.168.1.123
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameserver 192.168.1.1

    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

再起動して、固定できているか確認する。

$ sudo reboot

次のエントリでは、実際にROMイメージを配置して動作させてみる。

eagle0wl.hatenadiary.jp