지난 포스팅에서 windows(hvm) guest 를 Ubuntu 14.4 dom0 에 설치하고 설정하는 과정을 다루어 보았다. 이번에는 동일한 host 환경에 pv(반가상화) guest 를 설치하는 과정을 정리해 보고, 주의할 사항이나 문제 해결 방법 등에 대해 기록하고자 한다.


Host 의 xen 환경에 대해서는 지닌 시간에 충분히 다루었으므로, 이번에는 pv guest 를 설치하고 다루는 중요한 체크포인트들에 대해 집중적으로 기록한다.


지난 포스팅의 HVM guest 설치 과정과 이번 포스팅에서 다룰 pv guest 설치의 차이점들을 짚어 보도록 하자(참고/지난 포스팅: [Xen 가상화 1] Windows 7 hvm guest on Ubuntu 14.4 LTS, Xen 4.4.1 - 설치 및 설정 가이드)


* HVM guest는 Host 의 각종 장치를 에뮬레이션하는 기능(가상화된 장치)를 직접 사용하기 때문에 설치 CD/DVD-rom 이나, 네트워크 설치 등 다양한 방법을 자연스럽게 써서, 설치 과정이 직관적이고 쉬울 뿐 아니라 VNC 를 통해서 그래피컬한 방식으로 진행 가능하다

* PV(paravirt) guest OS는 주로 linux 계열의 OS 들을 사용하며, HVM guesu OS로 사용되는 Windows / Open Solaris / FreeBSD  등은 pv guest 로는 사용이 곤란하다

* PV guest 설치 방법은 크게 두 가지로 나뉜다

 1. config 파일 설정 방식으로, image 파일을 loop device 로 마운트하여 완전 수작업으로 시스템 파일 복사/설치(guest install 과정이 없음)하고 vm을 구동

 2. virt-install 로 text 방식 또는 virt-manager 로 GUI 방식으로 설치(guest install 과정이 있음)

* PV guest 설치시에는 Host 의 ISO 파일이나 CD/DVD-rom 을 사용할 수 없다

virt-manager 에서 새로운 vm 추가시에 "로컬 CDROM/ISO" 를 통한 설치 진행 시 paravirt 는 선택이 불가



위의 마지막 줄의 제약사항은 config 파일 설정 방식이나 virt-install 을 통한 명령어 방식에서도 동일하므로, 지난 포스팅에서와 같이 iso 파일을 마운트해서 PV guest 를 설치해 보려는 시도는 의미가 없음에 주의하자.


1. 어떤 방법을 쓸 것인가? ... GUI로 쉽게 가자


위에서 언급한 config 파일 설정을 통한 완전 수작업 방식은, Host OS 나 guest OS의 종류에 따라 방법이 달라질 뿐 아니라, image 파일 내의 파티션 설정, vmlinuz/initrd 등의 부트로더/OS파일 복사, 패키지의 수작업/선별적 설치(SUSE는 zypper, Ubuntu 는 apt-get...이런 식. 각각의 옵션도 상이함) 등의 복잡한 과정을 밟아야 하므로 다소 난이도가 있는 까다로운 작업이 될 수 있다. 따라서 이번 포스팅에서는 virt-manager 를 통한 쉬운 GUI 방식을 선택해서 진행해 보려 한다.


* 지난 포스팅에서 virt-manager 설치는 이미 해 두었으므로 별도 준비 과정은 없다

* 우선 xen의 config 파일을 수정하고 restart 한다

$ su -

# vi /etc/xen/xend-config.sxp -> 아래 2개 항목을 찾아서 uncomment 하고 내용을 수정한다

(xend-http-server yes)

(xend-port            8000)

service xen restart


* (옵션 사항) visrh 명령으로 storage poo 을 미리 설정해 두면 설치 iso, guest image 저장 위치를 따로 지정할 수 있다

(/home/vmimage는 guest OS의 설치 이미지 파일이 생성될 위치, /home/vmos_images 는 iso 파일이 저장된 위치)

# virsh

virsh # pool-destroy default

virsh # pool-undefine default

virsh # pool-define-as --name default --type dir --target /home/vmimage

virsh # pool-autostart default

virsh # pool-build default

virsh # pool-start default

virsh # pool-destroy local

virsh # pool-undefine local

virsh # pool-define-as --name local-iso --type dir --target /home/vmos_images 

virsh # pool-autostart local-iso

virsh # pool-build local-iso

virsh # pool-start local-iso

virsh # quit


* virt-manager 를 실행하고 VM 생성을 위한 과정을 진행한다

# virt-manager


127.0.0.1(xen) 항목을 더블클릭하여 root 암호를 입력하여 로그인


툴바의 '새 가상머신 생성' 버튼을 클릭하고 머신 이름 지정 후 '네트워크 설치'를 선택하고 '앞으로' 클릭


URL 입력 부분에 네트워크 설치 URL을 입력하고 OS종류, 버전을 선택하고 '앞으로'


* Ubuntu 14.4(trusty) 를 위한 네트워크설치 URL은 다음 3개 중 하나를 선택하여 입력

http://kr.archive.ubuntu.com/ubuntu/dists/trusty/main/installer-amd64/

http://us.archive.ubuntu.com/ubuntu/dists/trusty/main/installer-amd64/

http://mirrors.kernel.org/ubuntu/dists/trusty/main/installer-amd64/


디스크 이미지의 크기를 기가바이트 단위로 지정하고 '앞으로'


'추가옵션' 클릭, Virt 종류는 xen(paravirt) 로 선택


항목별 변경 사항이 있으면 각각 수정한 후 '적용', 상단의 '설치시작' 을 선택하면 다음 단계로 진행


프로그레스 바가 있는 작은 팝업창이 뜬 후, 약간의 시간이 지나면 가상머신관리자 창에 새로운 vm 이 나타난다. 이 때 접속이 되지 않는 시커먼 그래픽 콘솔 창이 같이 뜨는데, 당황하지 않고 창을 닫아 버리자(paravirt guest이므로 지금은 그래픽 화면을 볼 수 없고, base system 설치가 완료된 이후에는 가상콘솔 화면으로 접속할 수 있다).


다다

virt-manager 구동 후 시간이 지났을 경우 root 로그인 창이 뜨기도 한다



* xl list 를 해 보면 방금 생성한 vm 이 기동되고 정상 작동중인 것을 확인 수 있다

* 이제부터는 터미널을 열어서 텍스트 방식으로 진행한다. console 로 접속하면 셋업 단계의 화면을 접하게 된다

# xl li

Name                                        ID   Mem VCPUs State Time(s)

Domain-0                                     0 10714     4     r-----    4124.2

ubuntu14-pv3                                 3  1024     1     -b----       2.2

# xl console 3


엔터를 입력하여 다음 단계로...


other>Asia> ... 국가를 선택하고 엔터


default locale 선택하고 엔터


hostname 입력하고 엔터



* 이후부터는 일반적인 ubuntu OS 설치 과정과 거의 유사하므로 중간 과정 생략


모든 설치 과정이 완료되면 vm은 자동으로 reboot 된다


virt-manager 의 툴바에서 '가상머신 콘솔' 버튼을 클릭하면 새로운 vm에 접속할 수 있다. xl console 을 통해 text 방식으로도 접속 가능(새로이 만들어진 vm의 ip는 192.168.25.29 로 자동 할당 되어 있다)


Host 의 터미널에서 vm 쪽으로 ping test 를 수행해 본다. 네트워크가 정상 작동 됨을 볼 수 있다.


2. vm 복제(vm cloning)


* 새로운 vm이 설치되고 정상 작동하는 데에 수 십분 또는 그 이상의 시간이 소요되는데, 기존의 관리 대상인 vm을 복제해서 사용하면 몇 초만에 새로운 vm을 생성하여 사용할 수 있다.


복제할 대상이 되는 vm을 종료한 후, virt-manager에서 우클릭, 복제를 수행하면 된다


복제 될 vm의 이름을 지정하면 저장소도 해당 이름으로 자동 복제된다


스토리지의 크기에 따라 수 초~수 분 내로 새로운 vm이 만들어 진다


새롭게 복제된 vm이 나타났다. 이후의 테스트 과정은 생략한다.


* 참고: (설정 파일 위치 관련)

 - virt-manager, virt-install 같은 tool이 관리하는 기본 설정 파일은 /etc/libvirt 내에 위치한다

 - 사용자 고유의 virt-manager에 대한 각종 vm 관련 설정 사항은 $USER/.gconf/apps/virt-manager 내에 위치한다(본 예시에서는 /root/.gconf/apps/virt-manager 가 될 것이다)



- Barracuda -


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

Barracuda

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


2015년 현재, Opensource Xen이나 Citrix XenServer+XenCenter, VMWare ESX+vSphere, Oracle VM Server 등의 많은 가상화 Solution들이 있다. 본 편에서는 현존 대다수 가상화 솔루션들의 근간이 되는, Opensource Xen을 활용한 가상화 실습 시에 가장 필수적으로 밟아 나가는 단계를 정리해 두려 한다. 염두에 두고 있는 것은 Ubuntu와 OpenSuse 를 각각 Host로 하고 Windows 7 과 CentOS Server 를 각각 Guest 로 하는 조합으로 대략 3~4가지의 시리즈를 써 나가는 것이다.


본 편에서는 그 첫 번째 Case로, Ubuntu 14.4 LTS 를 Host(Dom0)로 한 Xen 환경에서 Windows 7  VM을 사용하기 위한 방법과 과정을 정리해 나가고자 한다. 단, 가상화 솔루션이 "어떻게 작동하는지"의 이해에 도움이 되도록, 각 과정을 수동으로 직접 다루며, 최대한 GUI 관리 툴 등은 사용하지 않는 것이 본 포스팅들의 특별한 의도도 생각하면 되겠다.


전체적인 과정을 간단히 나열하면 다음과 같다.


* Ubuntu 14.4 LTS Desktop 설치 - Host OS 준비

* Host 를 Xen Dom0 로 사용할 수 있도록 하는 필수 과정들

* VM에 Guest OS(Windows 7) 을 설치하고 사용, 운영하는 방법과 과정



이제 각 단계 별로 실제 작업을 차근차근 수행해 보자.


1. Ubuntu 14.4 LTS 설치 - Host OS 준비


* 준비물: Ubuntu 14.4 LTS Desktop, 64 bit의 iso 파일을 내려 받아 구운 DVD-ROM(http://www.ubuntu.com/download/desktop 참조)


Windows계열이든 Linux 계열이든 OS를 설치하는 과정은 크게 다르지 않다. 설치 화면을 "잘 보고 따라 가면" 된다! 만약 주의 사항이 있다면 따로 Post-it 같은 메모지를 써서 기록해 두는 방법을 애용하자. 아마도 내 말이 피가 되고 살이 됨을 나중에 느끼게 될 지도 모를 일이다.


* OS 설치시 가상화 등의 추가 옵션은 따로 지정하지 않고,  Default 옵션만으로 진행한다.

* 본 글에서는 vm을 설치할 볼륨이 스파스(sparse) 파일이 될 것이므로, Host OS에 마운트 되는 볼륨의 경우 /(root) 볼륨은 20~100 GB 가량, /home 볼륨은 200GB~400GB 이상 여유 있게 잡는다. vm OS 가 설치된 볼륨 파일들을 /home 내에 하위 디렉토리를 만들고 체계적으로 관리하기 위함이다.

* 한글/영문 입력이 가능하도록 설정하고, 인터넷 접속이 가능하도록 네트워크 설정까지 완료한다.

* 추후에 linux guest vm으로 양방향 ssh 접속/운영이 가능하도록 다음과 같이 설정해 둔다

$ su -

# apt-get install ssh

# vi /etc/ssh/sshd_config -> 아래 항목을 찾아서 yes 로 변경한다.

  PermitRootLogin yes

# service ssh restart



2.Host 를 Xen Dom0 로 사용할 수 있도록 하는 필수 과정들


* 이번 단계에서는 Xen 관련 패키지 설치, VM 네트워킹을 위한 bridge 설정, 부팅 시 Xen kernel 이 로딩되도록 grub 설정 등의 작업을 수행한다.

* 과정을 단순하게 하기 위해 모든 패키지는 바이너리 형태로 설치된다. 즉 source 를 다운로드하여 빌드하는 방식으로 설정하는 경우에 꼭 써야 하는 apt-get build-dep, .configure, make && make install 등의 명령이나 스크립트의 실행 등은 사용하지 않아도 된다.


# apt-get install xen-hypervisor-4.4-amd64 xen-utils-4.4

# apt-get install qemu-kvm libvirt-bin libvirt-dev virt-manager virtinst vncviewer

# adduser $USER libvirtd


* Xen networking 에서 가장 중요한 부분. 여기서는 첫 번째 NIC(eth0)를 Xen 에서 사용할 bridge로 설정한다.

# vi /etc/network/interfaces -> 구조에 맞게 적당히 수정(dhcp 를 사용하지 않는 경우는 dhcp 대신 static 으로)

  iface eth0 inet manual
  auto xenbr0
  iface xenbr0 inet dhcp
      bridge_ports eth0

  ...


# vi /etc/xen/xend-config.sxp -> uncomment 처리

  (network-script network-bridge)

# vi /etc/default/xen -> xl 로 되어 있는지 확인(기본 툴스택이 xm 에서 보다 향상된 최근 xl 로 업그레이드 되어 있음)

  TOOLSTACK=xl


# vi /etc/default/grub

  GRUB_CMDLINE_LINUX=""  # dom0_mem=512 dom0_max_vcpus=1 dom0_vcpus_pin 와 같이 튜닝 가능

  GRUB_CMDLINE_LINUX_DEFAULT=""


# cd /etc/grub.d

# mv 10_linux 21_linux -> 부팅 순서에 20_linux_xen 이 먼저 배치되도록 변경

# sync

# reboot


* Host 의 네트웍이 정상 작동 하는지, 브리지 설정이 제대로 되어 있는지 점검한다.

# ping google.com

# brctl show

  bridge name    bridge id                    STP enabled    interfaces
  virbr0          8000.000000000000         yes       
  xenbr0        8000.d0505602a73d         no                   eth0


* 아래의 xl 실행 결과를 볼 수 있다면, 설정된 Xen 가상화 환경이 잘 작동하는 것으로 보고 다음 단계 수행

# xl info
host                   : Ubuntu-desktop
release                : 3.16.0-38-generic
version                : #52~14.04.1-Ubuntu SMP Fri May 8 09:43:57 UTC 2015
machine                : x86_64
nr_cpus                : 4
max_cpu_id             : 3
nr_nodes               : 1
cores_per_socket       : 4
threads_per_core       : 1
cpu_mhz                : 3399
hw_caps                : bfebfbff:2c100800:00000000:00007f00:77fafbff:00000000:00000021:00002fbb
virt_caps              : hvm hvm_directio
total_memory           : 12207
free_memory            : 8559
sharing_freed_memory   : 0
sharing_used_memory    : 0
outstanding_claims     : 0
free_cpus              : 0
xen_major              : 4
xen_minor              : 4
xen_extra              : .1
xen_version            : 4.4.1
xen_caps               : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
xen_scheduler          : credit
xen_pagesize           : 4096
platform_params        : virt_start=0xffff800000000000
xen_changeset          :
xen_commandline        : placeholder
cc_compiler            : gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
cc_compile_by          : stefan.bader
cc_compile_domain      : canonical.com
cc_compile_date        : Wed May 20 12:19:20 UTC 2015
xend_config_format     : 4



3.VM에 Guest OS(Windows 7) 을 설치하고 사용, 운영하는 방법과 과정



* 준비물: Windows 7 이 설치 가능한 CD 또는 DVD의 iso 파일, /root/vmos_images/win7.iso 로 복사해 둔다.


* 이번 단계에서는 VM을 설치하기 위한 가상 볼륨(Sparse 파일)을 준비하고, 실제로 guest os인 Windows 7을 설치, Xen을 통해 구동하고 사용하는 방법을 기술한다.


# mkdir -p /home/vmimage/win7

# cd /home/vmimage/win7

# dd if=/dev/zero of=./win7.img bs=4k count=1 seek=8M -> 30GB 가량의 빈 파일 생성


* Windows 계열 OS 는 일반적으로 전가상화(Full virtualization, HVM) 방식을 쓴다

# vi win7.cfg

# WINDOWS 7 CONFIGURATIONS for Xen
#  - Installation: Ubuntu 14.4 LTS, Xen 4.4.1 guest

builder = 'hvm'
vcpus = 2
memory = 4096

#Disks
disk = [
    'file:/home/vmimage/win7/win7.img,ioemu:hda,w',
    'file:/root/vmos_images/win7.iso,ioemu:hdc:cdrom,r'
]

#Hostname
name = 'windows7-1'

# Networking
vif = ['type=ioemu,mac=00:16:3E:*:*:*,bridge=xenbr0']

# Behavior
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'

on_xend_stop='shutdown'

# VNC
vnc=1           # Enable VNC
vncconsole=0  # Don’t start vncviewer after “create” the domain
vncunused=0   # Don’t automatically assign unused port based on domain id
vncdisplay=2    # VNC Port Number to be added to “5900”. e.g.:  vncdisplay=2  : port=5902
                               # So, invoke "vncviewer 127.0.0.1::5902 &" after "create" domU

# Boot: d(cdrom) - to install Windows into the image file or target volume
# After installation, change it as 'c' or 'cd'
boot='d'
#boot='cd'


# Mouse cursor sync in vncviewer

usb=1

usbdevice='tablet'


# Set video ram for HiRes

stdvga=1

videoram=16


* Xen에 의해 vm이 생성되고, 설정 파일(win7.cfg) 에서 지정된 가상볼륨 파일(win7.img)에 windows 7 이 설치되는 과정

# xl create win7.cfg

Parsing config from win7.cfg


# vncviewer 127.0.0.1::5902 &




# xl list

Name                   ID    Mem  VCPUs    State       Time(s)
Domain-0                0   3482      4         r-----     4430.5
windows7-1              14  4096     4         -b----       71.1



- Barracuda -

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

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 실습과 개념원리, 코딩 세계의 얕은 맛보기들, 평범한 삶 주변의 현상 그리고 進上, 眞想, 진상들


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 실습과 개념원리, 코딩 세계의 얕은 맛보기들, 평범한 삶 주변의 현상 그리고 進上, 眞想, 진상들