📲

Ubuntu TouchをZenfone max pro m1に入れてみた

2023/05/21に公開
2

はじめに

3年前からずっと気になりつつも、対応端末が手元になかったり、文鎮化が怖くて遠くから眺めているだけだったOS、Ubuntu Touch。SIMによる電話とどこでもネット可能というモバイルのよさ、タブレットへの拡張、さらには外部ディスプレイに繋げばガッツリとデスクトップできてしまう、そしてオープンソース、というロマンしかない仕様は、全人類をときめかせてやまないものです。

https://youtu.be/1sPtRdZlEu4

その憧れのOS、Ubuntu Touchに挑戦してみようという意欲が、ひょんなことから湧いてきました。
せっかく入れるなら、米ビッグテックや中華ビッグテックに直接依存したくないという信念があったため、推奨端末のGoogle Pixel 3aにいれるというのは抵抗がありました。
そこで、中立的な立場の企業、かつ日本でも入手および使用可能な端末という厳しい条件のもと残ったのが、Asus Zenfone max pro m1という端末でした。国内版だとコードネーム:X00TDBX00TDではない、型番ではZB602KLになります。

しかし、なかなか同じ端末にUbuntu Touchを入れている方が見つからず、そもそも可能なのかも分からない状態でした。
紆余曲折を経つつも、なんとかインストールまでこぎつけたので、同じイデオロギーをもつ方(果たして存在するのか?)に向けて記事を書くことにしました。

苦労したところ

その1:ブートローダがアンロックできない

古い端末ということもあり、ブートローダのアンロックが、公式のものではできない状態になっていました。(認証のためのサーバーがすでに止まってといるとのこと)
ネットの海をさまよい、信頼できそうな非公式のもので無事に解除できました。

その2:UBports Installerに非対応といわれる

ブートローダが解除できてウキウキでインストールをしようとしたら、Ubuntu Touchのインストーラー(UBports Installer)に「非対応端末だよ」とにべもなく断られてしまって詰みかけました。(X00TDではなくX00TDBのため)

おとなしくPixelにしておけばよかったか...?という思いがよぎりましたが、せっかくなのでLineageOSでもいれるか、と思ってインストールしてみたら、、、なんと!
LineageOSをインストールした状態でPCに繋ぐと、UBports InstallerにX00TDとして認識されているではありませんか。

ということで、めでたくインストールすることができたとさ。

インストールまでの流れ

  1. 端末の調達とデータのバックアップ
  2. ブートローダのアンロック
  3. リカバリーソフトのインストール
  4. リカバリーソフトからLineageOSのインストール
  5. UBports InstallerからUbuntu Touchをインストール
  6. おまけ(LibertineやWaydroidを試してみる)

1.端末の調達とデータのバックアップ

自分はじゃんぱらさんにて中古で調達しました。サイトでの値段より店舗での値段の方が安くてラッキー。そのため自分は何も失うデータはなかったですが、バックアップが必要な方はぜひ。

2.ブートローダのアンロック

ブートローダは、、、Androidの開発元のつくった吟遊詩人さんにきくと以下のご回答をいただけました。

Androidのブートローダと、そのロック解除ってなんですか?

ブートローダーとは、デバイスを起動し、オペレーティングシステムをロードするプログラムです。デバイスの起動時に最初に実行されるプログラムであり、デバイスのセキュリティにとって重要な部分です。
ブートローダーは通常、ロックされています。つまり、デバイスの製造元が署名していないファームウェアをロードすることはできません。これにより、デバイスが不正なファームウェアで攻撃されるのを防ぐことができます。
ブートローダーをアンロックすると、デバイスの製造元が署名していないファームウェアをロードできるようになります。これにより、デバイスをカスタマイズしたり、ルート化したりすることが可能になりますが、デバイスのセキュリティが低下する可能性もあります。
ブートローダーをロック解除するには、通常、デバイスの製造元のWebサイトで提供されているロック解除コードが必要です。コードを取得したら、デバイスをFastbootモードで起動し、コードを入力する必要があります。コードを入力すると、ブートローダーがロック解除されます。
ブートローダーをロック解除すると、デバイスの保証が無効になる可能性があることに注意してください。また、デバイスが不正なファームウェアで攻撃される可能性もあります。ブートローダーをロック解除する前に、リスクを認識しておくことが重要です。

ブートローダのロックを解除することで、製造元の署名なしのいろんなファームウェアのロードができるようになる、という理解を自分はしてます。間違えてたらご指摘ください。

ブートローダの解除には、通常の記事やガイドラインではAsus公式のものを使って云々とあるのですが、残念ながらZenfone phone max proは古いためにすでに公式サイトからはダウンロードできなくなっていました。

そこで、ネットに落ちている野良の公式ロック解除アプリのapkをいくつか試したのですが、インストールして「解除」のボタンを押すと「ネットワークエラー」となり、解除に進めません。いったいどういうことなのか?

公式のロック解除アプリ
公式のロック解除アプリではできなかった

調べていくと悲しい事実として、ロック解除を認証するサーバーまでも停止していると判明。こちらでも似たような話が。万事休すか、Pixelを明日買うか...。

しかし諦めが悪いので、念のためネットを徘徊してみたところ、、、なんとオフラインで解除可能な非公式の方法を発見!💡どうせブートローダ解除できない限りこのスマホを持ってる意味がないので、文鎮化覚悟で決行。すると...なんと無事にできました!🙌

その貴重なページがこちらのXDAフォーラムです。

手順(Windowsでないとできません)

  1. Adbとfastbootの環境を整える(環境変数ぽちぽち)
  2. ダウンロードしたrarファイルを解凍(7Zipなど)
  3. Asusのデバイスドライバをインストール(デバイスマネージャー->操作->レガシ ハードウェアの追加、より)
  4. fastbootモードを起動
  5. unlockフォルダのunlock.cmdをダブルクリックして実行(記事ではunlock.batとなってますが、なかったので.cmdでいけました)
  6. 直後にロック解除がされたことが画面に表示され再起動

Unlocked
ロック解除後の画面

3.リカバリーソフトのインストール

一般的なリカバリーソフトはTWRPなるソフトですが、自分が入手したTWRPのimageはことごとく起動ができなかったため(バージョンにうるさそう?)、LineageOSが出しているものを使うことに。
公式のリンクから、最新の「recovery.img」をダウンロードしてインストールしました。(コマンドなどはLineageOSの公式ガイドこちらの記事を参考にしました)

$ adb reboot bootloader
$ fastboot devices #デバイスが認識されていることを確認
$ fastboot flash recovery recovery.img #イメージをrecoveryとしてインストール
$ fastboot reboot recovery #リカバリーモードで起動

Lineageのリカバリー
Lineage公式リカバリー

4.リカバリーソフトからLineageOSのインストール

LineageOSのリカバリーソフトは、とても洗練されたUIですね。公式ガイド通りに入れました。

  1. 公式のリンクから「lineage-20.0-〇〇〇〇-nightly-X00TD-signed.zip」みたいな名前のLineageOSインストールパッケージをインストール。

  2. リカバリーモードで起動していない場合は、リカバリーモードを起動。

  3. Factory Reset -> Format data / factory reset を選択。(リカバリーモードのUI上で)

  4. リカバリーモードのメインメニューに戻る。

  5. Apply Update -> Apply from ADB を選択した後、ターミナルで以下のコマンドを実行。

$ adb sideload lineage-20.0-〇〇〇〇-nightly-X00TD-signed.zip
  1. リカバリーモードのメインメニューに戻る。
  2. Reboot system now を選択。これでLineageOSが起動します!

LineageOS
LineageOS、起動!

5.UBports InstallerからUbuntu Touchをインストール

LineageOSの設定アプリから、ビルド番号を7回タップして開発者モードにします。そしてUSBデバッグをONにしてPCにつなぎ、偶然そこに開いていたUBport Installerを見てみたら...

X00TD
X00TDとして認識されている

なんと、X00TDとして認識されているではありませんか!
あとは、インストーラーの指示に従っていけば、めでたくUbuntu Touchがインストールできます。

ただ一箇所だけ引っかかったところがあり、「Cleaning up...」の項目で、インストーラーが進まなくなってしまいました。UBportsのフォーラムでも同じ質問が出ており、どうやら最初らへんの画面で、「Wipe personal data」のチェックボックスをONにしないといけないようでした。この時点でインストーラを閉じると LineageOSも起動できなくなっておりfastbootモードで起動するため。LineageOSをインストールし直す必要がありました。(チョットメンドクサイ)

WipePersonalData
Wipe personal dataのチェックボックスの罠

また、途中でUBPortsのリカバリーを起動してね、という表示で止まるので、指示通りにボタンを押すと、UBPortsのリカバリーが起動します。そうすると、インストーラーが再開するようです。

UBports Recovery
UBportsのリカバリー

無事にインストールできると、「Success!」の表示が出てきて、ちゃんとインストールできたかどうかのフィードバックを送信するように促されます。

Success
Success!

おめでとうございます!🎉ついにZenfone max pro m1上で、Ubuntu Touchが動かせます!!

UbuntuTouchInstalled
Ubuntu Touch 起動中...

6.おまけ(LibertineやWaydroidを試してみる)

Ubuntu Touchは、iOSやAndroidとは違った独自のUIが魅力的ではありますが、そのままの状態ではアプリや機能が少なく、単体ではややもの足りないOSではあります。しかし、Ubuntuデスクトップを扱えるようにするための「Libertine」や、AndroidをUbuntu上で動かせるようにする「Waydroid」をインストールすることで、一気に最強OSと変貌します。

Libertineとは?

Libertineは、Ubuntu Touchデバイスでデスクトップアプリケーションを実行するための隔離システムです。 chrootまたはLXCを使用して、Ubuntuのルートファイルシステムをデバイス上の書き込み可能な領域に隔離システムとして用意し、その中で既存のソフトウェアを実行します。 原則として、デバイス上の他のリソースにはアクセスしません。 唯一、ホームディレクトリのファイルにのみアクセス可能です。 Libertineを使用して隔離システム上にパッケージをインストールすると、そのdesktopファイルがUbuntu Phone用にカスタマイズされます。 「Desktop Apps Scope」というアプリをインストールすれば、そこから隔離システム上のソフトウェアを起動できるのです。 Ubuntu Phoneでは12番目のメジャーアップデートであるOTA-12から、「Early Preview」という位置づけではあるもの、この仕組みが組み込まれるようになりました。

Libertineは、デスクトップアプリケーションをUbuntu Touchデバイスに提供するための優れた方法です。 これらは、Ubuntu Touchデバイスで利用可能なネイティブアプリケーションと同じように使用できます。 Libertineは、開発者がUbuntu Touchデバイス用の新しいアプリケーションを作成するための優れた方法でもあります。

Waydroidとは?

Waydroidは、UbuntuやDebianなどのLinuxディストリビューションにAndroidアプリをインストールして実行できるようにするプロジェクトです。これは、AndroidシステムをLinuxコンテナにパッケージ化し、それをUbuntuやDebianなどのLinuxディストリビューション上で実行することによって行われます。これにより、ユーザーはAndroidアプリをネイティブのLinuxアプリケーションと同じようにインストールして実行できます。

Waydroidは現在開発中ですが、すでに多くの人気のあるAndroidアプリを実行できます。これには、WhatsApp、Facebook、Instagram、TikTokが含まれます。Waydroidは、開発者がAndroidアプリをLinuxディストリビューションに移植するための優れたツールでもあります。

Waydroidは、Waydroid Webサイトからインストールできます。また、UbuntuやDebianなどの多くのLinuxディストリビューションのパッケージリポジトリでも入手できます。

Libertineの使い方

  1. Ubuntu Touchの設定アプリを開きます。
  2. 「システム」の項目に「Libertine」という項目があるのタップします。
  3. 「+」ボタンから、新しいコンテナを作成します。もしうまく作成できない場合は、名前とパスワードをきちんと入れて作成するとうまくいく場合があります。
  4. 作成されたコンテナをタップして、次の画面の右上にある歯車ボタンをタップします。
  5. 「Container Information」を選択して開いた画面の、Operation detailsというところで、コンテナ作成の進捗が表示されます。完了するまで数十分ほどの時間がかかるみたいなので、気長に待ちます。
  6. 完了したようであれば、戻るボタンを押して、1つ前に戻ります。
  7. 次は歯車ボタンの隣の 「+」ボタンから、アプリをインストールします。
  8. 「Search archives for a package」を選択し、検索ウィンドウに入れたいアプリのパッケージ名(例えば「blender」や「inkscape」)を入力します。
  9. 検索結果の中で、所望のパッケージ名をクリックすると、インストールが始まります。
  10. インストールが完了したら、Ubuntu Touchのアプリ一覧を開き、上から下にスワイプして再読み込みさせると、アプリが追加されていることが確認できます。

Waydroidの使い方

  1. Ubuntu Touchの端末アプリを開きます。
  2. 以下のコマンドを実行します。
$ sudo -s #管理者権限に切り替え
$ mount -o remount,rw / #最後のスラッシュを忘れない
$ apt update
$ apt install -y waydroid

最後に、PlayStore不要の場合は以下を、

$ waydroid init

PlayStoreがあった方がいい場合は以下を実行(参考

$ waydroid init -s GAPPS -f
  1. Ubuntu Touch上にLineageOSが起動します。その中のPlayStoreアプリから、自由にAndroidアプリをインストールできます!

LineageOnUbuntu
LineageOSが、Ubuntu Touch上に!

AppleMusicOnUbuntu
Apple Musicだって開けます

7.おまけ2(APN設定について)

Ubuntu Touchは、GUI上からSIMカードのAPN設定を行おうとしても、うまく保存されなかったり、繋がらない問題がありました(これはUbuntu16.04ベースのものだけでなく、Ubuntu20.04ベースのものでも同じでした。)
自分の場合は、MineoのSIMカードを使ってなんとか動作させたかったため、またもや情報の海をさまよい、無事に動作させることができました。

参考にさせていただいたのはこちらのフォーラムです。
Twitter上で見つけた、こちらの./set-lte-propertyを使った方法がいかにもできそうだったのですが、残念ながらこれだとofonoのPythonスクリプト中でエラーになってしまい断念。

APN設定の流れ

  1. Ubuntu Touchのターミナルを開く、またはPCに繋いでadb shellを起動
  2. cd /usr/share/ofono/scripts/
  3. ./deactivate-context
  4. ./create-internet-context [APN]
    自分の場合は、./create-internet-context mineo.jp
  5. ./set-context-property 0 Name [APN名]
    自分の場合は、./set-context-property 0 Name mineo
  6. ./set-context-property 0 Username [ユーザー名]
    自分の場合は、./set-context-property 0 Username qtnet@bbiq.jp
    mineoのではなぜかうまくいかず、自分のNothingPhoneで自動認識されているのを見たらこれでした。
  7. ./set-context-property 0 Password [パスワード]
    自分の場合は、./set-context-property 0 Password bbiq
  8. ./set-context-property 0 AuthenticationMethod [認証方法] <- ここがポイント!!(GUIだとそもそも入力欄がない)
    自分の場合は、./set-context-property 0 AuthenticationMethod chap
  9. ./list-contexts これで以下のようになっていればOK
    ListContexts
  10. ./activate-context ここでうまくActivateできない場合は、もう一度3.からやってみるとうまくいく場合があります。
  11. 以上で接続できるはず...!!

おわりに

Ubuntu Touchは、正直言って最強のポテンシャルを秘めたOSだと思います。もっとハイスペックな端末が対応してくれれば、外部ディスプレイに繋げばUbuntuデスクトップアプリが実用的な速度で動いてくれるのではないかと期待してしまいます。
ウルトラモバイルPCも、手元にフルデスクトップ環境があるという魅力がありますが、SIMカード対応で電話もできる、というようにはなかなかならないところが、惜しいところだと思います。(今どきそんなに電話するか?という指摘はさておき)
まだまだUbuntu Touch初心者ではあるので、今後いろいろ遊び倒していきたいと思います。

長文におつきあいくださり、ありがとうございました!

Discussion

masao616masao616

非常に参考になる情報、ありがとうございます。
私はPixcel 3AにUbuntu Touchを入れて遊んでいますが、比較的に安定して動作しています。
Libertineを使ったことがなかったのでとても参考になしました。

turtlekazu🐢turtlekazu🐢

大変励みになるコメントをいただきありがとうございます!
自分も実はこの後Pixel 3aも入手しまして、スムーズな導入と安定性に驚きました。最新版(20.04ベース)のが動くのもありがたいですね
遊び心と夢のあるUbuntu Touch、今後も開発が続いてほしいです...