Android: Linuxディストリビューションをchrootで入れる

Android用のLinuxアプリをいろいろ試してみたところ、Linux Deployがよかったのでそれを元にDebianをインストールしました。XSDLサーバだとマウスの動きがおかしかったのでVNCにしたところ、思ったよりさくさくと動いてくれました。

結論から言うとインストールは難しい。まずアプリの画面からインストールすると途中で止まります。chrootでアクセスしようにもシェルがインストールされてないためできません。そこで同じアーキティチャーのChromebookのデスクトップからファイルのコンテナを作りそこにインストールします。そしてtarでアーカイブ化してスマホのファイルコンテナに展開します。まずはcroutonでchroot化したLinuxでコンテナを作成します。

# /usr/sbin/debootstrap --arch armhf jessie /mnt/debinst http://ftp.us.debian.org/debian

(注:同じarm環境で展開します。x86環境では動かないのでその場合はqemuを使います。

tarファイルとimgファイルは次の場所に保管しておきました。

https://labs.hottuna.tk/OpenWrt/stuff/android-arm7/

 

VNCではカーソルがおかしかったので次のように起動スクリプトに追加したら直りました。

xsetroot -solid grey -cursor_name left_ptr

SDカードではなく内部のフラッシュメモリにインストールしたので動作が軽快になり、これなら十分使えそうです。sshはアプリの設定で自動起動できるがvncの起動できなかったので、いったんログインして起動することになります。

VNCの設定

VNCはTightVNCを使用しました。Android特有のパミッションの問題は/etc/groupを編集します。

/etc/passwd:

_apt:x:116:3004::/nonexistent:/bin/false

ネットワークを使うには3004を指定します。gpasswdを使ってインプットします。

android_bt:x:3001:kalilinux,messagebus
android_bt-net:x:3002:kalilinux,messagebus
android_inet:x:3003:kalilinux,messagebus
android_net-raw:x:3004:kalilinux,messagebus,_apt

~/.vnc/xstartup:

#!/bin/sh

#unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS

xrdb $HOME/.Xresources:

xsetroot -solid grey -cursor_name left_ptr
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
# Fix to make GNOME work
export XKL_XMODMAP_DISABLE=1

#x-window-manager &
exec startxfce4

run_vnc.sh:

vncserver -geometry 980x560 -dpi 72 -localhost :1

client:

ssh {user}@{server} -L 5901:localhost:5901 -f -N
vncviewer localhost::5901

日本語環境

日本語環境はfcitxibus は作動しませんでした。scimは作動するのでscim+anthyが使えます。

Chromium ブラウザはChromebook: Samsung Chromebook(XE303C12)でcroutonを使うにある要領でインストールします。いくつかパッケージの依存関係があるのでaptで入れられるものはそれを使い、ないものはデビアンのパッケージ検索から引っぱってきてインストールします。

X2Go

vncに替わるもうひとつのリモートデスクトップ環境にX2Goがあります。こちらはデビアンのオフィシャルリポにはないため、X2Goサイトからインストールします。

 

サーバ側のスタートアップ

# x2godbadmin --createdb
# /etc/init.d/x2goserver start

vncのセットアップで作った~/.vnc/xstartup/usr/loca/binにコピーします。

Linux Deployの設定

Properties:

INT->Enable
Init system-> run-parts

SSH->Enable

X2Goはホスト名をせってしないと立ち上がらないので次のようにします。

/etc/rc.local:

hostname <hostname>

クライアント側のスタートアップ

$ x2goclient
  1. Session>New SessionでHost、Login、Session Type(Custom desktop)、Command(xstartup)とします
  2. Input/Output でデスクトップのサイズ、DPIを調整します。
  3. 右の窓の画面にセッション欄ができるのでそれをクリックすると、接続用画面が現れるのでパスワード入れOKをクリックするとスマホから送り出されたデスクトップが現れます。

References: