○ Xenのビルド

*Xenを利用してバーチャルサーバを構成します
*xen-4.0.1-rc1(20100522現在)をソースからインストールし、設定します
*xen本体とlinux-2.6.18-xenを別々にビルドします
*stableなkernelソースは用意されていません
*デフォルトではlinux-2.6-pvopsをビルドします
*ビルドには /usrを含むディレクトリの空き領域が1.5Gバイト程度必要
*ビルド後は (空き容量の確保のため) 必要なファイルを残して、削除します
*make はメンテナンスマシンで行っています

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

**以降はコメントです
*ソースの取得、削除は省略します
*エディタ、ファイラーの操作は省略します
*ソースを展開したら説明文 (英文) を読みましょう
*Enterキーを省略します

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

○関連サイト

:xen-4.0-testing.hg (http://xenbits.xensource.com/)
:linux-2.6.18-xen.hg (http://xenbits.xensource.com/)
:mercurial-1.5.3.tar.gz (http://www.selenic.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, gtk2-devel,
python-devel, ncurses-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



○xenソースファイル

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

○mercurialのインストール

# cd /usr/src
# tar zxvf mercurial-1.5.3.tar.gz
# cd mercurial-1.5.3
# make PREFIX=/usr install

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

# cd /usr/src
# hg clone http://xenbits.xensource.com/xen-4.0-testing.hg

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

# cd /usr/src/xen-4.0-testing.hg
# hg pull -u

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

*デフォルトではgitコマンドでkernel.orgのレポジトリからソースを取得します
*make に KERNELS オプションを指定して変更できます
*本来は、xen-4.0-testing.hgの中にディレクトリが作られます

# cd /usr/src
# hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg

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

# cd linux-2.6.18-xen.hg
# hg pull -u

○iASL compilerのインストール

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

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



○xen-4.0.1-rc1

*xenとkernelを別々にインストールします
*uninstallを実行するとkernel (xen用) まで削除されます

# cd /usr/src
# chown -R root:root xen-4.0-testing.hg
# cd xen-4.0-testing.hg

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

# ln -s /usr/src/linux-2.6.18-xen.hg linux-2.6.18-xen.hg

*ioemu-dirを作成しておくと、ioemu-dir-findでエラーにならない
*ioemu(qemu-dm)を有効にする場合は、作成しない

# mkdir tools/ioemu-dir

*build環境のチェック

# cd 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

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

# cd 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

*udevadmまたはudevinfoが必要 (下記参照)

# cd /usr/src/xen-4.0-testing.hg

Makefileの修正 (詳細別記)

# vi Makefile
# vi config/x86_32.mk
# vi tools/blktap2/drivers/libaio-compat.h

# make world

# cd /usr/src/xen-4.0-testing.hg
# make uninstall
# make install

# cd ..
# cp -a xen-4.0-testing.hg xen-4.0.1-rc1
# cd xen-4.0.1-rc1
# rm -rf .hg
# cd ..
# tar cf xen-4.0.1-rc1-100522.tar xen-4.0.1-rc1/
# bzip2 xen-4.0.1-rc1-100522.tar
# rm -rf xen-4.0.1-rc1

*圧縮ファイルを展開して使う場合はオリジナル名に戻す

:xen-4.0-testing.hg/tools/check/check_udev

#!/bin/sh
# CHECK-INSTALL

. ./funcs.sh

case $OS in
OpenBSD|NetBSD|FreeBSD)
	has_or_fail vnconfig
	;;
Linux)
	has /sbin/udevadm && \
		udevver=`/sbin/udevadm info -V | awk '{print $NF}'`
	[ -z "$udevver" ] && has_or_fail udevinfo && \
		udevver=`udevinfo -V | awk '{print $NF}'`
	[ "$udevver" -ge 59 ] 2>/dev/null || \
		has hotplug || \
		fail "udev is too old, upgrade to version 59 or later"
	;;
*)
	fail "unknown OS"
	;;
esac



○linux-2.6.18.8-xen

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

# cd /usr/src
# chown -R root:root linux-2.6.18-xen.hg
# cd linux-2.6.18-xen.hg
# make mrproper

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

# cd /usr/src/xen-4.0-testing.hg
# make linux-2.6-xen-config CONFIGMODE=menuconfig
# cd build-linux-2.6.18-xen_x86_32
# cp .config /usr/src/linux-2.6.18-xen.hg

# cd /usr/src/linux-2.6.18-xen.hg

Makefile の修正 (参考)

# vi Makefile

# make menuconfig

config ファイルの修正 (参考)
*デフォルトではほとんどが静的なモデュールになっています
*次回からはこの config ファイルを使って make します

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

# make
# make modules_install
# make install

*/bootに下記のファイルが作成されているか確認
 vmlinuz-2.6.18.8-xen
 System.map-2.6.18.8-xen
 initrd-2.6.18.8-xen.img

# cd /usr/src
# cp -a linux-2.6.18-xen.hg linux-2.6.18.8-xen
# cd linux-2.6.18.8-xen
# rm -rf .hg
# cd ..
# tar cf linux-2.6.18.8-xen-100522.tar linux-2.6.18.8-xen/
# bzip2 linux-2.6.18.8-xen-100522.tar
# rm -rf linux-2.6.18.8-xen

*圧縮ファイルを展開して使う場合はオリジナル名に戻す


○moduleの修正

*リンクの切れたシンボリックリンクの削除 (kernelソースを残す場合は省略)

# cd /lib/modules/2.6.18.8-xen
# unlink build
# unlink source

○grub.confの修正

/boot/grub/grub.conf (別記)



○参考 makeのオプション設定

# cd /usr/src/xen-4.0.0

*xensource.comのレポジトリからソースを取得してmakeします

# make KERNELS="linux-2.6-xen" world
# make install

*xen,toolsを個別にmakeします

# make dist-xen
# make install-xen
# make dist-tools
# make install-tools

*kernelを個別にmakeします
*linux-2.6.18-xen.hgを参照し、build-linux-2.6.18-xen_x86_32が作成され
*config ファイルとビルドされたバイナリファイルが置かれます

# make linux-2.6-xen-config CONFIGMODE=menuconfig
# make linux-2.6-xen-build
# make linux-2.6-xen-install

*imgファイルを手動で作成します
*オプションは自分の環境に合わせて調整します

# mkinitrd -v -f --with=ahci --with=aacraid --with=sd_mod \
--with=scsi_mod initrd-2.6.18.8.img 2.6.18.8
# cp initrd-2.6.18.8.img /boot

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