AndroidでArmデスクトップ環境を先取りしよう

Posted on 2020-11-13

先日AppleからApple Siliconの紹介とそれを搭載した新たなMacbook Air,Macbook Pro,Mac miniが発表されました. 世の中からは「本当にArmで今まで通りの生活ができるのか」と疑問視する声も上がっています.この記事では,Termuxを使用してAndroid上にネイティブでX環境を用意することにより,Android端末でLinuxデスクトップを動かし,Armデスクトップを先行体験するためのノウハウについてまとめます.

はじめに

一応この記事ではroot権限など,特殊なものは全く必要ないですが,ここで紹介する行為は各携帯電話メーカーが推奨する行為ではなく,この記事で紹介されている手法に関して発生した損害については筆者は一切の責任を追うことはできません.自己責任でお願いします.

また,この記事にかかれていることをすべてやろうとするとストレージが10GBほど必要になります.注意してください.

Termuxとは

TermuxとはAndroidで動くターミナルエミュレータです.

ただし,TermuxはGoogle Playで配信されているほど凡庸なアプリで,root権限など,特殊なものを要求しません.

また,Termuxはアプリ内にAndroid向けにビルドされた一式のツール群を持っており,一般的なGNU/Linuxのような環境を提供することができています.

多少の違いはありますが,Bashでできる基本的なことはできるため,Android向けに提供されているターミナルエミュレータの中でも非常に強力な部類だと思います.

詳しくは公式サイトで詳しく説明されています.

なお,Termuxは推奨環境をAndroid 7.0 - 9.0としており,10.0以降では問題が発生するかもしれないとのことです.この記事ではZenfone 4,Android 8.0を使用して解説を行いますが,当方でPixel 3a,Android 11で試しても動きはしたので10以降はチェックできていない,くらいの温度感だと思います.

では,このTermuxを使ってどうやってX環境を構築するのでしょうか.実はTermuxはデフォルトでX環境を構築するすべを持っています:https://wiki.termux.com/wiki/Graphical_Environment

しかし,ここではこの方法は使用しません.Termuxが提供しているパッケージマネージャで使えるソフトウェアは限られており,皆様が使いたいものがない可能性があるからです.ここではより柔軟な方法を使いたいです.

そこで,今回はTermuxArchというものを使用します.次章からTermuxArchについて解説します.

TermuxArch

まずはTermuxArchの概要について説明します.

TermuxArchはPRootと呼ばれる特殊な(全容は筆者もよく知らないです)chroot jailの中でArch Linux環境を作ってしまう,という魔法のようなプロジェクトです.

詳しくはREADMEに色々書いてあります.

TermuxArch環境のインストール

では早速インストールしましょう.すべての情報はInstallページに書いてありますが,ここではかいつまんで日本語訳します.

まずはTermuxでsetupTermuxArch.shをダウンロードします.

下のコマンドをTermuxのコンソールに打ち込んでください.

$ curl https://raw.githubusercontent.com/TermuxArch/TermuxArch/master/setupTermuxArch > setupTermuxArch.sh

ダウンロードしたらこのスクリプトを実行します.

$ bash ./setupTermuxArch.sh

実行するとたくさん文字が流れ始めますが,忍耐強く待ちます.終わったら自動的にプロンプトが切り替わり,Arch Linuxの環境に入ります.

プロンプトが,

[root21:57~]$

のような表示になっていれば成功です.(数字は違うかもしれません)

yayのインストール

これでArch Linuxの環境はインストールできたわけですが,パッケージマネージャとして,yayというものを導入すると幸せになれます.

Arch Linuxのパッケージマネージャはpacmanというものが使用されており,このツールではOfficial Repositoryでメンテナンスされているパッケージをインストールすることが可能です.

Arch Linuxではこれとは別に,AUR(Arch User Repository)というものが存在しており,Official Repositoryに含まれないようなパッケージが管理されています.AURでは色んな人が色んなものを公開しているので,多種多様なアプリケーションをインストールすることができる一方で古くて壊れたパッケージが放置されていることもあるので注意が必要です.ただし,AURが便利なのは間違いがないので,AURからのパッケージのインストールもいい感じに行えると便利です.

そこで,yayを使います.yayはGo製のパッケージマネージャで,AURからのパッケージのインストールに対応しています.(昔はyaourtというものを使用していましたが,メンテナ不在で使われなくなりました)

yayのインストールをする前にユーザを作っておきましょう.yayはrootでの実行を許可しません.

$ useradd -m <newuser>
$ usermod -G wheel <newuser>
$ passwd <newuser>
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
$ su <newuser>
$ cd

<newuser>の部分は自分のお好きな名前に変えて打ち込んでください.

これでプロンプトが以下のように変わるはずです

[<newuser>@localhost ~]$ 

この状態で,

$ makeyay

と入力すると,さっきと同じように文字が流れ,どこかでエラーで止まるはずです.(2020年11月13日現在は止まります,そのうち修正されて止まらなくなるかも.)

止まったら,

$ cd fakeroot-tcp
$ vi PKGBUILD

として,source=と書いてある行で,http://ftp.debian.org/debian/pool/main/f/$_pkgname/${_pkgname}_${pkgver}.orig.tar.gzと書かれているものをhttp://old.kali.org/kali/pool/main/f/fakeroot/fakeroot_1.24.orig.tar.gzに置換してください.

置換した状態でそのまま,

$ cd
$ makeyay

すると今度は成功で終了すると思います.

これでyayのインストールが終わりました.試しにyay android studioすると以下のように表示されると思います.

ここまででTermuxArchの準備は終わったので次章からいよいよXの環境を構築します

VNCサーバとXfce4の導入

続いて,X環境を構築してAndroid上でいじれるようにします.Androidでは良いX Serverがないので,ここではVNC ClientでXを使用できるようにします.VNCというのリモートデスクトップの一種です.

VNC ClientにはVNC Viewerを使用します.インストールしたら右下のプラスボタンを押し,Addressのところにlocalhost:5901,Nameのところにお好みの名前を入れ,CREATEボタンを押します.

すると,以下のような画面になるのでこのアプリは一旦このままにし,Termuxへ戻ります.

Termuxへ戻ったら,以下のコマンドを入力し,vnc serverとxfce4をインストールします.

$ yay -S tigervnc xfce4-session

しばらく時間がかかるので待ちます.

インストールできたら,vncで接続する際に使用するパスワードを設定します.

$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

これができたら,VNCサーバを立ち上げたときにXfce4が起動するような設定にします.

$ cd .vnc
$ vi xstartup

これでxstartupに以下のようなコードを書きます.

#!/usr/bin/sh
xfce4-session &

ここまでできたら,vncサーバを起動しておきます.

$ vncserver :1 &
$ export DISPLAY=:1

二行目でDISPLAY環境変数を指定していますが,これを行うことで,これから起動するGUIアプリはVNCクライアントに表示できる形で起動します.

これができたら,VNC Viewerに戻り,実際にサーバにアクセスできるか試してみましょう.

VNC Viewerはこの画面になっているはずです.

この画面の一番下の緑色のボタンを押すと,次のような画面が出てくることがありますが,気にせず接続しましょう.(ローカル接続なのでポート開放していなければ盗聴は難しいです)

右上のOKボタンを押すと,次のような画面になるので先程設定したパスワードを入力し,右上のCONNECTボタンを押します.

これで接続が確立し,次のような画面になるはずです.

これで一通りの導入は終わりました!おめでとうございます!

あそぶ

あとはいろんなソフトをインストールして遊んでみましょう.

例として,Firefoxで遊んでみます.

Termuxに戻り,Firefoxをインストールして,起動します

$ yay -S firefox
~~(たくさん出てくる,割愛)
$ firefox &

もう一度VNC Viewerに戻ると,次の画像のようにFirefoxが起動しているはずです.(画像はWikipediaにアクセスしたところ)

おそらく皆様の環境ではデフォルトで日本語の環境が入っていないため,日本語のサイトを見ると文字化けすると思います.日本語環境の導入はArch Wikiが詳しいので参照してみてください:https://wiki.archlinux.org/index.php/font_configuration

まとめ

今回紹介した環境を導入すれば,yayが入っているのでFirefox以外にもなんとAndroid Studioや,その他の様々なアプリがインストール可能で,Armデスクトップの世界を少しだけ感じることができます.

Android Studioが起動する

もちろん,この環境はAndroidなのでmacOSとは違いますが,どんなことができてどんな事ができないのか,実際に試してみると面白いと思います. ただし,Arch LinuxはArm向けのバイナリを割と配布している方のディストリビューションなので,意外と動いちゃうかもしれません.Macではもう少し厳しいと思ったほうが良いかもしれないです.

以上,少しおかしな話ですが,AndroidでArmデスクトップ環境を先取りしよう!でした.