amd64 etch 内に chroot で i386 etch を install.

Core2Duo な計算機でちょっとごにょごにょしている訳ですが, 使っている Fortran Compiler が 32bit 版だった, ということで, i386 etchchroot 内に作成する. 既に作成してある野良ビルドパッケージも使えるので(゜д゜)ウマー, と言うことで.

作成

とりあえず, /var/chroot/ia32 に作成することに(ところで ia32 って正しいのかな).

$ sudo -s
# mkdir -p /var/chroot/ia32
# cdebootstrap -a i386 etch /var/chroot/ia32 http://cdn.debian.or.jp/debian

環境設定

chroot 環境へ login

# chroot /var/chroot/ia32 /bin/bash

chroot 内の /etc/apt/sources.list を修正して, パッケージの追加と削除. locales の設定, 生活環境(zsh, lv, ..etc) を導入. 一旦 chroot 環境から抜ける.

# cp /etc/resolv.conf /var/chroot/ia32/etc
# cp /etc/passwd /var/chroot/ia32/etc
# cp /etc/shaddow /var/chroot/ia32/etc

で一旦リブートした後で, 親環境の /etc/fstab を修正.

#vi /etc/fstab
(以下を追加)
proc  /var/chroot/ia32/proc proc defaults 0 0
/tmp  /var/chroot/ia32/tmp  none bind     0 0
/home /var/chroot/ia32/home none rbind    0 0
(ここまで)
# mount -a

続いて, ld の symlink を作成して, /etc/ld.so.conf を修正し, ldconfig で更新.

# cd /lib
# ln -s /var/chroot/ia32/lib/ld-2.3.2.so ld-linux.so.2
# vi /etc/ld.so.conf
(以下を追加)
/var/chroot/ia32/lib
/var/chroot/ia32/usr/lib
/var/chroot/ia32/usr/X11R6/lib
/var/chroot/ia32/usr/local/lib
(ここまで)
# ldconfig -v

これで, chroot 内では i386 なパッケージが使える.

schroot

親環境で schroot を導入して, 一般ユーザでも login できるようにしておく.

# sudo aptitude install schroot
# vi /etc/schroot/schroot.conf
(以下を追加)
[ia32]
description=Debian etch(i386)
location=/var/chroot/ia32
priority=0
users=hogehoge,herohero
root-users=hogehoge
(ここまで)

これで, ユーザ hogehoge と herohero が chroot 内に login できる. また,
hogehoge さんは root 権限でも login できる.

一般ユーザでログイン
$ schroot -c ia32
I: [ia32 chroot] Running login shell: '/bin/bash'
$
....

環境変数の引き継ぎ(chroot 内で X 関連のファイルも起動可能)
$ schroot -c ia32 -p
I: [ia32 chroot] Running login shell: '/bin/bash'
$
...

chroot 内に root で login
$ schroot -c ia32 -u root
I: [ia32 chroot] Running login shell: '/bin/bash'
#
...

でもって, Fortran Comipler と必要な野良ビルドパッケージ install して, 計算走らせてみましたよ.

...あとはデーモンの起動と, 親子環境での syslog, logrotate かな.

ところで, Debianamd64(X86_64) で intel Fortran Compiler ver.10 動かしてる人ってどのくらいいるんでしょ? エラーも吐かずに SEGV しますよ. i386 で動いてたプログラムが.

うががが.