Android環境上にLinuxをインストールしました。

Android環境上にLinuxをインストール

サーバー担当の前野です。

最近Androidを使った案件が増えてきて、
タブレット端末を身近に感じるようになりました今日この頃ですが、
先週金曜日にPGさんからAndroidにLinuxなんてインストールできるわけがない!
という話を聞いて早速試してみました。

archlinux.jpg

特定端末用にカスタマイズファームウェアなどもリリースされていますが、
今回構築するLinuxは上の図のようになっており、
本体のFWを書き変えない非常に簡単で安全(?)な方法とはいえ全て無保証です。
At your own riskを忘れないでください。

元環境のKernelを利用しているので、モジュール関連やSocketの作成に制約はあるものの、
最近の端末ではマルチコアCPUが搭載されて30分くらいでお手軽に構築できそうですね。

さて今回用いた端末は以下のスペックの端末です。

■マシンスペック

【本体】 ハロッズ HL-N12
【CPU】 Boxchip A10-1.2GHz ※ARM Cortex-A8互換
【RAM】 DDR2 512MB
【ROM】 8GB
【液晶サイズ】 7インチ静電式液晶(800×480)
【OS】 Android 4.0.1

■準備する環境

・作業を行うためのsshクライアントがインストールされたパソコン

・busyboxがroot権限で動くAndroid端末
自分の場合はsshサーバーのアプリをインストールしてroot取得し環境を構築しました。

・Android端末がスリープ状態に入らないようにするアプリ
普段はフォトフレーム用アプリを走らせているのでこのアプリをそのまま使いました。

・2GB以上のSDカード
ソフマップで500円だったpqi社の32GBマイクロSDを用いました。

・ARMが動くディストロ
今回はchroot環境で動くArch LinuxのARM版を使いました。

■インストール手順

sshでAndroid端末に接続して作業を行います。
ここでは/mnt/extsdがSDカード領域という事を前提に作業を行います。
多くのAndroid端末では/mnt/sdcardがSDカード領域ですが、自分の端末では/mnt/sdcardは内蔵ROMでした。

環境によってはdd、mknod、mkfs.ext2コマンドが省略されている場合もありますが、
busyboxに組み込まれているケースもあります。少なくとも自分の場合はそうでした。
また本体によってはコマンド名が変更されている場合もあるようですので頑張って探してみてください。

1. イメージの作成

# dd if=/dev/zero of=/mnt/extsd/linux.img bs=1M count=1800

まずはsdカード上に1.8GBの領域を作成します。

2. ファイルシステムの作成

# mkfs.ext2 -f /mnt/extsd/linux.img

3. loopデバイスの作成

# mknod /dev/loop256 b 7 256

上記に作成したイメージをマウントするためのloopデバイスを作成します。

4. 作成したイメージをloopデバイスにマウント

# losetup /dev/loop256 /mnt/extsd/linux.img

5. loopデバイスをマウントする領域を作成

# mkdir /mnt/linux

6. loopデバイスをシステム領域にマウント

# mount -t ext2 /dev/loop256 /mnt/linux

7. 先ほどマウントした/mnt/linuxに移動

# cd /mnt/linux

8. 最新のOSをダウンロード

# wget http://archlinuxarm.org/os/ArchLinuxARM-trimslice-latest.tar.gz

9. ダウンロードしたOSを解凍 (ここは結構時間がかかります)

# tar xvzf ArchLinuxARM-trimslice-latest.tar.gz

10. Androidのdev領域をchroot環境でも利用できるよう/mnt/linux/devにマウント

# mount -o bind /dev/ /mnt/linux/dev

11. これで環境が整ったので/mnt/linux領域をchroot

# chroot . /bin/bash

12. chroot後の初期設定

# echo “nameserver 8.8.8.8” > /etc/resolv.conf
# echo “export TERM=xterm” >> /etc/profile
# echo “export HOME=/root” >> /etc/profile

13. 必要領域のマウント

# mount -t proc proc /proc
# mount -t sysfs sysfs /sys

14. 環境変数の完成

# source /etc/profile

15. OS全体のアップグレード

# pacman -Syu

最新版にアップグレードをして完成です。

■総括

今回自分はこの方法でApache+PHPをインストールして簡単なウェブサーバーを構築する事ができました。
お手軽に持ち歩きができるウェブサーバーを構築したい人にどうでしょうか???

本当は社内のライトニングトーク向けのネタに考えたのですが、
短時間で環境を構築するには少しばかり長いので、ブログに記載しました。

最新ブログ一覧