きりかノート 3冊め

おあそびプログラミング

テスト環境のディスクイメージをつくる

DarwinPortsWikiJP に「テスト用の chroot 環境をつくる」というのがあったのでトライ。

ディスクイメージ + chroot 環境のよい点は、dmg ファイルのマウント時に shadow ファイルを利用することで、書き込み内容は shadow ファイルにだけ持たせて、いつでもクリーンな環境をすぐ用意できることだ。まだ試してないけど、shadow ファイルを切り替えることで、環境の切り替えも簡単にできるんじゃないかと思う。

shadow ファイルを利用するには、hdid コマンドを利用する。kernelthead.comの「Mac OS X Filesystems」に union などファイルシステムについて、おもしろそうなことがいろいろ書いてあるけど、正直よくわからん。

で、ディスクイメージの作り方の手順は、リンクが切れてたのだけど「Building a Chroot on Mac OS X 10.4 and Opendarwin 6.x HOWTO」のようだ。英語だけど、手順はコマンドなのでほとんどみたまま。いくつかハマった点をメモ。

  • XcodeTools 2.2.1 では、DevSDK パッケージもインストールしたほうがよい
  • chroot 環境を使い終わったら、umount しないとディスクイメージをイジェクトできない

インストールは次のシェルスクリプトでやった。

#!/bin/sh

TARGET_DMG=/Volumes/10.4-hfs

export CM_BUILD=CM_BUILD

echo "###################"
echo "### install OSX ###"
echo "###################"
OSX_PKGS="BaseSystem Essentials BSD X11User"
DVD_PKG_DIR="/Volumes/Mac OS X Install DVD/System/Installation/Packages"
for pkgname in ${OSX_PKGS}
do
installer -pkg "${DVD_PKG_DIR}/${pkgname}.pkg" -target "${TARGET_DMG}"
done

echo "#########################"
echo "### update OSX 10.4.6 ###"
echo "#########################"
installer -pkg "/Volumes/Mac OS X 10.4.6 Combined Update/MacOSXUpdCombo10.4.6PPC.pkg" -target "${TARGET_DMG}"

echo "########################"
echo "### install DevTools ###"
echo "########################"
DEV_PKGS="DeveloperTools DevSDK gcc3.3 gcc4.0 BSDSDK X11SDK"
DEV_VOL_DIR="/Volumes/Xcode Tools/Packages"
for pkgname in ${DEV_PKGS}
do
installer -pkg "${DEV_VOL_DIR}/${pkgname}.pkg" -target "${TARGET_DMG}"
done

WindowServer を利用するような GUI アプリケーションの検証も、この chroot 環境でテストできるのかな?だとしたら、かなりうれしいのだけど。