![]() |
LINUX |
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/) |
参照ファイル
インストール環境| :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]
# 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]
# 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の修正
参考 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. |

