서버의 커널에 RARP기능을 넣는 것은 좋은 생각이다. 커널 인자없이 부팅하려면 이 기능이 반드시 필요하다. 한편 클라이언트가 서버와 다른 서브넷에 있다면 이 기능은 도움이 되지 못한다.
웍스테이션의 커널은 최소한 다음 조건들을 만족시켜야 한다:
웍스테이션이 커널 인자없이 부팅되려면 루트 장치를 0:255로 설정할
필요가 있다. mknod /dev/nfsroot b 0 255를 함으로써 더미
장치를 만든 후, rdev <kernel-image> /dev/nfsroot를
타이핑함으로써 커널 이미지의 루트 장치를 설정할 수 있다.
경고: 이들 명령어들이 잘 작동한다 하더라도, 제작
환경(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 스크립트들을 검사한다.
웍스테이션을 위해 루트 디렉토리를 익스포트한다. exports(5)를
참조하라. 이 작업후 nfsd/mountd를 재시작해야 한다. RedHat에서는
간단히 /etc/rc.d/init.d/nfs stop ; /etc/rc.d/init.d/nfs start를
하면 재시작할 수 있다.
네트상의 어딘가에 RARP를 설치하라. nfsroot 인수없이 부팅하려 한다면, RARP서버는 또한 NFS서버여야 한다. 보통 RARP서버가 NFS서버의 역할도 맡는다. RARP를 설치하려면 커널이 RARP를 지원하도록 설정되어야 한다.
그리고 나서, 다음을 실행시킨다(그리고 서버의 /etc/rc.d의
어딘가에 이 명령문을 설치해야 한다!):
/sbin/rarp -s <ip-addr> <hardware-addr>
여기에서
은 웍스테이션의 IP주소이고
은 웍스테이션의 네트워크 카드의 이더넷 주소이다.
예: /sbin/rarp -s 131.131.90.200 00:00:c0:47:10:12
서버가 이름으로 IP주소를 찾을 수 있다면(/etc/hosts나 DNS를 이용해서), IP주소대신에 이름을 사용할 수 있다.
BOOTP 설정을 위해서 /etc/bootptab을 편집해야 한다.
bootpd(8)와 bootptab(5) 맨 페이지를 참조하라.
필자는 하드웨어 주소(역주: 웍스테이션의 랜카드의 이더넷 주소)를 모른다. 어떻게 알아 낼 수 있을까?
/sbin/arp -a로 ARP캐시를 살펴 본다.