今回はキーボード付きAndroid端末であるGemini PDAにTermuxをインストールして、Ubuntu端末っぽく使う方法を紹介します。
Gemini PDAとは
Gemini PDA とは2017年にクラウドファンディングで出資者の募集を開始し、資金調達に成功したPlanet Computersの製品です。その主な特徴は3つ。
キーボード付きのクラムシェル型端末であること
WiFiだけでなく4G LTEにも対応し、技適マークがついていること
AndroidだけでなくLinuxや他のOSにも対応予定であること
おそらく本記事の読者であれば「NetWalkerの進化版」という説明が一番ダメージが大きいしっくりくるでしょう。
図1 Gemini PDA(左手前)とNetWalker(右手前)とポメラDM200(奥)
大まかなスペックは以下のとおりです。
ネットワーク
WiFi 802.11a/b/g/n/ac、4GモデルのみW-CDMA(900/2100MHz)/LTE(1/2/3/4/5/7/12/17/20/41)/VoLTE対応
Bluetooth
4.0
画面
5.99インチ、2160x1080(18:9) 、403ppi、マルチタッチ対応
バッテリー
4220mAh
サイズ
幅17.14cm、奥行き7.93cm、厚さ1.51cm
重量
約320g
SIMスロット
4GモデルのみSIMスロット+eSIM
SoC
MediaTek Helio X27(もしくはX25)
CPU
10コア(2xCortex-A72@2.6GHz、4xCortex-A53@2.0GHz、4xCortex-A53@1.6GHz)
GPU
ARM Mali 875MHz
メモリー
4GB
内部ストレージ
64GB
拡張スロット
microSD
カメラ
5Mピクセルフロントカメラ
サウンド
ステレオスピーカー、マイク、3.5mmジャック
USB
Type-C 2ポート(片方充電可、片方OTG+HDMI出力)
その他
GPSあり、NFCなし
キーボード付きのモバイル端末は古くからマスとは言えないものの、それなりのボリュームを持ったユーザーにとって必須ともいえるデバイスでした。過去にもさまざまなデバイスが発表されては、名機もしくはトラウマ扱いされて消えていくことを繰り返しています。最近だとUbuntu版も存在するGPD Pocket は(OSCなど特定の層が集まるイベントで)いろんな人が持ち歩いているのを見かけますし、たとえば本記事もUbuntuをインストールしたポメラDM200 で下書きを執筆しています[1] 。
[1] DM200はLinuxが動いているリッチなARMデバイスなので、DM200が起動しなくなるリスクを受け入れられるのであればUbuntuを動かすことも可能です。詳細はichinomotoさんが書かれた「Debian on Pomera DM200」 などを参照してください。moyashiさんのまとめ記事 も参考になることでしょう。いずれもDebianの話ではありますが、rootfsをUbuntuに差し替えればUbuntu化が可能です。
この手の海外製デバイスは日本で利用するにあたって電波法の壁が待ち受けていることが多いのですが、Gemini PDAについては早い段階から日本の技適マークの取得を考えている旨が、テクノロジー系メディアに回答する形ではあるものの公表されていました。さらにAndroid端末としては珍しく、一般的なLinuxディストリビューションとのデュアルブートサポートも表明していたのです。
そんなGemini PDAが無事に製造を終え、2月中旬あたりから出資者の元へ届くようになりました。日本語キーボードレイアウトだと罠がたくさん待ち受けているとか、microSD/SIMカードを装着する蓋をいつか壊してしまいそうとか、MediaTekの高速充電機構Pump Expressに対応した充電器以外だと充電に時間がかかるor充電できないとか、キー押したら戻ってこないことがあるとか、「 最初の1,000台だけCPUのリビジョンが古いままだった」とかいろいろ話題にはなっているものの、概ね好評のようです。
残念ながらAndroid版ファームウェアの出荷を優先させたため、Linux版ファームウェアは今のところ正式にはリリースされていない状態です。3月頭にテスト版のイメージが公開されましたので、将来的には本連載でも紹介したいとは考えています。ちなみに現在のテストイメージは、ツール類がWindows版のみのサポートになっている他、そのWindowsではテストイメージをサイズが大きすぎて展開できないとか、Gemini PDA本体とUSBで接続しても書き込みツールがうまく認識しないときがあるとか、いろいろと「怖い」部分があるので、勇者以外はもう少し待つことをおすすめします。
Gemini PDAのキーボード設定
Gemini PDAはAndroidがプリインストールされているので、起動したらAndroidの初期設定が必要になります。ちなみにGemini PDAの初期状態のAndroidは7.1.1です。
この初期状態のキーボードアプリは日本語配列に設定してもFnキーのレイアウトが英語のままになるという不具合があります。このため特に「@マーク」が、つまりメールアドレスが入力できません[2] 。たとえば「アカウントの追加」設定でメールアドレスを入力するなら、入力フォームにフォーカスを合わせた際に画面右下に表示されるキーボードのボタンを押して、仮想キーボードを使うと良いでしょう。ちなみに仮想キーボードを無効化する場合は、仮想キーボード上の地球マークを長押しして設定ダイアログを表示します。
[2] 英語配列において@マークは「Shift+2」なのですが、Geminiの日本語配列の場合「Shift+2」は当然ながら「"」であり、@マークは 「Fn+J」になっています。そしてFnキーのレイアウトが英語だと「Fn+J」を押すと「"」が入力されました。
図2 記号系の入力は慣れるまで大変
Fnキーのレイアウト問題はキーボードアプリの更新で修正可能です。本来はPlayアプリでアップデートが表示されるはずですが、うまく更新されなかったのでいったん削除して、再度インストールしました。具体的にはキーボードのPlanetキー(左Altキー)を押すことで画面上に表示されるPlanetアイコンを長押しして、Planet Supportを選択します。ウェブブラウザーが立ち上がりサポートページ が表示されます。ページ内部のキーボードアプリへのリンク を選択して、その先のアプリケーションを更新してください。
図3 Planetアイコンのサブメニュー
更新後はAndroidの設定の「言語と入力」にある「物理キーボード」から「Japanese (english)」を選択し、再起動すれば設定完了です。3月頭時点でのキーボードアプリでは、「 半角/全角」が無効化されています。かな漢字変換をオンオフしたい場合は、「 Shift+Ctrl」を入力してください。
図4 物理キーボードの設定
Ubuntuとの連携:Nautilus(MTPとexFAT)
最近の一般的なAndroid端末は、PCとUSBケーブルで接続するとMTP(Media Transfer Protocol)でデータの送受信を行えます。このMTPですが、Ubuntu 16.10からインストール直後の状態でもサポートするようになりました。つまり最新の17.10を使っているのであれば、USBケーブルを繋ぐだけでNautilusが起動し、自動的にマウントされます。
Ubuntu 16.04 LTSの場合は別途パッケージをインストールする必要があります。いくつか方法はありますが、FUSEベースのjmtpfsを使う方法 が手順も少なくお手軽でおすすめです。必要になることはあまりないとは思いますが、この方法であればUbuntuサーバーでも比較的簡単に接続できます。
Androidであっても外部SDカードに対応した機種は少しずつ少なくなってきていますが、Gemini PDAにはmicroSDカードスロットを備えています。よってSDカードを経由してデータをやりとりすることも可能です。ただし、バックパネルは専用の工具でないと開けられないので、実際にPC側に接続するとしても初期化時などの最初の一度のみかもしれません。さて、そのmicroSDですが、SDXCの場合はexFATでフォーマットされます。このexFATでフォーマットしたmicroSDXCカードの場合、Ubuntuで認識させるためにはひと手間必要です。まずPC側のカードスロットもしくはカードリーダーがSDXCに対応している(SDXCのロゴがある)ことを確認します。その上で、以下のパッケージをインストールしてください。
$ sudo apt install exfat-fuse exfat-utils
あとはexFATのSDカードを接続したら、自動的にマウントされるはずです。exfat-utilsパッケージには、mkfs.exfat
やfsck.exfat
のようなexFAT操作ツールも備わっているので、必要に応じて使い分けると良いでしょう。
Ubuntuとの連携:OpenSSHクライアントとCLI環境
AndroidからUbuntuサーバーやデスクトップにsshログインできると何かと便利です。Gemini PDAには最初からJuiceSSH がインストールされています。sshクライアントさえあれば良いのであれば、JuiceSSHで十分です。ただ今回はsshクライアントに加えて、物理キーボードを活用できるCLI環境を構築したかったため、Termux をインストールします。
Termuxはrootが不要な端末エミュレーター兼Linux環境構築アプリです。Android上で動くGNOME端末みたいなアプリと思ってください。
おそらくもっとも特徴的な点は、APT/dpkgベースのパッケージ管理システムでしょう。Termux上でpkg
コマンドを入力することで任意のパッケージをインストールできます。このpkg
コマンドはapt
コマンドのラッパーであり、Termux上でapt
コマンドを使うことも可能です。
図5 PDFを見ながらCLIを使うことも可能なので、『 Linuxのしくみ 』の学習が捗る
ただしパッケージリポジトリはTermux独自のリポジトリ となっています。これはUbuntuの公式リポジトリのバイナリだとAndroid上で、そのまま動かすことはできないからです。TermuxリポジトリではAndroidで動くパッケージのみをリコンパイルしているだけでなく、パッケージ名も公式リポジトリとは異なっています。たとえばOpenSSHクライアントのパッケージ名はUbuntuだとopenssh-client
ですが、Termuxだとopenssh
となりサーバーとセットになっていますし、python
パッケージはPython
3をインストールします。よってパッケージ操作以外は「別物」という認識でいたほうがいいでしょう。以前はGCCなどもインストールできたようですが、Android NDKがGCCのサポートをやめてしまったため、今ではclangが標準のC/C++コンパイラになっています。
Termuxのホームディレクトリは、アプリのディレクトリです。またディレクトリ構造はAndroidのそれに従っているため、Linuxディストリビューションとは大きく異なります。これについてもUIは似ているものの、やはりそれ以外は「別物」です。ちなみにtermux-setup-storage
コマンドを実行し、ストレージへのアクセスを許可すれば、SDカードなどとデータのやり取りが可能になります。
root権限不要なchrootシステムであるPRoot を利用することで「普通のLinux環境」を構築する方法も用意されています。たとえばUbuntuを構築する方法 はスクリプトを実行するだけでUbuntu 17.10のCloud Imageをダウンロード・展開し、簡単にTermuxと切り替え可能なスクリプトを生成してくれます。PRootを利用した環境はディレクトリ構成やパッケージリポジトリも含めてオリジナルのLinuxディストリビューションと同じなので、「 オリジナルにかなり近いUbuntu環境」として利用可能です。
Ubuntuとの連携:adb
OpenSSHクライアントがあれば、Gemini PDAからUbuntuサーバーにログインし操作することが簡単になります。またopensshパッケージにはOpenSSHサーバーも含まれていますので、サーバーを立ち上げれば外部のPCからsshログインすることも可能です。
サーバー常時を立てるまでではないものの、PCからAndroid端末にログインしたいという用途であれば、デバッグ用のadb
コマンドを使う手もあります。特に本記事のように、執筆しながらAndroid端末のスクリーンショットを撮りたい場合に便利でしょう。
まずAndroid側で、USBデバッグを有効化しておきましょう。まずAndroidの設定画面の端末情報にある、「 ビルド番号」を何回かタップして「開発者モード」をオンにします。次に同じ設定画面にある「開発者向けオプション」にて「USBデバッグ」をオンにしたら、端末側の準備は完了です。
図6 デバッグをオンに
今度はPC側でadb
コマンドをインストールします。
$ sudo apt install adb
実はadb
コマンドは上記adbパッケージ以外にも、android-tools-adbパッケージからも提供されています。android-tools-adbパッケージは17.10からadbパッケージに統合されたので、今後はadbパッケージのみをインストールしてください。
Android端末をUSB接続し、USBデバッグモードを許可すると、以下のようにデバイスのシリアル番号が表示されます。
$ adb devices
List of devices attached
0123456789ABCDEF device
シリアル番号はどうも全台共通のようです。
たとえば端末にログインしてシェルを起動するなら次のように実行します。
$ adb shell
Planet:/ $ uname -a
Linux localhost 3.18.41 #1 SMP PREEMPT Tue Jan 30 19:21:20 CST 2018 aarch64
Planet:/ $ cat /proc/cpuinfo
Processor : AArch64 Processor rev 4 (aarch64)
processor : 0
model name : AArch64 Processor rev 4 (aarch64)
BogoMIPS : 26.00
BogoMIPS : 26.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
Hardware : MT6797T
Planet:/ $ exit
また、スクリーンショットを撮影しPC側にファイルをコピーするなら次のように実行します。
$ adb shell screencap -p /sdcard/screen.png
$ adb pull /sdcard/screen.png
あくまでデバッグ用途ではあるものの、adbを利用できる方法も覚えておくと、リモートからAndroid端末を操作したい時に何かと便利です。