Nintendoが発売しているNvidia Tegra搭載のタブレットPC「NintendoSwitch」にUbuntuとAndroidをインストールして動かします。
Nintendo Switchとは
- 花札やトランプ、百人一首などでおなじみの任天堂が発売しているタブレットPC。
ゲーム機ではない。 - CPU/GPUに謎のAI半導体メーカーNvidia製のTegra X1を搭載。
- 要するにArm+CUDAが動く、Jetson Nanoと同じチップ。
- RAMは3.4GiB、ストレージは(基本的に)microSDを使う。
前提
- 本記事はUbuntuに触れたことのある人を前提にします。未経験者はAndroidだけ使えればいいでしょうし。
- この方法はNintendo公式のものではないです。未対策機なら壊れることはよっぽど無いだろうけどあくまで自己責任で。
必要なもの
- Nintendo Switch本体 (未対策機)
- 対策機かどうかは自分で調べて
- 自分はアキバのWorldMobileで買った
- microSD
- 2つOS入れるなら128GBはあったほうがいい。どうせみんなAndroidゲームに容量使うし。
- RCMジグ
- Joy-conの特定のピンをショートさせる器具、治具。
- Windows PC
- Payload送信に使う
- Macでもできるらしいけど未検証
- PC→USB-Cの通信ケーブル
必要ないもの
- Joy-Con
- Nintendo Switchを普通に起動するとセットアップにJoy-Conの接続を求められるけど、電源ボタン12秒長押しで強制終了できる。
①準備
- PCでmicroSDを、FAT32で初期化する。たぶんOS標準ではできないのでIO-DATAのハードディスクフォーマッタなどを利用。
ー PCにTegraRCMをインストール
②RCMモードでhekate起動
- hekate_ctcaerのZIPを落とし、bootloader/とbinをSD直下に入れる。
- SwitchとPCをUSBで繋いで、TegraRCMを起動。
- 必要に応じてドライバーを入れる
- ダウンロードしたhekateのbinファイルを開いて、Inject payloadを実行
③SDカードにパーテーションを設定
- hekate内のToolsからPartition SD Cardを開く
- スライダーで適当にLinuxとAndroidに容量を割り振る
- このとき、FAT32の領域を十分に残す(16GBぐらいあったほうがいい)
④Android10のインストール
注意
先にAndroidを入れたほうがいい。 Ubuntuを入れたあとでAndroidを入れようとしたら、後述のteamwinのメニューにUbuntu環境をパーティションごと飛ばされたので。
- Partition ManagerのSD UMSを起動する
-
Switchrootから
icosa-tablet-YYYYMMDD-rel.zip
を落として解凍しSDに入れる
解凍は1回だけ - おなじく
extras/alarm-disable.zip
extras/joycon-xbox.zip
をダウンロードしSDに入れる- スリープ中にAndroidのアラームが作動するとバグるらしく、それを妨害するためのツール
- Joy-ConがAndroidで使えるようになるらしい(未検証)
-
opengappsからARM64、10.0、PICOを選んでダウンロードしSDに入れる
- このOSイメージにはGooglePlayが入っていないので。
-
Switchrootから
安全な取り外し→USBを抜く
- 下のボタンからFlash Android
を実行
- teamwinのメニューが出てくる
- installを選択し、
../external-sd/linege-hogehoge.zip
を選択してインストール。 - 戻って、
alarm-disable
joycon-xbox
open-gapps-hogehoge
をそれぞれイントール - 再起動
- installを選択し、
- hekateのhomeから
More Configs
を選択してAndroidを起動- いつも通りのセットアップを済ませる
- 注意; 初期値で音量がMAXなので気をつけて
- 注意; 5GHzのWi-Fiは不安定かもしれない
参考までにデレステを動かしてみたらこんな感じ
(お願いシンデレラ 5人 3Dリッチ MV)
⑤Ubuntuをインストール
- Partition ManagerのSD UMSを起動する
-
Switchrootから
switchroot-ubuntu-VERSION-YYYY-MM-DD.7z
を落として解凍 -
bootloader/
switchroot/
をSDのFAT32領域の直下に入れる - ②の
hekate_ctcaer_VERSION_Nyx_VERSION/bootloader/
でbootloader/
を上書きする - 安全な取り外し→USBを抜く
-
Flash Linux
を実行
-
Switchrootから
- hekateのhomeから
More Configs
を選択してUbuntuを起動
sudo sed -E -i 's/turul.canonical/ports.ubuntu/g' /etc/apt/sources.list
-
個人的に推奨; jetson-fan-ctlのインストール
- これはなに?→Jetson用のファンコンソフト。デフォでファンコントロールされてはいるけど強すぎる気がしたので。
- Gitを見ながらpip3でインストール
sudo apt update sudo apt install python3-dev python3-pip python-dev python-pip git -y git clone https://github.com/Pyrestone/jetson-fan-ctl cd jetson-fan-ctl sudo ./install.sh
- よしなにconfig.jsonを書き換える
- ※自分の環境では動いてますが公式にサポートはされてなさそう
-
注意; 初期値で画面の明るさがMAXなので気をつけて
追記
SwitchrootのAPTリポジトリ追加したほうが良さそう
https://newrepo.switchroot.org/
デュアルブート確認
- hekateのhomeから
More Configs
を選択したところでAndroidとUbuntuが並んでて両方起動できたらOK
参考