いろんな OS の中で Linux 環境が使えるようになってきました。OS の中に同居し、Native なアプリと同時に Linux のソフトウエアも走らせられるようになっています。ハードウエアまるごとエミュレーションする仮想 PC とは異なります。RAM やストレージに境界はなく、カーネルをそのまま共有しつつシステムに間借りする形で動きます。

Windows WSL (Windows Subsystem for Linux)
Chrome OS Linux Apps, Crouton, Android Apps
Android UserLAnd



● Windows 10 WSL

複数の Distribution が用意されており、Microsoft Store からアプリとしてインストールできます。事前に WSL を有効化しておく必要があります。

(1) 設定→ 「アプリと機能」→「プログラムと機能」→「Windows の機能の有効化または無効化」
(2) 「Windows Subsystem for Linux」にチェックを入れて再起動。


● Chrome OS (Chromebook/Chromebox 等)

ChromeOS は Chrome Browser のための Platform です。普段 PC で Chrome ブラウザを使っているなら、Chrome OS に触ると大半の作業がブラウザで事足りることに気が付きます。利用できる Chrome アプリは限られているものの、必要なら Android や Linux アプリを使うことができます。アプリ選択の自由度は意外に高くなっています。

現在 Chrome OS デバイスで Linux を走らせる方法は複数あります。それぞれ複数の Distribution から選ぶことができます。(Linux Apps を除く)

公式に対応した Linux Apps は対応機種がまだ少ないですが、Developer mode に切り替える必要がないので非常に扱いやすくなりました。

インストール&起動方法で分けると下記の 3種類です。


(1) Native Install

 普通の PC と同じように Linux をゼロから install します。Gallium OS 他。

(2) Dualboot (ChrUbuntu)

 カーネルを流用して Linux を起動します。boot 時に選択します。(ChrUbuntu)

(3) Chrome OS と同居

 コンテナとして Chrome OS 上で動きます。Chrome OS と同時利用が可能。


さらに (3) の方法にも複数の選択肢ができました。

1. Crouton : chroot で Linux を install。古くから存在し多くのデバイスで利用可能。

2. Android Apps : Android アプリとして Linux 環境 (UserLAnd 等) を install

3. Linux Apps (crostini) : ChromeOS 公式の Linux 環境


2. および 3. は比較的新しい機種のみ対応しており、古い機種では使うことができません。

なお Crouton は Chrome OS 内に Linux Desktop を表示できますが、X11 の動作モードが 2種類あります。(sudo startsfce4 -X xiwi 等のオプションで切り替え)

・xiwi : Chrome OS のウィンドウの一つとして表示。ソフトウエア描画。

・xorg : 全画面を乗っ取ってしまうがハードウェアアクセラレーション対応。

下記画面は Crouton の xiwi で Linux Desktop を表示したものです。

{image}

GitHub: Crouton
GitHub: ChrUbuntu
Gallium OS


● Android

(UserLAnd) は Android アプリとして Linux 環境を install します。root 無しに利用可能で、複数の Distribution から選ぶことができます。現在は Arch, Debian, Kali, Ubuntu の 4種類用意されているようです。

アプリからは SSH Terminal, VNC の 2種類の接続方法を選ぶことができます。公式サイトにあるように X Server も使えます。

 1. アプリ install
 2. 任意の Distribution を選択 (Debian, Ubuntu 等)
 3. フォルダへのアクセス許可
 4. ユーザー名とパスワードの入力
 5. 利用方法の選択 (SSH or VNC) あとから変更可能
 6. 初回のみ ConnectBot or bVNC Free の install
 7. 6. で install した場合はアプリに戻ってもう一度選択すると起動


VNC 利用時の desktop install 手順。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install lxde
$ mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
$ cp /usr/bin/startlxde ~/.vnc/xstartup


VNC の解像度変更方法

"~/.vnc/tightvncserver.conf" を作成して下記のように任意の解像度を書き込む。この指定がない場合 1024x768 になっています。

$geometry = "1280x720"


2160x1080 や 1920x1080 等、スマートフォンで実解像度を指定すると小さすぎて文字が読めなくなる可能性があるので注意。↓ は ZenFone AR の画面です。

null

UserLAnd


関連エントリ
ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
Android/Linux MaruOS その4
Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04


MaruOS 0.3 が Release されています。Windows 10 Mobile の Continuum 同様に外部モニタ接続で Linux Desktop が使えるのはもちろん、外部モニタなしでも使えるようになっています。それ以外にも Android 側が 6.0.1 になるなど色々改良されているようです。

maruos08.jpeg

Dashboard は設定画面から呼び出すことが出来ます。

maruos09.jpeg

これでいつでも Linux Desktop の起動と Shutdown が可能です。
Android 側に VNC や ssh client のアプリを入れておけば、端末単体でも Linux アプリケーションを利用することが出来ます。VNC server はデフォルトでは起動していないので、VNC を使う場合でも最初は ssh が必要です。

ただし以前はバグを利用して、端末本体に Native な Desktop 描画が出来ていたのですが、修正されているようです。


関連エントリ
Android/Linux MaruOS その3
Android/Linux MaruOS その2
Nexus 5 に Maru OS を入れてみた


コメントでも質問を頂いたので、もう少し詳しく書いてみます。
Maru OS は Windows 10 Mobile の Continuum のように、Android と Linux (Debian) Desktop が共存可能な OS となっています。

Linux on Android 等と違うのは、Android 環境を含めた Custom ROM として作られていることです。そのため既存の Android 環境に後付で install することは出来ず、Android OS 自体も置き換わります。

また端末単独で使うことを想定しておらず、外部の HDMI モニタ接続時のみ Desktop 環境が出現します。(前回のように端末側に Desktop が表示されることもあります)

Desktop 環境を使うためには、Bluetooth の Mouse や Keyboard と外部モニタを繋ぐための Slimport アダプタが必要です。

詳しくは 公式サイト を参照して下さい。
下記の内容は Nexus 5 と 0.2.3 の時点での内容となっています。


● Install 時にストレージ内容は消去されます

現時点の 0.2.3 が対応しているのは Nexus 5 だけとなっています。
インストーラがついているので手順は簡単ですが、ストレージのデータも OS も一旦全部消えます。Android 5.1.1 なので、Nexus 5 に提供されている公式の Android よりも古くなるのでご注意下さい。


● Play store は含まれていません

Android 側に含まれているアプリは最小限で Play Store など Google Apps がありません。FAQ で Google Apps の install 方法が提示されているので、その手順に従って追加する必要があるようです。


● HDMI モニタとの接続は Slimport です (Nexus 5)

Nexus 5 自体が HML に対応していないので HML アダプタは使えません。ご注意下さい。


● Maru Desktop Dashboard

外部モニタに接続して Desktop 環境がスタートすると、Android 側にも Maru Desktop Dashboard というアプリが起動します。ステータスバーのアイコンから呼び出せるので、Desktop 環境の Shutdown もここから行うことが出来ます。

HDMI ケーブルを抜いても、Maru Desktop Dashboard が起動している間は Desktop が残っています。移動先で再び HDMI に繋ぐと、そのままの状態で Desktop が復帰します。


● Desktop と Application

Desktop 環境は Debian 8 Jessie となっており apt (apt-get) でいろいろと install できます。
OpenGL ES ではなく OpenGL に対応しているためか、結構ソフトが動くようです。
使用している人の動画を見ると Blender も動いていることがわかります。
ただし GPU が使われていない (ソフトウエア描画) のでそれなりに低速です。


● Mouse, Keyboard のペアリング

Bluetooth デバイスのペアリングは Android 側の設定画面から行います。
マウスやキーボードで Android 側の UI は一切操作できず、Desktop 側の操作専用となります。
両方操作できてしまうと混乱するので当然かもしれません。


● Desktop 画面を本体に表示する

前回 の手順の詳細です。

1. 画面の回転を有効にしておく
2. もし起動しているなら Desktop を Shutdown しておく
3. HDMI モニタの電源を入れておく。
4. Slimport アダプタにモニタと繋がった HDMI をつなぐとステータスバーに Dashboard のアイコンが表示されるので、すぐにケーブルを抜く
5. 数秒後に Desktop が Android 本体の上半分に表示される
6. 隠れて見えないが上のタスクバーからスライドして通知領域を下に引き出す
7. Maru Deskto running の通知をタップして Maru Desktop Dashboard を開いた状態にする
8. 本体を横向きにして Desktop が全画面になる

Buletooth マウス・キーボードで操作できます。タッチ操作は出来ません。
電源の入った HDMI モニタを実際に繋がないと Desktop が起動しないようです。

Home ボタンを押すなど Maru Desktop Dashboard が裏側に回ると画面の回転が出来ないので、再び通知領域を引っ張って Maru Desktop running の通知を選択し、Dashboard 画面を開く必要があります。

電源ボタンを押しても (Sleep しても) 有効です。このまま持ち歩けますが、画面の上半分に常時 Desktop が表示されているので Android はほぼ使えなくなります。

終了させる場合は手探りです。Dashboard の右上あたりのボタンを OFF にしてから「SHUTDOWN」を選びます。

↓壁紙が似てるのでわかりにくいですが、上半分が Desktop です。
maruos_nexus5_01.jpeg

↓このように通知領域を引き出して Maru Desktiop running を開きます。
maruos_nexus5_02.jpeg


● VNC を使う

Android を併用しつつ本体で Desktop の内容を確認したいなら VNC を使う方法もあります。
Desktop 側で server を起動して Android で VNC client アプリを使います。
Bluetooth マウスやキーボードを使うと反応が遅れるので遅延が気になりますが、Android とすぐに切り替えできますしタッチパネルや仮想キーボードが使えるのは便利です。

遅延があるので、マウス・キーボードを使うならやはり上の直接描画の方が早くて快適です。


関連エントリ
Android/Linux MaruOS その2
Nexus 5 に Maru OS を入れてみた


Maru OS は Windows 10 Mobile にある Continuum の Android 版のようなものです。普段は Android の Smartphone ですが、Keyboard や HDMI モニタを繋ぐと Linux Desktop として使うことが出来ます。(前回)

maruos06.jpeg

HDMI 接続時のタイミングによっては、外部モニタではなく本体側に Desktop が表示されることがあります。これはこれで便利なのでそのまま使っています。(Slimport 経由で外部モニタ接続 → Dashboard 起動直後に切断)
Mouse, Keyboard は Desktop 用にペアリングしたものが使えます。解像度が 1920x1080 なので、外部出力と一致していることから本当にそのままです。


関連エントリ
Nexus 5 に Maru OS を入れてみた
Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04
Nexus 7 上に開発環境をつくる (3) Ubuntu
Nexus 7 上に開発環境をつくる (2) Bluetooth と OpenGL ES 2.0


Android 7.0 (Nougat) の対象外になった Nexus 5 ですが、MaruOS が動くらしいので入れてみました。HDMI 経由でモニタを接続すると Desktop PC として使えるようになります。

Maru OS

中央の小さい画面が Nexus 5 16GB model です。後ろのモニタは 11inch (OnLap 1101H)

maruos01.jpeg


↓ 起動すると普通の Android の画面。OS は Android 5.1.1。アプリは最小限

maruos03.jpeg


SlimPort 経由で HDMI 接続すると Debian の Desktop になります。Keyboard や Mouse は予め Bluetooth で接続しておく必要があります。

maruos04.jpeg


Nexus 5 以外に必要な物は下記の通り

・SlimPort の HDMI アダプタ
・Bluetooth Keyboard
・Bluetooth Mouse

Bluetooth のペアリングは Android 側で行います。ペアリングと接続が完了しても Android 画面の操作が出来ないので注意が必要です。Desktop 側の操作だけマウスとキーボードが有効になっているようです。Bluetooth 接続後の動作確認のために HDMI を先に繋いでおくことをおすすめします。

Desktop は Linux そのままです。開発環境を整えてアプリケーションビルドなども普通にできます。HDMI ケーブルを外しても状態は残っているので、再びケーブルを繋ぐと以前の画面のまま復帰できるようです。Android 側の操作で終了させることも出来ます。

Nexus 5 本体の電源ボタンを押す (Sleep する) と Desktop 側も Sleep してしまうようです。使うときは Nexus 本体側の画面も常時点灯状態にしておく必要あり。

Mobile 端末で動く Desktop 環境としては思ったよりもレスポンスが良く十分使えそうです。RAM が多い上に CPU 世代も違うので当然ですが、以前使っていた Nexus 7 (2012) の Linux (Ubuntu) や NetWalker、古い Raspberry Pi よりも快適でした。

下記はビルド時間の比較。

                    real   user      CPU         clock  core
-------------------------------------------------------------
Nexus 5 + MaruOS    3:29   4:42      Krait 400   2.3GHz  4
Raspberry Pi 2      5:51  20:08      Cortex-A7   0.9GHz  4
Raspberry Pi 3      2:18   6:57      Cortex-A53  1.2GHz  4

real, user 共に実行時間。(分:秒) 値が小さい方が高速。

実際の時間 (real) では Raspberry Pi 3 に敵いませんが Raspberry Pi 2 よりは早く完了しています。user 時間が最も短いため core 自体の能力は高いことがわかります。Thread の恩恵が少ないのでストレージが遅いか描画に取られているのかもしれません。

OpenGL API に対応しており GL 2.1 + ES 2.0 が使えます。ソフトウエア描画なので GPU は用いられていません。かなり低速ですが一応 3D 描画できました。1~2 fps 程度。

maruos05.jpeg


関連エントリ
Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04
Nexus 7 上に開発環境をつくる (3) Ubuntu
Nexus 7 上に開発環境をつくる (2) Bluetooth と OpenGL ES 2.0
Android Tablet Nexus 7 上に開発環境をつくる (Ubuntu)
NetWalker PC-Z1 i.MX515 OpenGL ES 2.0 (2)



| 次のページ(日付が古い方向)>>