ど~もeagle0wlです(再)

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

改変版EmulationStationの既知の問題を修正しました

この記事における「既知の問題」の経緯

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

修正したエントリ

eagle0wl.hatenadiary.jp
eagle0wl.hatenadiary.jp

コメントしてくださった、しさん、ogさんに感謝します。