Fedora에는 Xen kernel이 포함되어 있지 않다(FC13 기준). 따라서 Xen 관련 패키지들과 함께 Kernel을 Xenify 하고 여러가지 설정을 손봐주어야 한다(이 점은 OpenSUSE 11.3과 판이하게 다른 점이라 하겠다).


이번 포스팅은 http://wiki.xensource.com/xenwiki/Fedora13Xen4Tutorial 의 내용을 토대로 했지만 실제 그대로 따라 해 보면 안되는 경우가 더 많다. 몇 가지 빠진 사항도 있고 설치 환경이 달라서 벌어지는 문제일 듯하다.
사실, 이런 종류의 일들은 해 보면 별 것 아닌 것 같지만 과정 자체가 추리와 유추가 난무하는 수사극과 비슷하다는 생각을 하게 된다.
더구나, 이번 설치는 Lenovo thinkpad T60(Intel 945GM VGA) 노트북에 Xen4 환경을 설치하는 것이어서, 서로 다른 컴퓨팅 환경에서의 Xen 설정시에 참고해 볼만한 내용이 될 듯 하다.

Anyway, 아래에 T60 Fedora 14 + Xen 4.0.1을 위한 설치 과정 및 방법을 정리해 두기로 한다.

1. Fedora 설치

최대한 단순하게 기본 패키지만 설치하기 위해 Fedora Core 14 x86_64 live cd로 부팅한 다음 Install to Hdd 아이콘을 클릭하여 기본 설치를 수행한다.
/boot 파티션은 ext3 포맷으로 하고, 크기는 최소 2048 MB 가 권장된다.
설치시 ntp로 시간동기화를 설정했다면 아래 ntp 설정 과정은 Skip. 다시 말하지만 기본 패키지 외에는 설치하지 않아야만 나중에 귀찮은 일을 겪지 않게 된다. 필요 없어진 패키지들을 의존성 확인하면서 erase/delete/remove 해 본 사람은 왜 이런 얘기를 하는지 아실 것이다.

2. 준비 작업

네트워크를 시작시키고 자동 Start되게 설정한다
# chkconfig network on
# /etc/init.d/network start
# yum install screen vim wget tcpdump ntp ntpdate man smartmontools ethtool

설치시 ntp를 지정하지 않았다면
# chkconfig ntpd on
# chkconfig ntpdate on
# /etc/init.d/ntpdate start
# /etc/init.d/ntpd start

/boot/grub/grub.conf (또는 menu.lst) 를 편집
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/vg_f13-lvroot
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=10          <= 0을 8 또는 10으로...
splashimage=(hd0,0)/grub/splash.xpm.gz
#hiddenmenu         <= #를 삽입해서 comment화
title Fedora (2.6.33.3-85.fc13.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.33.3-85.fc13.x86_64 ro root=/dev/mapper/vg_f13-lvroot rd_LVM_LV=vg_f13/lvroot rd_LVM_LV=vg_f13/lvswap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=fi rhgb quiet
        initrd /initramfs-2.6.33.3-85.fc13.x86_64.img

/etc/selinux/config 를 편집
보안 정책의 제한 때문에 설정에 문제가 생기지 않도록 selinux 기능을 꺼 둔다
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled           <= enforcing을 disabled로...
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
/etc/hosts 를 편집
Hostname에 항목이 없을 경우 귀찮은 메시지들이 뜨게 되므로 미리 조치
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1   myhostname myhostname.localdomain
# yum install xorg-x11-xauth
# yum update
대략 110개 가량(120M 이상)의 패키지 다운로드와 설치가 진행될 것이다.


3. Xen build를 위한 패키지 설치 및 환경 설정

개발 환경의 기본 패키지 일괄 설치
# yum groupinstall "Development Libraries"
# yum groupinstall "Development Tools"

추가 패키지들 설치
# yum install transfig wget texi2html libaio-devel dev86 glibc-devel e2fsprogs-devel gitk mkinitrd iasl xz-devel bzip2-devel pciutils-libs pciutils-devel SDL-devel libX11-devel gtk2-devel bridge-utils PyXML qemu-common qemu-img mercurial glibc-devel.i686 libidn-devel

4. src.rpm 에서 Xen 4.0.1 binary rpm build 및 설치
# wget http://pasik.reaktio.net/fedora/xen-4.0.1-6.fc14.src.rpm
# rpm -i xen-4.0.1-6.fc14.src.rpm
Warning message가 몇 개 나오겠지만 무시하고 다음 단계로...

Binary RPM을 생성하기 위해 rpmbuild를 수행
# cd /root/rpmbuild/SPECS
# rpmbuild -bb xen.spec
결과로 아래의 결과가 나타난다
Wrote: /root/rpmbuild/RPMS/x86_64/xen-4.0.1-6.fc14.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/xen-libs-4.0.1-6.fc14.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/xen-runtime-4.0.1-6.fc14.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/xen-hypervisor-4.0.1-6.fc14.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/xen-doc-4.0.1-6.fc14.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/xen-devel-4.0.1-6.fc14.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/xen-licenses-4.0.1-6.fc14.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/xen-debuginfo-4.0.1-6.fc14.x86_64.rpm

생성된 rpm binary 들을 설치한다
# cd /root/rpmbuild/RPMS/x86_64/
# rpm -Uvh *4.0.1-6*.rpm

5. Xen kernel source 다운로드/빌드/설치 - Linux 2.6.32.x pvops Xen dom0 kernel

레퍼런스에 URL들이 몇 개 있지만 Fedora 12 버전 정도에 맞춰 져 있는 내용들이라 별반 도움이 되지 않는다. 여기서는 Source를 다운로드하고 직접 빌드해서 설치하는 과정을 진행한다.
# git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-2.6-xen
# cd linux-2.6-xen
# git checkout -b xen/stable-2.6.32.x origin/xen/stable-2.6.32.x

Sample config 파일을 다운로드 하게 되는데, Debug 모드가 다수 설정되어 있으므로 make menuconfig를 통해 Debug 옵션들을 Disable하고, 각 옵션사항들을 잘 따라가면서 Xen virtualization 관련한 device, kernel등의 설정을 Enable해 주어야 한다. 본인이 사용한 sample config를 링크해 두도록 하겠다(환경이 다르므로 별로 도움은 되지 않겠지만...)

# wget -O .config http://pasik.reaktio.net/xen/pv_ops-dom0-debug/config-2.6.32.25-pvops-dom0-xen-stable-x86_64
# make menuconfig

* 주의: 802.1d Bridging support 항목 같은 경우는 반드시 <M> 으로 선택해야만 Bridging 기능이 modularize 된다. <*>와 같은 방식으로 선택해서 Build한다면 Kernel의 기능 일부로 embed 되어서 나중에 Bridging 기능을 대체하는 open vswitch 같은 서비스를 설치하지 못하는 경우도 만날 수 있게 되므로 주의한다.

변경된 설정을 저장하고 Exit 한 후에 아래와 같이 Kernel Build를 수행한다. 숫자 2는 CPU core 갯수를 의미한다.
# make clean
# make -j2 bzImage && make -j2 modules
성능에 따라 수 십분 내지 수 시간이 걸리는 작업이다. 몇 가지 Warning이 나오지만 Error가 아니므로 그닥 치명적이지는 아니리라 기대하면서 결과를 기다린다.

이제 커널모듈을 설치하고 Xen Kernel로 부팅을 준비한다.
# make modules_install
# depmod -a 2.6.32.25
# cp -a arch/x86/boot/bzImage /boot/vmlinuz-2.6.32.25-xen-Bryans
# cp -a System.map /boot/System.map-2.6.32.25-xen-Bryans
# cp -a .config /boot/config-2.6.32.25-xen-Bryans
# cd /boot
# dracut initramfs-2.6.32.25-xen-Bryans.img 2.6.32.25
(4개의 파일명은 각자 알아서 결정하되 grub.conf 편집시 정확히 입력!)
dracut은 Ramdisk filesystem을 생성해 주는 새로 개발된 유틸리티이다. 그전에는 OS에 따라 mkinitrd 같은 것들을 썼는데 이제 조금은 편해진 느낌이랄까...
몇 개의 Warning성 메시지들이 뜰 텐데 무시하고 넘어간다.

여기 까지 성공적으로 왔다면 이제 2/3 정도는 온 것이다. 아까 수정했던 /boot/grub/grub.conf 파일을 열어서 마지막에 5라인을 정확히 편집해서 저장하고 reboot를 진행한다.

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/vg_bryansfedora1-LogVol00
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0                   <= 2로 하면 3번째인 Xen kernel로 자동 부트
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
#hiddenmenu
title Fedora (2.6.35.6-48.fc14.x86_64)
	root (hd0,0)
	kernel /vmlinuz-2.6.35.6-48.fc14.x86_64 ro root=/dev/mapper/vg_bryansfedora1-LogVol00 rd_LVM_LV=vg_bryansfedora1/LogVol00 rd_LVM_LV=vg_bryansfedora1/LogVol02 rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=ko rhgb quiet
	initrd /initramfs-2.6.35.6-48.fc14.x86_64.img
title Fedora (2.6.35.6-45.fc14.x86_64)
	root (hd0,0)
	kernel /vmlinuz-2.6.35.6-45.fc14.x86_64 ro root=/dev/mapper/vg_bryansfedora1-LogVol00 rd_LVM_LV=vg_bryansfedora1/LogVol00 rd_LVM_LV=vg_bryansfedora1/LogVol02 rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=ko rhgb quiet
	initrd /initramfs-2.6.35.6-45.fc14.x86_64.img

* 여기부터 =>
title Fedora Xen 4.0.1 (Kernel 2.6.32.25) pvops dom0
	root (hd0,0)
	kernel /xen.gz dom0_mem=768M loglvl=all guest_loglvl=all
	module /vmlinuz-2.6.32.25-xen-Bryans ro root=/dev/mapper/vg_bryansfedora1-LogVol00 vga=ask
	module /initramfs-2.6.32.25-xen-Bryans.img
잘 보면 첫 번째 타이틀부터 5라인을 복사해서 맨 뒤에 붙이고 편집하면 간단할 것이라는 생각이 들 것이다. kernel 라인에서 dom0_mem은 Host OS를 위해서 확보되어야 할 최소 메모리 이므로 시스템 여유에 따라 적절히 설정한다. module /vmlinuz 라인에서는 root 장치의 Path만 지정하고 나머지 볼륨들은 불필요. 라인 마지막에 vga=ask 와 같이 하지 않고 레퍼런스에 있는 nomodeset으로 지정할 경우, X window가 프레임 버퍼 device를 잡지 못하고 부팅시에 오류가 발생하는 상황을 관찰할 수도 있다.

정상적인 과정을 잘 밟았다면 다음과 같이 4개의 주요 Daemon 들이 enable 된 것을 확인할 수 있다.
# chkconfig --list | grep xen
xenconsoled     0:off   1:off   2:off   3:on    4:on    5:on    6:off
xend            0:off   1:off   2:off   3:on    4:on    5:on    6:off
xendomains      0:off   1:off   2:off   3:on    4:on    5:on    6:off
xenstored       0:off   1:off   2:off   3:on    4:on    5:on    6:off
이제 Xen kernel로 부팅을 시도한다.
# reboot

6. Xen 가상화 환경 마무리 작업

시스템 리스타트 후에 xm info 를 수행해 보면 Xen host의 설정 상태를 볼 수 있다. 
이제 가상화 환경에서 편리한 Utility를 설치하고 환경을 점검한다.
# yum install virt-manager libvirt virt-viewer qemu-system-x86.x86_64

설치된 Libvirt Daemon을 확인하고 기동한다.
# chkconfig --list libvirtd
libvirtd        0:off   1:off   2:off   3:on    4:on    5:on    6:off
# /etc/init.d/libvirtd start

Bridging 설정, DNS masquerading 동작 상태, iptable과 ipforwarding 설정 상태를 다음과 같이 확인한다.
# brctl show
# ps aux | grep -i dnsmasq
# ifconfig
# iptables -t nat -L -n -v

eth0를 bridge로 해서 VM들의 network을 브리징하려면 다음과 같이 설정을 변경하고 reboot 하면 된다.
# vi /etc/xen/xend-config.sxp
# ...
#(network-script network-bridge)
* Comment를 풀고 아래와 같이 수정
(network-script 'network-bridge bridge=br0')
# reboot
부팅 후 네트워크 장치 상태를 확인하면
# ifconfig
br0    Link encap:Ethernet  HWaddr 12:34:56:0E:3F:9E
          inet addr:192.168.0.19  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:891 (891.0 b)
이전에 eth0에 할당되었던 Host의 ip가 br0에 할당되어 있음을 확인할 수 있다.

* 이제 모든 설치와 설정 과정은 끝이 났고, VM image를 다운로드 받거나 ISO 파일 또는 DVD 등을 통해서 VM을 create해 볼 수 있을 것이다.

* 참고로, wiki.xen.org 의 Xen networking(bridged case) 개념을 설명한 이미지를 첨부하니, 잘 이해해 두도록 하자.




- Barracuda -




저작자 표시 비영리 변경 금지
신고
블로그 이미지

Barracuda

Bryan의 MemoLog. 쉽게 익혀 보는 IT 실습과 개념원리, 코딩 세계의 얕은 맛보기들, 평범한 삶 주변의 현상 그리고 進上, 眞想, 진상들


Host(Dom0)
 - Lenovo thinkpad T60, Ram1.5g
 - OpenSUSE 11.3, Kernel 2.6.34.7-0.5 x86_64
 - Xen 4.0.1_01-84.1 x86_64
Guest
 - Windows XP SP2

1. Xen & libvirt upgrade

openSUSE 11.3에서 virtualization package를 설치하면 Xen 4.0.0이 설치된다.
우선 이를 4.0.1 최신 버전으로 upgrade를 진행한다.
Xen & Kernel rebuild로 진행하는 방법도 있겠으나 여기서는 rpm 설치를 통해서 진행하는 방법을 택한다.

* Reboot후 xen kernel이 아닌 일반 kernel로 시스템을 시작한다.
* wget으로 아래의 url내의 file들을 내려 받는다

http://download.opensuse.org/repositories/Virtualization/openSUSE_11.3/x86_64/

xen-libs-4.0.1_01-84.1.x86_64.rpm
xen-tools-4.0.1_01-84.1.x86_64.rpm
vm-install-0.4.27-49.1.x86_64.rpm
virt-manager-0.8.5-43.1.x86_64.rpm
qemu-0.12.4-8.1.x86_64.rpm
libvirt-0.8.5-74.4.x86_64.rpm
libvirt-client-0.8.5-74.4.x86_64.rpm
libvirt-devel-0.8.5-74.4.x86_64.rpm
libvirt-python-0.8.5-74.4.x86_64.rpm

zypper remove 로 xen, xen-tools, xen-libs, vm-install, virt-manager, qemu, libvirt-client, libvirt-devel, libvirt-python을 삭제

* 다운로드 받은 rpm들을 설치한다
* 패키지들의 Dependency를 잘 체크해서 설치하고 reboot, Xen kernel로 시스템 시작

2. VM 설치 준비

* Window XP SP2 iso image file 준비 (/home/vmimages/windows_iso/winxp.iso)
* 가상 Disk image와 config를 저장할 디렉토리 생성(/home/vmimages/windows_disk)

* 가상 Disk image를 위한 sparse file 생성(16GB)
dd if=/dev/zero of=/home/vmimages/windows_disk/winxp_disk0 bs=4k seek=4096k count=1

* HVM 용 config 작성

cd /home/vmimages/windows_disk/
vi winxp_hvm.cfg
----------------------------------------------------------------------
name = 'winxp'
kernel = '/usr/lib/xen/boot/hvmloader'
builder = 'hvm'
vcpus = 1
cpus = "1"
memory = 256
device_model = '/usr/lib/xen/bin/qemu-dm'
disk = [ 'tap:aio:/home/vmimages/windows_disk/winxp_disk0,ioemu:hda,w',
           'file:/home/vmimages/windows_iso/winxp.iso,hdc:cdrom,r' ]
vif = [ 'type=ioemu, bridge=br0' ]
boot = "dc"
vnc = 1
vncviewer = 1
sdl = 0
pae = 0
acpi = 1
apic = 1
----------------------------------------------------------------------

3. VM create

xm create winxp_hvm.cfg
TightVNC를 통해 VM에 접속하고 Window xp 설치를 진행(가상머신 관리자>가상머신 콘솔 접속)

* 메모리 여유가 작아서 tail -100f /var/log/xen/xend.log 에서 메모리 할당 오류가 날 경우에는
/boot/grub/menu.lst 의 xen kernel line에 "dom0_mem=1024" 를 추가하여 dom0를 위한  minimum 메모리를 확보해야 한다


저작자 표시 비영리 변경 금지
신고
블로그 이미지

Barracuda

Bryan의 MemoLog. 쉽게 익혀 보는 IT 실습과 개념원리, 코딩 세계의 얕은 맛보기들, 평범한 삶 주변의 현상 그리고 進上, 眞想, 진상들



Setting up Xen Dom0 kernel 2.6.31.13 on OpenSuse 11.2

 * Installation methods are as follows
  (1) Binary tarball from xensource.com(xen-3.x.x-install.tgz)
  (2) RPM download and install
  (3) Online Package installation by zypper or yast or yast2(software installation)
  (4) From source
    - Xen source(make dist-xen,...) / Kernel source+patch(Patch & make modules_install & modifying grub)
    - Xen source / Custom kernel source(make ARCH=xen xconfig, ...)
  * Must-have softwares
  (1) bridge-utils(brctl,...)
  (2) hotplug system(mostly in Linux udev)
  (3) Build utils and related(gcc, binutils, GNU make, zlib, python)
  
1. Check virtualization env. if needed
# rpm -qa | egrep "(xen|virt)" | sort

2. Disable SElinux if installed

3. Install xen related packages and build tools
   (Or install RPMs by yast, yast2 GUI interface...If U r lucky enough).
# zypper search xen*
# zypper install xen xen-devel xen-doc-html xen-doc-pdf xen-libs xen-tools xen_server
# zypper install make gcc gcc-c++

  3-1. Or, install xen by building source like this...
  # wget http://bits.xensource.com/oss-xen/release/3.4.2/xen-3.4.2.tar.gz
  # tar -xvzf xen-3.4.2.tar.gz
  # cd xen-3.4.2
  # zypper install dev86 => essential to build !!
  # make dist-xen dist-tools dist-stubdom
  # make install-xen install-tools install-stubdom

  3-2. Download Vanilla kernel source & xen patch
  # cd /usr/src
  # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.12.tar.bz2
  # tar xvjf linux-2.6.31.12.tar.bz2
  # mv linux-2.6.31.12 linux-2.6.31.12-xen-byMe
  # wget http://gentoo-xen-kernel.googlecode.com/files/xen-patches-2.6.31-10.tar.bz2
  # mkdir xen-patches-v10_2.6.31.12
  # cd xen-patches-v10_2.6.31.12
  # tar xvjf ../xen-patches-2.6.31-10.tar.bz2
  # cd ../
  # cd linux-2.6.31.12-xen-byMe
  # for i in `ls ../xen-patches-v10_2.6.31.12/`; do patch -p1 < ../xen-patches-v10_2.6.31.12/"$i"; done

  3-3. Copy original kernel config file for convenience
  # cp /boot/config-2.6.31.xx-generic .config
   * curses lib will be required...
  # make menuconfig => Set each items exactly !
  -----------------------------------------------
  Processor type and features --->
    [*] Enable Xen compatible kernel
    Networking support --->
    Networking options --->
     <*> 802.1d Ethernet Bridging
    Device Drivers --->
     XEN --->
     [*] Privileged Guest (domain 0)
     <M> Backend driver support
     <M>   Block-device backend driver
     <M>   Block-device tap backend driver
     <M>   Block-device tap backend driver 2
     <M>   Network-device backend driver
     <M>   PCI-device backend driver
     <M>   SCSI backend driver
     <M>   USB backend driver
     <*> Block-device frontend driver
     <*> Network-device frontend driver
     <M> SCSI frontend driver
     <M> USB frontend driver
     <*> Framebuffer-device frontend driver
     <*>   Keyboard-device frontend driver
     [*] Disable serial port drivers
     <*> Export Xen attributes in sysfs
        Xen version compatibility (3.3.0 and later) --->
           3.3.0 and later
  -----------------------------------------------

  3-4. Xenifying Kernel - Make & install
  # export CONCURRENCY_LEVEL=5
  # make => maybe some hours ... --;
  # make modules
  # make modules_install  
  # make install
   * If using mkinitramfs,
  # mkinitramfs -o /boot/initrd.img-2.6.31.12-xen-byMe 2.6.31.12-xen-byMe
   * Or if mkinitrd,
  # depmod -a 2.6.31.12-xen-byMe
  # mkinitrd /boot/initrd-2.6.31.12-xen-byMe.img 2.6.31.12-xen-byMe
  
  3-5. Now, edit Grub menu
  # vi /boot/grub/menu.lst
  Title Xen 3.4.2 - Kernel 2.6.31.12 on OpenSUSE 11.2
    kernel /boot/xen.gz dom0_mem=512000
    module /boot/vmlinuz-2.6.31.12-xen-ByMe ...
    module /boot/initrd-2.6.31.12-xen-byMe.img <= Add this line
  
4. Reboot the system by Grub menu - Xen kernel

  # chkconfig --add xend
  # chkconfig xend on
  # /etc/init.d/xend start
  # chkconfig --add xendomains
  # chkconfig xendomains on
  # /etc/init.d/xendomains start
  
  # chkconfig --add libvirtd
  # chkconfig libvirt on
  # /etc/init.d/libvirtd start
  
5. Check if Xen dom0 system is correctly set up

  # ps aux | egrep "(xen|virt)" | sort
  ...xenwatch, xenbus, xend, HalDaemon.py, xenstored, xencolsoled, libvirtd, ...
  
All done, now test it by creating VMs.


저작자 표시 비영리 변경 금지
신고
블로그 이미지

Barracuda

Bryan의 MemoLog. 쉽게 익혀 보는 IT 실습과 개념원리, 코딩 세계의 얕은 맛보기들, 평범한 삶 주변의 현상 그리고 進上, 眞想, 진상들


오랜만에 Posting...^_^;;;

Sorry for all these English notations.

1. Get Cent5.4 DVD iso file be prepared in local disk(download it!)
 # wget http://blahblah/*.iso  => save it to /home/vmimg_src/cent54dvd.iso

2. Prepare sparse file for disk image & get filesystem ready(24GB virtual disk image)
 # dd if=/dev/zero of=/home/vmimg/centvdisk.img bs=6k seek=4096k count=1
 # mkfs.ext3 /home/vmimg/centvdisk,img

3. Mount iso image to loop device
 # losetup -f => Check free loop device number, consider its loop7
 # losetup -f /home/vmimg_src/cent54dvd.iso => assign iso to /dev/loop7
 # mkdir -p /mnt/iso/cent54dvd
 # mount -t iso9660 /dev/loop7 /mnt/iso/cent54dvd

4. Make httpd be prepared and copy all the installation files
 # mkdir /home/www/cent54
 # vi /etc/apache2/default-server.conf, modify
<Directory “/home/www/cent54”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
 # /etc/init.d/apache2 restart
 # cp -a /mnt/iso/cent54dvd /home/www/cent54

5. Make VM boot loader be prepared
 # cd /home/vmimg
 # mkdir cent54boot; cd cent54boot
 # cp /home/www/cent54/images/xen/vmlinuz ./vmlinuz-install-xen
 # cp /home/www/cent54/images/xen/initrd.img ./initrd-install-xen

6. edit CentOS PV domu configuration
 # cd ~/xen_config
 # vi cent54domu.cfg
-----------------------------------------------------------------------------
name='centOSdomU'
# After installation boot, disable these 2 lines
kernel='/home/vmimg/cent54boot/vmlinuz-install-xen'
ramdisk='/home/vmimg/cent54boot/initrd-install-xen'
# After installation boot, enable below 1 line
#bootloader='/usr/bin/pygrub'
extra='text'
memory=1024
vcpus=1
# After installation boot, disable below 1 line
disk=['file:/home/vmimg/centvdisk.img,xvda,w']
# After installation boot, enable below 1 line
#disk=['tap:aio:/home/vmimages/centvdisk.img,xvda,w']
audio=0
vif=['bridge=br0']
# After installation boot, disable below 1 line
on_poweroff='destroy'
on_reboot='restart'
on_crash='restart'
-----------------------------------------------------------------------------
* As for this process, U need to make root/swap partition manually

7. Create VM with xm command
 # xm create -c cent54domu.cfg => installation starts
   * If  reboot starts after installation, kill it!
 # xm destroy domain_number
 # cp cent54domu.cfg cent54domu_init.cfg
 # vi cent54domu.cfg => Do as the comment says & save it
 # xm create cent54domu.cfg

  * Now VM starts as a normal boot process
  * All done.


저작자 표시 비영리 변경 금지
신고
블로그 이미지

Barracuda

Bryan의 MemoLog. 쉽게 익혀 보는 IT 실습과 개념원리, 코딩 세계의 얕은 맛보기들, 평범한 삶 주변의 현상 그리고 進上, 眞想, 진상들


OpenSuse Xen Kernel 상태에서는 수동으로 Nvidia driver를 잡아주지 않으면 normal video(vga, vesa)에서 아름답지 못한 Suse Desktop을 써야 한다. 물론 Xen 가상화를 사용하지 않는다면 아래와 같이 간단(?)하게 최신 드라이버를 받아 설치하고 사용할 수 있다.
# init 3 ==> text mode로...
# mkdir /tmp/nvidia
# cd nvidia
# wget http://us.download.nvidia.com/XFree86/Linux-x86_64/195.36.15/NVIDIA-Linux-x86_64-195.36.15-pkg2.run
# sh ./NVIDIA-Linux-x86_64-195.36.15-pkg2.run -q
# sax2 -r -m 0=nvidia

Xen Kernel 상태에서 G-force 9800 을 작동시키기 위해 구글링을 해 보았지만 suselinux.co.kr의 freeboard((2009년 11/11 게시물), en.opensuse.org 들을 뒤적거려 보지만 별 다른 소득이 없을 것이다. 자칫 삽질하기 시작하면 겉잡을 수 없는 나락에 빠지는 수고(?)를 겪게 될 것이니 주의 !!

2007년을 기준으로 nvidia가 linux를 지원하는 방법이 바뀌었으며, 2009년 11월까지의 Know how도 Suse 등의 driver 디렉토리 구조가 조금씩 바뀌면서 정답이 거의 없어졌기 때문이다. 그 중에서 본인의 환경에 맞는 해결법을 가장 근접하게 제시한 곳은 http://en.opensuse.org/Talk:Use_Nvidia_driver_with_Xen 바로 여기이지만, 글로 옮기는 도중의 삽질이었는지 모르겠지만 2개의 know-how 글들이 묘하게 어긋나 있어서 살짝 약 오른다. 어긋난 부분을 아래와 같이 정리해본다.

* 위의 최신버전(195.36.15)의 nvidia는 일단 포기함이 현명하다
우선 zypper 또는 yast 로 아래의 package들을 설치해 두어야 한다. 모든 작업은 root 권한에서 수행한다.
kernel-source kernel-syms kernel-xen gcc binutils make
* Xen Kernel booting 상태에서 작업한다

# init 3 (또는 vi /etc/inittab 하여 id:5:initdefault 의 5를 3으로 바꾸고 reboot)
# mkdir /tmp/nvidia; cd /tmp/nvidia
# wget http://us.download.nvidia.com/XFree86/Linux-x86_64/185.18.36/NVIDIA-Linux-x86_64-185.18.36-pkg2.run
# chmod u+x NVIDIA-Linux-x86_64-185.18.36-pkg2.run
# ./NVIDIA-Linux-x86_64-185.18.36-pkg2.run --extract only
# cd /tmp/nvidia/NVIDIA-Linux-x86_64-185.18.36-pkg2/usr/src/nv
# vi Makefile.kbuild ==> EXTRA_CFLAGS += -Wall.. 줄 아래에 빈 칸을 열고 아래 2줄의 내용을 추가한다
XEN_FEATURES := $(shell grep "D xen_features" /boot/System.map-$(shell uname -r) | colrm 17)
EXTRA_LDFLAGS := --defsym xen_features=0x$(XEN_FEATURES)
저장하고 prompt로 빠진다.

# export IGNORE_XEN_PRESENCE=1
# export SYSSRC=/lib/modules/$(uname -r)/source
# export SYSOUT=/lib/modules/$(uname -r)/build

# make module
* 여기까지 성공했으면 현재 디렉토리에 nvidia.ko 파일이 생성될 것이다

# cp nvidia.ko /lib/modules/$(uname -r)/kernel/drivers/video
# cd /tmp/nvidia/NVIDIA-Linux-x86_64-185.18.36-pkg2/usr/X11R6/lib/modules/drivers
# cp nvidia_drv.so /usr/lib64/xorg/modules/updates/drivers/
# cp nvidia_drv.so /usr/X11R6/lib/modules/drivers
# cd /lib/modules/$(uname -r)/kernel/drivers/video/
# depmod -a
# modprobe nvidia
# startx
* 성공적으로 X server 가 기동되면 terminal을 띄워서 /etc/inittab 의 id:5:initdefault: 로 원상복구하고
# shutdown -r now ==> restart, xen kernel 로 부팅한다.



저작자 표시 비영리 변경 금지
신고
블로그 이미지

Barracuda

Bryan의 MemoLog. 쉽게 익혀 보는 IT 실습과 개념원리, 코딩 세계의 얕은 맛보기들, 평범한 삶 주변의 현상 그리고 進上, 眞想, 진상들