○ Xen (unstable) のビルド

・Xenを利用してバーチャルサーバを構成します
・xen-unstableソースをmercurialで取得します
・stableなkernelソースは用意されていません
・デフォルトではlinux-2.6-pvopsをビルドします
・20100522現在、linux-2.6.31.13です
・再構築には /usrを含むディレクトリの空き領域が2.0Gバイト程度必要
・再構築後は (空き容量の確保のため) 必要なファイルを残して、削除します
・make はメンテナンスマシンで行っています

・詳しい内容は Xen 4.0 release notes を参照して下さい

・ソースの取得、削除は省略します
・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文を読みましょう
・Enterキーを省略します

・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます

○関連サイト

:xen-unstable.hg (http://xenbits.xen.org/hg/)
:mercurial-1.6.4.tar.gz (http://www.selenic.com/)
:git-1.7.3.2.tar.bz2 (http://git-scm.com/)
:acpica-unix-20100428.tar.gz (http://acpica.org/downloads/)

○参照ファイル

パッケージの追加
最初の設定 (Xen)

○インストール環境

:OS CentOS 5.5
:selinux disabled
:インストール先 
:作業 /usr/src
:言語 LANG=en_US.UTF-8
:ユーザー rootで実行

・メンテナンスは一般ユーザから行います



○Xenの構築に必要なパッケージ

・基本的な、LINUXの起動に必要なパッケージは省きます
・参考 xen-3.0.3-105.el5.src.rpm

○xenのmakeに必要

libidn-devel, zlib-devel, curl-devel, libX11-devel, python-devel,
ncurses-devel, gtk2-devel, libaio-devel, pciutils-devel, udev,
dev86, gettext, gnutls-devel, openssl-devel, flex, bison

○Xenの実行に必要

bridge-utils, hotpllug or udev, iproute, python, zlib, openssl

○GUI環境・ドキュメントの作成に必要

・ドキュメントを作成しない方針です

SDL-devel, transfig, texi2html, ghostscript, tetex-latex, perl

○stubdomの作成に必要

・makeの進行中にwgetでソースファイルを取得し、インストールします
・patchを当てているのでプレインストールではうまくいかないと思う
・ioemuを使わないのでstubdomを作成しない方針です

zlib, pciutils, newlib, lwip, grub, ocaml



○ソースファイルのダウンロード

・開発版をmercurialを利用してダウンロードします
・インターネットに接続できる必要があります

○mercurialのインストール

# cd /usr/src
[root@earth:/usr/src]
# tar zxvf mercurial-1.6.4.tar.gz
# cd mercurial-1.6.4
# make PREFIX=/usr install

○xenソースのダウンロード

# cd /usr/src
[root@earth:/usr/src]
# hg clone http://xenbits.xen.org/hg/xen-unstable.hg

・最新パッチを適用するには

# cd xen-unstable.hg
[root@earth:/usr/src/xen-unstable.hg]
# hg pull -u

○gitのインストール

# cd /usr/src
[root@earth:/usr/src]
# tar jxvf git-1.7.3.2.tar.bz2
# cd git-1.7.3.2
# ./configure
# make
# make install

○kernelソースのダウンロード

・省略した場合、xenの構築中に、gitで取得します
・本来は、xen-unstable.hgの中にディレクトリが作られます
・cloneの作成には時間と空き容量が必要(700Mバイト以上必要)

# cd /usr/src
[root@earth:/usr/src]
# git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git \
linux-2.6-pvops.git

・最新パッチを適用するには

# cd /usr/src/linux-2.6-pvops.git
[root@earth:/usr/src/linux-2.6-pvops.git]
# git pull -v

○iASL compilerのインストール

・"tools/firmware/hvmloader/acpi"で要求されます

# cd /usr/src
[root@earth:/usr/src]
# tar zxvf acpica-unix-20100428.tar.gz
# chown -R root:root acpica-unix-20100428
# cd acpica-unix-20100428/compiler
[root@earth:/usr/src/acpica-unix-20100428/compiler]
# make
# cp iasl /usr/local/bin



○xen-4.1-unstable

・xenとkernelを別々にインストールします
・uninstallを実行するとkernel (xen用) まで削除されます
・ioemu(qemu-dm)が有効な場合は、gitコマンドでファイルを取得します

# cd /usr/src
[root@earth:/usr/src]
# chown -R root:root xen-unstable.hg
# cd xen-unstable.hg
[root@earth:/usr/src/xen-unstable.hg]

・kernelソースへのリンクを作ります

# ln -s /usr/src/linux-2.6-pvops.git linux-2.6-pvops.git

・build環境のチェック

# cd tools/check
[root@earth:/usr/src/xen-unstable.hg/tools/check]
# ./chk build

    Checking check_crypto_lib: OK
    Checking check_curl: unused, OK
    Checking check_openssl_devel: OK
    Checking check_python: OK
    Checking check_python_devel: OK
    Checking check_x11_devel: OK
    Checking check_xgettext: OK
    Checking check_xml2: unused, OK
    Checking check_zlib_devel: OK
    Checking check_zlib_lib: OK

・インストール環境のチェック

[root@earth:/usr/src/xen-unstable.hg/tools/check]
# ./chk install

    Checking check_brctl: OK
    Checking check_crypto_lib: OK
    Checking check_curl: unused, OK
    Checking check_iproute: OK
    Checking check_python: OK
    Checking check_python_xml: OK
    Checking check_udev: which: no udevadm in (/sbin)
    OK
    Checking check_xml2: unused, OK
    Checking check_zlib_lib: OK

# cd /usr/src/xen-unstable.hg
[root@earth:/usr/src/xen-unstable.hg]

Makefileの修正 (詳細別記)

# vi Makefile
# vi config/x86_32.mk
# vi buildconfigs/src.git-clone
# vi tools/blktap2/drivers/libaio-compat.h

# make world
# cd /usr/src/xen-unstable.hg
[root@earth:/usr/src/xen-unstable.hg]
# make uninstall
# make install



○linux-2.6.31.13

・xenとkernelを別々にインストールします
・configファイルの作成に注意してください
・initrdファイルは "make install" の作業で作成されます
・grub.confに起動設定を書き込むので、xenに合わせて修正します

# cd /usr/src
[root@earth:/usr/src]
# chown -R root:root linux-2.6-pvops.git
# cd linux-2.6-pvops.git
[root@earth:/usr/src/linux-2.6-pvops.git]
# make mrproper

・configファイルの作成とコピー
・xenのディレクトリに戻り、configファイルを作ります

# cd /usr/src/xen-unstable
[root@earth:/usr/src/xen-unstable]
# make linux-2.6-pvops-config CONFIGMODE=menuconfig
# cd build-linux-2.6-pvops_x86_32
[root@earth:/usr/src/xen-unstable/build-linux-2.6-pvops_x86_32]
# cp .config /usr/src/linux-2.6-pvops.git

# cd /usr/src/linux-2.6-pvops.git
[root@earth:/usr/src/linux-2.6-pvops.git]
# make menuconfig

・Xen のモデュールは Drivers などに分散しています
・デフォルトではほとんどが静的なモデュールになっています
・次回からはこの config ファイルを使って make します

・Exit → Enterキーでセーブ画面
・セーブして終了

# make
# make modules_install
# make install

○ Copyright(c) 528p.com All Rights Reserved.