소개
목적
이 글은 xVM DomU 를 솔라리스 라이브 CD 배포판에서 지원하도록하는 방법을 설명 하고 있습니다. (참고: xVM 은 솔라리스를 위한 Xen 을 뜻함). CDROM 은 오직 읽기 전용이므로 이 작업은 배포판을 하드디스크에 설치한 이후에만 작업이 가능합니다.
이 글을 위해서 우리는 오픈솔라리스 배포판인 MilaX 0.3.2 를 이용할 것입니다. 그러나 다른 오픈솔라리스 배포판에서도 동일하게 적용될 것입니다 (예를 들어 Belenix).
범위
이 글은 간단히 xVM DomU 지원을 추가 하는 방법에 대해서만 설명합니다;xVM 혹은 Xen 에 개념에 대해서는 설명하지 않습니다.
요구사항
다음의 툴들과 파일들이 사용 됩니다.
- MilaX 0.3.2 라이브 CD ISO 이미지
- 라이브 CD에서 사용되는 패키지 SUNWcakr.i 과 SUNWcakrx.i Milax 0.3.2 를 위해서 이것은 솔라리스 snv_95
- QEMU 를 실행할 수 있는 머신. 아래의 예제에서 필자는 리눅스에서 kvm 을 사용하였는데 이것은 솔라리스에서 QEMU 를 실행하거나 혹은 QEMU 를 지원하는 운영체제에서 수행 가능함.
- xVM Dom0 혹은 Xen Dom0 을 실행하고 있는 머신
참고자료
| MilaX 홈페이지 | http://www.milax.org |
| MilaX 다운로드 페이지 | http://www.milax.org/?page_id=9 |
| Xen 홈페이지 |
http://www.xen.org |
| 썬 xVM 홈페이지 |
http://www.sun.com/software/products/xvm/ |
| 오픈솔라리스 Xen/xVM | http://www.opensolaris.org/os/community/xen |
| QEMU 홈페이지 | http://bellard.org/qemu |
| 오픈솔라리스의 QEMU 프로젝트 | http://www.opensolaris.org/os/project/qemu/ |
| kvm 위키 | http://kvm.qumranet.com/kvmwiki |
| VirtualBox 홈페이지 |
http://www.sun.com/software/products/virtualbox/ |
| Belenix 홈페이지 |
http://www.belenix.org |
준비작업
현존하는 솔라리스 라이브 CD 의 최신 버전은 zfsinstall 이라고 불리는 솔라리스 배포판을 라이브 CD 에서 로컬 하드디스로 설치해주는 스크립트를 가지고 있습니다. 이러한 스크립트는 솔라리스를 zfsroot 에 설치 합니다. 이것은 QEMU (혹은 VirtualBox) 에서도 잘 적용되고 이 스크립트에 의해 생성되는 가상 하드디스크들은 QEMU 가상 머신에서 부팅이 가능합니다. 그러나 안타깝게도 아직까지는 솔라리스 xVM DomU 에서 부팅되지는 않습니다. 그러므로 첫번째 단계는 UFS 포맷된 가상 하드디스크에 배포판을 설치 하는 것입니다.
그러므로 첫번째 단계는 가상 머신의 하드디스크를 위해 이미지 파일을 생성하는 것입니다.
xtrnaw7@t61p:/data/nobackup/qemu/harddisk$ qemu-img create -f raw milax_with_xen.hdd 20G Formatting 'milax_with_xen.hdd', fmt=raw, size=20971520 kB
주의: 반드시 QEMU 와 xVM 에 의해 인식되는 디스크이미지 포맷을 사용해야 합니다.
다음으로 QEMU (혹은 kvm) 가상 머신을 MilaX 0.3.2 라이브 CD ISO 이미지 에서 실행합니다.
xtrnaw7@t61p:~$ /usr/bin/kvm -net user -net nic -usb -usbdevice tablet -L /usr/share/qemu -usb \
-boot d -m 512 -net nic,model=rtl8139 -redir tcp:1181::22 \
-name 'Milax_from_harddisk_ssh_port:_1181' \
-hda /home/xtrnaw7/data/nobackup/qemu/harddisk/milax_with_xen.hdd \
-cdrom /home/xtrnaw7/data/nobackup/iso/milax032.iso \
-vnc :1 -k de &
그 다음 VNC 를 통해서 가상 머신에 접속합니다.
xtrnaw7@t61p:~$ vncviewer :1 &
혹은 ssh 로 접속합니다.
xtrnaw7@t61p:~$ ssh -x -l alex -p 1181 localhost
설치
QEMU 의 가상 하드디스크에 솔라리스 설치
주의: 모든 단계는 root 유저로 수행되야 합니다.
첫번째 단계는 가상 하드디스크를 파티셔닝하고 솔라리스 format 커맨드를 이용해서 필요한 슬라이스들을 생성하는 것입니다.
이 예제에서는 다음과 같은 슬라이스 설정을 사용했습니다:
Part Tag Flag Cylinders Size Blocks 0 root wm 3 - 1308 10.00GB (1306/0/0) 20980890 1 swap wm 1309 - 1570 2.01GB (262/0/0) 4209030 2 backup wu 0 - 2606 19.97GB (2607/0/0) 41881455 3 unassigned wm 1571 - 2606 7.94GB (1036/0/0) 16643340 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 unassigned wm 0 0 (0/0/0) 0 8 boot wu 0 - 0 7.84MB (1/0/0) 16065 9 alternates wm 1 - 2 15.69MB (2/0/0) 32130
슬라이스 0 은 rootfs 를 위해 사용되고 슬라이스 1은 swap 을 위해 사용됩니다.
다음 단계로는 UFS 파일 시스템을 하드디스크의 rootfs 를 위한 슬라이스에 생성하는 것입니다:
(root@milax)# newfs /dev/rdsk/c4d0s0 newfs: construct a new file system /dev/rdsk/c4d0s0: (y/n)? y Warning: 870 sector(s) in last cylinder unallocated /dev/rdsk/c4d0s0: 20980890 sectors in 3415 cylinders of 48 tracks, 128 sectors 10244.6MB in 214 cyl groups (16 c/g, 48.00MB/g, 5824 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 98464, 196896, 295328, 393760, 492192, 590624, 689056, 787488, 885920, 20055584, 20154016, 20252448, 20350880, 20449312, 20547744, 20646176, 20744608, 20843040, 20941472
xVM DomU 의 가상 하드웨어들이 QEMU 가상 머신의 가상 하드웨어들과 다르기 때문에 우리는 반드시 진행 하기 전에 하드웨어에 특정한 libc 를 언마운트 해 주어야 합니다:
(root@milax)# umount /lib/libc.so.1
이제 MilaX 를 위한 가상 하드디스크 상의 root 슬라이스를 /a 로 마운트 합니다.
(root@milax)# mkdir /a (root@milax)# mount /dev/dsk/c4d0s0 /a
그다음에 필요한 파일들을 슬라이스로 복사 합니다.
참고: 아래의 명령들은 MilaX 의 일부로 제공되는 zfsinstall 스크립트에서 복사해 온 것입니다.
커맨드들을 가상 머신의 스크립트로 복사 한 다음에 root 권한으로 실행합니다:
cd / find . -xdev -depth -print | cpio -pvdm /a 2>&1 > /dev/null # libc! cp -rP /lib/libc.so* /a/lib 2>&1 > /dev/null mkdir -p /a/alex cd /alex find . -xdev -depth -print | cpio -pvdm /a/alex 2>&1 > /dev/null mkdir -p /a/root cd /root find . -xdev -depth -print | cpio -pvdm /a/root 2>&1 > /dev/null mkdir -p /a/usr cd /usr find . -xdev -depth -print | cpio -pvdm /a/usr 2>&1 > /dev/null mkdir -p /a/system/object mkdir -p /a/system/contract mkdir -p /a/tmp mkdir -p /a/proc mkdir -p /a/var/run mkdir -p /a/dev/fd touch /a/etc/mnttab touch /a/etc/dfs/sharetab chmod 555 /a/system/object chmod 555 /a/system/contract chmod 555 /a/proc chmod 777 /a/tmp chmod 755 /a/etc/svc/volatile chmod 755 /a/var/run chmod 555 /a/dev/fd chmod 444 /a/etc/mnttab chmod 755 /a/usr chmod 755 /a/alex chmod 755 /a/root chown -R alex:adm /a/alex chown root /a/system/object chown root /a/system/contract chown root /a/proc chown root /a/tmp chown root /a/etc/svc/volatile chown root /a/var/run chown root /a/dev/fd chown root /a/etc/mnttab chgrp root /a/system/object chgrp root /a/system/contract chgrp sys /a/tmp chgrp root /a/proc chgrp sys /a/etc/svc/volatile chgrp sys /a/var/run chgrp root /a/dev/fd chgrp root /a/etc/mnttab mkdir -p /a-tmp.$$ mount -F lofs -o nosub / /a-tmp.$$ (cd /a-tmp.$$; tar cf - devices dev ) | (cd /a; tar xfp -) 2>&1 > /dev/null cd / umount /a-tmp.$$ rm -rf /a-tmp.$$ # copy last etc cd /etc tar cf - . | (cd /a/etc ; tar xfp -) 2>&1 > /dev/null # rebuild svc at first boot rm -f /a/var/svc/manifest/system/filesystem/live-root-fs.xml rm -f /a/var/svc/manifest/system/dss-sysidtool.xml rm -f /a/var/svc/manifest/system/live-sysidtool.xml cp /usr/dss/share/hdinstall/misc/root-fs.xml /a/var/svc/manifest/system/filesystem/ cp /usr/dss/share/hdinstall/misc/sysidtool.xml /a/var/svc/manifest/system/ cp /lib/svc/seed/global.db /a/etc/svc/repository.db # copy vfstab cp /usr/dss/share/hdinstall/misc/vfstab /a/etc/vfstab # and add entries for the root fs and swap to the file /etc/vfstab cat <<EOF>>/a/etc/vfstab /dev/dsk/c4d0s0 /dev/rdsk/c4d0s0 / ufs - no logging /dev/dsk/c4d0s1 - - swap - no - EOF
그 다음 필요에 따라서 콘솔을 위해 키보드 레이아웃을 변경합니다. 이것은 /boot/solaris/bootenv.rc 파일 내의 keyboard-layout 키워드에 적절한 값을 지정함으로써 가능합니다. (예를 들어 독일 키보드를 위한 German ):
(root@milax)# vi /a/boot/solaris/bootenv.rc
그리고 X 서버의 키보드 레이아웃을 변경하기 위해서 /etc/sysconfigd/xkbd 의 XKBD 키워드의 값을 적절한 값으로 바꿔 줍니다 (예를 들어 독일 키보드를 위한 de ):
(root@milax)# vi /a/etc/sysconfig/xkbd
그 다음 bootpath 값을 /boot/solaris/bootenv.rc 에 추가합니다:
(root@milax)# echo "setprop bootpath /pci@0,0/pci-ide@1,1/ide@0/cmdk@0,0:a" >>/a/boot/solaris/bootenv.rc
다음 단계로는 SMF 서비스 부트-어카이브의 에러를 위한 워크어라운드를 적용하는 것입니다.
서비스 boot-archive 는 이 설정에서 항상 실패 합니다(아직까지 이유는 모르겠습니다); 그러므로 여러분은 /a/lib/svc/method/boot-archive 스크립트의 시작에 exit 커맨드를 추가해서 이것을 비활성화 해주어야 합니다:
. /lib/svc/share/fs_include.sh # new line follows: exit $SMF_EXIT_OK ERRORFILE=/etc/svc/volatile/boot_archive_error ...
참고:svc:/system/boot-archive:default 서비스 부트를 비활성화 하는 것은 좋은 선택이 아닙니다. 왜냐하면 이 서비스는 멀티-유저 모드의 필수 서비스이기 때문입니다.
이제 /a/var/svc/profile/site.xml 파일에 SMF 프로파일을 다음과 같이 생성합니다.
<?xml version='1.0'?>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<service_bundle type='profile' name='site'
xmlns:xi='http://www.w3.org/2003/XInclude' >
<service name='system/boot-archive-update' type='service' version='0'>
<instance name='default' enabled='true'/>
</service>
<service name='system/boot-archive' type='service' version='0'>
<instance name='default' enabled='true'/>
</service>
<service name='network/physical' type='service' version='0'>
<instance name='default' enabled='false'/>
<instance name='nwam' enabled='true'/>
</service>
</service_bundle>
다음 단계로 root 슬라이스의 boot-archive 를 수정합니다 (amd64 boot-archive 의 에러는 무시하시기 바랍니다)
(root@milax)# bootadm update-archive -R /a Creating boot_archive for /a updating /a/platform/i86pc/boot_archive updating /a/platform/i86pc/amd64/boot_archive /a//boot/solaris/bin/create_ramdisk52: /a/platform/i86pc/amd64/boot_archive-new: cannot create /a/platform/i86pc/amd64/boot_archive-new: No such file or directory /a//boot/solaris/bin/create_ramdisk32: test: argument expected mv: cannot access /a/platform/i86pc/amd64/boot_archive-new
그 다음 Grub 부트로더를 디스크의 마스터 부트 섹터에 설치 합니다:
(root@milax)# installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c4d0s0 Updating master boot sector destroys existing boot managers (if any). continue (y/n)?y stage1 written to partition 0 sector 0 (abs 16065) stage2 written to partition 0, 266 sectors starting at 50 (abs 16115) stage1 written to master boot sector
Grub 을 위한 시그네쳐 파일을 생성합니다:
(root@milax)# mkdir /a/boot/grub/bootsign (root@milax)# touch /a/boot/grub/bootsign/milax_ufs
그 다음 /boot/grub/menu.lst 파일의 항목을 다음과 같이 추가 해 줍니다.
(root@milax)# cat /a/boot/grub/menu.lst
#
#pragma ident "@(#)install_menu 1.1 05/04/15 SMI"
#
default=0
timeout=20
splashimage=/boot/grub/splash.xpm.gz
foreground=ffffff
background=444444
title MilaX Note (0.3.2) (32 bit, For Qemu)
findroot (milax_ufs,0,a)
kernel /platform/i86pc/kernel/unix -B atapi-cd-dma-enabled=0,atapi-other-dma-enabled=0
module /platform/i86pc/boot_archive
title MilaX Note (0.3.2) (32 bit)
findroot (milax_ufs,0,a)
kernel /platform/i86pc/kernel/unix
module /platform/i86pc/boot_archive
title MilaX Note (0.3.2) (32 bit) text console
findroot (milax_ufs,0,a)
kernel /platform/i86pc/kernel/unix -B livemode=text
module /platform/i86pc/boot_archive
title MilaX Note (0.3.2) (32 bit, No ACPI)
findroot (milax_ufs,0,a)
kernel /platform/i86pc/kernel/unix -B acpi-user-options=2
module /platform/i86pc/boot_archive
title MilaX Note (0.3.2) (32 bit, No ACPI, Verbose, Debug)
findroot (milax_ufs,0,a)
kernel /platform/i86pc/kernel/unix -B acpi-user-options=2 -kv -m verbose
module /platform/i86pc/boot_archive
이제 Milax 는 가상 머신의 UFS 슬라이스에 설치 되었습니다.
설치를 확인하기 위해서 솔라리스 reboot 커맨드를 이용해서 가상 머신을 재부팅 합니다.
(root@milax)# reboot
참고: 첫번째 Grub 메뉴에서 "Boot from Hard Disk" 항목을 선택하고 그 다음에 2번째 Grub 메뉴에서 "MilaX Note (0.3.2) (32 bit, For Qemu)" 를 선택합니다.
만약 모든 작업이 순조롭고 가상 머신이 아무 문제 없이 부팅 되었다면 여러분은 xVM 지원을 추가하실 수 있습니다.
참고: 이제 가상머신을 내리고 가상 머신의 디스크이미지를 백업하시기를 권장 드립니다.
가상 하드디스크상의 솔라리스에 xVM DomU 지원 추가하기
참고: 이러한 변경사항들이 이루어진 다음에 가상 하드디스크는 QEMU/kvm 에서 더이상 부팅 되지 않을 것입니다!
첫번째 단계는 xVM DomU 지원에 필요한 패키지들을 추가 하는 것입니다.
솔라리스 패키지 SUNWcakr.i 와 SUNWcakrx.i 를 가상 머신에 복사 한 다음에 root 권한을 이용해서 pkgadd 로 설치 합니다:
(root@milax)# pkgadd -d . SUNWcakr.i SUNWcakrx.i ... Installation of <SUNWcakr> was successful. ... Installation of <SUNWcakrx> was successful.
참고: MilaX 0.3.2 에서 여러분은 솔라리스 릴리즈 snv_95 의 패키지들이 필요 합니다.
그 다음 Grub Menu 에서 DomU 를 위한 항목을 추가 합니다.
(root@milax)# cat <<EOT >>/boot/grub/menu.lst
title MilaX 0.3.2 (32 bit, For Xen)
root (hd0,0,a)
kernel$ /platform/i86xpv/kernel/unix -B console=text,livemode=text
module$ /platform/i86pc/boot_archive
EOT
이제 디바이스 트리를 청소 합니다.
(root@milax)# devfsadm -C
devfsadm -C 커맨드를 실행한 다음에는 /dev/rdsk 와 /dev/dsk 에서 오직 c4* 와 c5* 항목들만이 존재 해야 합니다. 예를 들어:
(root@milax)# ls /dev/dsk c4d0p0 c4d0p4 c4d0s11 c4d0s15 c4d0s5 c4d0s9 c5t0d0p3 c5t0d0s10 c5t0d0s14 c5t0d0s4 c5t0d0s8 c4d0p1 c4d0s0 c4d0s12 c4d0s2 c4d0s6 c5t0d0p0 c5t0d0p4 c5t0d0s11 c5t0d0s15 c5t0d0s5 c5t0d0s9 c4d0p2 c4d0s1 c4d0s13 c4d0s3 c4d0s7 c5t0d0p1 c5t0d0s0 c5t0d0s12 c5t0d0s2 c5t0d0s6 c4d0p3 c4d0s10 c4d0s14 c4d0s4 c4d0s8 c5t0d0p2 c5t0d0s1 c5t0d0s13 c5t0d0s3 c5t0d0s7
이제 xVM 디스크 디바이스를 위한 링크를 /dev/dsk 와 /dev/rdsk 디렉토리에 만들도록 아래의 작은 스크립트를 이용합니다:
#!/usr/bin/ksh j=0 for i in a b c d e f g h i j k l m n o p ; do ln -s "../../devices/xpvd/xdf@0:${i}" /dev/dsk/c0d0s${j} ln -s "../../devices/xpvd/xdf@0:${i},raw" /dev/rdsk/c0d0s${j} let j=$j+1 done j=0 for i in q r s t u ; do ln -s "../../devices/xpvd/xdf@0:${i}" /dev/dsk/c0d0p${j} ln -s "../../devices/xpvd/xdf@0:${i},raw" /dev/rdsk/c0d0p${j} let j=$j+1 done
그 /etc/vfstab 파일을 정정합니다.
(root@milax)# cp /etc/vfstab /etc/vfstab.qemu
(root@milax)# sed "s/c4/c0/g" /etc/vfstab >/etc/vfstab.xen
(root@milax)# cp /etc/vfstab.xen /etc/vfstab
그리고 /boot/solaris/bootenv.rc 파일에서 부트 디바이스 경로를 지정합니다:
(root@milax)# cp /boot/solaris/bootenv.rc /boot/solaris/bootenv.rc.qemu
(root@milax)# sed "s/setprop bootpath.*/setprop bootpath \/xpvd\/xdf@0:a/" /boot/solaris/bootenv.rc >/boot/solaris/bootenv.rc.xen
(root@milax)# cp /boot/solaris/bootenv.rc.xen /boot/solaris/bootenv.rc
마지막으로 재설정 reboot 를 하도록 합니다.
(root@milax)# touch /reconfigure
부트 어카이브를 업데이트 합니다.
(root@milax)# bootadm update-archive updating /platform/i86pc/boot_archive updating /platform/i86pc/amd64/boot_archive
이제 가상 머신은 xVM DomU 로 부팅될 준비가 되었습니다.
여러분이 사용하는 DomU 의 타입에 따라서 DomU 에 boot_archive 와 kernel 이 필요 합니다.
그러므로 여러분은 이것들을 xVM (혹은 Xen) Dom0 을 실행하고 있는 머신에 복사해 주어야 합니다:
(root@milax)# scp /platform/i86pc/boot_archive root@192.168.1.162:/xen/boot_archive_ufs boot_archive 100% |*******************************************************************| 90333 KB 00:09 (root@milax)# scp /platform/i86xpv/kernel/unix root@192.168.1.162:/xen/unix unix 100% |*******************************************************************| 1350 KB 00:00
이제 여러분은 가상 머신을 내린 다음에 Dom0 을 실행하는 머신으로 이미지파일을 복사할 수 있습니다.
참고: tar (솔라리스에서는: gtar) 사용할때에 파라미터 --sparse 를 사용하여 이미지 파일을 복사하시기 바랍니다. 그렇지 않으면 여러분은 파일의 분산 기능(즉 폴더 기능)을 잃어 버릴 것입니다.
xVM DomU 의 가상 하드디스크상에서 솔라리스 시작시키기
첫번째로 DomU 를 위한 설정 파일을 생성합니다.
32-비트 솔라리스 xVM Dom0 모드에서 설정 파일은 다음과 같습니다:
(solaris-32bit-dom0) # cat milax_on_ufs.cfg name = "Milax" memory = "512" vcpus = "1" disk = [ 'file:/pool/xen/milax_with_xen.hdd,0,w' ] vif = [ '' ] on_shutdown = 'destroy' on_reboot = 'restart' on_crash = 'destroy'
(솔라리스 snv_89 에서 테스트 되었음)
64-비트 솔라리스 xVM Dom0 의 설정 파일은 다음과 같습니다:
(solaris-64bit-dom0) # cat milax_on_ufs.cfg name = "Milax" memory = "512" vcpus = "1" disk = [ 'file:/xen/milax_with_xen.hdd,0,w' ] vif = [ '' ] on_shutdown = 'destroy' on_reboot = 'restart' on_crash = 'destroy' kernel = "/xen/unix" ramdisk = "/xen/boot_archive_ufs" extra = "/platform/i86xpv/kernel/unix -r -B console=text,livemode=text"
(솔라리스 snv_101 에서 테스트 되었음)
32-비트 리눅스 Dom0 에서의 설정 파일은 다음과 같습니다:
(linux-dom0) # cat milax_on_ufs.cfg name = "Milax" memory = "512" vcpus = "1" vif = [ '' ] disk = [ 'tap:aio:/pool/xen/milax_with_xen.hdd,0,w' ] on_shutdown = 'destroy' on_reboot = 'restart' on_crash = 'destroy'
(우분투 Hardy Heron 8.04.01 32비트 모드에서 실행되는 Xen 3.2 에서 테스트 되었습니다; Xen 31. 에서는 ""tap:aio:" 대신 "file:" 을 사용해야 합니다)
DomU 를 시작시키기 위해 다음과 같이 작업을 수행합니다.
bash-3.2# xm create -c milax_on_ufs.cfg Using config file "./milax_on_ufs.cfg". Started domain Milax v3.1.4-xvm chgset 'Mon Oct 13 22:14:51 2008 -0700 15904:94bd0a643efe' SunOS Release 5.11 Version snv_95 32-bit Copyright 1983-2008 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Configuring devices. Hostname: milax Mounting local partitions/cdroms Using physical swap on hdd (/dev/dsk/c0d0s1) Reading ZFS config: done. Starting X11 Desktop Wait for the Desktop screen before logging in milax console login:
DomU 의 그래픽 데스크탑을 얻기 위해서 xVM 의 프레임버퍼 기능을 이용하거나 VNC 서버를 DomU 에 설치해야 합니다. VNC 서버는 솔라리스 컴페니언 CD 에서 얻으실 수 있습니다:
root@milax)# mount 192.168.1.8:/export/install/software_companion_sparc_sol10u6 /mnt (root@milax)# pkgadd -d /mnt/Solaris_Software_Companion/Solaris_i386/Packages/ SFWvnc
DomU 에서 VNC 서버를 시작시키기 위한 스크립트는 다음과 같습니다:
#!/bin/bash [ $# -eq 2 ] && VNC_DISPLAY="$2" || VNC_DISPLAY=":1" case $1 in start ) echo "Starting the VNC Server on the display ${VNC_DISPLAY} ..." if [ ! -x /usr/bin/xauth ] ; then # create a dummy xauth executable echo "exit 0">/usr/bin/xauth chmod 755 /usr/bin/xauth fi vncserver ${NVC_DISPLAY} export DISPLAY=${VNC_DISPLAY} /usr/dss/bin/xinitrc & ;; stop ) echo "Stopping the VNC Server on the display ${VNC_DISPLAY} ..." vncserver -kill ${VNC_DISPLAY} ;; * ) echo "Usage: $0 [start|stop] {displaynumber}" ;; esac
트러블슈팅
일반적인 힌트
만약 가상디스크가 DomU 에서 부팅되지 않는다면 여러분은 다음의 커맨드를 이용해서 QEMU 의 ISO 이미지 파일에서 MilaX 로 다시 부팅을 해야 합니다.
xtrnaw7@t61p:~$ qemu -net user -net nic -usb -usbdevice tablet -L /usr/share/qemu -boot d -m 512 \ -redir tcp:1181::22 -name 'Milax_from_harddisk_ssh_port:_1181' -hda /data/temp/milax_with_xen.hdd \ -cdrom /home/xtrnaw7/data/nobackup/iso/milax032.iso -vnc :1 -k de & xtrnaw7@t61p:~$ vncviewer :1 &
이것은 가상 하드디스크상의 오류를 정정하기 위한 것입니다.
주의: MilaX 는 자동으로 가상 하드디스크의 슬라이스 0 에 /mnt/solaris0 디렉토리로 마운트 될 것입니다.
솔라리스가 "cannot find devices" 메세지를 출력한 다음에 크래시 됨
문제:
DomU 의 솔라리스가 부팅은 되지만 다음과 같은 에러와 함께 크래시 됩니다:
Using config file "./milax.cfg". Started domain Milax v3.1.4-xvm chgset 'Mon Oct 13 22:14:51 2008 -0700 15904:94bd0a643efe' SunOS Release 5.11 Version snv_95 32-bit Copyright 1983-2008 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. panic[cpu0]/thread=f5028220: Cannot find /devices f50523ec genunix:vfs_mountdevices+192 (0, 1, f5027990, 0, ) f5052410 genunix:vfs_mountroot+1ea (f4c00010, f504e238,) f5052420 genunix:main+b9 () syncing file systems... done skipping system dump - no dump device configured rebooting...
이유
가상 하드디스크의 /boot/solaris/bootenv.rc 파일 내에 bootpath 의 경로 가 잘못된 것입니다. 이 항목은 다음과 같아야 합니다:
setprop bootpath /xpvd/xdf@0:a
해결책
아래의 라인을 추가 합니다.
extra = "/platform/i86xpv/kernel/unix -r -B console=text,livemode=text,bootpath=/xpvd/xdf@0:a"
DomU 설정 파일에서 위의 설정을 추가한 후에 DomU 를 재시작 시킵니다. DomU 가 실행 된 다음에는 다음의 라인을 추가 합니다.
setprop bootpath /xpvd/xdf@0:a
위의 설정은 /boot/solaris/bootenv.rc 에 추가 되어야 합니다.
위의 작업들이 완료 된 다음에는 DomU 설정 파일의 "필요 없는 " 라인들은 삭제될 수 있습니다.
init 이 무한대로 재시작됨
문제:
DomU 의 가상 디스크가 부팅 되지만 커널이 로딩 된 다음에는 다음과 같은 에러 메세지를 출력 합니다.
WARNING: init(1M) exited on fatal signal 9: restarting automatically
그것도 무한정으로.
이유:
여러분은 가상 하드디스크로 파일들을 복사 하기 전에 /lib/libc.so.1 를 언마운트 하지 않았습니다.
해결책
QEMU 에서 CDROM 으로 재부팅 한다음에 /lib/libc.so.1 를 CDROM 의 libc 와 교체 하던지 혹은 가상 하드디스크를 처음부터 다시 만들어 줘야 합니다.
SMF 서비스 svc:/system/filesystem/usr:default 실패
문제
가상 디스크가 부팅 되지만 솔라리스는 유지보수(maintenance) 모드로 들어 갑니다. 왜냐하면 svc:/system/filesystem/usr:default 가 실패 했기 때문입니다.
이유
솔라리스는 루트 파일 시스템을 마운트 할 수 없습니다.
해결책
가상 하드디스크의 /etc/vfstab 파일에서 루트 파일 시스템 항목을 체크하여 다음과 같은지 확인합니다:
/dev/dsk/c0d0s0 /dev/rdsk/c0d0s0 / ufs - no logging
/etc/vfstab 파일에서 만약 루트 파일시스템의 항목이 정확하다면 /dev/dsk 과 /dev/rdsk 에서의 루트디스크의 항목을 확인합니다. 항목은 다음과 같아야 합니다.
(root@milax)# ls -l /dev/*dsk/c0d0s0 lrwxrwxrwx 1 root root 26 Nov 10 12:37 /dev/dsk/c0d0s0 -> ../../devices/xpvd/xdf@0:a lrwxrwxrwx 1 root root 30 Nov 10 12:37 /dev/rdsk/c0d0s0 -> ../../devices/xpvd/xdf@0:a,raw
만약 /etc/vfstab 파일과 디바이스 항목들이 올바르게 설정되어 있다면 svc:/system/filesystem/usr:default 서비스의 로그 파일을 확인하시기 바랍니다.
네트워크 접속이 잘 동작하지 않음
문제
MilaX 가 DomU 에서 잘 부팅 됩니다. 하지만 네트워크가 어댑터가 설정되어 있지 않습니다.
해결책
기본 네트워크 설정 SMF 서비스를 위해 필요로 하는 파일들을 생성하거나 ( /etc/hostname.; /etc/dhcp., /etc/resolv.conf, /etc/defaultrouter, 등등) 혹은 SMF 서비스 mwam 이 온라인인지 확인 하는 것입니다:
(alex@milax)$ svcs svc:/network/physical:nwam STATE STIME FMRI online 15:55:03 svc:/network/physical:nwam
만약 nwam 서비스를 활성화 한 다음에도 어떠한 네트워크 접속도 잡히지 않는다면 DomU 에 네트
워크 어댑터가 지정되어 있는지 확인하시기 바랍니다: DomU 의 설정 파일에 "vif =" 로 시작되는 라인이 있어야 합니다.
이 글의 영문 원본은
Adding xVM DomU support to a Solaris Live CD Distribution
에서 보실 수 있습니다.
"관리자코너" 카테고리의 다른 글
- 맥북 13인치 코어 2 듀오에 솔라리스10 설치하기 (댓글 2개 / 트랙백 0개) 2008/06/16
- 썬 버추얼 데스크탑 커넥터 1.0(베타)을 사용한 VDI 데모 구축 (댓글 0개 / 트랙백 0개) 2008/01/23
- 솔라리스 Tip Of The Week:SMF (댓글 0개 / 트랙백 0개) 2009/01/23
- GlassFish 를 프로덕션 환경으로 설치하기 (댓글 0개 / 트랙백 0개) 2009/11/23
- 솔라리스 레디 애플리케이션 및 솔루션 (댓글 0개 / 트랙백 0개) 2008/03/13
- 솔라리스 10 에서 TCP Wrapper 사용하기 (댓글 1개 / 트랙백 0개) 2006/01/23
- 시만텍 베리타스 넷백업과 ZFS 스냅샷 통합하기 (댓글 0개 / 트랙백 0개) 2009/07/17
- ZFS, 썬의 최신 파일 시스템(Part 1: 스토리지 무결성, 보안성 및 확장성) (댓글 3개 / 트랙백 1개) 2006/11/23
- USB로 부팅하기 - 설치 (댓글 31개 / 트랙백 1개) 2007/08/20
- 파일과 디렉토리를 안전하게 옮기거나 카피 할 수 있는 방법 (댓글 6개 / 트랙백 0개) 2007/04/23
댓글을 달아 주세요