CentOS 6.3 에서 Xen Build
o CentOS 6.3에서 Xen Hypervisor 빌드
CentOS 6.3 x86_64 버전을 minimal 로 설치함
¡ Xen 소스 기반 빌드
빌드 툴 설치
#(CentOS5)용 yum groupinstall "Development Libraries" -> CentOS6에서는 "Additional Development"로 변경 yum groupinstall "Additional Development" yum groupinstall "Development Tools" yum install transfig wget tar less texi2html libaio-devel dev86 glibc-devel e2fsprogs-devel gitk mkinitrd iasl xz-devel bzip2-devel yum install pciutils-libs pciutils-devel SDL-devel libX11-devel gtk2-devel bridge-utils PyXML qemu-common qemu-img mercurial texinfo yum install libidn-devel yajl yajl-devel ocaml ocaml-findlib ocaml-findlib-devel python-devel uuid-devel libuuid-devel openssl-devel yum install glibc-devel.i686 |
¡ Xen 소스 다운로드
git clone git://xenbits.xen.org/xen.git |
<!--[endif]-->
¡ 소스 컴파일
./configure --libdir=/usr/lib64 make dist make install |
설치 후 /boot 디렉토리 변화
/boot 디렉토리에 xen.gz 파일이 생성된 것을 확인 가능, xen.gz 가 Hypervisor 커널이다.
[root@openxen xen]# ls /boot config-2.6.32-279.el6.x86_64 symvers-2.6.32-279.el6.x86_64.gz xen-4.gz efi System.map-2.6.32-279.el6.x86_64 xen.gz grub vmlinuz-2.6.32-279.el6.x86_64 xenpolicy.24 initramfs-2.6.32-279.el6.x86_64.img xen-4.3.gz xen-syms-4.3-unstable lost+found xen-4.3-unstable.gz |
o Dom0 설치
Hypervisor 설치가 완료되면 이제 Domain 0를 설치해야 한다.
쉬운 방법은 dom0 커널을 패키지로 설치 후, 향후 필요시 커널을 다시 컴파일 하는 것이다.
yum install http://au1.mirror.crc.id.au/repo/el6/x86_64/kernel-xen-release-6-4.noarch.rpm yum install kernel-xen |
다음과 같은 두개의 패키지 (kernel-xen, kernel-xen-fireware)가 설치된다.
=========================================================================================== Package Arch Version Repository Size ========================================================================================== Installing: kernel-xen x86_64 3.8.6-1.el6xen kernel-xen 23 M Installing for dependencies: kernel-xen-firmware x86_64 3.8.6-1.el6xen kernel-xen 995 k
Transaction Summary ========================================================================================= Install 2 Package(s) |
설치가 완료 되면 /boot 디렉토리에 새로운 dom0 커널이 존재함을 확인한다.
. vmlinuz-3.8.x 가 설치되어 있음을 확인할 수 있다. 원래 CentOS 6.3 커널은 vmlinuz-2.6.x 임
[root@openxen xen]# ls /boot config-2.6.32-279.el6.x86_64 symvers-2.6.32-279.el6.x86_64.gz xen-4.3-unstable.gz config-3.8.6-1.el6xen.x86_64 symvers-3.8.6-1.el6xen.x86_64.gz xen-4.gz efi System.map-2.6.32-279.el6.x86_64 xen.gz grub System.map-3.8.6-1.el6xen.x86_64 xenpolicy.24 initramfs-2.6.32-279.el6.x86_64.img vmlinuz-2.6.32-279.el6.x86_64 xen-syms-4.3-unstable initramfs-3.8.6-1.el6xen.x86_64.img vmlinuz-3.8.6-1.el6xen.x86_64 lost+found xen-4.3.gz |
o grub 업데이트
xen-kernel을 설치하면, grub 설정파일이 업데이트 되어 있음을 알 수 있다. 추가적으로 hypervisor 커널을 kernel로 하고, 패치한 dom0 커널을 module로 하는 설정으로 변경하여야 한다.
. kernel, initrd를 module로 변경
. xen hypervisor 리눅스 커널이 최초에 부팅하고, dom0를 모듈로 로딩하는 방식이다.
[root@openxen xen]# diff /boot/grub/menu.lst /boot/grub/menu.lst.org 16,18c16,17 < kernel /xen.gz dom0_mem=2048M logvl=all gest_logvl=all < module /vmlinuz-3.8.6-1.el6xen.x86_64 ro root=/dev/mapper/vg_openxen-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_openxen/lv_swap rd_LVM_LV=vg_openxen/lv_root rd_NO_DM rhgb quiet < module /initramfs-3.8.6-1.el6xen.x86_64.img --- > kernel /vmlinuz-3.8.6-1.el6xen.x86_64 ro root=/dev/mapper/vg_openxen-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_openxen/lv_swap rd_LVM_LV=vg_openxen/lv_root rd_NO_DM rhgb quiet > initrd /initramfs-3.8.6-1.el6xen.x86_64.img |
¡ 주요 서비스 등록(xendomains, xencommons, xend)
ln -s /etc/init.d/xendomains /etc/rc0.d/S10xendomains ln -s /etc/init.d/xendomains /etc/rc6.d/S10xendomains ln -s /etc/init.d/xencommons /etc/rc3.d/S98xencommons ln -s /etc/init.d/xendomains /etc/rc3.d/S98xendomains ln -s /etc/init.d/xend /etc/rc3.d/S99xend |