« Linux kernel ビルド | トップページ | LifeTouch NoteにDebianを入れる2 »

2011年4月28日 (木)

LifeTouch NoteにDebianを入れる1

Life Touch NoteにLinux(Debian)を入れ、ブートさせることに成功したのでメモ。
以下Life Touch Noteは長いのでLTNと略して書く。

手順は以下のとおり

  1. SDカード上にLinuxのルートファイルシステムを構築。
  2. Androidでchrootした環境でDebianの設定
  3. リカバリーモード用のinitramfsを書き換え
  4. Linuxブート後の設定

事前に必要なこと

  1. LTNのroot化
  2. LTN上で動くbusyboxの用意
  3. Android上で無線LANの接続設定
  4. PCにadbでLTNに接続できる環境。またはLTN上で動く端末ソフトのインストール

この記事は上級者向けです。手順を間違えるとLTNが起動不能になる可能性もあります。

入れるLinuxはDebianのlenny。
最新のsqueezeにしたかったが、LTNのLinuxカーネルとの相性が悪くudevが動かない。(squeezeには、signalfdを有効にしたカーネルが必要だが、LTNのカーネルは有効になっていない)

今回は16GのSDHCカードを使用した。

SDにパーティションを切ってext3でフォーマット。
1番目はext3。2番目のパーティションはスワップ用に確保。
Command (m for help): p
Disk /dev/sdc: 15.9 GB, 15931539456 bytes
256 heads, 63 sectors/track, 1929 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1        1793    14458720+  83  Linux
/dev/sdc2            1794        1929     1096704   82  Linux swap / Solaris

最初この実験のため、SanDisk 16GB (Extreme Class6)のカードを購入し、それにLinuxの起動に必要なデータを入れて試していたが、apt-get 中、頻繁にwriteエラーやmmapエラーが出る。すごく不安定で使い物にならないので、違うPanasonicのSDカードで試してみると、エラーはまったく出なく調子が良くなった。

私のLTNと購入したSanDiskのカードとの相性が悪いのか、SanDiskのカードが壊れたのかわからない。でもSDカードにLinuxを入れて使うなら、PanasonicのSDカードが良いかもしれない。
使用しているのがPanasonicのSDHC 8GB(Class4)とPanasonicのSDHC 4GB(Class10)のもの。なるべくなら読み書きが早いほうがいい。

1.SDカード上にLinuxのルートファイルシステムを構築。

SDカード上にfdiskでパーティションを作成し、ext3でフォーマットする。ext4にしたかったがLTNのカーネルがext4をサポートしていなかったのでext3にする。
以下の作業はPCで行う。

私の環境だと、sdc1がSDカードの第1パーティション(PCのHDDと間違わないように注意すること)。

#mkfs.ext3 /dev/sdc1

次に、debootstrapコマンドで、最小構成のルートファイルシステムを作成する。
debootstrapコマンドがなければインストールする。

#apt-get install debootstrap

PCにディレクトリを作り、そこにLTN用のルートファイルシステムを作成する(/xxx/yyy/deb5以下に作成)。

#mkdir /xxx/yyy/deb5
#cd /xxx/yyy/deb5
#debootstrap --foreign --arch armel lenny /xxx/yyy/deb5 http://ftp.debian.org/debian/

昔、SharpのZaurusをDebian化しようとしてdebootstrapを使ったとき、--foreignオプションがうまく機能しなかった。今ならできるようだ。

apt-getでソフトを入れるために、SDカードに/etc/apt/sources.listを入れておく。
PCでDebianが動いているならPC上のsources.listが使えるので、
それをSDカードにコピーする。sources.listの中身にsqueezeを指定してあるなら、
編集してlennyにする。ここではいったん規定の/etc/apt/の下ではなく/にコピーしておく。

#cp /etc/apt/sources.list /xxx/yyy/deb5/

deb5をtarで固めてSDカード上で展開(/mnt/hd1はマウント先の例)。

#tar cfz ../deb5.tar.gz *
#mount /dev/sdc1 /mnt/hd1
#cd /mnt/hd1
#tar xfpz /xxx/yyy/deb5.tar.gz
#umount /mnt/hd1

2.Androidでchrootした環境でDebianの設定

ここからはLTN上で作業する。

SDカードをLTNに挿入してLTNを普通に起動する。
LTN上で動いている端末ソフトか、PCからLTNへadb経由で接続し、LTN上のコンソールにて操作できるようにしておく。

SDカードに作ったルートファイルシステムにchrootする。
chrootした環境でdebootstrapの2nd stageを実行する。
Android上で無線LANにてネットワークに接続可能になっていれば、chrootした後の環境でもネットワークに接続することが可能。それを利用して必要なソフトもインストールできる。

以下LTN上のコンソール。
(mmcblk2p1 はSDカード)

$su
#busybox mount /dev/block/mmcblk2p1 /sdcard
#busybox chroot /sdcard
#export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/debootstrap
#export TERM=linux
#mount -t proc none /proc
#mkdir /dev/pts
#mount -t devpts none /dev/pts
#mount -t sysfs none /sys
#debootstrap/debootstrap --
second-stage

Base system installed successfully.
と出て終了するはず。

apt-get コマンドで必要になりそうなものをインストール。
/にコピーしてあったsources.listを規定の場所へ移動しupdate。

#mv /sources.list /etc/apt/
#apt-get update
#apt-get install wireless-tools
#apt-get install wpasupplicant

Debianで起動させるための事前設定をする。

ユーザーの追加やrootパスワード、hostname、キーボードの設定をする。

#adduser xyz
#passwd
#echo "xxx" > /etc/hostname

タイムゾーンをTokyoに設定。
#dpkg-reconfigure tzdata
キーボードをJapaneseの106に。
#apt-get install console-tools

chroot環境を抜けて、Android上の/dev/ファイルの中身をSDカードの/dev/へコピーする。
#exit
lsでAndroidのルートファイルシステムが表示されることを確認。
initやinit.rcが見えればよい。

#cd /sdcard/dev
#busybox cp -R /dev/* .

続きは2で。



« Linux kernel ビルド | トップページ | LifeTouch NoteにDebianを入れる2 »

LifeTouch Note」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: LifeTouch NoteにDebianを入れる1:

« Linux kernel ビルド | トップページ | LifeTouch NoteにDebianを入れる2 »