仕事が来ているかはともかくとして、仕事用とプライベート用で端末を分けたくなり、新しくXiaomiのスマートフォン「Redmi Note 9S」を8月に買いました。中古でちょうど2万円くらい。
私はAndroidが特に好きな一方で、Googleのことは嫌悪していて、Google製のアプリが入った状態では使いたくありません。なのでそれらが排除されたカスタムROMと呼ばれるもののうちの一つ「LineageOS」を好んで使用しています。プライベート用の端末でもこれを使っています。Note 9SにもLineageOSをインストールしようと思っていました。
ちなみに、Android 8.0からは「Project Treble」という機能が実装されています。これは要するにそれまで同一になっていたSoCメーカーの実装とAndroid OSを分離することでOSのアップデートを容易に行えるようになるというものです。これによって仮にNote 9S用のカスタムROMが容易されていなくても、LineageOSのGSIイメージ(Treble用のOSイメージ)が一つあれば対応端末全てにインストールして使うことができます。一応、Note 9S用の非公式ROMは存在しますが、ROMの更新はそれをメンテナンスする人頼みになってしまうというデメリットがあります(GSI版のLineageOSでも同じことだが、まだ希望があると言っていいと思う)。
ただ、完全に脱Googleすると多くのアプリ(私の場合はProtonMailやSlackなど)が使用している「Google Mobile Services (GMS)」でプッシュ通知などの機能が使えなくなってしまいます(OSのAOSPはオープンソースですがGMSはプロプライエタリなため。Huaweiの最近の話と同じです)。これも「microG」などのアプリを使って解決していこうと思います。
そういうわけで、今回はNote 9SにLineageOSのGSI版をインストールして脱Googleしつつ、microGでGMSの使いたい機能だけを使うチュートリアルを書いていきます。
Note 9Sの基本的なスペックはこのような感じ。
- CPU:SnapDragon 720G
- RAM:4GB
- ストレージ:64GB
- ディスプレイ:2400×1800 6.67インチ(でかい)
必要なもの
- WindowsのPC
仮想マシン内でも可。 - Miアカウント
アカウントの作成にはログインの度にSMSを受信できる電話番号が必要です。よしなにやってください。 - Android SDK
fastboot/adbコマンドの実行に必要。Windowsでコマンドを実行するには管理者権限のコマンドプロンプトでfastboot.exeのあるディレクトリまで移動して “fastboot.exe flash …” と実行する。 - Xiaomiのアンロックツール
- XiaomiのUSBドライバー
- XiaomiのMiFlashツール
トラブル時の復旧用。 - LineageOSのGSIイメージ
色々バージョンはあるが “…arm64_bvS.img.xz” をダウンロードする。xzで圧縮してあるのでそれを解凍するツールも必要。
LineageOSをインストールする
GSIイメージをインストールするには、端末のブートローダーのアンロックという作業を行う必要があります。スマホメーカーによってこのやり方は違います。
- スマホ側で「設定」→「デバイス情報」→「MIUIバージョン」を7回タップして「開発者向けオプション」を有効にする。 「追加設定」→「開発者向けオプション」→「OEMロック解除」をオンにし「Mi アカウント状態」からMiアカウントにログインして、諸々の手続きを行います。
- PC側でアンロックツールを開き、端末は電源を切り、音量下ボタン+電源ボタンを同時押しで起動するとfastbootモードになるのでPCと接続して、アンロックを開始します。すぐにはアンロックできず、168時間(一週間)後にもう一度行う必要があります。
- (このステップは飛ばしていい)アンロックできたら、vbmetaをダウンロードし、再度fastbootモードにして以下のコマンドを実行。
fastboot --disable-verity --disable-verification flash vbmeta vbmeta_note9s.img
- 以下のコマンドで「fastbootd」モードに入る。USBドライバーのインストールが必要(なはず)。
fastboot reboot fastboot
- GSIイメージを焼く。「system.img」はダウンロードしたイメージのパスに置き換えて実行する。
fastboot flash system system.img
- リカバリーに再起動。
fastboot reboot recovery
- 「Wipe Data」でデータ削除して再起動。
これLineageOSが起動するはずです(失敗したら復旧ツールでもとに戻してもう一度トライ)。私はこの後に暗号化の設定を行いましたが、問題なく起動できました(FBE:File-based Encryption、ファイルベース暗号化で暗号化される)。
microGでGMSを導入する
microGのインストールには署名スプーフィングに対応したROMである必要があります。LineageOS(GSI)は対応しています。
- F-Droidをインストールし、続いてmicroGのサイトからリポジトリをF-Droidに追加する。リポジトリの更新後、「microG Services Core」「microG Services Framework」「FakeStore」をインストールする。
- microG Services Coreを開き、「Self-Check」から「System grants signature spoofing permission」をタップし許可する。
- 「Google device registration」、「Google Cloud Messaging(プッシュ通知)」をオンにする。
- 再起動し、Self-Checkで「Signature spoofing support」「Installed packages」のすべての項目にチェックがついていることを確認する。していなければ以下のコマンドで有効化する。
adb shell pm grant com.android.vending android.permission.FAKE_PACKAGE_SIGNATURE
これでGoogle Mobile Servicesによるプッシュ通知を受け取ることができるようになりました(ProtonMailで確認済み)。
その他
- カスタムROMでバグりがちなWi-Fi/Bluetooth/カメラ/指紋認証などは問題なく動く(ここも参照)。
- ANXCameraは動かなかった(カメラなんてどうでもいいが)
- rootはPHH-SUによるSUがあるが、Magiskもインストールできる。Xposedモジュールも動くかどうかまでは試していない。
- Google Playストアの代替はAurora Storeで問題なし。
- 本当はTWRPをインストールしてTWRPからROMを焼きたいところだが、TWRPを焼くとSystemパーティションが表示されないためシステムイメージを焼くことができず、fastbootdモードにも入れない。そのため、GSIのアップデートがあった場合は都度PCに接続してfastbootdモードに入ってからROMを焼く必要があり、その点では不便に感じた(Note 9S用の非公式TWRPはfastbootdに対応していない)。
- GSI ROMを焼いたらベンダーのアップデートが来たら vendor.img だけ手動で焼かないといけないのかどうかわからない
- Slackの通知バグは古いバージョン→最新バージョンの順でインストールする(詳細)
投稿をシェア
記事の内容が面白いと思ったら、SNSでシェアしていただけると記事を投稿するモチベーションにつながります。
ブログ更新ありがとう
Google製のアプリ嫌悪はセキュリティ上の問題?
どちらかといえばプライバシー
中国に個人情報取られるのは気にしないの?もしくはこれを実行することによってその可能性は無くなる?
OSを置き換えてもハードウェアのバックドアがセキュリティ上の問題を起こすといったケースがあるならば考えるけど、聞いたことがない
https://gigazine.net/news/20160603-undetectable-backdoor-into-chip-attack/
こんなのとかちょっと前からちらほら見受けられるけれども個人で調べるには敷居が高すぎる
お久しぶりのブログですね。個人的にはLineageOSを使うのは勧めません。セキュリティとプライバシーの面から見ても不十分ですよ。使うのならGrapheneOSがいいです。(あのスノーデンも勧めてますよ)あと、microGはなりすましの脆弱性があるんで、どうしてもmicroGを使いたいのならCalyxOSのほうが対策してますよ。ただ、GrapheneOSはLTEはできますが、VoLTEはできないので注意。
一応参照先はっておきやす
<Snowdenが勧めている>
https://nitter.net/Snowden/status/1175430722733129729#m
<LineageOSとGrapheneOS>
https://madaidans-insecurities.github.io/android.html
https://grapheneos.org/#never-google-services
https://nitter.net/DanielMicay/search?f=tweets&q=MicroG&since=&until=&near=
GrapheneOSについては良いと思っていますが、対応端末がPixelシリーズしかないのが受け入れられないですね。
microGのSignature Spoofingについては好ましくないと思いながら使っていたので、代替はOpenGAppsの pico が必要最小限かなと思います(カスタムリカバリが必要になるけど…)。
LineageOSはセキュリティーよりもデバイスのサポートに力を入れているのと、GrapheneOSはセキュリティーに力をいれているのでどちらを選ぶかはアナタ次第ですとしか言えませんね。ただ、今のと、ころはセキュリティーを強化したいのならGrapheneOSが一番得策ですね。あと、GrapheneOSはそれぞれのアプリごとにNetworkやSensorを許可できるので、嫌なアプリとかはネット接続を遮断できるのでおすすめです。
というか、Cheenaさんのツイッター見てみたらもうさっそくPixel買うってツイートしてたんで、早速試すつもりですか?
まあ使ってもないのにコメントするのはよくないと思うので、買う予定です。
いま名案を思いついたんだけど、YouTubeチャンネルの初めての動画を”GrapheneOSいれてみた!”にしてみたらどうれすか?:+)