この記事における「既知の問題」の経緯
eagle0wl.hatenadiary.jp
この記事のコメント欄にて、「し」さんより、
eagle0wlさんのバイナリを直接しましたが、EmulationStationのSELECTメニューからシステムの終了、再起動などができなくなります。何を選択してもEmulationStationが終了してコンソールに戻るだけという処理になってしまいます。
とのコメントをいただく。確かにこのコメントのような不具合が出ていることを確認した。いろいろと調べているうちに「og」さんからコメントをいただいた。
eagle0wl.hatenadiary.jp
eagle0wlさんのEmulationStationを使用させて頂いている者です。
自分も当初同様な現象が発生していました。
調べたところ、元々の/usr/bin配下にあるemulationstationはバイナリではなくシェルスクリプトでした。
そのスクリプトから”/opt/retropie/supplementary/emulationstation/emulationstation.sh"が呼び出され、さらに直下のemulationstation(バイナリ)が呼ばれているようでした。
なので”/opt/retropie/supplementary/emulationstation/"ディレクトリにコンパイルしたemulationstationをコピーしたところ、問題なく動作しているようです。
見当違いなことを言っているようでしたらすみません。
確かに/usr/bin/emulationstationはバイナリではなくシェルスクリプトだった。これは恥ずかしい…。コメントの通り、シェルスクリプトを読んでいくと、emulationstationの実体は/opt/retropie/supplementary/emulationstation/emulationstationにあった。なぜこれまで気付かなかったのだろうか…。この通りに再配置すると、不具合は解消されているように見える。
修正方法
ということで、すでに掲げているエントリでは記事の修正を行ったが、ここでも改めて記載することにする。
すでにこのブログを見てEmulationStationのバイナリを差し替えている場合
まずは本記事で差し替えているEmulationStationを、オリジナルのバイナリ(ではなくスクリプト)に戻して原状復帰を行う。EmulationStationに手を入れていない方はこの項目は飛ばして良い。
pi@retropie:~ $ ls -l /usr/bin/emu* -rwxr-xr-x 1 root root 4422776 1月 29 22:36 /usr/bin/emulationstation -rwxr-xr-x 1 root root 1067 10月 22 00:00 /usr/bin/emulationstation.original pi@retropie:~ $
ここでは、オリジナルのEmulationStation(シェルスクリプト)は/usr/bin/emulationstation.original にあるものとする。
4MB以上あるemulationstationはバイナリデータで、1000B程度のemulationstationはスクリプトである。このスクリプトに戻す。
pi@retropie:~ $ sudo mv /usr/bin/emulationstation /usr/bin/emulationstation.backup pi@retropie:~ $ sudo mv /usr/bin/emulationstation.original /usr/bin/emulationstation
これでEmulationStationの配置は元に戻ったはずである。/usr/bin/emulationstationのサイズが1000バイト程度(ここでは1067バイト)であることを確認する。
pi@retropie:~ $ ls -l /usr/bin/emu* -rwxr-xr-x 1 root root 1067 10月 22 00:00 /usr/bin/emulationstation pi@retropie:~ $
ここから仕切り直しとなる。
EmulationStationを入手する
バイナリ版を直接ダウンロードする(推奨)
単に使いたい場合はこちらの手順を推奨(Raspberry Pi専用)。
wgetでバイナリを直接ダウンロードする。
$ cd ~/ $ wget https://github.com/eagle0wl/EmulationStation/releases/download/v2.6.2-mod/emulationstation $ chmod +x emulationstation
ソースコードからビルドする
こちらを参照して下さい。
eagle0wl.hatenadiary.jp
※記事作成後にpull requestからのフィードバックを元に修正を行っているが、コマンドは同じ。
バイナリ版を直接ダウンロードするか、ソースコードからビルドするかして、emulationstationのバイナリがすでに手元にあるものとする。
pi@retropie:~ $ ls -l emu* -rwxr-xr-x 1 pi pi 5684336 10月 23 23:53 emulationstation pi@retropie:~ $
過去の説明ではemulationstationの差し替え先が不適切だったので、適切な差し替え先を記す。
$ sudo mv /opt/retropie/supplementary/emulationstation/emulationstation /opt/retropie/supplementary/emulationstation/emulationstation.master $ sudo mv emulationstation /opt/retropie/supplementary/emulationstation/
再起動する。
$ sudo reboot
※元のEmulationStationに戻したい場合は以下の処理を行う。
$ sudo rm /opt/retropie/supplementary/emulationstation/emulationstation $ sudo mv /opt/retropie/supplementary/emulationstation/emulationstation.master /opt/retropie/supplementary/emulationstation/emulationstation