· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/NFS-Root

NFS-Root Mini-Howto

NFS-Root Mini-Howto

Andreas Kostyrka, andreas@ag.or.at

V8, 8 August 1997 번역: 정순철, mailto:jungsoonchul@yahoo.com 1999년 11월 29일
이 미니하우투는 NFS를 통하여 루트 파일시스템을 마운트하는 ``디스크 없는'' 리눅스 웍스테이션의 설치 방법에 대해서 설명한다. ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/NFS-Root 또는 선사이트 미러에서 이 미니하우투의 최신 버전을 구할 수 있다.

1. 판권

(c) 1996 Andreas Kostyrka (e9207884@student.tuwien.ac.at or andreas@ag.or.at)

따로 말이 없다면, 리눅스 HOWTO 문서의 판권은 저자에게 있다. 리눅스 HOWTO 문서는 판권 표시가 복사본에 유지되는 한, 어떤 매체로든지 전체 또는 부분적으로 재생산되거나 배포될 수 있다. 상업적인 재배포가 허락되고 권장된다. 그러나 저자에게 그러한 배포 사실을 알리는 게 좋을 것이다.

번역물, 파생 작업물, 리눅스 HOWTO 문서를 통합한 작업물 모두는 이 판권 표시아래 보호된다. 즉, 당신은 HOWTO 문서에서 파생된 작업물을 생산하면서, 배포상의 제약을 주면은 안 된다. 이들 규칙에 관한 예외는 특정 조건하에서 인정이 된다. 아래 주소의 리눅스 HOWTO 조정자에게 연락하십시오.

간단히 말해서, 우리는 가능한 한 많은 채널을 통해 정보를 퍼뜨리고 싶다. 그런데, 우리는 또한 HOWTO 문서의 판권을 유지하고 싶으며 문서의 재배포 계획을 통지받고 싶은 것이다.

의문 사항이 있다면 이 문서의 저자인 Andreas Kostyrka <mailto:andreas@ag.or.at> 또는 리눅스 HOWTO 조정자인 Tim Bynum <mailto:linux-howto@sunsite.unc.edu>에게 이메일로 연락주십시오.

1.1 공헌한 사람들

  • Avery Pennarun <apenwarr@foxnet.net> (LILO없이 부팅하는 법)
  • Ofer Maor <ofer@hadar.co.il> (디스크 없는 웍스테이션의 설치에 관한 더 나은 미니 하우투를 제공)
  • Christian Leutloff <leutloff@sundancer.tng.oche.de> (netboot에 대한 정보 제공)

2. 전체적인 개요

일반적으로 말해서, 디스크 없는 웍스테이션에는 다음과 같은 같은 문제점들이 있다:

  • 그것은 자신의 IP주소를 알아내야 한다. 필요하다면 나머지 이더넷 구성 정보까지도.
  • 그것은 NFS서버와 루트 파일 시스템을 위한 마운트 경로를 알아 내야 한다.

리눅스 커널(1.3.7x)에서의 NFSROOT구현은 다음과 같은 ``해결책''을 제시한다:

  • IP주소는 RARP에 의해서 발견될 수 있다. 또는 이더넷 구성 정보 모두가 LILO 또는 LOADLIN의 커널 인자를 통해서 커널에 전달될 수 있다.
  • 커널 인자를 통해 NFS경로가 전달될 수 있다. 전달되지 않는다면 커널은 RARP서버가 또한 NFS서버라고 가정하고 이미 정의된 기본값을 NFS경로로 사용한다. (기본값: /tftpboot/<IP-address of the machine>)
  • 클라이언트의 구성 정보를 BOOTP를 통해서 알아 낼 수 있다.

디스크 없는 환경을 설정하기 전에, LILOLOADLIN를 통해 부팅할 지를 결정해야 한다. 그렇게 하는 것은 유연성을 증가시키지만 속도가 느리다. LILO를 안 쓰면 더 빠르게 부팅된다. 결정은 당신 자유이다.

3. 서버측 설정

3.1 커널 컴파일

서버의 커널에 RARP기능을 넣는 것은 좋은 생각이다. 커널 인자없이 부팅하려면 이 기능이 반드시 필요하다. 한편 클라이언트가 서버와 다른 서브넷에 있다면 이 기능은 도움이 되지 못한다.

웍스테이션의 커널은 최소한 다음 조건들을 만족시켜야 한다:

  • NFS파일 시스템이 컴파일-인 되어 있어야 한다 (역주: 모듈로 하면 안 된다). (ext2지원은 그럴 필요 없이 모듈이면 충분하다.)
  • ``Root on NFS''가 가능해야 한다.
  • 웍스테이션의 네트워크 카드의 이더넷 드라이버가 컴파일-인 되어 있어야 한다.
  • NFS-Root를 위해, 필요에 따라 RARP 또는 BOOTP지원을 가능하게 해야 한다. (make config에서 이 옵션은 NFS 질문 다음에 나온다.)

웍스테이션이 커널 인자없이 부팅되려면 루트 장치를 0:255로 설정할 필요가 있다. mknod /dev/nfsroot b 0 255를 함으로써 더미 장치를 만든 후, rdev <kernel-image> /dev/nfsroot를 타이핑함으로써 커널 이미지의 루트 장치를 설정할 수 있다.

3.2 루트 파일 시스템의 작성

파일 시스템 복사

경고: 이들 명령어들이 잘 작동한다 하더라도, 제작 환경(production enviroment)에서 결코 적절한 것은 아니다. 클라이언트의 루트 파일시스템을 설정하기 위한 더욱 나은 방법이 Ofer Maor <ofer@hadar.co.il>씨의 NFS-Root-Client 미니 하우투에 잘 나와 있다.

루트 트리의 위치를 정한 다음에, 예를 들어, mkdir -p <directory>tar cClf / - | tar xpCf <directory> -를 함으로써 트리를 만든다.

LILO없이 커널을 부팅하려면 루트 디렉토리는 /tftpboot/<IP-address>가 되어야 한다. 기본값이 맘에 안 든다면 커널 소스의 Makefile에서 NFS_ROOT = -DNFS_ROOT="\"/tftpboot/%s\""부분을 찾은 다음 적당히 고치고 다시 컴파일을 하면 된다.

루트 파일 시스템에서의 변화

이제 불필요한 파일들을 지우고, /etc/rc.d 스크립트들을 검사한다.

  • eth0 설정. 웍스테이션은 최소한 부분적으로라도 eth0 설정 정보를 찾는다. 웍스테이션의 IP주소를 서버의 IP주소로 설정하는 것은 잘한 일이 아니다(초기에 일어 났던, 필자의 실수 중 하나이다).
  • 웍스테이션의 /etc/fstab. NFS 파일시스템에 대한 설정이 필요하다.
  • 경고: 서버의 루트 파일시스템과 웍스테이션의 루트 파일시스템을 혼동하지 말라.

파일시스템을 익스포트하기

웍스테이션을 위해 루트 디렉토리를 익스포트한다. exports(5)를 참조하라. 이 작업후 nfsd/mountd를 재시작해야 한다. RedHat에서는 간단히 /etc/rc.d/init.d/nfs stop ; /etc/rc.d/init.d/nfs start를 하면 재시작할 수 있다.

RARP 설정

네트상의 어딘가에 RARP를 설치하라. nfsroot 인수없이 부팅하려 한다면, RARP서버는 또한 NFS서버여야 한다. 보통 RARP서버가 NFS서버의 역할도 맡는다. RARP를 설치하려면 커널이 RARP를 지원하도록 설정되어야 한다.

그리고 나서, 다음을 실행시킨다(그리고 서버의 /etc/rc.d의 어딘가에 이 명령문을 설치해야 한다!):

/sbin/rarp -s <ip-addr> <hardware-addr>

여기에서

ip-addr

은 웍스테이션의 IP주소이고

hardware-addr

은 웍스테이션의 네트워크 카드의 이더넷 주소이다.

예: /sbin/rarp -s 131.131.90.200 00:00:c0:47:10:12

서버가 이름으로 IP주소를 찾을 수 있다면(/etc/hosts나 DNS를 이용해서), IP주소대신에 이름을 사용할 수 있다.

BOOTP 설정

BOOTP 설정을 위해서 /etc/bootptab을 편집해야 한다. bootpd(8)bootptab(5) 맨 페이지를 참조하라.

하드웨어 주소 알아 내기

필자는 하드웨어 주소(역주: 웍스테이션의 랜카드의 이더넷 주소)를 모른다. 어떻게 알아 낼 수 있을까?

  • 당신이 만든 커널 디스크로 부팅하라. 그리고 네트워크 카드가 인식되는 줄을 살펴본다. 보통 그 줄은 카드의 이더넷 주소인 6바이트짜리 16진수를 포함하고 있다.
  • TCP/IP가 가능한 OS로 부팅한다. 서버에서 웍스테이션을 핑(ping)한다. 그리고 나서 /sbin/arp -a로 ARP캐시를 살펴 본다.

4. 웍스테이션을 부팅하기

4.1 부트롬 이용

필자는 아직 그런 괴물을 사용해 본 적이 없기 때문에 단지 다음과 같은 팁만을 알려 줄 수 있다 (Christian Leutloff <leutloff@sundancer.tng.oche.de>씨의 호의):

  • 당신은 ``정상적인'' 부트롬을 사용할 수 없다.
  • 리눅스를 위한 부트롬과 정보를 제공하는, Gero Kuhlmann씨의 netboot꾸러미가 있다. netboot는 리눅스 미러 또는 데비안 꾸러미(netboot-0.4)안에 있다.
  • 부트롬에 따라오는 문서를 유심히 읽는다.
  • 부트롬이 커널을 로딩하는 방식에 따라 서버상에 tftpd를 띄워야 하는 경우도 있다.
  • 보통 사람들이 prom burner에 접근하기는 힘들기 때문에, 리눅스와 관련된 부트롬 판매업자들에 대한 어떠한 정보도 환영!. 필자는 이 정보를 여기에 삽입할 것이다.

4.2 로우 커널 디스크 이용

NFS서버가 또한 RARP서버이고 (서버와 웍스테이션은 같은 서브넷에 있어야 함을 암시한다.) 루트 파일시스템을 바르게 익스포트하였다면 당신은 커널을 디스크에 cat함으로써 부팅 디스크를 만들 수 있다(커널의 루트 장치를 0:255로 설정해야 한다). 서버상의 (웍스테이션의) 루트 디렉토리는 /tftpboot/IP-Address이어야 한다(이 값은 커널 컴파일때 바꿀 수 있다).

4.3 bootloader와 RARP 이용

커널 인수에 nfsroot=<server-ip-addr>:</path/to/mount>를 추가한다. server-ip-addr은 NFS서버의 주소이고 server-ip-addr은 루트 디렉토리의 경로이다.

팁:

  • LILO를 이용할 때 ``lock''기능을 이용해 보라: 올바른 인수들을 입력한 후 ``lock''을 추가한다. 다음 부팅때부터는 인수를 다시 입력할 필요가 없다.
  • 웍스테이션 특정 부팅 디스크를 만들때, lilo.conf안의 append=기능을 이용할 수 있다.

4.4 RARP없는 bootloader이용

부팅할때, nfsroot에 더하여 nfsaddrs=<wst-IP>:<srv-IP>:<gw-IP>:<netm-IP>:<hostname> 커널 인수를 입력한다. 커널은 주어진 인수로 eth0를 설정할 것이다:

wst-IP

기계의 IP주소

srv-IP

NFS서버의 IP주소

gw-IP

게이트웨이

netm-IP

넷매스크

hostname

기계의 이름

5. 알려진 문제점

5.1 /sbin/init이 시작하지 않는다.

/sbin/init로 인한 유명한 문제는, 어떤 배포판들이 동적으로 링크된 /sbin/init을 포함하기 때문에 일어난다. 그경우 당신은 /lib 설정을 올바르게 바꾸어야 한다. 한가지 쉽게 해 볼수 있는 시도는, 클라이언트의 /sbin/init을 정적으로 링크된 ``Hello World'' 프로그램으로 대치하는 것이다. 이 방법으로 당신은 이 문제가 좀 더 근본적인 것인지 아니면 단지 동적 링킹때문인지 가려 낼 수 있다.

5.2 /dev 문제

부팅할때 tty에 관한 이상한 메시지를 얻었다면, 당신은 클라이언트로부터 /dev 디렉토리의 MAKEDEV를 실행시켜야 한다. 64비트 장치 번호를 가지는 어떤 서버에서는 이 해결책이 실패한다는 소문이 있다. 만약 그렇다면 문제를 일으키는 당신의 OS에 관하여 필자에게 메일을 보내기를 바란다. 한가지 잠재적인 해결책은 매번 초기 부트단계에서 작은 /dev 램 디스크를 만들고 장치 노드들을 다시 설치하는 방법이다.

6. 다른 주제들

  • BOOTP 클라이언트: ftp://sunsite.unc.edu/system/Network/admin/bootpc.v045.tgz.

    (리눅스 2.0에 포함된) initrd는 디스크없는 컴퓨터에서 꽤 멋지게 작동하도록 만들어 졌다. 사실 initrd는 항상 좀 더 커스터마이즈된 설정을 위한 진일보한 옵션이다.

  • 리눅스 2.0은 RARP대신에 BOOTP를 사용할 수 있기 때문에 (좀 더 정확히, 당신은 커널에 둘 다 컴파일 할 수 있고, 그 중 더 빠른 것이 이긴다), 평범한 bootpd기반 부트는 필요없다.
  • 커널 소스의 문서 디렉토리에 NFS-Root시스템에 관한 문서 파일이 있다.
  • NFS를 통해 스와핑을 허용하는 패치가 떠돌고 있다. 필자도 그것을 받았는데, 메일을 잃어 버렸다. :( 아마도 http://www.linuxhq.com/의 비공식 패치절에서 그것을 얻을 수 있을 것이다.
  • 필자의 PGP키는 andreas@ag.or.at를 핑거함으로써 얻을 수 있다. 필자의 핑거프린트(fingerprint): F1 F7 43 D5 07 C4 6C 87 BF 6B 33 A2 2C EE 5A F9.




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.0139 sec