:: nfs root mini howto ::
..... nfs-root 란? .....
diskless 머신에서, 루트 파티션을 nfs 로 마운팅해 쓰는 것입니다.
플로피 한장에 커널을 넣고,
커널을 올리고 랜카드를 잡은뒤
rarp 혹은 bootp 로 아이피를 받아
nfs 서버로부터 루트 파티션을 마운팅해 마저 부팅하고 실행됩니다.
이 howto 에서는 rarp 와 nfs 를 이용한 nfs-root 에 대해 설명합니다.
서버는 rarp, nfs 가 돌아가는 머신을 말하고,
클라이언트는 fixed disk 없이 돌아가는 diskless 클라이언트를 말합니
다.
..... diskless client 준비 .....
커널만 있으면 됩니다.
다음은 컴파일시 주의할점에 대한 설명입니다.
보통 컴파일에 추가해야 할 것들이죠.
( 2.2.17 기준입니다만.. 큰 차이는 없을겁니다.)
Networking options --->
IP: kernel level autoconfiguration : Yes 로 해야 합니다.
그러면 DHCP, BOOTP, RARP 의 세가지 옵션이 나타나는데..
쓰실 것만 넣어도 되고, 세개 다 넣어도 됩니다.
IP: Reverse ARP : rarp 방식을 사용하시려면 Yes 로 해야 합니다.
Filesystems --->
Network File Systems --->
NFS filesystem support : 모듈이 아닌 Yes 로 해서 커널에 넣어야
합니다.
Root file system on NFS : 위에서 IP 커널 오토컨피그를 켜셨다
면, 이 항목이 나타납니다.
Yes 해줍니다.
그리고 make clean; make dep; make bzImage 하면..
arch/boot/i386/bzImage 라는 커널이 생깁니다.. 인텔 기준..
그러면 이 커널을 nfs-root 용으로 만들기 위해서, rdev 로 루트 파티션
을 설정해줍니다.
nfs-root 는 루트 파티션이 major 0, minor 255 입니다.
가짜 nfs-root 디바이스를 만듭니다.
# mknod /dev/nfsboot b 0 255
그리고 bzImage 에, 이 커널은 nfsroot 을 쓸것이다.. 라고 마킹을 합니
다.
# rdev arch/boot/i386/bzImage /dev/nfsboot
준비가 다 되었으니, 커널을 플로피에 넣습니다.
# dd if=arch/boot/i386/bzImage of=/dev/fd0
윈도우에서 기록하려면 rawrite 를 쓰면 되겠죠.
이제 클라이언트에서는 서버가 준비된뒤, 이 플로피 디스켓을 넣고 부팅만
하면 됩니다.
..... 서버 준비하기 .....
rarp 방식을 사용하시려면, 서버도 커널에서 rarp 를 켜야 합니다.
그리고 rarp 를 준비하죠.
# rarp -s host HWADDR
혹은 /etc/ethers 에..
HWADDR1 host1
HWADDR2 host2
의 형식으로 설정한후, # rarp -f 를 해줍니다.
rarp -a 로 확인할 수 있습니다.
위에서 host 는 ip 나 호스트네임 아무거나 쓸 수 있고..
HWADDR 은 랜카드의 MAC 어드레스죠..
00:ea:20:f0:64:0d 식의, hex 6byte 로 이루어져 있습니다.
(그 머신에 os 가 설치되어 있다면, ping 한다음 arp -a 해보면 나옵니
다.
리넉 윈도 동일.. 랜카드 드라이버에 따라서, 위의 커널 부팅디스켓으로
부팅할때 나오기도 합니다.)
이런식으로 rarp 를 잡아주면, 클라이언트 머신이 부팅하면서 rarp 로
자기 MAC address (HWADD) 를 토대로 자신이 어떤 아이피를 쓸 것인지 결
정합니다.
다음은 클라이언트가 루트 파일시스템으로 쓸, nfsroot 를 설정합니다.
rarp-nfs 방식으로는, rarp 서버와 nfs 서버가 같은 머신이어야 합니다.
커널 부팅 파라메터를 넘겨주지 못하거든요.
/tftpboot/클라이언트ip -> 이것이 부팅되는 클라이언트의 루트 파티션
이 됩니다.
클라이언트가 서버하고 같이 돌아가게 하려면,
다음과 같이 nfsroot 디렉토리를 만듭니다.
# mkdir -p /tftpboot/클라이언트아이피
# tar clf - * -C / |tar xpf - -C /tftpboot/클라이언트아이피/
루트 디렉토리를 tar 로 그대로 퍼다가 저기에 같은 퍼미션으로 복사합니
다.
/tftpboot/클라이언트아이피/etc/sysconfig/network 나..
/tftpboot/클라이언트아이피/etc/sysconfig/network-scripts/ifcfg-
eth0
등은, 클라이언트 세팅에 맞춰서 바꿔줘야 할겁니다.
/tftpboot/클라이언트아이피/etc/fstab 도 바꾸어줘야죠.
서버아이피:/tftpboot/클라이언트아이피 / nfs
defaults 1 0
이번엔 nfs 세팅을 합니다..
/etc/exports 를 설정해야죠.
/tftpboot 클라이언트아이피(rw,no_root_squash)
와일드카드(*) 도 먹습니다.
그리고 nfs 데몬 시작..
/etc/rc.d/init.d/nfs start
그리고, 클라이언트에 아까 만둔 부팅디스켓을 넣고..
리붓한뒤, 프롬프트 떨어지기를 기다립니다.
끝.