ど~もeagle0wlです(再)

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

【2019年8月版】Raspberry Pi 3B に RetroPie 4.5.1 を導入する その2 初期設定

当ブログのRetroPieのインストール・設定手順は、RetroPie 4.0ベースで記載したものに追記で対応している。しかし、バージョンアップが重なり、追記での対応では限界が来ていると感じているため、手順の簡略化やSEO対策(?)も兼ねて、一から書き直すことにした。

古い記事はこちら
Raspberry Pi 2B に RetroPie 4.0 を導入する その2 初期設定 - ど~もeagle0wlです(再)

RetroPie 4.5 をインストールした人向けの注意書き

RetroPie 4.5 (現行バージョンである4.5.1ではない)ファームウェアの不具合が発覚しており、当面の解決策としてはダウングレードが推奨されている。とはいえ、不具合と言っても「コンポジット出力に問題がある」ぐらいで、影響を受けるのは初代ラズパイしかない(他は全部HDMI出力)。RetroPie-Setup から Update System Packages を選ぶだけでダウングレードできるとのこと(筆者は試していない)。
retropie.org.uk

Raspberry Piの選定と入手

本稿では『Raspberry Pi』全般を指す場合は「ラズパイ」と表記する。型番まで含む『Raspberry Pi 2 Model B』『Raspberry Pi 3 Model B』『Raspberry Pi 4 Model B』は、それぞれRPi2B、RPi3B、RPi4Bと略す。

2019年7月には、最新モデルである『Raspberry Pi 4 Model B』が発売された。現時点では技適を通っておらず、Retro Pie 4.5.1リリースのアナウンスでも、(特別な対応を行わなくても)いくつかのエミュレータは動いているが、サポートできるようになるまでは何もリリースしたくない、とのこと。

ということで、本稿では一番入手しやすいRPi3Bで動作確認を行う。以前のエントリではRPi2Bで動作確認を行っていたが、時代が進んだ結果、上位機種のRPi3Bが普及している。古い型番は叩き売りの状態なので、これから書く改定記事では『Raspberry Pi 3 Model B Ver1.2』で動作確認を行う(扱うバイナリは同じなので、RPi2Bでも手順自体はほぼ同じ)。

f:id:eagle0wl:20190808013934p:plain
塩漬けになっているRaspberry Pi Zero v1.3
小型モデルの『Raspberry Pi Zero v1.3』、Wi-Fi/Bluetooth/BLE内臓の『Raspberry Pi Zero W』、ピンヘッダ実装済みの『Raspberry Pi Zero WH』などもある。以前よりは入手しやすくなったが、小型基板であるZeroシリーズに関して言えば、Amazonでは定価以上、あるいはスターターキットなどと称して様々な付属品との抱き合わせで売られているケースが多いので注意してほしい。

スペック的に見ても、RPi2B、RPi3Bはクアッドコアなのに対し、Zeroシリーズはシングルコアである。さらに小型化のしわよせとして、ケーブルの形状が取り回しにくいminiHDMIになっており、USBケーブルも(耐久性に疑問がある)microBになり、ポート数も4つから2つに減っている。実際の運用を考えると、工夫しないと「基板自体は小さいが、基板の外が大きくなる」ので、ここでは取り扱わないことにしたい。ゲーム機のガワだけを流用して、中身はRPi0というオリジナルの携帯型ゲーム機を作るのは夢があっていいとは思うのだが…。

Raspberry Pi本体

Raspberry Pi 3 Model B (推奨)
Raspberry Pi 2 Model B (次点)

まずは本体とケースを用意する。Amazonへのアフィリンクを張りたいところだが、Amazon販売でもなく正規代理店でもない、第三の業者出品があまりにも混沌としているのでやめることにした。より信頼できる入手先として、ヨドバシカメラなどからの購入も検討したい。スイッチサイエンスも紹介したいんですが、関連商品や抱合せ販売が多すぎて、正直わけわかんないですね…。

グレードが下るRPi2Bでもインストール手順は同じ。

microSDカード

Amazonマーケットプレイス詐欺に注意。レビューの星の数ではなく、Amazonが販売、発送しているものかチェックすること

後々のことを考えると最低でも16GBは欲しいが、現状のRaspberry Piでは実質32GBまでしか認識できない。よって、価格が十分下がった32GBで十分だが、プレステとかのCD-ROMメディア機に手を出さないのであれば、フルコンプリートでも16GBを使い切るのはなかなか難しいように思う。別用途で複数台稼働している手前、いろんなブランドのmicroSDカードを使っているが、SanDisk/TOSHIBA/Transcendで今のところ不具合は起こっていない。

電源(USBアダプタ)

電源は2A以上出るものを使ったほうが良い。スマホ付属の電源なら1A、最近のものなら2Aは出るはず。最低限、ACアダプタの表示に「出力/OUTPUT/5V=2A」と記載されているものを使いたい。

RPi3Bであれば「DC 5V 3A」のような3A以上の電源があれば安泰だが、入手が難しい。スイッチサイエンスといった信頼のおけるショップから買うのが一番のような気がする。高いけど。

RPi2Bより高性能なRPi3Bは、そのぶん消費電力が増えている。RPi4Bでは更に高性能になっているが、消費電力はさらに増えているようだ。電力不足だとファイルシステムが破壊されることも起こるので注意したい。RetroPie 4.2から、電力不足の時には画面右上に稲妻のアイコンが表示されるようになっている。

筆者は上記リンクの「Anker PowerPort 6」や、秋月電子で買った「スイッチングACアダプター5V2A AD-B50P200」、あとは増える一方のスマホ付属のUSBアダプタを併用している。

f:id:eagle0wl:20190808011507p:plain
スイッチングACアダプター5V2A AD-B50P200

無線LAN子機(RPi3Bでは不要)

https://www.amazon.co.jp/exec/obidos/ASIN/B00ESA34GA/(在庫切れ)
PLANEX 無線LAN子機 (USBアダプター型) GW-USNANO2A

RPi3BであればWi-Fi子機を内蔵しているので買う必要はない。RPi2BであればWi-Fi子機を内蔵していないため、Wi-Fi接続で取り回したいのであれば必要(当然だが有線LANで運用するなら不要)。

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

マウス、キーボード、当然ながらゲームパッドが必要。ゲームパッドは、最低でもスーファミ以上のボタン数が欲しい(LRボタンがないと、ランチャーの操作に支障が出る)。

f:id:eagle0wl:20190808011355p:plain
黒いスーファミ風コントローラ
マウスとキーボードは筆者が実際に使っている(いた)ものを張っている。ゲームパッドは販売終了していたので、各自自分に合いそうなものを探してください。

RetroPieをインストールする

retropie.org.uk
上記リンクから、retropie-4.5.1-rpi2_rpi3.img.gz といったファイル名のイメージをダウンロードする。圧縮ファイルなので、7-zipなどでイメージファイルである retropie-4.5.1-rpi2_rpi3.img を取り出す。

microSDカードにRetroPieのイメージを書き込む

※ドライブレターはよく確認すること。SDカード以外にUSBメモリなどが刺さっている場合は抜いたほうがいい。

microSDはSDFormatterでフォーマットする。
www.sdcard.org

続いて、Win32 Disk Imagerでイメージを書き込む。
sourceforge.net
sourceforgeは広告が鬱陶しいので注意)

f:id:eagle0wl:20190808014321p:plain
Win32 Disk Imager でイメージを焼く(本当はWriteボタンが選択可能になっている)
イメージを選択して、microSDと同じドライブレターを指していることをよーく確認してWriteを選ぶ。しばらく待つと書き込みが終わるが、イメージが書き込まれたmicroSDが再度認識され「このデバイスはフォーマットされていません」といったメッセージが出るはずなので無視する。

イメージの書き込みは終了したので、microSDをRPi3Bに挿し込む。

初回起動

電源ケーブルの差し込みは最後に行う。まずHDMIケーブル、ゲームパッド、キーボード、マウスを挿す。すべての入力デバイスの差し込みが終わってから、電源ケーブルを差し込んで電源を入れる。

まずはゲームパッドの設定を求められるので、本家Wikiを参考にしながら設定を行う。
github.com

f:id:eagle0wl:20190808014558p:plain
スクショは First Installation から引用
最初に WELCOME と表示されるはずなので、メインで使用したいゲームパッドの適当なボタンを押さえ続けると、ゲームパッドアサインの変更画面に遷移する。

f:id:eagle0wl:20190808014643p:plain
スクショはFirst Installationから引用
画面に表示されるボタン一覧を見ながら、割り当てたいボタンを順に押していけばよい。

ボタンを割り当てたくない場合は、適当なボタンを長押しすることでNOT DEFINED(割り当てなし)にできる。アナログスティックがなかったり、ボタン数が少ないゲームパッドでは必須の操作となる。

割り当ての最後にある HOTKEY も NOT DEFINED(割り当てなし)にして良い。スルーすると、SELECTボタンをデフォルトにするかどうか聞かれるので、YESを選択しておく。

HOTKEY自体は意味がないが、HOTKEYと何か別のボタンを押すことで特別な操作になる。ここではSELECTボタンをHOTKEYとしているので、

SELECT(HOTKEY)+START エミュ終了
SELECT(HOTKEY)+Lボタン(L Shoulder) ステートロード
SELECT(HOTKEY)+Rボタン(R Shoulder) ステートセーブ
SELECT(HOTKEY)+左ボタン ステート番号の加算
SELECT(HOTKEY)+右ボタン ステート番号の減算
SELECT(HOTKEY)+Bボタン リセット

となる。少なくとも「SELECT+STARTでエミュ終了」だけは覚えたほうがいい。

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

f:id:eagle0wl:20190808020530p:plain
なぜかAmigaのアプリはプリインストールされているみたいだ

RetroPieメニューからの設定

Wi-Fi (有線LANを使うなら読み飛ばしてよい)

メインメニューのRetroPieから WIFI を選択。

f:id:eagle0wl:20190808015018p:plain
RetroPieメニューからWi-Fiを設定

Wi-Fi

RPi3Bに標準搭載されているWi-Fiはデフォルトではオフになっている。国によって使用できるWi-Fiの周波数帯が違うからであり「まずはraspi-config の menu 4 (Localisation Options)からお前の国を選べ」(意訳)と出るので、おとなしく「Yes」を選ぶと raspi-config に遷移する。

※ raspi-config でのメニュー操作はゲームパッドでも可能だが、操作方法が紛らわしいので大人しくキーボードを使ったほうがよい

(RetroPieメニューの「RASPI-CONFIG」からでも選択可能)
4 Localisation Options
 I4 Change Wi-Fi Country
  国の一覧が出るので、キーボードのJを押してから「JP Japan」を選択

Finishを選ぶと、Wi-Fiネットワークの選択画面に遷移するので、

(RetroPieメニューの「WIFI」からでも選択可能)
1 Connect to WiFi network

を選択すると、SSID一覧が表示される。該当するものを選んでパスワードを入力するだけ。成功するとIPアドレスが降ってくるので、画面上部のCurrent IPの値を控えておく(※すぐ後のSSHログインで使用する)。

EXIT を選択(左右キーを押すと選べる)して EmulationStation に戻る。

これでRPi3BはLAN接続(およびインターネット接続)ができる環境になった。

SSHを有効にする

本記事では、作業効率の都合上リモートでカスタマイズを行う。

つまり、RetroPieと同じネットワークにある端末(本記事ではWindows 10)から、RetroPieのカスタマイズをチクチクと実施するので、リモート操作を受け付ける設定にしたい。RASPBIAN JESSIE 2016-11-25 から SSH が初期設定でオフになったので、RetroPie 4.2以降では SSH を有効にする操作が必要になる。

RetroPieメニューの RASPI-CONFIG からSSHを有効にする。

RASPI-CONFIG
 5 Interfacing Options
  P2 SSH
   YES

これでRetroPieのシェルを取れるようになったので、カスタマイズを開始できる。FINISHを選んでRetroPieのメニューに戻す。

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

SSHでラズパイにログインして、リモートシェルからチクチクと設定を行う。

ここからはTeraTermを使う。控えておいたIPアドレスを入力し、IDとパスワードを入力してシェルに入る。

IPアドレスはRetroPieメニューの SHOW IP から確認できる
Raspberry Pi のデフォルトのIDとパスワードは pi / raspberry

Linuxの基本的なシェル操作を知っていると理解が容易になるが、手順は逐一記すようにする。

f:id:eagle0wl:20190807234945p:plain
TeraTermでラズパイにログイン
f:id:eagle0wl:20190807235017p:plain
セキュリティ警告が出るが無視して良い
f:id:eagle0wl:20190807235040p:plain
ユーザー名は pi 、パスフレーズは raspberry
f:id:eagle0wl:20190807235145p:plain
ログインに成功したらこの画面が出る

まずはパッケージを最新版にする(省略可能)
$ sudo apt-get update
$ sudo apt-get upgrade

この作業は省略可能(最新版でないと気になる人向け)。この操作は時間がかかることもある(数分程度)。ファームウェアのアップデートは行われないため、RetroPie 4.5 と同じ問題は起こらない。

途中で
Do you want to continue? [Y/n]
などと聞かれた場合は、キーボードから y [ENTER] を押して続行する。

$ sudo reboot

再起動

アップデートが行われた場合、再起動中のEmulationStationのロゴが表示された直後にID/PASSを聞かれることがある(RetroPie 4.2では確認できず、RetroPie 4.4で確認できた事象、RetroPie 4.5.1ではアップデートが走らなかったので未確認)。

Raspbian GNU/Linux 9 retropie ttyl
retropie login:
password:

ひとまず pi [ENTER] raspberry [ENTER] を入力してしのぐ。

アップデートを行うと起動するたびにログインを求められるようである。これは鬱陶しいので自動化する。

RetroPieメニューの RASPI-CONFIG から、
3 Boot Options
 B1 Desktop/CLI
  B2 Console Autologin

3 Boot Options
 B1 Desktop/CLI
  B4 Desktop Autologin (たぶん不要だと思う…)
  
の2つを選択してから Finish を選んで抜ける。これで良い。

再起動

raspi-config からの操作

f:id:eagle0wl:20190808020211p:plain
RetroPieメニューからraspi-configを設定
RetroPieメニューの RASPI-CONFIG から設定する項目を記す。リモートから作業している場合は、

$ sudo raspi-config

と入力すれば同じ手順で行える。


・空き領域の確保
microSDファイルシステムを操作して、空き領域を本来のサイズに広げる。

RetroPieメニューの RASPI-CONFIG から、
7 Advanced Options
 A1 Expand Filesystem を選択

再起動


・言語/タイムゾーン/キーボードの設定
まずは言語設定。

RetroPieメニューの RASPI-CONFIG から、
4 Localisation Options を選択
 I1 Change Locale
  en_GB.UTF-8 UTF-8 はチェックが入っているので、
  ja_JP.UTF-8 UTF-8 にもチェックを入れる
   タブキーを押すと OK にフォーカスが合う

デフォルトの言語設定を選ぶよう言われるので、

None
C.UTF-8
en_GB.UTF-8
ja_JP.UTF-8

これの中から「en_GB.UTF-8」を選ぶ(ja_JP.UTF-8を選びたくなるが我慢する)。

デフォルトの言語設定を日本語(ja_JP.UTF-8)にした場合、TeraTermなどのリモートでは正しく日本語が表示されるが、RetroPieの実機(HDMIケーブルから出力される映像)では日本語が化けてしまうので不都合である。

f:id:eagle0wl:20190808213723p:plain
Tera Term上では日本語が表示されているが…
f:id:eagle0wl:20190808213859p:plain
HDMIから出力される映像では文字化けして読めない

言語設定を日本語にしたところで、 EmulationStation が全部日本語化されるわけではない。大本のOSであるRaspbianの部分しか変わらないので、この設定によるメリットはあまり感じられないようにも思える。EmulationStation で日本語タイトルを表示させる方法は「日本語フォントのインストール」で後述する。

続いてタイムゾーン設定。

4 Localisation Options を選択
 I2 Change Timezone
  Asia
   Tokyo を選択

Raspberry PiはRTC(リアルタイムクロック)を内蔵しておらず、電源を切ると時計も停止してしまう。オフラインで運用しようとすると、Raspberry Piを起動するたびに現在時刻を再設定する必要があるので、全く当てにならなくなる。ただし、オンラインであるならば、NTP(インターネット経由)で現在時刻を取ってくるので、この問題はカバーできる。

最後にキーボード設定。

4 Localisation Options を選択
 I3 Change Keyboard Layout
  ※一般的な日本語キーボードの場合
  Generic 105-key (Intel) PC
   Other
    Japanese
     Japanese
      default for the keyboard layout
       No compose key を選択

※現在の主流は109キーボードだが、設定がないので105キーで代用している
※筆者はRPi2B→RPi3Bに合わせて、104キーボード(USキーボード)に変更している(ただの趣味)


オーバークロック
RPi3Bでは選択不可。

RetroPie-Setup Scriptからの操作

f:id:eagle0wl:20190808214407p:plain
RetroPieメニューからの RETROPIE SETUP から設定する項目を記す。

リモートから作業している場合は、

$ sudo ~/RetroPie-Setup/retropie_setup.sh

と入力すれば同じ手順で行える。


・Samba
Windows 10からRetroPieの共有フォルダにアクセスできるようになると、このあと非常に便利になる。ぜひ実行したい。

RetroPieメニューの RETROPIE SETUP から、
C Configuration / tools
 830 samba - Configure Samba ROM Shares
  1 Install RetroPie Samba shares

同じネットワークに所属しているWindowsマシンから、アドレス欄に「\\RETROPIE」と入力するとラズパイの所定フォルダにアクセスできる。

f:id:eagle0wl:20190808214652p:plain
screenshotフォルダは後で追加する


・USB ROM Service
これを有効にすると、ROMイメージを入れたUSBメモリを挿すと自動で取り込まれるようになる。筆者は使っていない。

C Configuration / tools を選択
 839 usbromservice - USB ROM Service
  1 Enable USB ROM Service scripts

※コメント欄からの情報提供、ファイル名に日本語を含めると文字化けを起こすそうである。原因はUSBメモリFAT32でフォーマットしているからだと思う。大人しくSFTPかSamba経由で転送しましょう。

シェルからの操作

ここからはTeraTermから操作する。

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

$ sudo apt-get install fonts-droid-fallback

Do you want to continue? [Y/n]
と聞かれたらキーボードの Y を押す

f:id:eagle0wl:20190808015507p:plain
「キラキラスターナイトDX」が文字化けなく表示されている
これで日本語も表示されるようになるが、EmulationStationは半角スペースを区切りとして折り返すチープなアルゴリズムであるため、日本語の折り返しが考慮されていない。これはソースを修正する必要がある。

※筆者は本件についてプログラムの修正を実施し Pull Request を行ったが、日本語フォントの反映を確認できる人が他にいない、Windows版 EmulationStation で動作しなくなる(?)などのやりとりが数ヶ月続いた末、Pull Request は反映されることなくクローズしてしまった…。


スクリーンショット機能(省略可能)
エミュレータによってはスクリーンショット機能を備えているものもあるが、RetroPie自体にインストールするのが手っ取り早いので、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

テキストエディタnanoを起動してシェルスクリプトを書く。

$ 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/ に作成される。
スクショを取りたければ、シェルから

$ ~/screenshot.sh

と入力すればよい。非常に楽である(当然だが動画撮影はサポートしていない)。

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

$ sudo nano /etc/samba/smb.conf

Sambaの設定ファイルである /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

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

f:id:eagle0wl:20190808015718p:plain
\\RETROPIE で閲覧できる共有フォルダ
この変更は即座に反映されるので、Sambaを再起動する必要はない。


IPアドレスを固定する(必要な場合)
ラズパイをLANに接続している場合、有線無線に関わらずIPアドレスは(DHCPによって)動的に決まる。つまり、再起動などのタイミングでIPアドレスが変わることがある。

RetroPieのメニューから [SHOW IP] を選択すれば現在割り振られているIPアドレスを確認できるが、リモートでカスタマイズを継続していきたい場合、IPアドレスが変わる(場合がある)のは少し面倒である。それならば、固定IPにしてしまえば良い。

※注意:ここから先は純粋なネットワーク設定(dhcpcdの設定)の話になるので、わからない場合は無理に変更する必要はない。この設定に興味のない方、このエントリはここで終わりです。IPアドレスを知りたければ、都度 [SHOW IP] で確認すればよい。

f:id:eagle0wl:20190808215410p:plain
SHOW IPはここにある

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

$ 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
$

$ sudo cat /etc/resolv.conf
# Generated by resolvconf
domain (ここにドメイン
nameserver (ここにネームサーバのIPv4アドレス)
$

ドメインとネームサーバのIPv4アドレスが記載されている。ここまで来て意味が良くわからないという人は迂闊に変更しないほうが良いと思う。この操作で得られるメリットは「IPアドレス確認の手間が減るだけ」なので、自信がなければ変更はしないほうがいい。

以下はRPi3B+RetroPie4.5.1で実際に試した手順。

$ sudo nano /etc/dhcpcd.conf
# A sample configuration for dhcpcd.
# See dhcpcd.conf(5) for details.

# Allow users of this group to interact with dhcpcd via the control socket.
#controlgroup wheel

# Inform the DHCP server of our hostname for DDNS.
hostname

# Use the hardware address of the interface for the Client ID.
clientid
# or
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
# Some non-RFC compliant DHCP servers do not reply with this set.
# In this case, comment out duid and enable clientid above.
#duid

# Persist interface configuration when dhcpcd exits.
persistent

# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit

# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
# Most distributions have NTP support.
option ntp_servers
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu

# A ServerID is required by RFC2131.
require dhcp_server_identifier

# Generate Stable Private IPv6 Addresses instead of hardware based ones
slaac private

# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

# It is possible to fall back to a static IP if DHCP fails:
# define static profile
#profile static_eth0
#static ip_address=192.168.1.23/24
#static routers=192.168.1.1
#static domain_name_servers=192.168.1.1

# fallback to static profile on eth0
#interface eth0
#fallback static_eth0

設定情報が長々と続いているが、ファイルの末尾に以下を追加すればよい。ネットワーク設定は各自で異なるので注意。自信がないのであれば無理に変える必要はありません。

interface wlan0
static ip_address=192.168.1.123/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8

ここでは、有線接続ではなくWi-Fi接続(interface wlan0)を利用して、ルーター(static routers)兼DNS(static domain_name_servers)のIPアドレスが192.168.1.1として、RetroPieの固定IPアドレス(static ip_address)を192.168.1.123とする一例を示している(domain_name_serversのサブに指定している8.8.8.8はGoogleが提供するパブリックDNS)。


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

$ sudo reboot