EPISODE 02

モバイルワークを試行錯誤するブログ

Linux on Mate 10 Pro

Mate 10 ProのデスクトップモードでWindowsの仮想環境にログインして作業ができることが確認できたので、次は同じデスクトップモードでLinuxを使ってみたい。

Mate 10 Proのデスクトップモードについてはこちらのエントリーに記載している。

試したのは昨年リリースされた「Termux」というアプリ。この手のソリューションは以前からあったけどAndroidのrootを取る必要があったけど、このアプリはGoogle PlayからインストールするだけでローカルにLinux環境を構築できるというもの。

f:id:bcorp:20180217233748j:plain

https://termux.com

ある程度の制限はあるもののPythonやRubyなどのプログラミング言語が使えたり、vim、ssh、httpサーバが使えたりと、うまく使えばローカル開発環境がアプリのインストールだけで構築できるようになるというナイスなソリューション。

ということでMate 10 Proのデスクトップモードでの動作を試してみる。これができれば、デスクトップやラップトップと遜色ない環境が作れるはず。早速Mate 10 Proと外部モニターを接続してみると、特にエラーが出ることなく動いている様子。

f:id:bcorp:20180217232351j:plain

適当に、

$ apt install ruby

で、RubyをインストールしてみるとRuby 2.4.3がインストールされちゃんとirbも使えている。と、ここまではよかったのだけど、普通に利用するにあたって、いくつか致命的な欠点があることに気がついてしまった。

クリップボードが使えない

ブラウザや他のアプリからコピーして貼り付けること、Termux内での文字列のコピぺができない。キーボードショートカットを使っても、マウスのボタンを駆使しても駄目。

さすがにコピペせずに全部のコードを入力するのは面倒臭すぎる。で、次に考えたのがSSHクライアントによるTermuxへのログイン。TermuxはOpenSSHが利用できるので、SSHサーバとして動かした上で、コピペができる別のSSHクライアントアプリからTermuxへログインすることで、解決できるのではないかと。

手順の概要は、

1)TermuxでOpensshをインストール

2)鍵認証の設定

3)SSHクライアントアプリのインストールと設定

4)SSHクライアントからTermuxへログイン

利用するSSHのクライアントアプリはデスクトップモードで動作しかつコピペができるConnectBotを選択した。

1)TermuxでOpensshをインストール

$ apt install openssh

としてOpensshをインストールする

2)鍵認証の設定

ローカルアクセスしかしない想定なので、パスワード認証でもいいかなと思ったけど、Termuxではパスワード認証ではSSHによるログインができない仕様となっているとのこと。

基本は普通のLinuxサーバの設定と同じでいいけど、鍵はSSHクライアントからアクセスできる場所にコピーする必要があるので、鍵を作る前にTermuxからMate 10 Proのストレージにアクセス可能にする設定をしておく。

ストレージへのアクセス権限を付与

$ termux-setup-storage

鍵の生成とアクセス権限の付与

$ ssh-keygen

$ cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys

$ chmod 600 ~/.ssh/authorized_keys

$ chmod 700 ~/.ssh

生成した鍵をMate 10 Proからアクセスできるストレージにコピーする

$ cd .ssh

$ cp id_rsa > ~/storage/downloads

SSHサーバを起動する

$ sshd

3)SSHクライアントアプリのインストールと設定

ConnectBotを立ち上げて、鍵のコピーと接続に必要なパラメータを設定する。

f:id:bcorp:20180217234151j:plain

鍵は先程コピーしたディレクトリからファイルを指定する。

設定するパラメータは以下の2つ。

プロトコル:SSH

ユーザ名@ホスト名:ポート a@localhost:8022

f:id:bcorp:20180217234707j:plain

ユーザ名は接続に必要な条件ではないけど、入れないと保存ができないため適当な文字列を入力。ホスト名はlocalhostで問題なし。ポート番号はTermuxの仕様で8022番となる。SSHサーバになるTermuxを立ち上げたまま、クライアントのConnectBotから接続を試みると、特に問題なく接続された。

f:id:bcorp:20180217235640j:plain 左がSSHサーバ、右がSSHクライアント

f:id:bcorp:20180218000706j:plain

期待したコピペも問題なしで、さあ真剣に環境構築でもしようかなとvimを立ち上げたら次の課題に直面した。

日本語が入力できない

Termuxでも、ConnectBotでもIMEの切り替えができない。Mate 10 Pro側で物理キーボードの入力IMEをGoogle日本語入力、Gboard、iWnnに切り替えても反応なし。デスクトップモードにせず、Mate 10 Proの画面では仮想キーボード、外付けキーボードとも普通に入力できるので、どうやらデスクトップモードには対応していない様子。

Mate 10 Pro、Termux、ConnectBotの設定を色々と変えてみたけど改善はしなさそう。一応他のエディタで日本語を作成して貼り付けることはできるけど、作業効率が悪すぎることから、一旦ここで撤退。

まとめ

少なくとも日本語を利用しない前提であれば、Mate 10 ProのデスクトップモードでLinuxのシェルが動作することは確認できた。Linuxを使うにあたって考慮すべき点はたくさんあるけど、使い方によってはMate 10 Proが大きく化けるかもしれないと考えている。現時点では実に惜しいな、といった感想。

念のためAWSのLightsailに検証用として立ち上げたUbuntuインスタンスには、ConnectBotからSSHで接続することはできて、日本語も入力できている。

f:id:bcorp:20180218000758j:plain

オンライン前提だけどしばらくはMate 10 Proのデスクトップモードとクラウドのサーバで作業するほうが効率は良さそうという中途半端な結論になってしまったのだった。