다음 이전 차례

3. 커널 로더

커널을 메모리로 올릴때 여러 방법이 쓰일 수 있는데 어떤 기능이 가능한가에 달려 있다.

3.1 dd를 써서 커널을 플로피에 쓰기

항상 하던데로 dd를 써서 커널을 플로피에 쓸 수가 있다. 하지만 커널 명령어 라인을 쓸 수는 없다. 그래서, "root="파라미터를 대체하기 위해서 mknod를 이용해 메이저 넘버 0, 마이너 넘버 255짜리 더미 디바이스를 만들어야한다.

        mknod /dev/boot255 c 0 255

다음에 커널, zImage 파일을 dd로 플로피에 복사해라.

        dd if=/usr/src/linux/arch/i386/boot/zImage of=/dev/fd0

그리고 마지막으로 rdev를 써서 루트 디바이스를 설정해줘라.

        
        rdev /dev/fd0 /dev/boot255

여기에 맞는 진짜 디바이스는 없기 때문에 /dev/boot255 를 지워도 된다. 다른 두개의 커널 명령어 파라미터는 rdev로 바꿀 수가 없기 때문에 RARP나 BOOTP를 쓰는 기본적인 값들이 쓰일 것이다. 만약에 RARP를 통해 응답을 받았다면 /tftpboot/<client-ip>/ 가 루트 디렉토리로 마운트될 것이고, BOOTP를 통해 응답을 받았다면 응답에 포함되어 있는 디렉토리 이름이 루트로 마운트 될것이다.

3.2 LILO 쓰기

리로를 쓴다면 리로의 설정파일에서 "append="란 명령으로 필요한 모든 파라미터들을 지정할 수 있다. "root=" 명령을 쓰기 위해서는 3.1에서 설명했던 것처럼 역시 더미 디바이스를 만들어야 한다. 리로와 "append=" 명령을 쓰는 것에 대한 사항은 리로 문서를 참조하라.

3.3 loadlin 쓰기

자신의 하드 디스크없이 루트로 마운트하기 위해 도스 프롬프트에서 부팅을 하려고 한다면 로드린을 쓸면 된다. 이 방법이 동작한다는 얘기는 들었지만 내가 직접해보지는 않았다. 보통 리로에서 쓰는 방법처럼 커널 명령어 라인을 쓸 수가 있을 것이다. 더 알려면 로드린 문서를 참조하라.

3.4 Boot ROM 쓰기

이 방법은 디스크 없는 클라이언트를 부팅시키는 가장 세련된 방법일 것이다. 부트롬을 쓰는 방법은 TFTP 프로토콜을 써서 커널을 로딩한다. 내가 아는 한도내에서 아직 네트워크를 통한 리눅스 부팅을 지원하는 상업적인 부트롬은 없지만 sunsite.unc.edu와 미러 사이트에 공개적으로 구현된 두개의 부트롬이 있는데 "netboot-nfs"와 "etherboot"라고 한다. 둘 다는 디스크 없는 리눅스 클라이언트를 부팅시키는데 필요한 모든것을 갖고 있다.


다음 이전 차례