○ Xenのビルド

・Xenを利用してバーチャルサーバを構成します
・xen-4.1.2-rc1-pre(20110617現在)をソースからインストールし、設定します
・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.1-testing.hg (xenbits.xen.org/hg/)
:linux-2.6.18-xen.hg (xenbits.xen.org/hg/)
:mercurial-1.8.4.tar.gz (http://www.selenic.com/)
:docutils-0.7.tar.gz (http://docutils.sourceforge.net/)
:git-1.7.5.4.tar.bz2 (http://git-scm.com/)
:ipxe.tar.gz (http://ipxe.org/download/)
:acpica-unix-20110527.tar.gz  (http://www.acpica.org/downloads/)

○参照ファイル

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

○インストール環境

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

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



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

・基本的な、LINUXの起動に必要なパッケージは省きます
・参考 xen-3.0.3-120.el5_6.1.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の作成に必要

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

zlib, pciutils, newlib, lwip, grub, ocaml

○iASL compilerのインストール

・"tools/firmware/hvmloader/acpi"で要求されます
・最新版でうまくいかない場合、previous_releases版を使います

# cd /usr/src
[root@earth:/usr/src]
# tar zxf acpica-unix-20110527.tar.gz
# chown -R root:root acpica-unix-20110527
# cd acpica-unix-20110527/compiler
[root@earth:/usr/src/acpica-unix-20110527/compiler]
# make

・iaslバイナリファイルをコピーします

# cp iasl /usr/local/bin



○ソースファイル

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

○mercurialのインストール

・必要なpythonモデュールをインストールします

# cd /usr/src
[root@earth:/usr/src]
# tar zxvf docutils-0.7.tar.gz
# chown -R root:root docutils-0.7
# cd docutils-0.7
[root@earth:/usr/src/docutils-0.7]
# ./setup.py install

・mercurialをインストールします

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

○gitのインストール

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

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

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

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

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

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

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

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

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

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

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

・"tools/firmware/etherboot"で要求されます
・ファイルが存在しない場合、構築中にwgetで取得されます

# cd /usr/src
[root@earth:/usr/src]
# git clone git://git.ipxe.org/ipxe.git
# cd ipxe
[root@earth:/usr/src/ipxe]
# git archive --format=tar --prefix=ipxe/ v1.0.0|gzip >../ipxe.tar.gz

xenのソースディレクトリにコピーします

# cd ../
[root@earth:/usr/src]
# cp ipxe.tar.gz xen-4.1-testing.hg/tools/firmware/etherboot

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

# cd /usr/src/ipxe
[root@earth:/usr/src/ipxe]
# git pull -v



○xen-4.1.2-rc1-pre

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

# cd /usr/src
[root@earth:/usr/src]
# chown -R root:root xen-4.1-testing.hg
# cd xen-4.1-testing.hg
[root@earth:/usr/src/xen-4.1-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
[root@earth:/usr/src/xen-4.1-testing.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_uuid_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-4.1-testing.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

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

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

Makefileの修正 (詳細別記)

# vi Makefile
# vi config/x86_32.mk

# make world

[root@earth:/usr/src/xen-4.1-testing.hg]
# make uninstall
# make install

# cd ..
[root@earth:/usr/src]
# cp -a xen-4.1-testing.hg xen-4.1.2-rc1
# cd xen-4.1.2-rc1
[root@earth:/usr/src/xen-4.1.2-rc1]
# rm -rf .hg
# cd ..
[root@earth:/usr/src]
# tar cf xen-4.1.2-rc1-110617.tar xen-4.1.2-rc1/
# bzip2 xen-4.1.2-rc1-110617.tar
# rm -rf xen-4.1.2-rc1

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

:xen-4.1-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
[root@earth:/usr/src]
# chown -R root:root linux-2.6.18-xen.hg
# cd linux-2.6.18-xen.hg
[root@earth:/usr/src/linux-2.6.18-xen.hg]
# make mrproper

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

# cd /usr/src/xen-4.1-testing.hg
[root@earth:/usr/src/xen-4.1-testing.hg]
# make linux-2.6-xen-config CONFIGMODE=menuconfig
# cd build-linux-2.6.18-xen_x86_32
[root@earth:/usr/src/xen-4.1-testing.hg/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
[root@earth:/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
[root@earth:/usr/src]
# cp -a linux-2.6.18-xen.hg linux-2.6.18.8-xen
# cd linux-2.6.18.8-xen
[root@earth:/usr/src/linux-2.6.18.8-xen]
# rm -rf .hg
# cd ..
[root@earth:/usr/src]
# tar cf linux-2.6.18.8-xen-110617.tar linux-2.6.18.8-xen/
# bzip2 linux-2.6.18.8-xen-110617.tar
# rm -rf linux-2.6.18.8-xen

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


○moduleの修正

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

# cd /lib/modules/2.6.18.8-xen
[root@earth:/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
[root@earth:/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.