CentOS5 64bit版で完全仮想化環境を作る
CentOS5で完全仮想化をやろうと思い、環境を作った時のメモです。
今回の環境は64bit版のCentOS5.5なのですが、配布されているRPMパッケージのXenだと
完全仮想化環境の設定でVMを動かす事が出来ませんでした。
ほとんど参考にしたページのトレースですが、自分用メモとしてまとめます。
ついでにXen3.2にしています。
手順
まず、自分の環境では「rpm-build」「redhat-rpm-config」が無かったので、インストールを行いました。
# yum install rpm-build redhat-rpm-config
次にソースRPMをダウンロード
# wget http://bits.xensource.com/oss-xen/release/3.2.0/centos-5.1/xen-3.2.0-0xs.centos5.src.rpm
警告出ますが、結果的に問題にはなりませんでした。
# rpm -ivh xen-3.2.0-0xs.centos5.src.rpm 1:xen 警告: ユーザ machbuild は存在しません - root を使用します
SRPMをインストールした結果、以下のファイルが展開されました。
# ls /usr/src/redhat/SPECS/ xen.spec # ls /usr/src/redhat/SOURCES/ pygrub-cosmetics.patch xen-dumpdir.patch xen-3.0.2-config-allow-unix-server.patch xen-hotplug-block-flock.patch xen-3.0.2-config-disable-reloc.patch xen-initscript-blktap.patch xen-3.2.0.tar.gz xen-initscript.patch xen-compile-fixes.patch xen-network-bonding-fix.patch xen-config-dom0-minmem.patch xen.sysconfig
参考にさせていただいたページと同じ様にspecファイルを修正します。
今回、私の場合は、そのまま修正してしまいました。
# diff -u xen.spec.org xen.spec --- xen.spec.org 2008-01-17 21:23:13.000000000 +0900 +++ xen.spec 2011-01-22 16:31:55.000000000 +0900 @@ -3,7 +3,7 @@ Summary: Xen is a virtual machine monitor Name: xen Version: 3.2.0 -Release: 0xs%{?dist} +Release: 1xs%{?dist} Group: Development/Libraries License: GPL URL: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html @@ -113,7 +113,8 @@ %install rm -rf %{buildroot} -make XENFB_TOOLS=y XEN_PYTHON_NATIVE_INSTALL=1 DESTDIR=%{buildroot} prefix=/usr install-tools install-docs +make XENFB_TOOLS=y XEN_PYTHON_NATIVE_INSTALL=1 DESTDIR=%{buildroot} prefix=%{_prefix} install-tools install-docs +mv %{buildroot}%{_prefix}/lib/xen/boot %{buildroot}%{_libdir}/%{name} # put hvmloader in the right place mkdir -p %{buildroot}%{_localstatedir}/lib/%{name}/xend-db/domain mkdir -p %{buildroot}%{_localstatedir}/lib/%{name}/xend-db/vnet mkdir -p %{buildroot}%{_localstatedir}/lib/%{name}/xend-db/migrate @@ -184,10 +185,6 @@ %{_libdir}/%{name} %{_mandir}/man?/*.?.gz %dir /usr/lib/xen -%ifnarch ia64 -# %dir /usr/lib/xen/boot -# /usr/lib/xen/boot/hvmloader -%endif %{_datadir}/%{name}/*.dtd %dir %{_datadir}/%{name}/qemu %{_datadir}/%{name}/qemu/keymaps/* @@ -222,6 +219,10 @@ %{_libdir}/*.a %changelog +* Mon Mar 10 2008 John Morris - 3.2.0-1xs +- fix hvmloader location depending on arch +- pick up /usr/lib/xen or /usr/lib/xen64 correctly in %files depending on arch + * Thu Jan 10 2008 Ian Jackson <Ian.Jackson@eu.citrix.com> - 3.2.0-0xs.centos5 - Xen 3.2, built from 3.2 tree and heavily modified Centos (RHEL) patches.
用意ができたのでビルドします。
# pwd /usr/src/redhat/SPECS # ls xen.spec xen.spec.org # rpmbuild -ba --define 'dist .centos5' xen.spec
当初私が行った際には幾つかのパッケージが足りない状態でした。
足りないパッケージをひたすらyumで入れていきます。
# rpmbuild -ba --define 'dist .centos5' xen.spec エラー: ビルド依存性の失敗: transfig は xen-3.2.0-1xs.centos5.x86_64 に必要とされています libidn-devel は xen-3.2.0-1xs.centos5.x86_64 に必要とされています texi2html は xen-3.2.0-1xs.centos5.x86_64 に必要とされています SDL-devel は xen-3.2.0-1xs.centos5.x86_64 に必要とされています curl-devel は xen-3.2.0-1xs.centos5.x86_64 に必要とされています libX11-devel は xen-3.2.0-1xs.centos5.x86_64 に必要とされています ghostscript は xen-3.2.0-1xs.centos5.x86_64 に必要とされています tetex-latex は xen-3.2.0-1xs.centos5.x86_64 に必要とされています ncurses-devel は xen-3.2.0-1xs.centos5.x86_64 に必要とされています gtk2-devel は xen-3.2.0-1xs.centos5.x86_64 に必要とされています libaio-devel は xen-3.2.0-1xs.centos5.x86_64 に必要とされています /usr/include/gnu/stubs-32.h は xen-3.2.0-1xs.centos5.x86_64 に必要とされています dev86 は xen-3.2.0-1xs.centos5.x86_64 に必要とされています gnutls-devel は xen-3.2.0-1xs.centos5.x86_64 に必要とされています
ちなみに「/usr/include/gnu/stubs-32.h」はglibc-develをインストールしておけば入ります。
# rpm -ql glibc-devel | grep 32 /usr/include/gnu/stubs-32.h
ビルドした結果、RPMパッケージが作成されます。
# ls /usr/src/redhat/BUILD/ xen-3.2.0 # ls /usr/src/redhat/RPMS/x86_64/ xen-3.2.0-1xs.centos5.x86_64.rpm xen-debuginfo-3.2.0-1xs.centos5.x86_64.rpm xen-devel-3.2.0-1xs.centos5.x86_64.rpm xen-libs-3.2.0-1xs.centos5.x86_64.rpm # ls /usr/src/redhat/SRPMS/ xen-3.2.0-1xs.centos5.src.rpm
参考にさせていただいたページにならい、md5のチェックを行います。
# rpm -K /usr/src/redhat/RPMS/x86_64/*.rpm /usr/src/redhat/SRPMS/*.rpm /usr/src/redhat/RPMS/x86_64/xen-3.2.0-1xs.centos5.x86_64.rpm: sha1 md5 OK /usr/src/redhat/RPMS/x86_64/xen-debuginfo-3.2.0-1xs.centos5.x86_64.rpm: sha1 md5 OK /usr/src/redhat/RPMS/x86_64/xen-devel-3.2.0-1xs.centos5.x86_64.rpm: sha1 md5 OK /usr/src/redhat/RPMS/x86_64/xen-libs-3.2.0-1xs.centos5.x86_64.rpm: sha1 md5 OK /usr/src/redhat/SRPMS/xen-3.2.0-1xs.centos5.src.rpm: sha1 md5 OK
RPMをインストールします。
# cd /usr/src/redhat/RPMS/x86_64/ # ls -l 合計 7748 -rw-r--r-- 1 root root 5247256 1月 22 17:38 xen-3.2.0-1xs.centos5.x86_64.rpm -rw-r--r-- 1 root root 2251341 1月 22 17:38 xen-debuginfo-3.2.0-1xs.centos5.x86_64.rpm -rw-r--r-- 1 root root 226782 1月 22 17:38 xen-devel-3.2.0-1xs.centos5.x86_64.rpm -rw-r--r-- 1 root root 157518 1月 22 17:38 xen-libs-3.2.0-1xs.centos5.x86_64.rpm # rpm -Uvh *.rpm 準備中... ########################################### [100%] 1:xen-libs ########################################### [ 25%] 2:xen ########################################### [ 50%] 3:xen-debuginfo ########################################### [ 75%] 4:xen-devel ########################################### [100%]
今までいなかったhvmloaderも入りました。
# ls /usr/lib64/xen/boot/ hvmloader
grubの設定を行います。以下のように追加しました。
# vi /boot/grub/grub.conf title CentOS (2.6.18-194.32.1.el5 Xen3.2) root (hd0,0) kernel /xen.gz-3.2 module /vmlinuz-2.6.18-194.32.1.el5xen module /initrd-2.6.18-194.32.1.el5xen.img
再起動させたところ、うまく動きました。
# uname -a Linux xxxxxxxxxxx 2.6.18-194.32.1.el5xen #1 SMP Wed Jan 5 18:44:24 EST 2011 x86_64 x86_64 x86_64 GNU/Linux # xm dmesg __ __ _____ ____ ___ \ \/ /___ _ __ |___ / |___ \ / _ \ \ // _ \ '_ \ |_ \ __) || | | | / \ __/ | | | ___) | / __/ | |_| | /_/\_\___|_| |_| |____(_)_____(_)___/ (XEN) Xen version 3.2.0 (****@*****) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) Sat Jan 22 17:35:18 JST 2011
VMを動かしてみる
まずはイメージファイルの作成です。
# dd if=/dev/zero of=/opt/xen/centos5-hvm bs=1024k seek=6144 count=1
設定ファイルは「/etc/xen/centos5-hvm」として、以下のように作成しました。
builder = 'hvm' name = 'centos5-hvm' maxmem = 512 memory = 512 vcpus = 1 kernel = "/usr/lib64/xen/boot/hvmloader" boot = "dc" on_poweroff = "destroy" on_reboot = "restart" on_crash = "restart" disk = [ 'tap:aio:/opt/xen/centos5-hvm,xvda,w', 'phy:/dev/cdrom,hdc:cdrom,r' ] vif = [ "mac=00:16:36:42:99:b2,bridge=xenbr0,script=vif-bridge" ] device_model = "/usr/lib64/xen/bin/qemu-dm" sdl = 1 localtime = 1 keymap = 'ja' vncconsole = 1
後はGUIのコンソールから、「xm create -c centos5-hvm」で無事起動。
今日はこんなところで。
他
起動時に何回かこんなメッセージが出て、コンソールの起動ができませんでした。
どうやら、「vncconsole = 1」を設定していなかったためのようでした。
# xm create -c centos5-hvm Using config file "/etc/xen/centos5-hvm". Started domain centos5-hvm xenconsole: Could not read tty from store: No such file or directory
参考
以下のベージが凄く参考になりました。感謝です。