· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Linux+Solaris

Linux+Solaris HOWTO

Linux+Solaris HOWTO

Max Berger

v0.8-$Revision: 1.1 $, $Date: 2003/08/10 02:52:29 $

이태상

$Date: 2003/08/10 02:52:29 $
이 문서는 하나의 컴퓨터에서 Linux (x86)와 Solaris (x86)를 함께 사용하는 방법을 설명한다.

Appendix

1. 소개

1.1 왜 하필 솔라리스인가?

이는 정말 좋은 질문이다. 리눅스를 사용할 수 있는데 왜 솔라리스를 사용하는가? 솔라리스는 하드웨어 지원이 부족한 상용 시스템이다. 그러나 여러분이 지금 이 글을 읽고 있다면, 아마도 솔라리스를 사용하기를 이미 결정한 상태일 것이다. 그렇지 않다면 다음과 같은 이유가 있을 수도 있다:

  • 나는 파트타임으로 솔라리스 머신을 관리하는 일을 한다. 나의 솔라리스 박스에서 멋진 커맨드 파라메터와 리눅스 트릭을 쓸 수 있도록, 그에 관한 모든 것들을 공부할 필요가 있다.
  • 썬은 한동안 "사용자가 취급 및 운송비용만 부담(Shipping and handling cost only)"하는 방식으로 솔라리스를 공개했다. 그들은 앞으로도 그렇게 할 가능성이 많으며, 또한 '거의 무료(almost-free-of-charge)'라는 방식은 언제나 매력적인 제안이다.
  • 또는 여러분이 CDE를 좋아한다는 것도 이유가 될 수 있겠다.

1.2 이 문서에서 다루는 것들

이 문서는 이미 리눅스를 사용하고 있는 x86머신에서 솔라리스 7이나 솔라리스 8을 추가로 설치하고자하는 여러분을 위한 것이다. 주된 목표는

  • 어떠한 데이터도 잃지 않는다. 하드 공간의 준비 섹션을 보라.
  • 리눅스와 솔라리스가 공존하도록 한다. (멀티 부팅) 부팅 관리 섹션을 보라.
  • 리눅스와 솔라리스간의 데이터를 공유한다. 데이터 공유 섹션에서 설명한다.

1.3 참고한 버전

이 문서를 작성할때 참고한 버전은 다음과 같다:

  • Solaris 7 x86 (= Solaris 2.7 / SunOS 5.7)
  • Solaris 8 x86 (= Solaris 2.8 / SunOS 5.8)
  • Linux 2.2.14, 2.3.99-pre3
  • fdisk v2.10f
이 문서의 내용은 아마도 위 소프트웨어들의 다른 버전에서도 적용될 수 있거나, 아니면 완전히 다를 수도 있겠다.

1.4 경고

작업을 시작하기 전에, 여러분의 모든 데이터를 백업하기 바란다! 이 문서에서 설명하고 있는 많은 부분들이 과도한 데이터의 손실을 야기시킬 수도 있다! 그에 대해 나는 어떠한 책임도 지지 않는다! Credits and legal stuff 섹션을 참고하라.

2. 하드 드라이브의 준비

솔라리스를 위한 하드 드라이브 공간을 준비하기 위해서, 표준 PC 파티션 테이블과 솔라리스의 디스크 슬라이스에 대해서 알아야 한다. 이 문서에서는 시스템에 하나의 디스크만 존재(single-disk systems)한다고 가정하여 설명하겠으나, 멀티 디스크 환경의 경우에도 마찬가지로 적용될 것이다.

2.1 일반적인 PC 파티션

일반적인 표준 파티션 테이블은 4개의 엔트리를 갖는다. 우리에게 중요한 사항은 다음과 같다:

프라이머리 파티션 (Primary Partition)

하나의 엔트리와 하나의 파티션을 가지고 있다. 리소스의 낭비이긴 하지만, 어쨋든 부팅할 수 있는 유일한 파티션이다!

확장 파티션 (Extended Partition)

하나의 엔트리를 가지고 있으나, DOS, Linux, 또는 그 밖의 다른 파티션들을 함께 포함할 수 있다.

솔라리스 파티션

하나의 엔트리를 가지며, 여러개의 솔라리스 파티션을 포함할 수 있다.

여러분의 시스템에 어떤 파티션들이 자리잡고 있는지 보고 싶다면 fdisk 프로그램을 사용하라. 1번 부터 4번까지의 번호를 가지는 파티션들이 (hda1..4, sda1..4, ...) 여러분의 파티션 테이블에 존재할 것이다.

2.2 솔라리스 파티션 레이블(Solaris Partition Labels)

솔라리스는 자신만의 파티션 체계를 가지고 있다. 파티션 테이블의 하나의 엔트리를 사용하며, 그 파티션이 마치 디스크 전체인 것처럼 여긴다.

이 가상 디스크는 8개까지의 슬라이스로 나누어 질 수 있다. 세번째 슬라이스인 s2는 전체 가상 디스크를 말하는 것이므로, 실제로는 솔라리스를 위한 7개 까지의 슬라이스를 가지는 것이다.

불행하게도 솔라리스 파티션은 리눅스 스왑 파티션(82) 과 같은 타입으로 인식된다. 따라서 여러분은 어떠한 리눅스 스왑 파티션이라도 프라이머리 파티션으로 잡으면 안된다. 물론 리눅스는 이것을 상관하지 않지만, 솔라리스가 이 스왑 파티션을 어떻게 할지 누가 알겠는가.

리눅스 fdisk 프로그램이 몇개의 ``Sun disklabel''을 지원하기는 하나, 이것으로는 문제가 해결될 수 없다.

2.3 하드 디스크 공간

당연히 솔라리스도 디스크 공간이 필요하다. 솔라리스 8의 최소설치를 위한 공간은 300 MB 정도이다. 일반적인 툴을 포함하는 인스톨을 위해서는 약 700 MB가, ``developer-system'' 인스톨을 위해서는 약 1 GB의 공간이 필요하다.

그러나 이것은 기본적인 솔라리스의 설치를 위해 필요한 공간이다. 여러분은 다양한 GNU 개발 도구들과 그 밖의 소프트웨어를 추가하고 싶을 것이다. 게다가 솔라리스와 리눅스와의 데이터 공유를 원한다면, 이것은 솔라리스 파티션에서 이루어지므로 더 많은 공간을 준비해야 한다.

혹시 여러분의 홈 디렉토리를 솔라리스와 리눅스에서 공유하고 싶어할지도 모르겠다. 이것은 잊어버려라! 적어도 이 문서를 작성한 시점에서는 그 같은 일은 불가능하다. 나는 그것을 성공시키기위해서 내 홈 디렉토리를 엉망으로 만들었고, 결국은 내가 미리 백업을 해 놓았다는 사실에 매우 행복해 할 수 밖에 없었다. 데이터 공유 섹션을 참고하라.

2.4 점검 사항

여러분이 반드시 점검해야 할 사항들이 있다:

  • 파티션 테이블에 3개 이상의 엔트리를 사용하지 마라.
  • 리눅스 스왑 파티션을 프라이머리 파티션으로 잡지 마라.
  • 적어도 한개의 리눅스 ext2 파티션을 프라이머리 파티션으로 잡아라.
  • 파티션을 잡지 않은, 적어도 1 GB의 하드 디스크 공간이 필요하다.

3. 리눅스에서의 준비

3.1 커널 재구성

어떤 사람들은 새로이 커널을 구성하는 것을 싫어한다. 여러분의 경우: 솔라리스와 리눅스간에 데이터를 공유하고 싶다면 반드시 여러분만의 커널을 재구성해야 한다. 그러나 만약 데이터 공유를 원치 않는다면, 이전 커널을 그대로 사용해도 된다.

솔라리스 호환(Solaris compatibility)기능을 위한 커널 옵션:

  • Under code maturity:
    Prompt for development drivers

    불행하게도 UFS 파티션 쓰기(writing)지원은 아직 실험단계에 있다.

  • In file systems:
    UFS file system support

    UFS는 솔라리스 의 파일 시스템이다.

    UFS file system write support

    데이터를 솔라리스로 전달할 수 있는 유일한 방법이다.

    partition types / Solaris (x86) partition table support

    솔라리스 파티션내의 슬라이스를 찾기 위해 필요하다.

커널 재구성에 대한 추가적인 정보는 Kernel-HOWTO에서 찾기 바란다.

3.2 부트 로더의 준비

부트로더의 사용을 위한 작업에 들어가기 전에, 이전 시스템으로 부팅할 수 있는 비상 디스켓이 준비되어 있는지 확인하기 바란다.

불행히도 솔라리스를 인스톨하면 master boot record (MBR)에 있는 이전의 부트 매니저를 덮어 쓰게 된다.

하지만 다행스러운 것은, 솔라리스 부트 매니저가 연쇄 부팅(chain-boot)을 할 수 있다는 점이다. 이를 위해서 여러분은 기존의 부트로더(lilo 등)를 리눅스 프라이머리 파티션의 부트 섹터에 설치해야 한다.

여러분의 /etc/lilo.conf파일을 열어서 boot= 라고 씌어있는 줄을 보라. boot=/dev/hda1 등과 같이 되어있다면 아무 문제가 없다. 만약 boot=/dev/hda 처럼 되어있다면 이것은 MBR을 가리키고 있는 것이므로, 프라이머리 리눅스 파티션으로 바꿔주면 된다. (예. boot=/dev/hda1)

부트로더가 연쇄 부팅을 할 수 있는지 알아보기 위해, lilo를 MBR에 인스톨 시킨후 두번째 부트 매니저를 로딩해보는 방법이 있다. 이를 위해 나는 lilo.conf.mbr이라는 다음 파일을 사용했다:


#lilo.conf.mbr 
#Lilo in Master Boot Record doing nothing but chain-loading another lilo 
boot=/dev/hda
root=/dev/hda5 
install=/boot/boot.b 
map=/boot/map 
vga=ask
delay=50 
other=/dev/hda1 
label=lilochain

그 다음 lilo -C lilo.conf.mbr라는 명령으로 lilo를 MBR에 인스톨한다. 부트 섹터에 있는 lilo를 갱신하기 위해 lilo 명령을 내리는 것도 잊지말자.

이제 시스템을 재부팅하면 lilo 프롬프트가 보일 것이다. 여기서 other를 선택하면 기존의 lilo를 로드하여 리눅스로 부팅되어야 한다.

4. 솔라리스의 인스톨

4.1 Solaris interactive

Solaris 7

"Solaris Interactive(대화형 인스톨러)"는 첫번째 솔라리스 CD에 있다. 부팅후 "Solaris interactive"를 선택하라.

Solaris 8

Solaris 8 의 경우 "interactive installer"는 첫번째 소프트웨어 CD에 있다. 인스톨 CD는 전혀 필요없다.

솔라리스의 인스톨 자체는 매우 직관적이다. 혼란을 일으킬 수 있는 한가지는 파티션 작업뿐이다. 솔라리스는 자동으로 디스크의 빈공간을 찾아서 그곳에 솔라리스의 가상 디스크를 만들게된다. 가상디스크의 슬라이스를 나눌때, 솔라리스와 리눅스간의 데이터 교환을 위한 공간 마련을 잊지말기 바란다. 괜찮은 위치는 /export/share 파티션이다.

Please Note: 솔라리스 인스톨과정에 들어갔다면, 이미 MBR은 덮어씌어져 있으므로, 하드 디스크로 전혀 부팅할 수 없는 상황이 될수도 있음에 주의하라.

4.2 Web-Start

나는 (interactive installation 대신에) Web-Start를 사용하여 이 작업을 할 수 없었다. 여러분 중 Web-Start를 사용하여 설치한 경험이 있다면 메일을 보내주기 바란다.

그러나 일단 솔라리스를 설치하고 난 다음에는 web-start 패키지들을 추가하는데에는 문제가 없었다.

4.3 GNU 도구의 설치

솔라리스의 표준 설치에는 less 명령어 조차 포함하지 않는다. 어떤 사람들은 솔라리스용 RPM(래드햇 패키지 매니저)의 사용을 추천하기도 하나, 사실 기본 패키징 툴만을 이용해도 충분하다 . http://www.sunfreeware.com 에서 굉장히 유용하고 다양한 패키지들을 구할 수 있다. 표준 패키지들의 경우는 pkgadd <package>를, web-start 패키지들의 경우 java <packagewithoutclassextension> 명령을 이용하면 된다.

5. 부팅 관리

5.1 솔라리스 부트 매니저 사용하기

부팅한 후 나타나는 솔라리스 부트 매니저는 4개의 프라이머리 파티션 모두를 보여주고, 부팅할 파티션을 선택하라고 할 것이다. 여러분이 부팅하고 싶은 프라이머리 파티션의 부트 섹터에 부트로더가 설치되어 있다면 아무런 문제될 것이 없다. 단지 선택해 주는 것 만으로 리눅스로 부팅할 수 있다.

5.2 lilo 사용하기

현재 솔라리스 부트 매니저를 주된 부트로더로 사용하고 있는 여러분이 다시 lilo를 주 부트 로더로 사용하고 싶다하더라도 전혀 문제될 것이 없다. Lilo는 쉽게 솔라리스로 부팅 가능하게 해 준다. 단지 여러분의 lilo.conf 파일에 적절한 other= 행을 추가시켜주기만 하면 된다.

테스트를 위해 먼저 부트 섹터에 있는 lilo를 수정한다. 여러분이 원하는 만큼 lilo, 솔라리스 부트 매니저, lilo, 솔라리스 부트 매니저, lio, .... 의 로딩을 반복할 것이다. 이것이 잘 된다면 이제 lilo를 MBR로 돌려놓으면 된다.

그러나 솔라리스는 여러분의 파티션 테이블로 인하여 곤경에 빠질 수도 있다. 이는 내가 Solaris 8을 인스톨 했을때 발생했다. Lilo는 새로운 파티션을 별로 좋아하지 않으며 fdisk도 마찬가지이다. Solaris 7을 사용했을 경우에는 아무런 문제가 없었다.

5.3 grub 사용하기

불행히도 나는 grub을 사용하여 솔라리스를 부팅해 본 적이 없다. 경험이 있는 분은 메일을 보내달라!

6. 데이터 공유

6.1 공유 파티션의 사용

커널 재구성에서 설명한 대로 Sun 디스크 레이블 및 UFS 지원이 가능하도록 여러분의 커널을 재구성했다면, 이제 솔라리스 파티션을 마운트할 준비가 된 것이다. 리눅스로 부팅하는 동안 다음과 같은 메시지를 볼 수 있을것이다:

  hda: [PTBL] [523/255/63] hda1 hda2 < hda5 hda6 hda7 hda8 > hda3 <Solaris: [s0]
  hda9 [s1] hda10 [s2] hda11 [s3] hda12 [s6] hda13 [s7] hda14 >
위의 경우에는 hda3가 6개의 슬라이스를 가진 솔라리스 파티션이며, 각각의 슬라이스(s0,s1,s2,s3,s6,s7)는 hda9 에서 hda14까지 리눅스 디바이스로 매핑(mapping)되어있다.

솔라리스 파티션을 마운트 해보자. UFS 파티션을 마운트 할 때에는 항상 -oufstype= 옵션을 사용해야 한다. 지금의 경우는 -oufstype=sunx86 이다. 따라서 여러분이 마운트할 때에는 다음과 같은 명령이 될 것이다:

  mount -oufstype=sunx86 /dev/hda14 /mnt
이제 파티션을 테스트 해보자. Please note: UFS 파티션에 쓰기 작업을 지원하는 것은 매우 실험적인 기능이다. UFS 파티션에 작성한 어떠한 데이터라도 안심하지 마라!

만약 솔라리스 파티션을 부팅시에 자동으로 마운트되게 하고 싶다면, /etc/fstab 파일에 다음과 같은 라인을 추가한다:

  /dev/hda14 /solaris ufs ufstype=sunx86 0 0

6.2 또 다른 방법

언제나, 데이터를 공유하는 다양한 방법들이 존재하기 마련이다:

플로피 디스크

나는 솔라리스에서 어떤 플로피 디스크 파일 시스템을 지원하는지 모르겠다. 아는 사람은 메일을...

네트워크

솔라리스도 리눅스도 모두 NFS를 지원한다. 데이터를 공유할 수 있는 더 없이 좋은 방법이다.

7. 외부 바이너리(binary)의 실행

7.1 솔라리스에서 리눅스 바이너리의 사용

이것은 "lxrun"이라는 프로그램을 사용함으로써 가능한 일이다. 나는 아직 충분히 테스트 해보지는 못했다. 솔라리스 웹사이트를 참고하기 바란다.

7.2 리눅스에서 솔라리스 바이너리의 사용

내가 아는 바로는, 이것은 지원되지 않는다.

8. 추가 정보

여러분이 참고할 수 있는 몇몇 웹사이트들이 있다:

9. Credits and legal stuff

9.1 Credits

솔라리스를 직접 인스톨하면서 이 HOWTO를 베타 테스트 해준 Marcel Meyer에게 감사한다.

9.2 질문, 권고, 제안

언제든지 환영이다. 메일로써 연락하기 바란다. max.berger@xslt.de

9.3 License

번역하지 않습니다. (LDPL을 따를 경우 허락없이 수정/재배포 가능하다는 내용) - 역자

This document is copyrighted © by Max Berger. You may use and/or modify it according to the Linux Documentation Project License (LDPL) found at http://www.linuxdoc.org/COPYRIGHT.html.

According to the license you don't have to tell me, but I'd very much like to know when you modify and/or republish this document.

Although the information given in this document is believed to be correct, the author will accept no liability for the content of this document. Use the tips and examples given herein at your own risk.




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:30
Processing time 0.0234 sec