본문 바로가기

Technical/Cloud, Virtualization, Containers

OpenSuse 11.2, Xen Kernel(Dom-0) 상태에서 Nvidia 9800GT 잡기(kernel 2.6.31.12-0.2-xen)


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 로 부팅한다.