· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Thinclient-HOWTO

Thin Client: New User Guide

Thin Client: New User Guide

Stephen Noble stephen7 at bigfoot.com

30th November 1999 조윤배 itsfree@kldp.org
1.버려진 값싼 컴퓨터들을 어떻게 메인 컴퓨터의 힘을 이용할 빠른 속도의 터미널로 바꿀까? 당신이 필요한 것들은 다음과 같다: 서버 역할을 수행할 빠른 컴퓨터, 오래되고 아무도 원치않는 클라이언트 컴퓨터, 리눅스 호환의 네트웍 카드, 연결 케이블 2. 어떻게 NFS를 이용함으로써 중앙 집중적인 시스템 관리를 할 수 있을까? 그것은 빠른 클라이언트의 전체 파일 시스템을 서버위에 두는 것으로 가능하다.

1. 소개

  • 리눅스는 어떤 새 컴퓨터라도 합리적으로 한대나 그 이상의 씬 클라이언트에게 서버로 사용되도록 해준다. 여기서 씬 클라이언트란 오래된 싼 값의 컴퓨터를 뜻한다. 콘솔 터미널을 위해서는 4-8mb의 램을 가진 386 한대가 필요하다. 반면 X-터미널로 사용되기 위해서는 8-16mb의 램을 가진 486/66 한대가 필요하다.
  • 한가지 옵션은 하드 드라이브를 갖지 않는 것이다. 이것은 소음을 줄여주며, 단지 유지보수를 위해서 사용할 거라면 관리를 간단히 해주기도 한다.
  • 만약 당신이 오래된 응용 프로그램들을 갖고 있다면, 당신은 하드 드라이브에 그것들의 OS와 함께 갖고 있을것이다.
  • 이 HOWTO문서는 Unix/Linux에 시작인 사람들에게 촛점이 맞추어져 있어서 알아야 할 기본적인 영역을 포함하고 있다. 그리고 당신이 잘 알고 있어야 할 것들이 담겨있는 다른 문서들에 대해서도 알려줄 것이다.
  • 당신은 아마도 이 문서를 http://www.slug.org.au/etherboot/ 에 대한 도움으로 사용할 것이다. 나는 설정 파일의 많은 예제들을 첨가하고, 독자들의 연습으로 etherboot의 다른 특징에 대해서는 그냥 남겨 두었다.
  • 만약 당신의 클라이언트가 공유가 필요한 파일 시스템만 갖추고 충분히 성능이 좋다면, 응용 프로그램들은 클라이언트 위에서 실행이 가능할 것이다. (말하자면 32mb 램을 갖춘 233Mhz의 컴퓨터 정도) 서버에 응용 프로그램을 설치하고 모든 클라이언트들이 접근 권한을 갖게 하라.

2. 하드웨어와 참고 문서

2.1 하드웨어

당신이 시작하려 한다면, 최소한 이 정도는 필요할 것이다.

  • 서버로 사용될 컴퓨터,
  • 클라이언트 컴퓨터, 나는 하드디스크의 전원 케이블을 뽑고, 디스크 없는 기계로 만들기 위해서 바이오스에서 하드디스크 없음으로 설정했다.
  • 호환 가능한 네트워크 카드,
  • 컴퓨터 사이의 연결 케이블, 나는 RJ45 터미네이터를 가진 한 쌍의 이더넷 케이블을 사용했다.
    • 두대의 컴퓨터를 연결하기 위해서는 크로스-오버 케이블 하나면 충분하다.
    • 두대 이상의 클라이언트를 연결하기 위해서는 허브가 필요하다. 4 포트를 가진 10mb 허브와 두 장의 네트워크 카드들이 포함된 키트는 $150 미만에 팔린다. 당신은 아마 이보다 더 나은 값에 살 수 있을 것이다.

2.2 참고 문서

당신은 스스로가 리눅스 문서에 정통할지도 모르지만, 특별히 다음에 열거되는 문서들의 개관은 읽어(훑어)둘 필요가 있다.

  • /usr/doc/HOWTO/mini/Diskless - 이 문제를 해결할 비슷한 HOWTO
  • Networking Overview HOWTO - 리눅스의 네트워킹 능력
  • Ethernet HOWTO - 이더넷 하드웨어의 호환성에 대한 정보
  • NET-3 HOWTO - 리눅스에서 TCP/IP 네트워킹을 설정하는 방법

/usr/doc/LDP 디렉토리에서 찾을 수도 있다.

  • The System Administrators' Guide
  • The Network Administrators' Guide
  • Linux Installation and Getting Started

가볼만한 링크

마지막으로 한 가지

  • 필자의 네트워크 서버는 snoball이고 클라이언트는 elite이다. (로컬)도메인은 gundog.net이다. 따라서 적용되는 곳에서는 당신의 컴퓨터 이름으로 대신해라.

3. 서버 설정

서버는 특정 갯수 만큼의 클라이언트에 대해 준비된 상태로 설정되어야 한다.

3.1 서버의 네트워크 서비스들을 체크하라

/sbin/ifconfig 명령을 실행하여 아래와 비슷한 결과가 보인다면 당신의 루프백과 이더넷 카드는 올바르게 설정된 것이다.


[cassie@snoball cassie]$ /sbin/ifconfig
lo        Link encap:Local Loopback
     inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
     UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
     RX packets:854 errors:0 dropped:0 overruns:0 frame:0
     TX packets:854 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0
eth0      Link encap:Ethernet  HWaddr 00:AA:00:BB:BD:09
     inet addr:192.168.53.1  Bcast:192.168.53.255  Mask:255.255.255.0
     UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
     RX packets:190369 errors:0 dropped:0 overruns:0 frame:0
     TX packets:249267 errors:0 dropped:0 overruns:0 carrier:1
     collisions:4793           Interrupt:5 Base address:0x320

만약 아니라면...

  • 루프백, 만약 이것이 여기에 없다면 처음 시작할때 활성화 시켜야 한다.
  • 이더넷 카드, 만약 검색중에 있다면 모듈로 된 드라이버이다.
  • 당신은 이것들을 linuxconf나 netcfg에서 설정할 수 있다.

3.2 dhcpd 데몬 설치하기

서버는 IP 주소를 요구하는 클라이언트들에게 IP 주소를 넘겨준다.

  • 만약 DHCPD가 인스톨 되었다면, 아마도 단지 (root로써) ntsysv를 실행하여 부트 과정에 시작되도록 해주면 될 것이다.
  • /etc/dhcpd.conf 파일은 매치되는 MAC 주소를 갖고 있을 경우에 IP 주소를 할당해 주도록 한다. MAC 주소는 NIC에게 주어지는 유일한 '숫자'이다. 그 '숫자'의 시작은 제조업체에 근거한다. 만약 당신이 가진 카드에 스티커가 붙어있지 않다면, eprom이나 플로피로부터 롬 이미지를 읽어들여서 어떤 결과가 나오는지 보라. (클라이언트 셋업을 보라.)
    #/etc/dhcpd.conf
    subnet 192.168.35.0 netmask 255.255.255.0 {
        option domain-name "gundog.net";
        range dynamic-bootp 192.168.35.128 192.168.35.255;
        default-lease-time 21600;
        max-lease-time 43200;
        }
    
    host 286 {
            filename "/tftpboot/kermit.nb";
            hardware ethernet 00:80:c8:22:ae:de;
            fixed-address 192.168.35.70;
            }
    
    host elite {
        filename "/tftpboot/vmlinuz.xterm";
        hardware ethernet 00:00:79:80:34:c9;
        fixed-address 192.168.35.23;
            option host-name "elite";
    

  • /etc/hosts 파일은 IP 주소를 분해하여 호스트네임으로 바꿔준다.
    #etc/hosts
    127.0.0.1       localhost    localhost.localdomain
    192.168.53.1    snoball      snoball.gundog.net
    192.168.53.23   elite        elite.gundog.net
    

3.3 Tftpd 설정

tftp - IP 주소를 얻은 후에 당신의 클라이언트는 커널을 요구한다. 여기서 tftp가 이더넷을 통해 커널을 배달해 준다.

  • tftpd를 설치하고, /etc/inetd.conf 파일 안에 아래와 같은 전형적인 라인이 활성화되어 있는지 확인하라.
    tftp dgram udp wait root /usr/sbin/tcpd in.tftpd -s /tftpboot
    

kill -HUP "inetd의 프로세스ID" 명령으로 inetd를 재시작하라.

3.4 커널 이미지

당신은 클라이언트를 위해 NFS 지원과 NIC 드라이버가 포함하여 커널을 컴파일 해야한다. (모듈로 컴파일 해선 안된다) Root file system on NFS? 물음과 BOOTP support? 물음에 Yes로 대답하라.

커널을 만든 후에, the Etherboot distribution 에 들어있는 mknbi-linux를 실행하라. (mknbi 프로그램은 netboot/linux 디렉토리에 들어있다) /tftpdir/"vmlinuz.xterm" 이라는 이름으로 만든 커널을 설치한다.

etherboot-4.2/doc/html/README-3.html 페이지를 살펴보라.

3.5 보안

누구든지 당신의 컴퓨터에서 아무 서비스나 프로세스들을 실행시키도록 하는 것은 매우 쉬운 일일지 모르나, 어느날 당신은 후회하게 될 것이다. /etc/hosts.deny를 이용해서 제한을 걸고, /etc/hosts.allow를 이용해서 권한을 복구시킬 수 있다. 예제를 참고하라.


#hosts.deny
#hosts.allow의 예외사항 이외에는 모두 거부
ALL:ALL


#hosts.allow
#내 도메인 내의 호스트들과 집에 있는 호스트들만 허용
ALL:LOCAL, 192.168.53.       #<-- ":" 뒤에 공백이 없음을 주목

보다 높은 수준의 보안 - 더 많은 정보는 LDP-HOWTO에서 찾아보고 etherboot를 사용한다면 그것은 security howto에 들어있다.

4. 클라이언트 셋업

Network loader

BIOS의 확장으로써 실행되는 작은 프로그램은, 플로피에서 불러지거나 eprom 칩에 작성하여 NIC에 꼽아 짐으로써 완벽히 디스크 없는 클라이언트가 될 수 있다. 그것은 DHCPD 질의와 TFTP 로딩을 다루고 나서 불러진 이미지를 TCP/IP 프로토콜을 이용해 전송한다.

TCP/IP 네트워크 로더에는 공개된 두 가지의 방법이 있다: Etherboot Netboot: Netboot가 패킷 드라이버들을 사용하는 반면에 Etherboot는 통합된 드라이버를 사용한다.

  • etherboot-4.2/doc/html/README-2.html 페이지를 살펴보라.
  • 나느 로컬인지 네트워크인지 물어보거나 5초후에 디폴트로 로컬로 설정되도록 옵션을 넣어 컴파일 하였다.
  • 부트 롬 플로피를 만들기 위해, floppyload.bin 파일 찾는것은 어려웠다. 나는 그것을 롬 이미지들이 컴파일된 디렉토리에 카피했다.
    cat floppyload.bin ne2000.lzrom > /dev/fd0
    

5. 네트워크 파일 시스템

클라이언트는 /tftpboot/<IP address of client>를 서버로부터 NFS를 사용하여 자신의 /로 마운트 하기 위해 요청한다. 당신은 이것을 서버로부터 내어주어야 한다. (/tftpboot/client로 심볼링 링크하는 편이 안전하다)

NFS는 하우투나 미니하우투 문서에서는 항상 큰 주제 거리다.

첫째로 당신은 /tftpboot 아래에 현재 당신의 시스템의 복사본을 만들 필요가 있다. Ken은 모든 일을 처리할 두 개의 스크립트를 만들었으며 그것들을 makefirst와 makecopy로 부르기로 했다. 내 첫번쨰 클라이언트는 20-30mb 정도를 차지하고 있다. 나는 불필요한 큰 파일들을 찾기 위해 du -h 명령을 쓰곤햇다.

etherboot-4.2/doc/html/diskless-5.html 페이지를 살펴보라.

다음의 파일들은 내게 있어서 중대한 파일일 수 있다.

5.1 서버 세부사항


#/etc/exports
/tftpboot/elite             elite(rw,no_root_squash)
/tftpboot/elite             gordon(rw,no_root_squash)
/usr                        *.gundog.net(ro)
/home                       *.gundog.net(rw)
/mnt/cdrom                  (ro)

변경후에는 exportfs -a 명령으로 exports 파일을 다시 읽게 한다.

#/etc/sysconfig/network
NETWORKING=yes
FORWARD_IPV4="no"
HOSTNAME="snoball"         <-----------
GATEWAYDEV=""
GATEWAY=""


#/etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR="192.168.53.1"            <-----------
BOOTPROTO=none

5.2 클라이언트 세부사항


#tftpboot/elite/etc/fstab
snoball:/tftpboot/elite    /               nfs rw  1 1
none                    /proc proc          defaults   0 0
snoball:/usr           /usr                 nfs     ro  1 1
snoball:/home          /home                nfs     rw  1 1


#tftpboot/elite/etc/sysconfig/network
NETWORKING=yes
FORWARD_IPV4=nomore
HOSTNAME=elite
GATEWAYDEV=
GATEWAY="192.168.53.1"       <-----------


#/tftpboot/elite/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
USERCTL=yes
ONBOOT=yes
BOOTPROTO=none
BROADCAST=192.168.53.255
NETWORK=192.168.53.0
NETMASK=255.255.255.0
IPADDR=192.168.53.23         <-----------

6. X-터미널

NFS를 통해 파일 공유를 하는것 이외에 클라이언트 PC는 더 이상의 변화가 없다.

이 시점에서 당신은 콘솔 터미널을 하나 갖고 있다. 이제 몇가지 변화를 주어 X를 실행할 수 있게 해 보자.

  • X 설정하기

    클라이언트에서 루트 권한으로 Xconfigurator와 mouseconfig를 실행하라

    만약 실패한다면 갖고 있는 CD의 RPMS 디렉토리를 체크하여 XF86Config를 사용하라.

  • X 폰트 서버
    #/etc/rc.d/init.d/xfs 파일을 체크하여 어떻게 xfs가 서버에서 시작되는지
    알아보라.
        echo -n "Starting X Font Server: "
        rm -fr /tmp/.font-unix
        daemon --check xfs su xfs -c xfs -s /bin/sh
        touch /var/lock/subsys/xfs
        echo
        ;;
    
    #edit XF86Config for all machines
        FontPath  "tcp/snoball:7100"
    

  • 콘솔 로그인

    당신은 지금 클라이언트에서의 콘솔 로그인을 설정했다. 당신은 클라이언트의 메모리와 프로세서를 이용하고 있고, 이것은 콘솔 프로그램들에겐 충분하다. 그리고 python으로 프로그래밍을 하던가, pine으로 메일을 보내거나 lynx로 브라우징을 하는것과 같이 여러가지 작업에서 커다란 잇점을 지닌다.

    당신은 아마 여기부터 X를 시작하여 다음 절에서는 서버에 변화를 갖도록 만들어야 한다. 프롬프트에서 X -query snoball라고 치면 서버로 접속하는 로그인 상자를 보게 될 것이다.

  • 그래피컬 로그인

    서버 설정/em>


    1. 클라이언트가 /etc/X11/xdm/Xaccess 파일에서 문법에 맞게 일치 되었는지
    확인하라.
    *   CHOOSER BROADCAST   #any indirect host can get a chooser
    
    
    2. /etc/X11/xdm/Xservers 파일에서 :0 앞에 주석 처리를 하라.
    #:0 local /usr/X11R6/bin/X
    
    3. 그러고나서 init 스크립트를 수정하여 xdm이 실행되도록 하라.
    #etc/inittab
    id:5:initdefault:
    
    과,
    # Run xdm in runlevel 5
    # xdm is now a separate service
    x:5:respawn:/etc/X11/prefdm -nodaemon
    xdm:5:respawn:/usr/X11R6/bin/xdm -nodaemon
    

    클라이언트 설정

    WARNING라고 표시된 부분은 아직 제대로 동작되지 않는다. 그렇지만 콘솔 로긴을 통한 두 단계의 방법을 통해서 정확한 문법에 가깝게 표현했다.


    #/tftpboot/elite/etc/inittab
    
    id:5:initdefault:                                    #WARNING
    x:5:respawn:/usr/X11R6/bin/Xwrapper -query snoball   #WARNING
    
    클라이언트에서의 실행은?
    
    id:3:initdefault:                                    #runlevel 3 ie console
    x:5:respawn:/etc/X11/prefdm -nodaemon
    

7. 감사의 말 & 더 많은 연습들

Markus Gutschke and Ken Yap Etherboot 프로그램의 제작자.

아래의 프로그램들로 당신의 시스템을 확장해 보라

  • squid - 당신의 네트웍 상의 다른 사람들을 위해 웹브라우징을 캐쉬
  • junkbuster - 웹 배너 광고들을 차단
  • mailman - 메일링 리스트 ;이메일이나 웹을 통해 셋업 가능
  • imp - 웹 기반의 이메일 (자바가 가능한 브라우져와 함꼐)
  • python - 자바나 C 언어가 너무 어려운 사람들에게
  • sgmltools - 당신의 문서들의 복수 버젼을 관리
  • suggestions ?

stephen7 at bigfoot.com


ID
Password
Join
Someone is speaking well of you.


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