소개

 

목적

이 글은 xVM DomU 를 솔라리스 라이브 CD 배포판에서 지원하도록하는 방법을 설명 하고 있습니다. (참고: xVM 은 솔라리스를 위한 Xen 을 뜻함). CDROM 은 오직 읽기 전용이므로 이 작업은 배포판을 하드디스크에 설치한 이후에만 작업이 가능합니다.

이 글을 위해서 우리는 오픈솔라리스 배포판인 MilaX 0.3.2 를 이용할 것입니다. 그러나 다른 오픈솔라리스 배포판에서도 동일하게 적용될 것입니다 (예를 들어 Belenix).

범위

이 글은 간단히 xVM DomU 지원을 추가 하는 방법에 대해서만 설명합니다;xVM 혹은 Xen 에 개념에 대해서는 설명하지 않습니다.

요구사항

다음의 툴들과 파일들이 사용 됩니다.

  • QEMU 0.9.1 혹은 최신 버전 (kvm 을 이용할 수도 있음)
  • 라이브 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/xkbdXKBD 키워드의 값을 적절한 값으로 바꿔 줍니다 (예를 들어 독일 키보드를 위한 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_archivekernel 이 필요 합니다.

그러므로 여러분은 이것들을 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
에서 보실 수 있습니다.

"관리자코너" 카테고리의 다른 글

2008/12/05 17:53 2008/12/05 17:53

TRACKBACK :: http://blog.sdnkorea.com/blog/trackback/686

댓글을 달아 주세요

[로그인][오픈아이디란?]

◀ Prev 1  ... 173 174 175 176 177 178 179 180 181  ... 806  Next ▶