Android上のchrootなLinuxでXfceを起動しようとしたが・・・
Android上のchrootなLinuxでGUIを起動している先人たちがいるので真似したが、現時点でうまく行ってない。
とりあえず、メモも兼ねて現状までまとめる。
SDカードの第2パーティションがext4になっててAndroid上で /storage/ext4sd にマウントされるようになってる。
/storage/ext4sd/.linux 以下にArch Linux(armv7)のrootfsを展開してある。
chrootの第1引数は新しいルートディレクトリだが、第2引数で実行するコマンドが指定できるので、env -iで環境変数を初期化する。
envの引数で更に実行するコマンドを指定できるので、bashを起動する。
ネットワークを使うには3003のグループを作成してユーザーを所属させる必要がある。
Arch Linux ではsystemdで動的に書き換えるようで /etc/resolv.conf がシンボリックリンクになってる。
削除してから書き込む。
8.8.8.8はGoogleの公開ネームサーバー。
ビデオデバイスは、fbdevを使うぽい。
Xfceは startxfce4 コマンドで起動できるようなんだが、 /dev/tty0 ないと言われて起動できない。startxコマンドでも同じ。
Android上で /dev を確認しても、 /dev/tty0 じゃなくて名前が違うぽい。
わからないんで、とりあえず現時点ではここまで。
あと、今回は /dev /proc /sys の3つをAndroid環境からハードリンクしている。
上記3つはメモリだからリブートすれば復活すると思うが、
先日、ネットワークの使い方がわからなくて試行錯誤している際に /system/bin をハードリンクして、
後始末の際にシンボリックリンクと間違えて rm -r で消しちゃってAndroidのROM焼きしなきゃ復旧できない事態になった。
後始末で消すときは、きちんとumountするか端末リブートするかで慎重にやらんとね。
とりあえず、メモも兼ねて現状までまとめる。
SDカードの第2パーティションがext4になっててAndroid上で /storage/ext4sd にマウントされるようになってる。
/storage/ext4sd/.linux 以下にArch Linux(armv7)のrootfsを展開してある。
cd /storage/ext4sd
まず、ディレクトリ移動。mount -o bind /dev .linux/dev
mount -o bind /proc .linux/proc
mount -o bind /sys .linux/sys
chroot環境の構築でカーネルは共有なので、システムが作成するディレクトリはmountでハードリンクする。mount -o bind /proc .linux/proc
mount -o bind /sys .linux/sys
busybox busybox chroot .linux env -i bash
chrootする。chrootの第1引数は新しいルートディレクトリだが、第2引数で実行するコマンドが指定できるので、env -iで環境変数を初期化する。
envの引数で更に実行するコマンドを指定できるので、bashを起動する。
groupadd -g 3003 aid_inet
gpasswd -a root aid_inet
idが3003のグループに所属していないとAndroidのカーネルによる制限でネットワーク(socket)が使えない。gpasswd -a root aid_inet
ネットワークを使うには3003のグループを作成してユーザーを所属させる必要がある。
su -
chrootした時点でプロンプトが[#]だが、suしないとグループ権限が使えない様でネットワーク使えないらしい。rm /etc/resolv.conf
echo "nameserver 8.8.8.8" > /etc/resolv.conf
DNSで名前解決をするためには /etc/resolv.conf にネームサーバーのアドレスを書いておけばいいが、echo "nameserver 8.8.8.8" > /etc/resolv.conf
Arch Linux ではsystemdで動的に書き換えるようで /etc/resolv.conf がシンボリックリンクになってる。
削除してから書き込む。
8.8.8.8はGoogleの公開ネームサーバー。
pacman -Syu
Arch Linuxのアップデート。pacman -S xfce4
pacman -S xorg-server
pacman -S xf86-video-fbdev
xfceを使うために必要そうなパッケージのインストール。pacman -S xorg-server
pacman -S xf86-video-fbdev
ビデオデバイスは、fbdevを使うぽい。
Xfceは startxfce4 コマンドで起動できるようなんだが、 /dev/tty0 ないと言われて起動できない。startxコマンドでも同じ。
Android上で /dev を確認しても、 /dev/tty0 じゃなくて名前が違うぽい。
わからないんで、とりあえず現時点ではここまで。
あと、今回は /dev /proc /sys の3つをAndroid環境からハードリンクしている。
上記3つはメモリだからリブートすれば復活すると思うが、
先日、ネットワークの使い方がわからなくて試行錯誤している際に /system/bin をハードリンクして、
後始末の際にシンボリックリンクと間違えて rm -r で消しちゃってAndroidのROM焼きしなきゃ復旧できない事態になった。
後始末で消すときは、きちんとumountするか端末リブートするかで慎重にやらんとね。