どせいすてーしょん

買ったものや行った場所についての備忘録置き場。

Nintendo SwitchでLinuxを動かしてみる

先日、面倒な準備いらずに簡単にSwitchでLinuxを起動することが出来る「Painless Linux」がリリースされていたので本当に簡単にLinuxが起動できるかどうか試してみることにした。

 

この記事に記載されている方法はすべて自己責任で行ってください。仮にPCやSwitchなどが破損しても筆者は責任を負いません。

筆者はWindows10のPCで作業したため、他の環境での作業方法の説明に不備がある可能性が高いです。

LinuxMacAndroid端末で行う場合はここ(https://github.com/natinusala/painless-linux)に記載されている内容をよく読んだうえで作業することを強くおすすめします。

 

 

用意するもの

  • 未対策基盤が搭載されたSwitch(2018/5/7時点で存在しているSwitchは大丈夫なはず)(2018/7/11追記:今現在出回っているSwitchは対策基盤が搭載されている可能性がある)
  • 8GB以上のMicroSDカード(128GB以上のSDカードはLinuxカーネルパッチを当てる必要がある)
  • PCまたはAndroid端末(Android4.3以上かつUSB OTGをサポートしているもののみ)
  • PCまたはAndroid端末とSwitchを接続するためのUSBケーブル
  • SwitchをRCMモードで起動させるための道具(後述)
RCMモードとは

Nintendo Switchに搭載されている「Nvidia Tegra X1」にもともと備わっていた機能。端末が起動しなくなった時用のリカバリーモードで、端末によって起動方法が異なるが、起動時に特定のボタンを押すことで入る場合が多い。

Switchでは起動時に音量+ボタン、電源ボタン、HOMEボタンを押し続けることでRCMモードに入ることが出来る。しかし右JoyconのHOMEボタンではボタンコンボとして機能しないため、本体の右Joycon取り付け部分にあるピンをショートさせて無理やり本体基板側のHOMEボタンが押された状態にすることでRCMモードに入る、という寸法らしい。

f:id:DoseiDonut:20180508003920p:plain

10番ピンと7番ピンまたは10番ピンと1番ピンをショートさせれば本体側のHOMEボタンが押されたことになるようだ。銅線を使っても良いが海外ではゼムクリップを加工してジャンパーを自作する動きがあるようだ。筆者はクリップを加工して作るタイプをおすすめする。

f:id:DoseiDonut:20180508004112j:plain

試しに電源ボタンと音量+ボタンを押しながら10番ピンをショートさせてみて、画面に何も映らなければRCMモードでの起動に成功している。うまくできない場合は本体の電源がオフになっているか、きちんと10番ピンがショートできているかをもう一度確認する必要がある。

ペイロードランチャーを使うための下準備

WindowsのPCでは、Switchを接続するためにドライバの導入が必要になる。

  1. SwitchをRCMモードで起動し、PCにUSB接続する。
  2. https://zadig.akeo.ie/へ接続し、Zadigをダウンロードする。バージョンは最新版でよい。

  3. 下図の通りにドライバをインストールする。デバイスリストにAPXが出てこない場合は「Options」の「List All Devices」にチェックを入れると表示される。

f:id:DoseiDonut:20180508004139p:plain

MacLinuxのPCではPython3のインストールの他にターミナルで「pip3 install pyusb==1.0.0」と打ち込む必要があるようだ。

Painless Linuxの導入

1.GitHub(https://github.com/natinusala/painless-linux)に接続して、README.mdの文章の「Step1:downloading things」にある2つのファイル(painless-linux-master.zipとpainless-linux-1.img)をダウンロードする。

painless-linux-1.imgはファイルサイズが6GBを超えており、ダウンロードするのに時間がかかる。さらにファイルがMEGAにアップロードされているため、有料会員でないとダウンロードの途中で転送容量の制限がかかってしまい、追加で5時間程度待つことになる。筆者はこの罠に引っかかった。

f:id:DoseiDonut:20180508004156p:plain2.先程ダウンロードした「painless-linux-master.zip」を展開する。

3.「painless-linux-1.img」をMicroSDカードに書き込む。書き込み方はお好みで良いが、WindowsではEtcherを、LinuxMacではddコマンドを用いる方法がGitHubで推奨されている。

いよいよLinuxのブート

  1. Linuxのイメージが書き込まれたMicroSDカードをSwitchに挿入する。
  2. RCMモードで起動しているSwitchとPCが接続されているのを確認したら、先程展開した「painless-linux-master」フォルダを開く。
  3. Windowsなら「windows-boot.bat」(32bit版だと「windows-win32-boot.bat」)、LinuxMacなら「linux-macos-boot.sh」を実行する。
  4. Switchの画面にペンギンの絵と英語の文章がガーッと表示されたら成功。Linuxのブートが始まったらUSBケーブルを外しても大丈夫。

f:id:DoseiDonut:20180508165633j:plain

しばらく時間が経つとデスクトップ画面が表示される。

f:id:DoseiDonut:20180508182158j:plain

 

使える機能/使えない機能について

  • Wi-Fi:たまにアダプターが認識されなくなるが、それ以外は問題なく動作する。アダプターが認識されなくなったら再起動すればOK。
  • Bluetooth:マウスやキーボードといった入力機器は動作するが、Joycon、スピーカー、ヘッドフォンやイヤホンなどは動作しない。
  • タッチスクリーン:問題なく動作する。
  • オーディオ関係:本体スピーカー、イヤホンジャックともに動作しない。BT機器も使えない。
  • HWグラフィックアクセラレーション:動作するが、本体を起動するたびにスクリプトを走らせる必要がある。
  • Joycon(本体に装着した場合):今のところは動作しない。
  • 音量ボタン:一応動作するが、音が出ないためあまり関係ない。
  • 電源ボタン:強制シャットダウンのみ有効。スマホのようなスリープ機能は使えない。
  • USB接続:動作しない。
  • ドック接続:今のところは動作しないが、将来的に実装する予定。
  • 電源関係:電池容量の表示に一応は対応している。シャットダウンをしても電源が切れないため、電源ボタンを長押しする必要がある。再起動をするとRCMモードから先に進まないため、再びPCやAndroid端末と接続してペイロードを起動する必要がある。

ここまでがGitHub(https://github.com/natinusala/painless-linux)に記載されている不具合情報である。この他にも不具合があるかもしれないので細心の注意を払って使用することをおすすめする。

参考にしたサイト

  • 大人のためのゲーム講座

    gamegaz.com

    RCMモードの説明とZadigのインストール手順の部分で参考にさせてもらいました。
  • GitHub - Painless Linux

    github.com

    Painless Linuxの開発に関わるすべての方にマジ感謝。


Linuxを起動するだけなら面倒な作業はいらなかった。Painlessという名前に恥じぬほどの簡単さだった。Linuxイメージのダウンロード以外は。

普段文章を書かないのでメチャクチャな文章になってるかもしれませんがそこはご愛嬌ということで。いちおう備忘録だし。