2008/09/12

오픈 솔라리스에서의 (커널 포함 전체) 이미지 업데이트

오픈 솔라리스 정식 발매 CD를 설치하게 되면 빌드가 86임을 알 수가 있습니다.
화면 상단의 메뉴에 있는 시스템->관리->패키지 매니저를 통해서 이미지 전체를 업데이트할 수 가 있는데, 업데이트를 하고 났더니, 부팅을 하지 않더군요.

그 이유는 커널은 업데이트가 되어 있는데, GRUB은 변경된 MBR의 위치를 인지하지 못해서 발생하는 일입니다.
다음은 전체 이미지 업데이트하는 법과 추후 GRUB 업데이트 하는 과정을 포함합니다.
사용하는 빌드가 96이후 이면 일단 다음과 같은 사전 작업을 준비하셔야 합니다.

$
BUILD=`uname -v | sed s/snv_//` ; build 숫자를 저장합니다.
$echo $BUILD ; 빌드 확인
$pfexec pkg refresh ; 전체 패키지 갱신한번 하고
$pfexec pkg install
SUNWipkg at 0.5.11-0.$BUILD ; 설치된 빌드의 최신 패키지 모듈을 일단 설치하고

모두 정상적으로 되었으면, 이제 전체 패키지를 업데이트합니다.
$ pfexec pkg install entire at 0.5.11-0.$BUILD ; 전체 빌드를 설치합니다.

정상적으로 이루어졌으면, 다음과 같이 해서 오픈 솔라리스 이미지를 업데이트합니다.
$pfexec pkg image-update

정상적으로 설치가 모두 되었는 지 확인해보기 위해서 다시 재부팅을 해봅니다.

만약 $BUILD가 93이전이면 다음과 같은 작업으로 진행하도록 합니다. (live upgrade 방식입니다)

$ pfexec beadm create opensolaris- ; 새로운 솔라리스 이미지가 설치될 새 부팅환경(BE)를 만들어줍니다. "opensolaris-"로 이름을 주게 되면, 자동적으로 그 뒤에 정수가 붙어서 이름이 지어집니다. opensoalris-1, opensolaris-2와 같이 만들어집니다.
$ pfexec beadm list ; 만들어진 부트환경(be)을 나열합니다. 가장 최근에 만들어진 부트환경을 확인합니다.
$ pfexec beadm mount opensolaris-1 /mnt ; 가장 최근에 만들어진 새부트환경을 /mnt로 마운트합니다.
$ pfexec pkg -R /mnt image-update ; 마운트한 /mnt를 대상으로 오픈 솔라리스 이미지 업데이트를 실행합니다.
$ pfexec beadm activate opensolaris- ; 다음 부팅시 새 부팅환경(BE)으로 부팅하도록 활성화를 시켜줍니다.

만약, 빌드넘버가 86이면 여기에서 GRUB을 수동적으로 업데이트해주어야 합니다. 86보다 크고 93이전이면 그냥 재부팅을 해서 정상적으로 새부팅환경으로 부팅하는 지 확인하면 됩니다.

다음은 빌드가 86인 경우 재부팅하기 전에 GRUB을 업데이트하는 법입니다.
$ pfexec /mnt/boot/solaris/bin/update_grub -R /mnt

재부팅을 해보아서, 정상적으로 재부팅되는 지 확인합니다.

Reference : http://mail.opensolaris.org/pipermail/opensolaris-help/2008-August/011864.html

2008/09/10

오픈솔라리스의 패키지 시스템 사용

오픈솔라리스에서는 IPS라는 패키징 방식을 사용합니다.

이 패키징 방식은 기존의 썬 솔라리스가 사용하는 SYSV 방식의 패키징 방식에서 데비안 리눅스가 사용하는 방식으로 변경된 것이 주요 특징이라고 할 수 있습니다. 데비안 리눅스의 창시자인 이안 머독이 썬에와서 처음으로 만들어낸 아웃풋이라고 할 수 있겠죠.

IPS 패키징은 늘상 발생하는 업데이트를 지속적이고 꾸준히 선택적으로 업데이트해야 하는 오픈소스 세계에서의 요구사항을 반영한 것이라고 볼 수 있습니다. 일면에서는 윈도우즈의 패치 업데이트와도 다소 비슷한 면이 있습니다만, 윈도으즈는 새로운 기능을 담은 애플리케이션에 대해서는 서비스팩으로 별도로 제공하고, 실시간 업데이트는 패치만을 취급한다는 것이 솔라리스의 IPS 패키징과 다소 다르다고 할 수 있습니다.

솔라리스의 패키징은 모든 모듈에 대한 늘 새로운 버젼이 제공되어지는데, 이러한 새로운 버젼은 패치와 기능을 포함하고 있습니다. 따라서, 패치를 위해서도 IPS를 사용하고, 버젼업을 위해서도 IPS를 사용합니다.

최초 오픈 솔라리스를 설치하게 되면 필요한 모든 패키지가 설치되어 있지는 않습니다. 특히, 2008년 5월 opensolaris 버젼에는 한글 입력기에 버그가 있는데, opensolaris가 설치되면 일단 iiim 패키지를 먼저 업데이트(설치)할 필요가 있습니다.
그 다음에는 openoffice 정도가 필요할 것이구요.

개발을 위해서라면  gcc관련 개발 패키지들을 설치해야 할 것입니다. 개발을 위해서는 한가디 더 신경써야 할 것이 있는데, 오픈 솔라리스에서는 개발툴만 다운/설치한다고해서 개발할 수 있지는 않습니다. 오픈솔라리스는 데스크탑 수준의 사용자 수준환경만을 위해서 최소한의 패키지만을 가지고 있기 때문에, 개발을 위한 헤더화일들을 가지고 있지 않습니다. 따라서, 이것 저것 포팅을 하기 위해서는 다소 이헤더 저헤더가 없다고 나오는 일을 만나게 됩니다.

설치 이후 화면 상단의 상태줄의 메뉴에서 GUI로 되어 있는 패키지 관리자를 불러 올 수 있긴 합니다만, 이 패키지 관리자는 아직 명령어 툴인 pkg의 모든 기능을 제대로 반영하고 있지 않습니다. 따라서, 당분간(2008년 9월 현재)은 명령어 툴인 pkg를 사용하는 것이 바람직할 것으로 보입니다.

예를 들어서 컴파일시 Xlib.h가 없는 것으로 나타났다면 다음과 같이 화일을 찾습니다.
#pkg search -r Xlib.h
INDEX      ACTION    VALUE                     PACKAGE
basename   file      opt/csw/lib/perl/csw/Tk/pTk/Xlib.h pkg:/IPSpmtk@0.5.11-2.6
basename   file      opt/csw/include/IV-X11/Xlib.h pkg:/IPSivtools@0.5.11-2.6
basename   file      usr/X11/include/X11/Xlib.h pkg:/FSWxorg-headers@0.5.11-0.79
basename   file      usr/X11/include/X11/Xlib.h pkg:/FSWxorg-headers@0.5.11-0.75
basename   file      usr/X11/include/X11/Xlib.h pkg:/SUNWxwinc@0.5.11-0.94
basename   file      usr/X11/include/X11/Xlib.h pkg:/SUNWxwinc@0.5.11-0.86
basename   file      usr/X11/include/X11/Xlib.h pkg:/SUNWxwinc@0.5.11-0.86
basename   file      usr/X11/include/X11/Xlib.h pkg:/SUNWxwinc@0.5.11-0.93
basename   file      usr/X11/include/X11/Xlib.h pkg:/SUNWxwinc@0.5.11-0.91
basename   file      usr/X11/include/X11/Xlib.h pkg:/SUNWxwinc@0.5.11-0.90
basename   file      usr/X11/include/X11/Xlib.h pkg:/SUNWxwinc@0.5.11-0.89
basename   file      usr/X11/include/X11/Xlib.h pkg:/SUNWxwinc@0.5.11-0.95
basename   file      usr/X11/include/X11/Xlib.h pkg:/SUNWxwinc@0.5.11-0.96

이와 같은 결과가 나오면, 우측에서 어떤 패키지에 내가 원하는 헤더가 있는 지를 알수가 있게 됩니다.
위의 결과로 보면, SUNWxwinc라는 패키지가 필요하므로 관련 패키지를 설치(업데이트)합니다.
#pkg install SUNWxwinc

관련 헤더 화일들이 모두 설치되었다면, 다시 컴파일을 하시면 됩니다.

참고로 SUNW는 썬에서 제공되는 패키지이며, 그외 IPS나 CSW등 다른 대문자로 시작하는 것은 오픈솔라리스의 기본 리포지터리인 opensolaris.org가 아닌 다른 제3의 리포지터리에서 제작되고 배포되는 패키지입니다.