Linux host에서 가상화 지원 솔루션 중 VirtualBox를 설치하고 사용하는 경우에, 특히 OpenSuse 12.x 환경에서 virtualbox 를 설치하고, VM을 사용하고자 할 경우(ubuntu 등 기타 linux에서도 비슷하게 적용될 듯)에 주의 사항이 있다.


virtualbox를 https://www.virtualbox.org/wiki/Downloads 에서 다운로드 받고 설치, VirtualBox 기동 후 extpack 까지 설치하고 난 후, virtualbox 메뉴에서 vm을 생성하고 머신을 시작하려고 하면 "virtualbox kernel driver not installed (rc=-1908)" 라는 메시지 창이 뜨고 '/etc/init.d/vboxdrv setup' 을 실행하라고 경고창이 뜨게 된다. 이제 터미널 창에서 '/etc/init.d/vboxdrv setup' 이라고 실행하게 되는데......


이 때, 만약 커널 소스가 linux 에 설치되어 있지 않다면

/etc/init.d/vboxdrv setup

Stopping VirtualBox kernel modules          done

Recompiling VirtualBox kernel modules     failed

라고 오류가 발생되고 더 이상 진행이 되지 않는다. 또 경고창에 나타난 대로 아래와 같이 log를 조회해 보면 오류가 나타남을 알 수 있다.

# cat /var/log/vbox-install.log

Makefile: 181:  *** Error: unable to find the source of your current linux kernel. Specify KERN_DIR=<directorty> and run Make again. Stop.

...

 

이는, virtualbox가 설치되면 kernel module을 로드하기 위해서 해당 커널모듈을 컴파일하게 되는데, 커널 소스가 설치되지 않은 경우에 만날 수 있는 에러 상황이다.


터미널 명령으로 아래와 같이 실행하면 문제를 해결할 수 있다(root 권한으로 실행, 아래는 Suse 계열의 linux에 대한 명령이며, OS에 맞춰 yum, apt-get 과 같은 패키지 설치 명령을 사용하면 된다)

# zypper search kernel-source (=> OS에 따라 kernel-sources 로 나타나는 경우도 있음)

# zypper refresh

# zypper in -y kernel-source

# /etc/init.d/vboxdrv restart

# /etc/init.d/vboxdrv setup

Stopping VirtualBox kernel modules            done

Recompiling VirtualBox kernel modules       done

Starting VirtualBox kernel modules              done


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

Barracuda

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

점검 대상 머신에 SNMP를 설정(SNMP agent; server side)하고 python 프로그램(SNMP manager; client side)로 모니터링 데이터를 수집하기 위한 셋업 절차.


OpenSuse 11.3 repository 에는 pysnmp가 포함되어 있지 않으며, pymongo 는 OpenSuse 12.* 에서도 공식 지원하지

않으므로 수작업으로 설치해야 한다(python 2.6.5 기준)


* pysnmp : python 환경에서 NET-SNMP Agent/Manager 개발시에 필요한 API

* pymongo : python 환경에서 mongodb 관련 application 개발시에 필요한 API/driver


[Client - pysnmp 설치]

# zypper in -y python-devel

# zypper in -y python-setuptools

# zypper in -y git

# curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py

# python get-pip.py

# pip install pysnmp-mibs

# wget http://downloads.sourceforge.net/project/pysnmp/pysnmp/4.2.3/pysnmp-4.2.3.tar.gz

# tar xvzf pysnmp-4.2.3.tar.gz

# cd pysnmp-4.2.3

# python setup.py install


[Client - pymongo 설치]

# zypper in -y git

# git clone git://github.com/mongodb/mongo-python-driver.git pymongo

# cd pymongo/

# python setup.py install


[Client - python-mysql 설치]

# zypper in -y python-mysql


[Server - SNMP agent 설치]

# zypper in -y net-snmp

# chkconfig --add snmpd

# vi /etc/snmp/snmpd.conf

# service snmpd start


[snmpd.conf 내용 - snmp v 1, 2 & linux 기준]

###############################################################################

# Access Control

###############################################################################

# com2sec sec.name source community

com2sec mysec     1.1.1.1  mycommunity # Client gateway ip 또는 cidr

com2sec mysec     10.10.1.0/24  mycommunity # Client gateway ip 또는 cidr

com2sec mysec     localhost mycommunity


# group groupname sec.model  sec.name

group mygroup        v1         mysec

group mygroup        v2c       mysec


# view attr incl/excl subtree mask

view all    included  .1                               80


# access groupname sec.model sec.level match  read   write  notif

access mygroup ""      any       noauth    exact  all    none   none

access mygroup ""      any       noauth    exact  all    all    none


rwuser initial priv

createUser initial MD5 auth_pass DES priv_pass


# system info.


# to view with snmpwalk, snmpwalk -v 2c -c mycommunity localhost system

syslocation     My Office

syscontact      administrator (xxx@yyy)

# sysname      aaa # Not mandatory


# cpu load

# to view with snmpwalk, snmpwalk -v 2c -c mycommunity localhost .1.3.6.1.4.1.2021.10

#load 12 14 14 # uncomment if necessary


# disk avvailable space

# to view with snmpwalk, snmpwalk -v 2c -c mycommunity localhost .1.3.6.1.4.1.2021.9

#disk / 100000 # uncomment if necessary


# process check

# to view with snmpwalk, snmpwalk -v 2c -c mycommunity localhost .1.3.6.1.4.1.2021.2

# Daemons or other application process names to check

proc tomcat

proc lighttpd

proc mydaemon_process


# shell exec.

# to view with snmpwalk, snmpwalk -v 2c -c bryan localhost .1.3.6.1.4.1.2021.8

exec myscript1 /root/bin/script1.sh param

exec myscript2 /root/biin/script2.sh param1 param2


[snmp 서비스 설정 - Windows 2008 기준]

1. 서버 관리자 시작

시작 > 제어판 > (모든 제어판 항목) > 프로그램 및 기능 > 윈도우즈 기능 사용/사용 안함 => 서버관리자 실핼

또는

시작 > 관리도구 > 서버관리자 실행


2. 서버관리자 설정

기능 > 기능 추가

기능 성택창에서 SNMP 서비스 / SNMP WMI 공급자 Check, 설치


3. 방화벽 설정

시작 > 관리도구 > 고급보안이 포함된 Windows 방화벽

인바운드 규칙

SNMP 서비스 > 속성 >

- 일반: 사용함, 연결 허용

- 고급: 에지 통과 허용


4. 서비스 설정

시작 > 관리도구 > 서비스

SNMP Service > 속성

- 에이전트: 적절히 설정

- 보안: 받아들인 커뮤니티 이름 => mycommunity 추가, 확인

SNMP Service > 다시 시작








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

Barracuda

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

Opensuse 11.3, 12.1 각각에 대해 2회에 걸쳐서 정리

* howtoforge.com 내용 참조, 테스트 실행 & 보완


1. Lighttpd & php5 환경 설정


# zypper in -y lighttpd

# chkconfig --add lighttpd

# chkconfig lighttpd on

# service lighttpd start


# zypper in -y php5-fastcgi


* 아래 라인을 찾아서 un-comment

# vi /etc/php5/fastcgi/php.ini 

cgi.fix_pathinfo=1


* 아래 라인을 찾아서 un-comment

# vi /etc/lighttpd/modules.conf

include "conf.d/fastcgi.conf"


server.modules = (

...

  "mod_auth",

...

)


* 아래 라인을 추가

# vi /etc/lighttpd/lighttpd.conf

include "conf.d/auth.conf"


* 아래 라인들을 un-comment 하고 내용을 수정

# vi /etc/lighttpd/conf.d/auth.conf

auth.debug = 2

auth.backend = "plain"

auth.backend.plain.userfile  = "/etc/lighttpd/lighttpd.user"


auth.require = ( "/" =>

                      (

                        "method"  => "basic",

                        "realm"   => "Password protected area",

                        "require" => "user=loginid"

                      ),

                    )


* 아래 로그인 정보를 등록하고 저장

# vi /etc/lighttpd/lighttpd.user

loginid:loginpassword


* 아래 라인이 있는지 확인

# vi /etc/lighttpd/conf.d/fastcgi.conf

server.modules += ( "mod_fastcgi" )


* 아래 부분을 찾아서 un-comment

fastcgi.server = ( ".php" =>

                   ( "php-local" =>

                     (

                       "socket" => socket_dir + "/php-fastcgi-1.socket",

                       "bin-path" => server_root + "/cgi-bin/php5",

                       "max-procs" => 1,

                       "broken-scriptfilename" => "enable",

                     )

                   ),

                   ( "php-tcp" =>

                     (

                       "host" => "127.0.0.1",

                       "port" => 9999,

                       "check-local" => "disable",

                       "broken-scriptfilename" => "enable",

                     )

                   ),


                   ( "php-num-procs" =>

                     (

                       "socket" => socket_dir + "/php-fastcgi-2.socket",

                       "bin-path" => server_root + "/cgi-bin/php5",

                       "bin-environment" => (

                         "PHP_FCGI_CHILDREN" => "8",

                         "PHP_FCGI_MAX_REQUESTS" => "10000",

                       ),

                       "max-procs" => 2,

                       "broken-scriptfilename" => "enable",

                     )

                   ),

                )

* 위의 옵션은 소규모 접속일 경우이고, 일반적인 다중 접속 사이트일 경우 아래와 같이 규모에 맞게 적당히 옵션을 조정한다.

"PHP_FCGI_CHILDREN" => "16"

"max-procs" => 5


# service lighttpd restart


* lighttpd의  default 문서 홈디렉토리는 /srv/www/htdocs 이다


# vi /srv/www/htdocs/info.php

<?php

phpinfo();

?>


* 브라우저로 접속 확인




2. MySQL과 utility 패키지 설치


* Web 을 통하지 않고 직접 DB접속을 위해 접속 클라이언트를 사용할 경우에는 아래와 같이 클라이언트를 설치한다.

# zypper in -y mysql-community-server-client


* MySQL 및 일반적으로 많이 사용하는 드라이버 설치

# yast2 -i php5-mysql php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-pear php5-sysvmsg php5-sysvshm


3. mongodb 드라이버 설치


* pecl.php.net 사이트를 이용하여 최신 버전의 php mongo 드라이버를 찾아서 다운로드 한다.


# zypper in -y php5-devel

# wget http://pecl.php.net/get/mongo-1.3.0beta2.tgz

# tar xvzf mongo-1.3.0beta2.tgz; cd mongo-1.3.0beta2

# phpize

# ./configure

# make

# make install

# ldconfig

# vi /etc/php5/fastcgi/php.ini -> 아래 라인을 추가

extension=mongo.so


# service lighttpd restart


* 1의 과정과 같이 브라우저를 통해 php 환경에 맞게 설치된 드라이버들을 최종 확인한다.





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

Barracuda

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


* 본 정보는 Opensuse 12.1 에도 그대로 적용 가능하다.

Opensuse 에 기본으로 제공되는 scim(xim)은 terminal 에서 한글 입력이 거의 안된다. 무슨 말인지 모르겠다면 직접 설치해서 gedit 이나 chrome 에서 한글을 입력해 보면 된다. 아마도 '우리는' 이라고 치면 '우루는' 이라고 입력되는 꼬락서니를 볼 수 있을 것이다.

* 선행 패키지 설치(su - 로 root 로 변신)

  # zypper in -y gcc make autoconf libhangul libhangul-devel

  -> http://code.google.com/p/libhangul/downloads/list 에서 libhangul 최신 버전 확인

  -> wget http://libhangul.googlecode.com/files/libhangul-0.1.0.tar.gz

  -> configure --prefix=/usr; make; make install



* Nabi source download & build

  # wget http://kldp.net/projects/nabi/download/5926?filename=nabi-0.99.9.tar.gz

  -> http://code.google.com/p/nabi/downloads/list 에서 최신 버전 확인 

  -> wget http://nabi.googlecode.com/files/nabi-0.99.11.tar.gz


  # tar xvzf nabi-0.99.11.tar.gz

  # ./configure --prefix=/usr
  # make && make install


* nabi 설정

  # vi /etc/X11/xim.d/nabi

  OLD_PATH=$PATH
  PATH=/usr/bin:/usr/X11R6/bin:$PATH

  if ! type -p nabi > /dev/null 2>&1 ; then
    echo "nabi is not available."
    return 1
  fi

  export XMODIFIERS="@im=nabi"
  export GTK_IM_MODULE=xim
  export QT_IM_SWITCHER=imsw-multi
  export QT_IM_MODULE=xim

  case $WINDOWMANAGER in
    *kde|*windowmaker|*wmaker)
    nabi -wm -wait &
    ;;
  *)
    nabi &
    ;;
  esac

  PATH=$OLD_PATH

  # success:
  return 0


# vi /etc/sysconfig/language, 아래 내용으로 편집/수정

  INPUT_METHOD="nabi"



* Logout하고 다시 Login 하면 우측하단 Tray에서 nabi icon 을 확인할 수 있다 


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

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