2009年7月14日 (火曜日)

21:27:11 # Life chrootしないでchrootの中のバイナリを強引に実行。 開発用の android 環境にSDカード経由で Debian の chroot を展開してみた。 chroot しようと思ったが、chroot コマンドが無い。 chroot するためだけに static link の busybox とかを用意して chroot を実行するのは面倒。 とりあえず、ld.so は共有ライブラリを必要とするバイナリをロードしてくれる static linkな実行ファイルみたいなもののようなので、 libc.so の場所を教えてあげて、バイナリを実行できるようにしてあげると動くようだ。 これでchroot環境に用意した chroot コマンドを chroot 外部から実行できた。

# LD_LIBRARY_PATH=./lib:./usr/lib ./lib/ld-2.9.so ./usr/sbin/chroot .
LD_LIBRARY_PATH=./lib:./usr/lib ./lib/ld-2.9.so ./usr/sbin/chroot .
sh-3.2# export PATH=/bin:/usr/bin:/sbin:/usr/sbin
	

qemubuilder が用意した環境だったので、 ネットワーク環境の設定が qemu用になっていた。 resolv.conf と sources.list を修正して、apt-get が動作。とりあえず今日はここらへんで満足。

しかし、apt-get upgrade して最新の sid にしたら、 apt-get update が bus error に。 このカーネルは bus error をreportするという設定にしてあるような気がする。 Android ではそういう方針で設計してあるようだ。 apt-get が sigbus の状態ではどうしようもないので、とりあえず2、もしくは3に変更して、回避。

sh-3.2# cat /proc/cpu/alignment
cat /proc/cpu/alignment
User:		10
System:		78
Skipped:	0
Half:		19
Word:		59
DWord:		0
Multi:		0
User faults:	4 (signal)
sh-3.2# echo 2 > /proc/cpu/alignment
sh-3.2# cat /proc/cpu/alignment
cat /proc/cpu/alignment
User:		10
System:		78
Skipped:	0
Half:		19
Word:		59
DWord:		0
Multi:		0
User faults:	2 (fixup)
sh-3.2# 
	
Junichi Uekawa

$Id: dancer-diary.el,v 1.93 2009/01/04 03:42:29 dancer Exp $