[[PageOutline]] = vbootstrap - bootstrap a basic Vine Linux system = == bootstrap == Vine Linux 上で Vine Linux のベースシステムを作成するためのスクリプト。 * chroot 環境の構築や Xen の DomainU 構築など * まずは Vine Linux 上で作成できるように。 他のシステム上でも作成できるようにするのは将来。 * 同様の仕組みをもつものとして plus に tiny-buildfarm があるが現状では 動作しない状態になっている。 == 開発の選択肢 == 選択肢としては以下のもの。 1. tiny-buildfarm をメンテナンスする 2. 独自スクリプト(vbootstrap?)を用意する a. __ホストの apt を利用した簡便なシステムにする__ b. bootstrap 用の static な apt を用意してつかう c. apt に頼らないで bootstrapping できるようにする 3. ~~[http://rpmstrap.pimpscript.net/ rpmstrap] を Vine Linux に対応させる~~ 4. [http://code.erisian.com.au/Wiki/debootstrap debootstrap] ベースで改造する 5. [http://xen-tools.org/software/rinse/ rinse] を調整 とりあえず、暫定的に 2.a. で vbootstrap-0.0.1 として用意する予定。 == とりあえずのchroot環境作成手順 == とりあえず、ホストと同じバージョンであれば、以下の手順で apt が使えるベースの chroot 環境はできる。 /dev などはほぼ空っぽなのでこのままではブートできるシステムにはならない。 {{{ INSTALLDIR=/path/to/root # rpmdb の初期化 mkdir -p $INSTALLDIR/var/lib/rpm rpm --initdb --root $INSTALLDIR # apt データベースの更新 apt-get -o RPM::RootDir=$INSTALLDIR update # 基本のパッケージをインストール for i in setup glibc coreutils bash rpm apt rootfiles do apt-get -y -o RPM::RootDir=$INSTALLDIR install $i done # vine-keyring を再インストール(上でいれた apt に再度読み込ませる) apt-get -y -q --reinstall -o RPM::RootDir=$INSTALLDIR install vine-keyring # resolv.conf をホストからコピー cp -a /etc/resolv.conf $INSTALLDIR/etc/ }}} 違うバージョンの chroot を作る場合は、apt に別の sources.list を読み込ませる。 * {{{/tmp/sources.list.4.2}}} {{{ rpm http://updates.vinelinux.org/apt 4.2/i386 main plus updates }}} * apt-get の追加オプション {{{ -o Dir::Etc::sourcelist=/tmp/sources.list.4.2 }}} * 完了後に rpmdb を再構築 {{{ rm -f $INSTALLDIR/var/lib/rpm/__db.00* chroot $INSTALLDIR rpm --rebuilddb }}} == 関連 bootstrap 機構 == * Debian: [http://code.erisian.com.au/Wiki/debootstrap debootstrap] * RPMベースシステム: [http://rpmstrap.pimpscript.net/ rpmstrap] (dead?) * RPMベースシステム: [http://xen-tools.org/software/rinse/ rinse] = vbuilder = vbootstrap を利用して chroot 環境の構築をサポートするスクリプトです。 特に、src.rpm を投げて chroot 環境上で自動的に rpm をビルドし、さらにインストールまでできるのが特徴です。 主な用途としては、ある src.rpm が必要とする BuildRequires: や Requires: の漏れを検証するために利用できます。例えば、self-build パッケージのような、ほとんどの環境でビルド可能なパッケージを作成するときに、BR: 検証を協力にサポートしてくれます。 簡単な実行例をヘルプで出すようにしていますが、 主な使い方は src.rpm を vbuilder へ投げて、ビルドできて、なおかつ、 インストールまでできるかをチェックすることです。 [vbootstrap-0.0.3 に同梱されている vbuilder] {{{ $ /usr/sbin/vbuilder Usage: vbuilder {--version [version]} {--arch [arch]} {--with-compat32} {--build-rpm [src.rpm]|--install-rpm [arch.rpm]|--remove-rpm [package]|--build|--clean} --version: set [version] (default: VineSeed) --arch: set [arch] (default: x86_64) --with-compat32: build with compat32 on boostrap --build-rpm: build [src.rpm] on boostrap --install-rpm: install [arch.rpm] on boostrap --remove-rpm: remove [package] on boostrap --build: build boostrap of [version] --clean: clean boostrap of [version] For example, * make a clean/plain build environment on the current archtecture: vbuilder --clean --build * build source RPM: vbuilder --build-rpm [src.rpm] * make a plain build environment for Vine Linux 4.2: vbuilder --version 4.2 --clean --build * make a i386 chroot on x86_64: vbuilder --arch i386 --clean --build * build compat32: vbuilder --arch i386 --with-compat32 --build-rpm [src.rpm] }}} 基本的な流れは以下の通りです。 {{{ $ sudo vbuilder --clean ← 必要であれば、あらかじめ chroot 環境を削除する。 $ sudo vbuilder --build $ sudo vbuilder --build-rpm hoge.src.rpm }}} これらは一度に渡すこともできて、 以下のようにすれば、順次 --clean → --build → --build-rpm のように実行します。 {{{ $ sudo vbuilder --clean --build --build-rpm hoge.src.rpm }}} == TODO == 当面の TODO は以下のとおりです: * vbootstrap に例外処理とかエラー処理を入れる * vbuilder のオプションの制御 * 別途 conf などの設定ファイルを作成 * chroot 内で build user つくって、そいつに rpmbuild させる (done)