debootstrapとchrootでAMD64環境内にi386環境を構築する
Android SDKがx86(i386)版しかリリースされていないので、Android開発環境*1をchrootしたi386環境から起動することにした。
まずは、debootstrapを使用してi386のシステムディレクトリツリーを構成する。
今回は、/var/chroot/i386以下にシステムディレクトリツリーを構成した。
# mkdir -p /var/chroot/i386 # debootstrap --arch i386 lenny /var/chroot/i386 http://ftp.jp.debian.org/debian I: Retrieving Release I: Retrieving Packages (中略) I: Base system installed successfully.
次にプロセス情報、テンポラリディレクトリ、ホームディレクトリをAMD64環境と共有するために、/etc/fstabに設定追加する。
(/etc/fstab) proc /var/chroot/i386/proc proc defaults 0 0 /tmp /var/chroot/i386/tmp none bind 0 0 /home /var/chroot/i386/home none bind 0 0
上記設定をマウントする。
# mount /var/chroot/i386/proc # mount /var/chroot/i386/tmp # mount /var/chroot/i386/home # mount (中略) proc on /var/chroot/i386/proc type proc (rw) /tmp on /var/chroot/i386/tmp type none (rw,bind) /home on /var/chroot/i386/home type none (rw,bind)
ユーザ情報、グループ情報をAMD64環境からコピーする。
# cd /var/chroot/i386/etc # mv passwd passwd.`date +%Y%m%d%k%M%S` # mv group group.`date +%Y%m%d%k%M%S` # mv gshadow gshadow.`date +%Y%m%d%k%M%S` # mv shadow shadow.`date +%Y%m%d%k%M%S` # cp -p /etc/passwd . # cp -p /etc/group . # cp -p /etc/shadow . # cp -p /etc/gshadow .
さらに、AMD64環境からi386環境のld-linux.so.2を使えるように設定する。
# cd /lib # ls -l ld-linux.so.2 lrwxrwxrwx 1 root root 34 2009-04-12 13:08 ld-linux.so.2 -> /emul/ia32-linux/lib/ld-linux.so.2 # rm ld-linux.so.2 # ln -s /var/chroot/i386/lib/ld-2.7.so ld-linux.so.2 # ls -l ld-linux.so.2 lrwxrwxrwx 1 root root 30 2009-07-20 23:38 ld-linux.so.2 -> /var/chroot/i386/lib/ld-2.7.so
/etc/ld.so.confにライブラリパスを設定する。
# vi /etc/ld.so.conf.d/i386_ld.so.conf (/etc/ld.so.conf.d/i386_ld.so.conf) /var/chroot/i386/lib /var/chroot/i386/usr/lib /var/chroot/i386/usr/local/lib # ldconfig
そして、一般ユーザでi386環境に入れるように、dchrootパッケージをインストールし設定する。
# aptitude install dchroot # vi /etc/dchroot.conf (/etc/dchroot.conf) lenny-i386 /var/chroot/i386 stable /var/chroot/i386
これで、dchrootコマンドでi386環境に入れる。
$ dchroot -c lenny-i386 I: [lenny-i386 chroot] Running login shell: '/bin/bash'
ところが、現状だとi386環境にベースシステムしかインストールされていないため、X Window Systemのアプリケーションが起動できないので、X Windows SystemおよびGNOME環境をインストールする。
# chroot /var/chroot/i386 # aptitude install gdm gnome x-window-system
あとは使用したいアプリケーションを、i386環境にchroot*2してインストールするだけ。
AMD64環境からi386環境のアプリケーションを起動する場合は、dchrootコマンドに-dオプションを付けて起動する。
$ dchroot -c lenny-i386 -d eclipse
私は、この後にi386環境にAndroid開発環境をインストールした。
Android開発環境のインストールについては、以下を参照のこと。