X 터미널이 부팅될 때, 네트워크로 연결된 호스트를 통해 X 서버를 비롯한 여러 파일을 로딩하게 된다. 터미널이 부팅된 후에는 X 서버가 입출력이나 화면 입출력, X 프로토콜 상의 로컬 클라이언트로서의 역할을 담당하게 된다. 위에 말한 것처럼 X 서버 프로그램은 어떤 방식으로도 호스트 컴퓨터에서 실행되지 않는다. 또한 어떤 디렉토리에 위치하는가는 중요하지 않다.
X 터미널이 호스트로부터 X 서버 프로그램과 설정 파일들을 네트워크로 받기 위해 tftp(trivial file transfer protocol 단순한 ftp)와 BootP(boot protocol server 부트 프로토콜 서버)를 필요로 한다. 두 서비스는 전형적인 inetd(인터넷 데몬) 중 하나이다.
네트워크 설정이 되어 있는 X 터미널을 부팅한다고 하자. 전원이 들어오자 마자 X 터미널은 BootP를 이용하여 X 터미널의 물리적인 이더넷 어드레스가 담겨 있는 브로드캐스트 메시지를 보내게 된다. 이러한 정보들 - 특히 이더넷 어드레스등 - 은 호스트가 X 터미널을 부팅시키는 과정에 무척이나 중요하다. 만일 이런 부팅 요청이 리모트 호스트에 의해 받아들여지게 되면 inetd에서는 BootP 데몬을 실행시킨다. (inetd는 /etc/services 파일을 이용해 메시지가 들어오는 포트를 검색하고 있으므로 부팅 요청을 받아들이게 된다. BootP 데몬을 inetd에서 수행시키는 것은 /etc/inetd.conf 파일을 수정해야 한다.) 수정과정은 inetd.conf에서 TFTP와 BootP에 대한 설정 내용을 만들어 주던지 아니면 코멘트 해 놓은 것을 풀어 주는 것으로 설정을 마친다.(일반적으로 코멘트를 풀어 주는 것으로 해결될 것이다.) tftpd의 마지막 옵션은(아규먼트) X 터미널이 필요로 하는 파일들(X 서버, 설정 파일)등이 놓여져 있는 디렉토리가 된다. 물론 디렉토리를 안 써 주어도 되지만 tftp의 성격상(로긴 없이 포트로 누구나 읽을 수 있다.) 보안을 위해서라면 항상 제한되고 특정한 디렉토리를 설정해 주는 것이 중요하다. 다음은 /etc/inetd.conf의 일부이다.
# tftp service is provided primarily for booting. Most sites # run this only on machines acting as "boot servers". # 일반적으로 tftp 서비스는 부팅을 위해 쓰인다. 거의 대부분의 # 부트 서버로 쓰이는 컴퓨터에서 tftp를 쓴다. tftp dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.tftpd /usr/X11/lib/X11/ncd/ bootps dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.bootpd
X 터미널을 부팅하는 동안 호스트의 BootP 서버 데몬은 /etc/bootptab 파일을 읽을 것이다. X 터미널에 대한 엔트리가 이 파일 안에 있어야 한다. 각각의 엔트리들은 ':'에 의해 태그로 또다시 나뉘어지게 된다. 호스트 네임은 반드시 엔트리의 첫 번째 태그가 되어야 한다. 다음은 bootptab에 쓰이는 태그들에 대한 설명이다.
X 터미널의 IP 어드레스(ex 10.0.0.1)
서브넷 마스크(ex 255.0.0.0) 서브넷 마스크에 대해 자세히 설명하기는 지금은 곤란하고 또한 다른 네트워크의 기초 사항에 대해서도 알아야 하므로 리눅스 NET-3 하우투를 보기 바란다.(한글 번역본도 있다.)
게이트 웨이의 IP 어드레스(ex 10.0.0.1)
하드웨어 타입(ex ehternet)
물리적인 이더넷 어드레스(하드웨어 어드레스 6 바이트 코드)
bootp 매뉴얼에 보면 'ha' 태그는 반드시 'ht' 태그뒤에 쫓아 나와야 한다고 되어 있다. X 터미널의 물리적인 이더넷 어드레스는 부팅시마다 나온다. 다음과 같은 형식이니까 금새 찾을 수 있을 것이다. (ex 00:00:A7:12:26:19) (부팅 시에 안 나온다면 뒷면이나 뜯어보면 어딘가에 쓰여져 있을 것이다. 물리적인 이더넷 어드레스는 단 한 컴퓨터에 단 하나씩이다! 역주)
다른 엔트리에서 쓰인 테이블이나 라벨, 태그등을 연장선상에서 쓸 때, 예제를 참고하라.
도메인 네임서버의 IP 어드레스(ex 10.0.0.3) 만일 호스트를 찾을 때 DNS를 쓰지 않는 컴퓨터라면 특별히 써 줄 필요는 없다.
X 터미널의 부팅 파일(일반적으로 터미널 모델명과 부트 파일명이 같다. ex Xncd19r)
다음은 /etc/bootptab의 예제이다. '\'는 항상 그렇듯이 계속 이어지는 라인이라는 의미에서 쓰인 것이다.
# This is a general entry (here given the name default) # with information common to all BootP clients # 이것은 일반적으로 모든 BootP 클라이언트에 맞추어진 기본적인 엔트리이다. default:hd=/usr/X11/lib/X11/ncd/:\ ds=10.0.0.3:\ sm=255.0.0.0:\ gw=10.0.0.1:\ # X terminal entry with hostname myxterm # Notice the tc tag reference to the entry default # 호스트 네임을 myxterm으로 세팅하여 X 터미널 엔트리를 만들었다. # tc를 이용하여 default의 세팅을 가져왔다는 것을 주의하기 바란다. myxterm:ht=ethernet:\ ha=0x0000a7122619:\ ip=10.0.0.2:\ tc=default:\ bf=Xncd19r:
만일 이 bootptab파일에 있는 내용과 부팅을 요청한 메시지에 있는 하드웨어 어드레스가 일치한다면 bootp에서는 X 터미널의 IP 어드레스를 이용하여 파일을 보내 주게 될 것이다. 물론 이때 tftp를 이용하게 될 것이라는 것을 눈치챘을 것이다. 호스트 네임은 호스트에 있는 /etc/hosts 파일을 이용하여 지정해 줄 수 있다. 이 파일은 호스트 네임을 IP 어드레스로 바꾸는데 쓰인다. 예에서 X 터미널의 어드레스인 10.0.0.2는 'myxterm'이란 이름으로 지정되어 있다.
10.0.0.1 linuxhost # The boot host 10.0.0.2 myxterm # X terminal