○ Xenのビルド

・xen-4.3.xはx86/32をサポートしません
・citrixのサポートファイルダウンロードにはログインアカウントが必要です

・Xenを利用してバーチャルサーバを構成します
・xen-4.2.1をソースからインストールし、設定します
・xen本体とlinux-2.6.32.43を別々にビルドします
・VT未対応のIntelCPUのために、"Xenlinux"ベースのkernelを使います
・kernelソースは citrixのサポートファイルから作成します
・ビルドには ~/srcを含むディレクトリの空き領域が1.5Gバイト程度必要です
・インストール後は (空き容量の確保のため) 必要なものを残して削除します
・make はメンテナンスマシンで行っています

・再起動する場合はdomU、dom0を停止してから再起動しましょう

・詳しいリリース内容は Xen_4.2_Release_Notes を参照して下さい
・バージョンによる違いは Xen_Release_Features を参照して下さい

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

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

○関連サイト

:xen-4.2.1.tar.gz (http://www.xenproject.org/)
:XS61E074.zip (https://www.citrix.com/support)
:bridge-utils-1.5-13.fc24.src.rpm  (http://dl.fedoraproject.org/)
:git-2.10.1.tar.gz (http://git-scm.com/)
:ipxe.tar.gz (http://ipxe.org/download/)
:acpica-unix-20160930.tar.gz (http://www.acpica.org/downloads/)

○参照ファイル

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

○インストール環境

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

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



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

○xenのmakeと実行に必要なパッケージ

・READMEより (依存性のあるパッケージも必要)

gcc, make, binutils, zlib-devel, python-devel, ncurses-devel
openssl-devel, libX11-devel, libuuid-devel, yajl-devel
libaio-devel, glib2-devel, pkgconfig, bridge-utils, iproute
udev, bison, flex, gettext, dev86, iasl, python-markdown
git, wget

○ドキュメントの作成に必要

・docs/Docs.mkより (依存性のあるパッケージも必要)
紫色 docのmakeに必要な最小限のパッケージ

ghostscript, texlive-dvips, texlive-latex, transfig, latex2html
doxygen, perl, graphviz, python-markdown

○stubdomの作成に必要

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

zlib, pciutils, newlib, lwip, grub, ocaml

○bridge-utilsのインストール

・fedoraのsrc.rpmから作成します

# rpm -ivh --nosignature bridge-utils-1.5-13.fc24.src.rpm
# cd ~/rpmbuild/SPECS
[root@earth:~/rpmbuild/SPECS]
# rpmbuild -ba --clean --rmsource \
--define 'dist .mn' bridge-utils.spec
# cd ../RPMS/i686
[root@earth:~/rpmbuild//RPMS/i686]
# rpm -Uvh bridge-utils-1.5-13.mn.i686.rpm

・または

# yum localinstall bridge-utils-1.5-13.mn.i686.rpm

・必要のないファイルの削除 (省略)


○iASL compilerのインストール

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

# cd ~/src
[root@earth:~/src]
# tar zxf acpica-unix-20160930.tar.gz
# chown -R root:root acpica-unix-20160930
# cd acpica-unix-20160930
[root@earth:~/src/acpica-unix-20160930]
# make clean
# make iasl

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

# cp generate/unix/bin/iasl /usr/local/bin

# cd ~/src
[root@earth:~/src]
# tar jcf acpica-unix-161017.tar.bz2 acpica-unix-20160930/



○ソースファイル

・makeの実行中にwgetまたはgitを利用してファイルを取得します
・インターネットに接続できる必要があります

○gitのインストール

# cd ~/src
[root@earth:~/src]
# tar zxvf git-2.10.1.tar.gz
# chown -R root:root git-2.10.1
# cd git-2.10.1
[root@earth:~/src/git-2.10.1]
# ./configure
# make
# make install

# cd ~/src
[root@earth:~/src]
# tar jcf git-2.10.1-161017.tar.bz2 git-2.10.1/

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

・"tools/firmware/etherboot"で要求されます
・makeの実行中にwgetまたはgitで取得されます

# cd ~/src
[root@earth:~/src]
# git clone git://git.ipxe.org/ipxe.git

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

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

# cd ~/src/ipxe
[root@earth:~/src/ipxe]
# git archive --format=tar --prefix=ipxe/ \
9a93db3f0947484e30e753bbd61a10b17336e20e | gzip > ../ipxe.tar.gz

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

・"https://www.citrix.com/support"にアクセスし
・Xenserverを選択し、XS61E074を検索してダウンロードします

# cd ~/src
[root@earth:~/src]
# unzip XS61E074.zip -d XS61E074
# cd XS61E074
# tar jtf XS61E074-src-pkgs.tar.bz2
# tar jxvf XS61E074-src-pkgs.tar.bz2 ./kernel*
# ls -1
XS61E074-src-pkgs.tar.bz2
XS61E074.xsupdate
kernel-2.6.32.43-0.4.1.xs1.6.10.807.170796.src.rpm
# rpm -ivh kernel-2.6.32.43-0.4.1.xs1.6.10.807.170796.src.rpm
# cd ~/rpmbuild/SPECS
[root@earth:~/rpmbuild/SPECS]

・specファイルの修正
 %define buildkdump 1 → %define buildkdump 0
 %define buildutility 1 → %define buildutility 0
 Source6: check-kabi → Source4: check-kabi

# vi kernel-xen.spec

# rpmbuild -bp --target i686 kernel-xen.spec
# cd ../BUILD/kernel-2.6.32.43
[root@earth:~/rpmbuild/BUILD/kernel-2.6.32.43]
# mv linux-2.6.32.43-0.4.1.xs1.6.10.807.170796xen ~/src/linux-2.6.32.43-xen

・必要のないファイルの削除 (省略)




○xen-4.2.1

・xenとkernelを別々にインストールします
・configureを実行しないと、toolsのmakeでエラーになります
・オプションは、"configure --help"で確認しましょう

# cd ~/src
[root@earth:~/src]
# tar zxf xen-4.2.1.tar.gz

・ipxeソースをコピーします

# cp ipxe.tar.gz xen-4.2.1/tools/firmware/etherboot

# chown -R root:root xen-4.2.1
# cd xen-4.2.1
[root@earth:~/src/xen-4.2.1]
# ./configure --disable-ocamltools --disable-seabios

Makefileの修正 (詳細別記)

# vi Makefile
# vi config/x86_32.mk
# vi tools/firmware/etherboot/Makefile

・コンパイル

# make world

・インストール (アップデートは別項参照)

# make install

・デフォルトの設定ファイルを保存しておきます

# cp -a dist/install/etc ~/src/xen421
# cd ~/src
[root@earth:~/src]
# tar cf xen-4.2.1-161017.tar xen-4.2.1/
# bzip2 xen-4.2.1-161017.tar

○アップデート

・新規インストールの場合は、次項へ進みます
・ソースの展開・コンパイルの表記は略します

・アップデート
・uninstallで /etc/xenをバックアップし、設定ファイルが消去されます
・installの後、バックアップからのコピーや再設定を行ってください

# cd ~/src/xen-4.2.1
[root@earth:~/src/xen-4.2.1]
# make uninstall
# make install

・新旧のデフォルト設定ファイルの差分を取り
・必要があれば、設定ファイルを修正します

# cp -a dist/install/etc ~/src/xen421
# cd ~/src
[root@earth:~/src]
# diff -urp xen420 xen421



○linux-2.6.32.43-xen

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

# cd ~/src
[root@earth:~/src] 
# chown -R root:root linux-2.6.32.43-xen
# cd linux-2.6.32.43-xen
[root@earth:~/src/linux-2.6.32.43-xen]

・オリジナルのconfigファイルを保存

# cp .config ../linux-2.6.32.43-xs1.6.10xen.config.orig

Makefile の修正 (詳細別記)

# vi Makefile
# vi localversion

config の設定 (詳細別記)
・デフォルトではほとんどが静的なモデュールになっています
・次回からはこの config ファイルを使って make します

# make menuconfig

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

# make
# make modules_install
# make install

・ERROR: modinfoについては下記参照

・/bootにファイルが作成されているか確認
 System.map-2.6.32.43-xs1.6.10xen
 initramfs-2.6.32.43-xs1.6.10xen.img
 vmlinuz-2.6.32.43-xs1.6.10xen

# cd ~/src
[root@earth:~/src]
# tar cf linux-2.6.32.43-xen-161017.tar linux-2.6.32.43-xen/
# bzip2 linux-2.6.32.43-xen-161017.tar

○firmwareのインストールについて

・CentOSのkernelと同じディレクトリにインストールされるので注意します
・このサイトの.configによるインストール例 (100MbpsのLANカードのみ)

  INSTALL /lib/firmware/e100/d101m_ucode.bin
  INSTALL /lib/firmware/e100/d101s_ucode.bin
  INSTALL /lib/firmware/e100/d102e_ucode.bin
  INSTALL /lib/firmware/3com/typhoon.bin

○ERROR: modinfoについて

・makeを実行したマシンで使われているmodulesを組み込まない場合
・kernelソースがなく、使われているmodulesが作られない場合
・modulesでなくkernelに静的に組み込んだ場合など

# make install
sh /root/src/linux-2.6.32.43-xen/arch/x86/boot/install.sh 2.6.32.43-xs1.6.10xen arch/x86/boot/bzImage \
                System.map "/boot"
ERROR: modinfo: could not find module sg
ERROR: modinfo: could not find module mbcache
ERROR: modinfo: could not find module sd_mod

○moduleの修正

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

# cd /lib/modules/2.6.32.43-xs1.6.10xen
[root@earth:/lib/modules/2.6.32.43-xs1.6.10xen]
# unlink build
# unlink source

○bootファイルの修正

・シンボリックリンクをCentOSのkernelに戻しておく(最新のバージョン)

# cd /boot
[root@earth:/boot]
# unlink System.map
# ln -s /boot/System.map-2.6.32-642.el6.i686 System.map
# unlink vmlinuz
# ln -s /boot/vmlinuz-2.6.32-642.el6.i686 vmlinuz

○grub.confの修正

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



○参考 XCP(Xen Cloud Platform)のkernelソース

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

・"61809c of XCP 1.6 source-1.iso"をダウンロードします
・kernel-2.6.32.43-0.4.1.xs1.6.10.734.170748.src.rpmを取り出します(省略)

# cd ~/src
[root@earth:~/src]
# wget http://downloads.xen.org/XCP/61809c/sources/source-1.iso

・ファイルの取り出しは省略

# rpm -ivh kernel-2.6.32.43-0.4.1.xs1.6.10.734.170748.src.rpm
# cd ~/rpmbuild/SPECS
[root@earth:~/rpmbuild/SPECS]

・specファイルの修正
 %define buildkdump 1 → %define buildkdump 0
 %define buildutility 1 → %define buildutility 0
 Source6: check-kabi → Source4: check-kabi

# vi kernel-xen.spec

# rpmbuild -bp --target i686 kernel-xen.spec
# cd ../BUILD/kernel-2.6.32.43
[root@earth:~/rpmbuild/BUILD/kernel-2.6.32.43]
# mv linux-2.6.32.43-0.4.1.xs1.6.10.734.170748xen ~/src/linux-2.6.32.43-xen

・必要のないファイルの削除 (省略)


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