RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

출처 : 대전국제IT교육센터 정성재 강사

 

1. Daemon이란?
Daemon이란 사전적인 의미로는 보통 악마(demon)를 뜻하거나, 그리스신화의 Daemon처럼 수호신을
뜻한다. 유닉스(리눅스)에서는 악마처럼 앞에 나타나지 않고, 사용자가 모르게 뒤에서 시스템의 관
리를 위해 움직이는 프로그램을 말한다. 즉, 백그라운드로 실행되어 있다가 네트워크를 통해 클라이
언트의 여러가지 요청(Mail이나 FTP등처럼)에 서비스하기 위해 설치하는 서버프로그램이다. 윈도우NT
나 윈도우2000의 서비스와 같은 의미로 보통 램에 상주하며, 대표적인 것으로는 httpd, ftpd,inetd
등이 있다.


2. Daemon의 종류
(1) 설명: 데몬에는 sendmail이나 apache처럼 단독으로 실행되는 것이 있고, ftp, telnet, pop3등을
          한꺼번에 관리하는 inetd(커널 2.4버전인 경우에는 xinetd)같은 슈퍼데몬이 있다.
(2)단독으로 실행되는 데몬 : 웹서비스처럼 클라이언트의 서비스요청이 많은 경우에 유용하다. 항
                            상 램에 상주하므로 좀 더 빠른 서비스가 가능하나, 자원(메모리)의
                            낭비를 초래할 수 있다. 대표적인 것으로는 다음과 같은 것이 있다.
   1) httpd : World Wide Web 서비스를 제공하는 아파치 데몬이다. 웹서버로 사용하지 않는다면 부
             팅시간이 많이 걸리므로 사용하지 않는 것이 좋다.
   2) named : DNS서버를 사용할 경우 이 서버의 작동유무를 제어하는 데몬이다. 독립시스템일 경우
             사용하지 않는다.
   3) sendmail : E-mail을 주고 받을 때 사용되는 데몬이다.
   4) smb : 일명 삼바를 실행 시켜주는 데몬이다. 삼바는 유닉스와 윈도우의 파일 및 프린터를 공
           유하게 해주는 서비스이다.
   5) crond: 리눅스에 등록된 명령어들을 정기적으로 수행하는 데몬이다. 즉, 멀티태스킹으로 동작
            하는 리눅스에서 받은 메일의 스풀러 정리라든지 각종 명령어들을 실행하는 데몬이다.
            반드시 실행시킨다.
   6) gated : 라우팅데몬으로 리눅스에 라우팅 기능을 수행하고 싶으면 이 데몬이 떠 있어야 한다.
   7) netfs: 삼바, NFS, NCP등을 마운트하거나 언마운트할 때 필요한 데몬이다. NFS 데몬등을 실행
            하려면 해당 데몬을 실행하기 전에 미리 띄워야 한다.
   8) nfs : NFS(Nerwork File System)데몬을 띄우는 일을 한다. NFS는 TCP/IP를 이용하여 파일들을
          서로 공유할 수 있게 만든다. 리눅스에서 NFS서버를 운영할 때 쓴다.
   9) lpd : 프린터 데몬이다. lpr과 같은 명령어를 사용해 프린터를 사용하려면 이 데몬을 실행시
           켜야 한다.
   10) mcserv : mc(Midnight Commannd)라는 파일매니저 프로그램을 작동시키는 데몬이다.
   11) ircd : IRC(Internet Relay Chat)데몬이다. IRC란 인터넷 채팅을 할 때 쓰는 일종의 채팅프로
             그램이다.
   12) syslog : syslog는 시스템에 일어나는 여러가지를 기록해주는 데몬이다. 이 데몬은 반드시 실
               행하는 것이 좋다. 이 데몬이 있어야 시스템에 여러가지 사고가 발생시 기록을 추적
               하는 단서를 얻을 수가 있기 때문이다. 이 데몬에 관련된 환경파일은 /etc/syslog.co
               nf이다.
   13) squid : http, ftp, gopher 같은 프로토콜을 사용할 때 캐쉬의 속도를 높여주는 데몬이다.
   14) snmpd : SNMP(Simple Network Management Protocol)데몬이다. 네트워크의 상황을 모니터를 할
              때 사용된다.
   15) amd : automount의 약자로 호스트에서 그 서버의 파일을 읽을 때 자동으로 마운트하게 해 주
            는 데몬이다. 이 데몬은 네트워크 정보가 잘못 입력되었을 경우 부팅될 때 문제를 일으킬
            킬 수 있으므로 별다른 경우가 아니면 꺼 놓는 것이 좋다. 네트워크 설정이 정상적이거
            나 아예 사용하지 않는 경우라면 선택해도 무방하다.
   16) bootparamd : 리눅스 서버를 통해 연결된 Sun워크스테이션의 네트웍을 부팅할 때 사용했던 데
                   몬으로 리눅스에서 sun 네트워크를 부팅시킬 때 사용한다. BOOTP와 DHCP를 사용
                   하는 경우에는 켜 놓을 필요가 없다.
   17) portmap : 원격프로시저호출(RPC:Remote Procedure Call)연결을 제어해 주는 역할을 하며,
                NFS와 RPC를 사용하는 서비스를 제공하는 데몬이다. 네트워크상에서 클라이언트-
                서버개념이 적용되지 않는 시스템에서는 실행할 필요가 없는 데몬이지만 nfs, nis,
                amd 등 원격 프로시저 호출을 하는 프로그램을 사용할 경우에는 반드시 선택해야
                하는 데몬이다.
   18) routed : 자동IP라우터로 독립적인 시스템에서는 실행할 필요가 없는 데몬이다.
   19) atd : 백그라운드 작업을 해주거나 각종 예약 명령을 처리하는 작업을 한다. 기본적으로 선택
            되어 있으며, 특별한 경우가 아니면 선택한다.
   20) dhcp : 네트워크로 구성된 상태에서 리눅스 서버의 정보를 이용하여 부팅될 자신의 IP주소와
             네트워크 정보를 가질 수 있게 하는 데몬이다. 네트워크에서 서버로 사용되면 BOOTP와
             DHCP가운데 하나를 선택하는데, 정적IP를 부여한 네트워크 환경에서 선택한다. 네트워
             크가 구성되지 않는 일반PC에서는 선택할 필요가 없다.
   21) gpm : 리눅스로 부팅된 다음 텍스트 상태에서 마우스를 사용하여 영역을 선택하거나 복사를
            가능하게 해주는 데몬이다. 이 서비스는 PS/2마우스일경우 X-window와 충돌할 수도 있
            다. 만약 X-window를 실행시켰을 때 마우스가 움직이지 않으면 이 데몬을 끈다.
   22) kerneld : 운영체제의 핵심인 커널 기능을 동작시키는 데몬이다. 반드시 선택한다.
   23) keytable : 키보드의 정보를 설정하는 /usr/sbin/kbdconfig명령으로 키보드유형을 변환할 수
                 있도록 해주는 데몬이다.
   24) network : 네트워크 관련된 각종 정보를 설정을 활성화하는 데몬이다.
   25) sound : 리눅스의 부팅과 종료시 사운드의 믹서 설정을 복구하거나 저장하는 스크립트이다.
   26) ruserd : 네트워크 사용자를 추적할 수 있는 데몬으로 특정 사용자의 위치를 확인할 수 있다.
   27) rwhod : 원격 접속을 한 사용자들의 목록을 볼 수 있는 로그 정보를 가진 데몬이다.
   28) ypbind : NIS(Network Information Service) 즉, 네트워크에 알려진 모든 머신들에게 정보(In
               formation)을 제공해주는 서비스를 해주는 네트워크-클라이언트에 관련된 서버이다.
   29) yppasswd : NIS에 관련되는 것으로 클라이언트 사용자가 패스워드를 변경할 수 있도록 해주는
                 서버측의 데몬이다.
   30) ypserv : NIS를 총괄하는 서버이다. 데이터베이스나 프로세스들로 구성되어 있는 간단한 네트
               워크를 찾는 서버이다.
   31) apmd : 고급전원 관리기능(Advanced Power Management)을 해주는 데몬이다. 마더보드에서 APM
             을 지원한다면 이 데몬을 작동하도록 한다. doze, standby, suspend, nap, sleep, mode
             s 와 하드디스크 절전 등 바이오스에서 하는 것보다 더욱 더 뛰어난 기능을 발휘한다.
   32) pcmcia : 노트북이나 laptops 에서 사용하는 PCMCIA 관련 데몬이다.
(3)슈퍼데몬 inet에서 관리하는 데몬
   1) 설명: Inet는 Internet Superserver라 불리우며 자주 실행되지 않는 데몬들을 통들어 관리해
           슈퍼데몬이라고 부른다. 일반 데몬들처럼 프로세스가 항상 떠있지 않고, 클라이언트의
           요청이 있는 경우   에만 데몬을 실행시킨다. 응답시간은 좀 걸리지만 메모리가 절약된다.
           이 슈퍼데몬은 커널 2.2버전과 2.4버전이 차이가 있다. 커널 2.2버전 (리눅스 6.x 버전)
           에서는 inetd라는 이름을 사용하였으며, 전체적인 환경 설정은 /etc/inetd.conf에서 통합
           관리하였고, 슈퍼 데몬에 속하는 데몬들은 'TCP Wrapper'라는 프로그램에 의해 접근이
           제어되었다. 커널 2.4버전(리눅스 7.x버전이후)에서는 xinetd라는 이름의 슈퍼데몬이
           작동되고 환경설정은 /etc/xinetd.conf와 /etc/xinetd.d디렉토리의 각 서비스파일에서
           관리한다.
   2) 슈퍼데몬에서 관리하는 데몬
    ㄱ. telnet : telnet서비스를 제공하는 데몬
    ㄴ. ftp  : ftp(file transper protocol)서비스를 제공하는 데몬
    ㄷ. finger : 시스템에 현재 누가 로그인하고 있는지를 알려주고 그 밖에도 여러가지 유용한
                정보를 얻을 수 있게 해주는 데몬
    ㄹ. login : rlogin과 같은 명령어를 사용하여 신뢰하는 호스트에서 접속시 로그인할 수 있도록
              해주는 데몬. 보안상 위험하니 사용하지 않는 것이 좋다.
    ㅁ. auth : IDENT 프로토콜을 지원하는 서비스이다. 리눅스의 ident 데몬으로 접속해 현재 누가
              접속했는지에 대한 정보를 알려주는 데몬이다.
    ㅂ. shell : rsh와 같은 명령어를 사용해서 원격의 호스트에서 접속시 조건없이 쉘명령어를 실행
               시키는 데몬이다.
    ㅅ. tcpd : 호스트에서 telnet서비스를 요청하면 TCP Wrapper에서 in.telnetd 를 작동시킨다. 이
              과정만 보면 telnet서비스만 할 뿐 호스트에 대한 정보를 남기지 않는다. tcpd의 역할
              은 in.telnetd가 구동되기 전에 telnet서비스 접속에 대한 기록을 파일에 적는 역할을
              한다. 즉, tcpd가 TCP Wrapper 프로세스이다.

3.데몬의 실행과 중지
(1) 단독으로 실행되는 데몬
   1) 설명: 단독으로 실행되는 데몬들은 /etc/rc.d/init.d 디렉토리에 스크립트 파일을 가지고 실행
           /중지시키면 된다. 또는 service라는 스크립트를 사용해도 된다.
   2) 사용예 : httpd데몬의 중단과 실행
    ㄱ. [root@www root]# /etc/rc.d/init.d/httpd stop
         => httpd 데몬을 중지시킨다.
    ㄴ. [root@www root]# /etc/rc.d/init.d/httpd start
         => httpd 데몬을 작동시킨다.
    ㄷ. [root@www root]# service httpd restart
         => service 명령을 이용하여 httpd 데몬을 재작동시킨다.
(2)슈퍼데몬 inet에서 관리하는 데몬
   1) inet에서 관리하는 전체를 중지 또는 실행시키는 방법
    ㄱ. 커널 2.2 버전
       /etc/rc.d/init.d/inet stop
       /etc/rc.d/init.d/inet start
    ㄴ. 커널 2.4 버전
       /etc/rc.d/init.d/xinetd stop
       /etc/rc.d/init.d/xinetd start
    ㄷ. 참고: 위의 방법으로 inet을 중단시키면 inet데몬에 관련된 모든 데몬들이 작동을 하지 않는
             다. 그러므로, 한가지 데몬만을 중단한 경우에는 적합하지 않다.
   2) inet(또는 xinetd)에서 관리하는 데몬중 일부만 중지시키기
    ㄱ. 커널 2.2 버전: inet데몬에서 일부만 중단하려면 /etc/inetd.conf 파일에서 한다. 해당 서비
                      스 항목의 맨 앞에 주석처리('#')를 하면 해당 서비스에 해당하는 데몬이
                      작동하지 않는다.
    예) telnet서비스 중단하기
       #telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd
        => (항목설명)
          - 서비스이름: /etc/services파일에 정의된 텔넷, ftp와 같은 특정 서비스들을 의미
          - 소켓타입: 서비스에 의해 사용된 연결의 타입을 기술. 보통 tcp서비스인 경우에는
                     'stream', udp서비스인 경우에는 'dgram'이 옴
          - 프로토콜: 네트워크 프로토콜 타입이 기술된다. 보통 'tcp'나 'udp'가 옴.
          - 대기상태: 하나의 서버프로세스가 한번에 여러 요청을 처리할 수 있는지를 나타냄. wait
                     이면 inetd가 서비스들에 대한 각각의 요청을 처리하기 위해 여러 프로세스가
                     생성되는 것을 방지하고 nowait라고 설정되어 있으면 각각의 요청을 위해 프로
                     세스를 생성
          - 사용자이름: 네트워크 서비스를 수행해야 할 로그인 이름
          - 서버프로그램: 네트워크 서비스를 활성화시키기 위해 수행해야 할 프로그램을 가리킴
          - 서버프로그램인자: 네트워크 서비스가 수행되기 시작할 때, 전달 되어야 할 인자와 설정
                             플래그들을 나열
    ㄴ. 커널 2.4 버전: /etc/xinetd.d디렉토리에 보면 xinetd에서 관리하는 데몬들의 파일이 생성
                     되어 있다. 만약 telnet이면 telnet이라는 파일의 항목에서 'disable = yes'
                     라고 설정하면 해당 데몬은 xinetd에서 실행하지 않는다. 또는 'chkconfig
                     telnet off' 하면 된다.

(3) 데몬관련명령어: ntsysv
   1) 설명: 부팅시 자동실행되는 데몬들을 쉽게 설정하기 위해서는 'ntsysv'를 이용하면 된다. 그럼
          데몬들의 목록이 나오는데 스페이스키로 선택해주면 부팅시마다 자동으로 데몬이 작동한다.
          이 명령도 어렵다면 'setup'을 하면 X-window설정등 여러 메뉴가 나오는데 여기는 'System
          Service'를 선택하면 된다. 물론 이 명령도 루트권한자만 가능하다.
   2) 사용예
    ㄱ. ntsysv
         => 현재 레벨의 자동으로 시작하는 서비스데몬을 지정할 수 있다.
    ㄴ. ntsysv --level 5
         => 레벨 5의 자동으로 시작하는 서비스데몬을 지정할 수 있다.

4. 데몬의 확인
(1) 개요: 리스트로 나열하여 확인할 수 있고, 트리형태로 그래픽하게도 확인할 수 있다.
(2) 관련명령어
   1) ps
    ㄱ. 설명: 리스트로 나열하여 보여준다.
    ㄴ. 사용예
       ps -aux
   2) pstree
    ㄱ. 설명: 이 명령은 현재 가동중인 데몬들을 tree구조 형태로 나타내 준다.
    ㄴ. 사용예
       pstree

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. Disk Quota
(1) 설명: 사용자들의 계정 용량을 제한할 경우에 사용한다. 그룹단위로도 용량을 제한할 수 있으며
          웹호스팅 서비스를 하는 경우에 유용하다. 보통 블록단위의 용량제한과 inode의 갯수를 제
          한한다.
(2) 관련명령어
   1) quotacheck
     ㄱ. 설명: 디스크를 사용하고 있는 파일 시스템을 체크하여 quota기록파일(quota.user 또는
              quota.group)을  가장 최근의 상태로 업데이트 시키는 명령이다.
     ㄴ. 사용법
        quotacheck [option] 디렉토리명
     ㄷ. option
        -a : 모든 그룹과 사용자에 대한 quota를 체크한다.
        -m : 읽기 전용 모드 등의 이유로 마운트를 하지 못할 경우 강제로 체크할 때 사용한다.
        -f : 쿼터파일 초기생성시 잘 인식하지 못하는 경우 강제로 인식시킬 때 사용한다.
     ㄹ. 사용예
       a. [root@www /root]# quotacheck /home
           => 주의할점은 이 명령을 수행할 경우에는 파일의 손상의 위험이 있으므로 quotaoff상태
             에서 해야한다.
       b [root@www /root]# quotacheck -m /home
           => 강제로 /home을 체크한다.
   2) edquota
     ㄱ. 설명: 사용자에게 쿼타를 할당할때 사용한다.
     ㄴ. 사용법
        edquota [option]
     ㄷ. option
        -t : soft limit를 초과한 후부터 적용되는 시간제한을 설정하는 옵션이다.
        -p : quota를 다른 사용자에게도 동일한 설정으로 적용한다.
        -g : 그룹의 quota를 설정한다.
     ㄹ. 사용예
        a. [root@www /root]# edquota posein
            => posein이라는 사용자의 쿼터를 할당한다. 그러면 기본편집기(vi)가 실행되면서
              다음과 같이 나온다.
            Disk quotas for user posein (uid 500):
              Filesystem            blocks       soft       hard     inodes     soft     hard
              /dev/hda8             259556          0          0        248        0        0
             => (설명)
               Filesystem : Quota가 설정되어 있는 파티션을 나타낸다.
               Blocks : 현재 사용중인 용량을 나타낸다.
               soft : 보통의 경우에는 사용할 수 있는 최대 용량을 나타낸다. 유예기간(grace
                     period)이 설정되어 있는 경우에는 사용용량 초과에 대한 경고를 받는 경계선
                     으로 사용된다.
               hard : 유예기간이 설정되어 있는 경우에 작동하는 것으로 사용자가 사용할 수 있는
                     최대 용량을 의미한다.
               inodes : 현재 사용중인 inode를 나타낸다.
        b. [root@www /home]# edquota -t
             => 실행시키면 vi편집기가 실행되면서 다음과 같이 나타난다. 여기서 날짜를 변경하면
              된다.
              Grace period before enforcing soft limits for users:
              Time units may be: days, hours, minutes, or seconds
                Filesystem             Block grace period     Inode grace period
                /dev/hda8                     7days                  7days
                 => (설명)
                   Filesystme : Quota가 설정된 파일시스템을 나타낸다.
                   Block grace period : Block의 soft제한을 초과했을 경우의 유예기간이다.
                   Inode grace period : Inode의 soft제한을 초과했을 경우의 유예기간이다.
        c. [root@www /home]# edquota -p posein prehee
             => prehee이라는 사용자의 설정을 posein의 설정과 동일하게 만든다.
   3) quotaon
     ㄱ. 설명: quota를 시작하기 위해 실행하는 명령이다.
     ㄴ. 사용법
        quotaon 디렉토리명
     ㄷ. 사용예
        [root@www /root]# quotaon /home
   4) quotooff
     ㄱ. 설명: quota를 종료시킨다.
     ㄴ. 사용법
        quota 디렉토리명
     ㄷ. 사용예
        [root@www /root]# quotaoff /home
   5) repquota
     ㄱ. 설명: quota의 설정 상황을 보여준다.
     ㄴ. 사용법
        repquota [option] 디렉토리명
     ㄷ. option
        -a : quota설정이 되어 있는 모든 파티션의 quota상태를 보여준다. 이 옵션을 사용하면 디렉
            토리명을 지정할 필요는 없다.
        -g : 그룹에 대한 quota상태를 보여준다.
        -u : 사용자에 대한 quota상태를 보여준다.(기본값으로 설정되어 있음)
        -v : 모든 quota상태를 보여준다.
     ㄹ. 사용예
        a. [root@www /home]# repquota /home
           *** Report for user quotas on device /dev/hda6 (/home)
           Block grace time: 7 days; Inode grace time: 7 days
                                   Block limits                File limits
           User            used    soft    hard  grace    used  soft  hard  grace
           ----------------------------------------------------------------------
           root      --   19372       0       0            231     0     0
           nobody    --      28       0       0              6     0     0
           posein    --   11608   50000   55000            398     0     0
        b. [root@www /home]# repquota -g /home
            => 그룹단위로 쿼타상태를 보여준다.
   6) quota
     ㄱ. 설명: 자신의 쿼타 용량 상태를 보여준다.
     ㄴ. 사용법
        quota
     ㄷ. 사용예
        [posein@www posein]$ quota
        Disk quotas for user posein(500):
             Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
              /dev/hda6   11608   50000  55000             398       0      0
   7) convertquota
     ㄱ.설명: 쿼타설정과 관련된 quota.user, quota.group을 새로운 형태의 aquota.user, aquota.g
             roup파일 포맷으로 변경해준다. 레드햇 리눅스 2.4이상의 파일시스템에서 적용된다. 새
             로운 파일 포맷은 32bit uids/gids를 지원하며, root권한으로 quota를 설정해야 하며,
             bytes단위로 사용공간을 체크한다.
     ㄴ. 사용법
         convertquota [option] 디렉토리명
     ㄷ. options
       a. -u : 사용자 쿼타파일(quota.user)을 바꾼다. 기본값이다.
       b. -g : 그룹의 쿼타파일(quota.group)을 바꾼다.
     ㄹ. 사용예
       a. [root@www /]# convertquota /home
            => 사용자 쿼타파일인 qutoa.user를 aquota.user 파일로 전환한다.
       b. [root@www /]# convertquota -g /home
            => 그룹 쿼타파일인 qutoa.group를 aquota.group파일로 전환한다.
(3) 설정하기
   1) /etc/fstab 설정
     ㄱ. 설명: 만약 설정하려는 파티션이 /home이라면 보통 다음과 같이 설정되어 있다.
              /dev/hda6               /home                 ext2    defaults        1 2
              여기서 네번째필드에 usrquota라고 설정한다.
     ㄴ. 예
        /dev/hda6               /home                 ext2    defaults,usrquota   1 2
     ㄷ. 참고: /etc/fstab파일을 변경했을 경우에는 시스템을 재부팅하거나 다시 마운트해야 한다.
              mount -o remount /home
   2) quota.user 파일 생성
     ㄱ. 설명: 사용자의 쿼타정보를 가지고 있는 파일이 quota.user인데 이 파일을 생성해야 한다.
              보통 설치하고자 하는 파티션의 최상위에 만든다.
     ㄴ. 예
        [root@www /root]# touch /home/quota.user
        [root@www /root]# chmod 600 /home/quota.user
          => /home에 쿼터를 설정하려면 /home디렉토리에 만들며, root권한자만이 읽고 쓰기가
            가능하도록 설정한다.
   3) quotacheck 디렉토리
     ㄱ. 설명: 설정된 값을 읽어들여서 반영한다.
     ㄴ. 예
        [root@www /root]# quotacheck -mf /home
   4) convertquota 명령으로 aquota.user로 변환하기
     ㄱ. 설명: 예전에 사용하던 quota.user파일을 최신의 aquota.user파일로 convert해야 한다.
              convertquota명령은 커널 2.4이상의 시스템에서 적용된다.
     ㄴ. 예
        [root@www home]# convertquota -u /home
   5) 사용자에 대한 쿼터설정
     ㄱ. 설명: 제한하려는 용량을 설정한다. 옆에 나온 단위를 참조하여 값만 입력한다.
     ㄴ. 예
        [root@www /root]# edquota posein
   6) quota를 시작한다.
     [root@www /root]# quotaon /home
(4) 테스트
   1) 쿼터확인
     [root@www home]# repquota /home
     *** Report for user quotas on device /dev/hda8
     Block grace time: 7days; Inode grace time: 7days
                             Block limits                File limits
     User            used    soft    hard  grace    used  soft  hard  grace
     ----------------------------------------------------------------------
     root      --      96       0       0              8     0     0
     nobody    --      32       0       0             10     0     0
     prehee    --      64    2000    3000             15     0     0
       => soft제한이 2M정도임을 알 수 있다.
   2) 용량을 초과한뒤의 쿼타확인
     [root@www home]# repquota  -a
     *** Report for user quotas on device /dev/hda8
     Block grace time: 7days; Inode grace time: 7days
                             Block limits                File limits
     User            used    soft    hard  grace    used  soft  hard  grace
     ----------------------------------------------------------------------
     root      --     112       0       0              9     0     0
     nobody    --      32       0       0             10     0     0
     prehee    +-    2916    2000    3000  6days      16     0     0
      => 앞쪽에 -- => +- 기호로 바뀌었다. 즉 Block limits의 soft한도가 넘었다는 뜻이다. grace
        에 6days라는 값이 표기되었다는 것은 6일동안은 soft한도를 넘어 사용을 해도 사용가능하다
        는 뜻이다. 하지만 6일 이후에는 soft한도내로 용량을 줄여야지만 새로운 데이터를 올릴 수
        있게 된다. 그러나 절대로 hard 한도는 넘을 수 없다. 이 한도를 넘게 되면 데이터를 저장할
        수 없다는 메시지가 출력된다.
(5) 그룹쿼타 설정하기
   1) /etc/fstab 설정
     ㄱ. 설명: 만약 설정하려는 파티션이 /home이라면 보통 다음과 같이 설정되어 있다.
              /dev/hda6               /home                 ext3    defaults        1 2
              여기서 네번째필드에 grpquota라고 설정한다.
     ㄴ. 예
        /dev/hda6               /home                 ext3    defaults,grpquota   1 2
     ㄷ. 참고: /etc/fstab파일을 변경했을 경우에는 시스템을 재부팅하거나 다시 마운트해야 한다.
              mount -o remount /home
   2) quota.group 파일 생성
     ㄱ. 설명: 그룹의 쿼타정보를 가지고 있는 파일이 quota.group인데 이 파일을 생성해야 한다.
              보통 설치하고자 하는 파티션의 최상위에 만든다.
     ㄴ. 예
        [root@www /root]# touch /home/quota.group
        [root@www /root]# chmod 600 /home/quota.group
          => /home에 쿼터를 설정하려면 /home디렉토리에 만들며, root권한자만이 읽고 쓰기가
            가능하도록 설정한다.
   3) quotacheck 디렉토리
     ㄱ. 설명: 설정된 값을 읽어들여서 반영한다.
     ㄴ. 예
        [root@www /root]# quotacheck -g -m /home
   4) convertquota 명령으로 aquota.group로 변환하기
     ㄱ. 설명: 예전에 사용하던 quota.group파일을 최신의 aquota.group파일로 convert해야 한다.
              convertquota명령은 커널 2.4이상의 시스템에서 적용된다.
     ㄴ. 예
        [root@www home]# convertquota -g /home
   5) 사용자에 대한 쿼터설정
     ㄱ. 설명: 제한하려는 용량을 설정한다. 옆에 나온 단위를 참조하여 값만 입력한다.
     ㄴ. 예
        [root@www /root]# edquota -g terran
   6) quota를 시작한다.
     [root@www /root]# quotaon /home
   7) quota의 확인
     [root@www /]# repquota -g /home


2. 스케줄링
(1) 개요: 스케줄링이란 특정한 시간에 특정한 작업을 행하게 하는 것이다. 보통 리눅스에는 cron
          과 at를 이용한다.
(2) at
   1) 설명: 지정한 시간에 원하는 명령을 실행될 수 있도록 해준다. atd데몬에 의하여 실행되고,
           지정한 작업은 큐(queue)에 저장되며 저장된 작업들은 /var/spool/at 디렉토리 아래
           파일로 저정된다. 보통 한번 실행되는 경우에 사용된다. 명령은 기본적으로 표준 입력
           장치를 통해받으며, 입력의 종료는 ctrl+d를 누른다.
   2) 사용법
     at [opion] 시간
   3) option
     -q queue : 작업의 대기 큐를 지정한다. 사용할 수 있는 큐는 a-z, A-Z까지이다. 지정하지
               않으면 기본큐로 a를 사용한다.
     -c job : 작업 리스트를 출력한다.
     -d : 작업을 삭제한다. (atrm과 같음)
     -l : 큐에 있는 작업들을 보여준다. root인 경우에는 모든 작업들의 목록을 보여준다.
         (atq와 같음)
     -m : 실행한 결과를 메일로 통보해 준다.
     시간 : 실행할 시간을 기록한다. 시간지정은 HHMM,HH:MM형태로 가능하고 am,pm으로 구분가능
           하다. 날짜의 경우는 MMDDYY, MM/DD/YY, MM.DD.YY형태로 나타낸다. 또한 now, tomorrow,
           noon같은 문자열도 사용가능하다.
     -f 파일명 : 표준입력이 아닌 지시된 파일에서 작업을 읽어온다.
   4) 사용예
     ㄱ. [posein@www posein]$ at 1:40am tomorrow
         warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
         at> ls -al > list.txt
         at>                                       // 중단하려면 여기에서 ctrl+d키를 누른다.
         job 3 at 2002-06-13 01:40
     ㄴ. [posein@www posein]$ at -l
         4       2002-06-12 01:48 a posein
           => 현재 예약된 작업의 리스트를 보여준다.
     ㄷ. [posein@www posein]$ at 7:00pm March 20
           => 3월20일 오후 7시에 작업을 예약한다
     ㄹ. [posein@www posein]$ at now+3hours
          => 3시간 후에 작업을 예약한다.
     ㅁ. [posein@www posein]$ at now + 5 minutes
          => 5분 뒤에 작업을 예약한다.
     ㅂ. [posein@www posein]$ at midnight + 10 minutes
          => 자정에서 10분뒤 즉, 00:10의 작업을 예약한다.
   5) 관련명령어
     ㄱ. atq
        a. 설명: 큐에 저장된 작업들을 보여주는 명령으로 at -l 실행결과와 같다. 작업번호와
                작업이 실행된 예정 시간, 작업이 저장되어 있는 큐를 보여준다.
        b. 사용법
          atq
        c. 사용예
          [posein@www posein]$ atq
          3       2002-06-12 01:40 a posein
     ㄴ. atrm
        a. 설명: 예약된 작업을 취소할 때 사용하는 명령으로 큐에서 해당 작업을 삭제한다. at -d
                를 사용하는 것과 같다.
        b. 사용법
          atrm 작업번호
        c. 사용예
          [posein@www posein]$ atrm 4
   6) at 사용자제한
     ㄱ. 설명: at데몬을 사용할 수 있는 사용자를 제한할 수 있다. /etc/at.allow파일과
              /etc/at.deny파일을 이용한다. /etc/at.allow파일에 등록하면 등록된 사용자만이
              사용가능하다. /etc/at.allow파일이 있다면 이 파일에 명단이 있는 사용자만이
              at명령을 사용할 수 있다. 이 파일이 없으면 /etc/at.deny파일을 찾는다. /etc/at.
              deny파일에 목록이 있는 사용자는 at를 사용할 수 없다. 두 파일 모두 찾지 못하면
              오로지 슈퍼 유저만이 사용가능하다. 또한 /etc/at.deny파일이 비어있으면 모든
              사용자가 at명령을 사용할 수 있다.
     ㄴ. 설정: 한 줄에 한 계정만 적는다.
        [root@www /root]# cat /etc/at.allow
        posein
        prehee
(3) cron
   1) 설명: 같은 작업을 주기적으로 반복할 수 있도록 해준다. 보통 /etc/rc.d/init.d/crond에
           의해 실행된다. 설정은 /usr/bin/crontab명령어를 사용한다.
   2) 관련명령어 및 파일
     ㄱ. crontab
        a. 설명: cron작업을 설정하는 명령어이다. 실행시키면 기본편집기인 vi가 실행된다.
        b. 사용법
          crontab [option] [파일명]
        c. option
          -l : 현재 crontab에 의해 설정된 내용을 출력한다.
          -e : crontab의 내용을 작성하거나 수정한다.
          -r : crontab의 내용을 삭제한다.
          -u : root권한자가 해당사용자의 crontab파일을 다룰때 사용한다.
        d. 사용예
          1. [root@www /root]# crontab -l
              no crontab for root
               => 작업의 목록을 보여준다.
          2. [posein@www posein]$ crontab -r
               => 등록된 작업을 삭제한다.
          3. [root@www /root]# crontab -e -u posein
              => posein이라는 사용자의 crontab을 작성하거나 수정한다.
          4. [posein@www posein]$ crontab aaa
              => aaa라는 파일을 crontab으로 사용한다. 이 경우에는 미리 aaa파일을 crontab의
                형식에 맞게 입력해놔야 한다.
        e. crontab의 작업형식 : 5개의 날짜 필드와 1개의 명령필드로 구성되어 있다.
          MM HH DD mm d command
          (설명)
            MM : 분(Minute)을 의미한다.(0~59까지 사용)
            HH : 시(Hour)를 의미한다.(0~23까지 사용)
            DD : 날짜(Day of Month)를 의미한다.(1~31까지 사용)
            mm : 달(Month)을 의미한다.(1~12까지 사용)
            d  : 요일(Day of Week)을 의미한다.(0~7까지 사용, 0과 7은 일요일을 나타냄)
            command : 실행할 작업을 명기한다.
          (참고)
            위 형식에서 시간을 나타내는 각 필드에서 와일드 카드 '*'를 사용할 수 있고 각각의
           요일을 구분할 때','를 사용하고, 연일을 나타낼 때는 '-'를 사용한다. 즉 월요일과
           수요일은 '1,3'으로 월요일부터 금요일까지는 '1-5'로 표시할 수 있다.
     ㄴ. /etc/crontab
        a. 설명: 시스템이 정기적인 작업이 수행될 수 있도록 기본적으로 설정되어 있는 파일이다.
        b. 설정예
          [root@www /etc]# cat /etc/crontab
          SHELL=/bin/bash
          PATH=/sbin:/bin:/usr/sbin:/usr/bin
          MAILTO=root
          HOME=/

          # run-parts
          01 * * * * root run-parts /etc/cron.hourly
          02 4 * * * root run-parts /etc/cron.daily
          22 4 * * 0 root run-parts /etc/cron.weekly
          42 4 1 * * root run-parts /etc/cron.monthly

          0-59/5 * * * * root /usr/bin/mrtg.sh /usr/lib/mrtg/mrtg.cfg
           => run-parts는 디렉토리 이하의 스크립트를 순차적으로 실행하는 명령어이다.
     ㄷ. /etc/cron.allow : at과 마찬가지로 사용자를 제한할 때 사용한다.
     ㄹ. /var/spool/cron 디렉토리 : 각각의 사용자가 등록한 crontab은 이 디렉토리아래에 각
                                   사용자의 계정이름으로 저장된다.
   3) 설정하기
     ㄱ. crontab -e 명령을 내린다.
     ㄴ. 해당형식에 맞게 입력한다.
        예) 0 12 * * 1-5 /home/posein/aaa
           => 월요일부터 금요일까지 /home/posein/aaa라는 스크립트를 실행시킨다.
     ㄷ. 설정예
        1) 0 12 1 1-12/2 * /home/posein/bbb
            => 1월부터 12월까지 2개월마다 /home/posein/bbb라는 스크립트를 실행시킨다.
        2) 0 10 * * 1 cat /root/notice | mail -s "Notice"
posein@mybestone.com
            => 월요일 오전 10시에 notice라는 문서의 내용을 메일로 발송한다. 
Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. 개요
인터넷이나 소규모 LAN을 이용한 네트워크를 통하여 리눅스를 설치할 수 있다. 이 경우 리눅스 설치
이미지가 있는 리눅스서버와 리눅스를 설치하는 클라이언트로 구분한다. 리눅스서버는 FTP, NFS서버
를 구축하여야 하며, 클라이언트가 접속할 수 있도록 설정해야 한다. 클라이언트에서는 네트워크
부팅 이미지로 만든 부팅디스크를 준비해야 한다.


2. 리눅스 네트워크서버 설정 -NFS 서버이용
(1) 서버에 설치를 위한 소스 복사
   1) 소스가 위치할 디렉토리 생성
     [root@www root]# mkdir /redhat80
   2) 생성한 디렉토리에 리눅스 설치파일을 복사한다. 보통 마운트하면 /mnt/cdrom/RedHat 디렉토리
     에 설치파일들이 들어있다. 여기에 있는 내용을 복사하면 된다.
     [root@www root]# mount -t iso9660 /dev/cdrom /mnt/cdrom
       => 물론 /etc/fstab에 의해 mount /mnt/cdrom 이라고만 해도 된다.
   3) 설치에 필요한 파일을 소스디렉토리에 복사한다.
     [root@www root]# cp -vr /mnt/cdrom/RedHat/ /redhat80
   4) 복사가 다 되었으면 마운트를 해제한다.
     [root@www root]# umount /mnt/cdrom
   5) 나머지 설치 CD-ROM도 위와 같은 방법으로 모두 복사한다.
(2) NFS서버로 구축하기
   1) /etc/exports 파일설정
    ㄱ. 기본설정법
       설치소스경로          클라이언트주소
    ㄴ. 설정예
       /redhat80      *
      => /redhat80 이라는 디렉토리에 모든 클라이언트의 접속을 허가하였다.
   2) NFS 서버를 작동한다.
    ㄱ. /etc/rc.d/init.d/portmap start    (보통 이 데몬은 기본적으로 작동한다.)
    ㄴ. /etc/rc.d/int.d/nfs start

3. 클라이언트 설정 - NFS 서버 이용
(1) 설치디스크 준비하기 : 여러 방법이 있지만 리눅스 서버에서 제작하는 것으로 한다.
   1) 레드햇 8.0의 1번 씨디를 준비해서 CD-ROM 드라이브에 넣는다.
   2) 마운트한다.
     mount -t iso9660 /dev/cdrom /mnt/cdrom
   3) 부팅에 필요한 이미지인 bootnet.img라는 파일이 있는 images디렉토리로 이동한다.
     cd /mnt/cdrom/images
   4) dd 명령으로 만든다.
     dd if=bootnet.img of=/dev/fd0
(2) 설치디스크로 부팅하여 설치한다.
   1) 부팅디스크를 넣고 부팅한다.
   2) 초기화면이 뜨고 'boot:'라는 프롬프트가 나오면 그냥 [Enter]키를 누른다.
   3) 사용할 언어를 선택한다.(기본 English 선택)
   4) 키보드를 선택한다.(기본 us 선택)
   5) 인스톨 방법을 선택한다. NFS image, FTP, HTTP 방법이 있으며 이중에서 NFS image를 고른다.
   6) 네트워크 장치를 선택한다. eth0이나 eth1 등 맞는 것을 선택한다.
   7) TCP/IP 네트워크 설정을 한다. 해당 IP, Netmask, Gateway값등을 설정한다.
   8) NFS 서버를 설정한다.
    ㄱ. NFS server name : 서버네임이나 IP주소를 적는다.
    ㄴ. Rea Hat directory : 설치소스의 경로를 적는다. 위의 예제대로 한다면 /redhat80 이라고
                           입력한다.
   9) 설치를 시작한다.

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. 커널(kernel)의 개요
(1) 커널: 리눅스에서 커널은 시스템 자원을 소유하고 관리하는 역할을 담당한다. 보통 하드웨어,
          메모리, 프로세스 스케줄링을 담당하고 프로그램이 하드웨어 자원을 간접적으로 접근할
          수 있도록 해준다.
(2) 커널버전
   1) 기본구성
     메이저.마이너.패치레벨
   2) 설명
     ㄱ. 메이저릴리즈: 메이저 릴리즈는 커널에 매우 큰 변화가 생겼을 경우를 나타낸다.
     ㄴ. 마이너릴리즈: 마이너 릴리즈는 중요한 기능상의 변화가 생기거나 추가된 경우를 나타내며
                      이것들을 한꺼번에 모아서 메이저릴리즈로 발표된다. 또한 마이너릴리즈는
                      두 가지로 나뉜다.
        a. 짝수번호 릴리즈: 짝수번호인 커널은 안정버전이다. (예 2.0, 2.2, 2.4, 2.6)
        b. 홀수번호 릴리즈: 홀수번호인 커널은 개발버전이다. (예 2.1, 2.3, 2.5) 주로 커널 개발
                           자들이 이용한다. 마이너 릴리즈의 개발 목표가 이루어지고 테스트 결과
                           안정성이 입증되면 짝수번호인 마이너릴리즈가 만들어진다.
     ㄷ. 패치레벨: 버그가 수정되고 새로운 기능의 계획이 추가되면 커널의 패치 레벨이 증가한다.
                  일반적으로 최근 버그가 수정된 가장 최신 버전의 커널을 사용하는 것이 안정적
                  이다.
(3) 필요한 도구: 자신만의 커널을 만들기 위해 C 컴파일러(리눅스에서는 GNU C컴파일러인 gcc), 어
                 셈블러, 링커, make유틸리티 등의 개발도구가 필요하다. 리눅스 설치시 개발옵션을
                 선택하면 기본적으로 설치된다.

2. 사용자 커널 컴파일
(1) 커널설정
   1) 설명: 커널을 만드는 첫번째 단계는 설정이다. 커널에는 파일시스템, SCSI, 네트워크 등 선택
           옵션이 있다. 이러한 많은 옵션들은 직접 포함되거나 모듈로 만들어져 커널의 기능이 된
           다. 설정 과정 중 원하는 옵션을 선택하면 된다.
   2) 설정규칙
     y: 커널에 컴파일(yes)
     m: 모듈로 컴파일(module)
     n: 기능을 사용하지 않음(no)
   3) 환경설정의 저장: 설정된 환경은 보통 /usr/src/linux/.config에 기록된다.
(2) 환경설정도구
   1) make config: 가장 기초적인 자동 설정도구로 시스템의 터미널 종류에 상관없이 실행가능하다.
                  이 명령을 실행하면 콘솔이나 윈도우에 각 옵션에 대한 질문이 나타난다. 사용자
                  는 질문에 대해 각각 y,m,n으로 대답한다. 이 도구는 상당히 장황하고 모든 옵션
                  에 대해 답을 해야한다.
   2) make menuconfig: 화살표키와 다른 키를 이용해 커널을 설정할 수 있는 텍스트 모드의 윈도우
                      환경을 제공한다. 이 때 터미널에서 커서를 제어할 수 있는 커스(curses)라이
                      브러리가 필요하다.
   3) make xconfig: X윈도우 기반하에서 사용한다. 라디오버튼으로 선택하는 방식이다.

3. 커널소스구하기
(1) 개요: 리눅스 커널은 리눅스의 창시자인 리누스 토발즈와 앨랜 콕스(Alan Cox)에 의해 개발되어
          발표되고 있다. 토발즈가 발표하는 커널은 두 가지형태로 배포된다. 하나는 안정버전과
          테스트가 필요한 개발버전으로 나뉘어 있다. 앨랜 콕스의 커널은 토발즈의 커널보다 새로
          운 기능의 커널을 패치하는 형태로 제공된다.
(2) 커널소스파일의 예
    linux-2.4.21.tar.gz
     => (설명)
        2 : 커널의 주 버전
        4 : 홀수면 개발버전을 나타내고, 짝수면 안정버전을 나타낸다.
       21 : 패치된 횟수이다.
(3) 커널 소스 구하기
   1) 설명: 관련사이트는 ftp.kernel.org 이므로 여기서 최신의 커널을 구할 수 있다.
   2) 참고: 최신 커널 버전 알아보기
     ㄱ. 설명: finger명령을 이용하여 최신의 커널버전을 알아볼 수 있다.
     ㄴ. 사용예
        [posein@www posein]# finger @ftp.kernel.org
        The latest stable version of the Linux kernel is:           2.4.21
        The latest prepatch for the stable Linux kernel tree is:    2.4.22-pre9
        The latest snapshot for the stable Linux kernel tree is:    2.4.21-bk23
        The latest beta version of the Linux kernel is:             2.6.0-test2
        The latest 2.2 version of the Linux kernel is:              2.2.25
        The latest 2.0 version of the Linux kernel is:              2.0.39
        The latest prepatch for the 2.0 Linux kernel tree is:       2.0.40-rc6
        The latest -ac patch to the stable Linux kernels is:        2.4.22-pre6-ac1

4. 커널소스풀기
(1) /usr/src 디렉토리로 이동한다.
(2) 관련사이트에 접속한다.
    ftp ftp.kernel.org    
(3) ID와 패스워드를 입력: 각각 anonymous/anonymous 라고 입력하거나 ftp/ftp라고 입력한다.
(4) cd /pub/linux/kernel/v2.4 로 이동한다.
(5) get 명령어를 이용하여 다운받는다.
   예) get linux-2.4.21.tar.gz
(6) tar 명령을 이용하여 압축을 푼다.
    tar zxvf linux-2.4.21.tar.gz
(7) 압축을 푼 디렉토리로 이동한다.
    cd linux-2.4.21 (예전의 경우에는 linux라는 디렉토리로 생성되는 경우도 있었음)

5. 커널컴파일(Kernel Compile)순서
make mrproper => make menuconfig => make dep => make clean => make bzImage => make install =>
make modules => make modules_install

(참고) make mrproper
       커널 컴파일시 make mrproper명령을 새로운 커널 설정을 위한 것으로, 기존에 설정되어 있는
      커널 설정값을 모두 초기화하고, 컴파일되어 있던 오브젝트(object, .o확장자를 가진 파일,
      이를 커널에서 모듈이라고 함)파일을 제거하여 커널 상태를 새로운 커널 설정에 맞도록 초기
      화해 주는 명령이다. 이 명령은 커널 컴파일시에 매번 실행할 필요는 없다. 기존 커널 설정을
      모두 무시하고 다시 설정하고자 할 때나 새로운 의존성을 설정하고자 할 때 요구되므로, 기존
      설정에 새로운 기능을 추가하는 경우에는 이 명령을 실행하지 않아도 된다.

6. 커널환경설정
(1) 환경설정 명령의 종류
   1) make config : 기본 텍스트명령으로 각 옵션을 선택한다.
   2) make xconfig : X윈도우 환경하에서 설정하는 명령이다.
   3) make menuconfig : 가장 많이 쓰이는 방법으로 ncurses를 이용한다.
(2) 커널 옵션 설정 규칙
   1) 기본규칙: 'y' 또는 '*'는 커널에 적재되도록 하는 것이며, 'm'은 모듈로 해당 기능을 사용함
               을 의미하고, 'n'은 커널에 해당기능을 사용하지 않겠다는 뜻이다.
   2) 참고: 불필요한 설정들은 시스템 자원을 많이 소모함으로 가능한 선택하지 않고, 기본적인 것
           들만 커널에 포함시키고 나머지들은 모듈로 작동될 수 있도록 한다.
(3) Menu
   1) Code maturity level options (N)
     ㄱ. 설명: 커널 코드의 성숙도를 선택하는 부분으로 '*'을 선택하면 개발 단계의 기능들을 사용
              한다는 의미이며, 'n'은 커널에서 안정적인 기능들만 사용하겠다는 설정이다. 기본적
              으로 'n'으로 한다.
     ㄴ. 메뉴
        Prompt for develpment and/or incomplete code/drivers
   2) Loadable module support
     ㄱ. 설명: 커널에서 모듈을 사용할 수 있도록 선택해주는 부분이다.
     ㄴ. 메뉴항목
        Enable loadable module support (Y)
         => 동적 모듈 기능을 가능하게 해주는 기능으로 원하는 기능을 메모리에 올려놓고 필요없는
           기능은 메모리에서 빼내는 것을 가능하게 해준다. 꼭 선택하도록 한다.
        Set version information on all module symbols (N)
         => 커널이 바뀌어도 기존의 모듈을 사용하게 해준다. 특별한 경우가 아니면 필요없지만
           가지고 있는 하드웨어 드라이버가 별도의 모듈로 제공되는 경우에는 선택해야 한다.
        Kernel module loader (Y)
         => 모듈에 대해 커널이 항상 대비해 주도록 설정하는 것이다. insmod나 modprobe등의
           명령을 사용하지 않고, kerneld라는 데몬이 자동적으로 모듈이 어느 기능을 수행하지
           않으면 자동적으로 모듈을 메모리에서 제거하는 기능을 갖는다. 유용하므로 반드시 선택
           하도록 한다.
   3) Processor type and features
     ㄱ. 설명: 자신의 컴퓨터에 맞는 CPU를 선택하는 부분이다. 컴파일후 재부팅시 일어나는 Panic
              현상의 대부분이 이곳 설정에서 발생한다. 만약 정확히 모른다면 386을 선택해도
              된다.
     ㄴ. 메뉴항목
       (Pentium-III/Celeron(Coppermine)) Processor family
         => 자신의 시스템에 맞는 CPU를 선택한다.
       [*] PGE extensions (not for Cyrix/Transmeta)
         => Pentium-II 계열선택시에 나타나는 메뉴로 PGE 지원여부이다. Cyrix나 Transmeta CPU가
           아니면 선택한다.
       [*] Machine Check Exception
        => 시스템에 문제점이 발생시에 프로세서가 커널에서 통지하는 것을 허락하는 옵션이다.
          선택하도록 한다. (Y)
       Toshiba Laptop support (N)
         => 도시바 랩톱인 경우에 선택한다.
       Dell laptop support (N)
         => 델의 랩톱인 경우에 선택한다.
       /dev/cpu/microcode - Intel IA32 CPU microcode support (N)
         => 펜티엄 프로, 펜티엄 II,III,IV등 IA32인텔계열의 프로세스에서 마이크로코드를
           업데이트할 수 있게 해주는 옵션이다. 그러나 리눅스커널에서 포함되어 있지 않는
           실제 마이크로코드 바이너리 데이터를 가지고 있어야 한다. File systems 항목에서
           "/dev 파일시스템 지원"이라는 옵션과 함께 설정해야 한다.
       /dev/cpu/*/msr - Model-specific register support (N)
         => 특권을 가진 프로세스들이 x86 Model-Specific Register(MSRs)에 접근할 수 있도록
           해주는 장치로 /dev/cpu/0/msr부터 /dev/cpu/21/msr디바이스에 주 장치번호 202와
           부장치번호 0~31을 가진다. 주로 멀티프로세스 시스템에서 적용된다.
       /dev/cpu/*/cpuid - CPU information support (N)
         => /dev/cpu/0/cpuid부터 /dev/cpu/31/cpuid에서 주장치번호 202와 부장치번호 0~31을
           가지는 디바이스로 프로세스들이 특정 프로세서에 실행될 수 있도록 지시하는 x86
           CPUID에 접근할 수 있도록 해준다. 역시 이것도 멀티프로세스 시스템에서 사용한다.
       (off) High Memory Support
         => x86리눅스 기반 시스템에서 물리적인 메모리를 최대 64기가 바이트까지 사용할 수
           있는데, 32비트 계열의 인텔 프로세스에서는 메모리주소 공간이 4기가 바이트까지만
           지원되어 그 이상의 물리적인 메모리를 가지고 있더라고 커널에서 모든 메모리가 영구
           적으로 매핑되지 못한다. 이 때 영구적으로 매핑되지 않는 메모리를 상위메모리(High
           Memory)라고 부르는데, 이 상위 메모리를 설정하는 옵션이다. 사용중인 시스템의 램이
           1GB 이하인 경우에는 off로 설정하고, 1~4GB인 경우에는 "4GB"로 설정하고 그 이상인
           경우에는 "64GB"로 설정한다.
       Math emulation (N)
        => 386이나 486SX에서는 수학 코프로세서(Math coprocessor)를 가지고 있지 않는 시스템에서
          에뮬레이터기능이 요구될 때 선택하는 옵션이다. 펜티엄급 CPU에서는 이 옵션이 필요없다.
       MTRR (Memory Type Range Register) support (N)
        => 인텔 펜티엄 프로와 펜티엄 II시스템에 있는 MTRR을 지원하는 것으로 프로세스가 메모리
          영역에 접근할 수 있도록 제어해 주는 기능을 한다. 이를 선택하면 PCI또는 AGP VGA카드의
          성능이 향상되며, X서버에서도 이 기능을 사용하므로 선택하도록 한다. 참고로 DVD-ROM을
          사용하는 경우에는 필히 선택한다.
       Symmetric multi-processing support (N)
        => 두 개이상의 CPU를 사용할 경우 선택한다. 최대 16개의 CPU를 지원한다. 이 옵션을 선택
          한 경우에는 Character devices  --->< > Enhanced Real Time Clock Support도 선택해야
          하며 General setup  --->< >   Advanced Power Management BIOS support는 'n'로 해야
          된다.
       Multi-node NUMA system support (NEW) (N)
        => 선택하지 않는다.
       Unsynced TSC support (NEW) (N)
        => 선택하지 않는다.
   4) General setup
     ㄱ. 설명: 일반적인 설정을 한다.
     ㄴ. 메뉴
        Networking support (Y)
         => 리눅스에서 네트워킹을 사용하게 해주는 옵션이다. 네트워크가 연결되어 있지 않더라고
           반드시 선택한다.
        PCI support (Y)
         => PCI 주변기기를 위하여 꼭 선택한다.
       (Any)   PCI access mode
         => PCI주변기기를 탐색하는 방법으로 "Bios"를 선택하면 바이오스가 이용되고, "Direct"를
           선택하면 바이오스가 이용되지 않는다. "Any"를 선택하면 커널이 직접 탐색하고 실패하는
           경우에는 바이오스에 의해서 실행하도록 한다.
        [*] ISA bus support
         => 메인보드에 ISA 슬롯이 있는 경우에 선택한다.
        PCI device name database (Y)
         => 커널에는 알려진 모든 PCI장치명에 대한 데이터베이스가 있어서 /proc/pci, /proc/iopor
           ts 그리고 유사한 파일명으로 사용자들이 이해할 수 있는 정보를 제공해준다. 이러한 데
           이터베이스는 대략 80KB정도의 커널 이미지크기이지만, 부팅될 때마다 제거되기 때문에
           커널 메모리를 차지하지 않으므로 선택한다.
        EISA support (N)
         => EISA(Extended Industry Standard Architecture)버스를 지원하는 경우에 선택한다.
           이것은 IBM마이크로채널 버스를 대체하기 위해 개발된 것으로 현재는 거의 사용하지
           않는다.
        MCA support (N)
         => MCA(MicroChannel Architecture)는 IBM ps/2기종과 랩톱에서 지원되는 것으로 PCI 또는
           ISA와 유사하다. 현재 거의 사용되지 않는다.
        Support for hot-pluggable devices (Y)
         => 이 기능은 주로 랩톱 컴퓨터나 노트북에서 PCMCIA카드와 같이 시스템이 동작되는 상태
           에서 장치를 끼워 바로 작동되도록 하고자 할 때 사용되는 기능으로 일반 데스크탑에서
           는 USB장치를 사용할 경우 선택한다.
       PCMCIA/CardBus support (N)
        => 노트북이나 랩톱컴퓨터에서 사용되는 기능이다.
       PCI Hotplug Support  --->
       System V IPC (Y)
        => 프로세스 사이에서 동기화와 정보교환을 위한 라이브러리 함수와 시스템 콜 모음이다.
          리눅스에서는 도스용 프로그램을 에뮬레이터를 통해서 실행시킬수 있다. 선택하도록 한다.
       BSD Process Accounting (Y)
        => 프로세스가 존재할 때에 사용자가 커널 프로세스의 정보를 알 수 있도록 해주는 옵션
          이다. 선택하도록 한다.
       Sysctl support (Y)
        => 시스템을 재부팅하지 않고 시행중인 커널 매개 변수를 동적으로 변경한다. /proc파일시스
          템이 설치되어 있으면 편집가능한 sysctl요소 트리는 /proc/sys에 생성된다. 커널의 크기
          가 8kb 늘어난다.
       (ELF) Kernel core (/proc/kcore) format
         => 커널 코어이미지(core image)를 담고 있는 /proc/kcore파일의 포맷 형태로 ELF 또는
           a.out로 설정한 것인가를 선택하는 옵션이다. 이 옵션을 사용하기 위해서는
           File systems  --->[*] /proc file system support를 같이 선택해야 한다. 커널해커가
           아니라면 ELF로 설정한다.
          Kernel support for a.out binaries (N)
          Kernel support for ELF binaries (Y)                                
          Kernel support for MISC binaries (N)
           => a.out(Assembler.Output)는 초창기 유닉스에서 쓰이던 방법이다. 슬랙웨어 바이너리
             파일 형태인 ELF가 나오기 전의 바이너리로 요즘은 사용되지 않으므로 선택하지 말고
             ELF는 리눅스 바이너리 포맷의 표준이므로 반드시 선택해야 한다. MISC는 선택하지
             않는다.
       Power Management support (Y)
         => 전원 관리 기능설정부분으로 시스템을 끄거나 사용하지 않을 경우에 절전모드로 전환
           하여 소비를 줄여주는 기능으로 APM(Advanced Power Management) 또는 ACPI(Advanced
           Configuration and Power Interface)에 의해서 작동될 수 있는데 이 기능을 사용하기
           위해서는 Advanced Power Management BIOS support [M]과 [*]     Use real mode APM
           BIOS call to power off (NEW) (Y)와 같이 사용한다.
   5) Memory Technology Devices (MTD) : 임베디드 시스템에 사용되는 메모리 장치 특히 플래시
                                       장치에 관련된 기능과 모듈들을 선택하는 옵션이다.
                                       선택하지 않도록 한다. (N)
   6) Parallel port support : 로컬시스템에서 로컬프린터를 사용할 경우에 이 옵션을 'y'로 설정
                             하거나 'm'으로 설정한다. 이 때 PC-style hardware (NEW)도 모듈로
                             설정하도록 한다.(Y or N or M)
   7) Plug and Play configuration: PNP기능을 사용하기 위해서는 반드시 이 옵션을 선택한다. ISA
                                  카드를 사용하지 않는 경우에는 ISA Plug and Play support는
                                  선택하지 않는다. (Y)
   8) Block devices
     Normal PC floppy disk support (Y)
      => 플로피 드라이브 지원여부이다. 선택하도록 한다.
     XT hard disk support (N)
      => 286컴퓨터에 사용되던 XT하드 디스크를 지원하는 옵션이다. 요즘은 이런 방식의 하드디스크
        는 사용하지 않으므로 선택하지 않는다.
     Compaq SMART2 support (N)
     Compaq Smart Array 5xxx support (N)
      => 컴팩 장치를 사용할 때 선택한다.
     Mylex DAC960/DAC1100 PCI RAID Controller suppor (N)
      => 해당회사의 RAID 컨트롤러를 사용하지 않는다면 선택하지 않는다.
     Loopback device support (M)
      => 파일 속에 파일시스템을 만들어 마운트하여 사용하도록 해준다. 블록 디바이스처럼 사용할
        수 있도록 해주는 기능이다. 특정한 파일시스템 테스트 또는 CD-ROM 이미지 테스트 등에
        유용하게 사용된다. 이 옵션을 모듈로 선택한다.
     Network block device support (N)
      => 네트워크로 연결된 서버의 파일 시스템을 마운트하여 블록 디바이스처럼 사용하고자할 때
        사용하는 옵션으로 이 옵션을 사용하지 않아도 NFS서비스를 이용할 수 있으므로 이 옵션은
        선택하지 않도록 한다.
     RAM disk support (N)
      => RAM을 하드디스크처럼 사용하고자 할 때 사용하는 옵션이다. 선택하지 않아도 된다.
     [*] Per partition statistics in /proc/partitions (NEW) (Y)
      => 파티션 상태를 /proc/partitions 라는 파일에 기록한다. 선택하도록 한다.
   9) Multi-device support (RAID and LVM) (Y)
     ㄱ. 설명: RAID장치를 사용할 수 있도록 커널에서 지원하는 소프트웨어 RAID를 사용하거나 LVM
              기능을 사용하기 위해서는 이 옵션을 선택한다.
     ㄴ. 메뉴
        Multiple devices driver support (RAID and LVM)
        RAID support (Y)
         => 이 드라이버는 여러 개의 하드 디스크 파티션을 하나의 논리적인 블록 디바이스로 통합
           시켜주는 기능을 한다. 단순히 하나의 파티션을 다른 하나의 파티션에 추가하거나 여러
           하드디스크들을 RAID/1/4/5디바이스로 연결시켜 주어 하드디스크에 이상이 생겼을 경우
           대처하고자 할 때 사용한다.
         Linear (append) mode (Y)
         RAID-0 (striping) mode (Y)
         RAID-1 (mirroring) mode (Y)
         RAID-4/RAID-5 mode (Y)
         Multipath I/O support (Y)
        Logical volume manager (LVM) support (Y)
         => 여러 개의 하드디스크, 여러 개의 파티션, 다중장치 혹은 루프 디바이스까지 하나의
           볼륨 그룹으로 묶어주는 역할을 하는 것으로 일종의 가상디스크 개념이다. 볼륨그룹내
           에서 가상 파티션이라 할 수 있는 논리 볼륨을 생성할 수 있으며, 용량에 따라서 볼륨
           그룹, 논리 볼륨의 크기를 조절할 수 있다. 논리 볼륨은 /dev/VolumeGroup/Name/Logical
           Name명을 가진 블록디바이스로 접근된다.
   10) Networking options
     ㄱ. 설명: 네트워크관련된 부분을 상세히 설정한다.
     ㄴ. 메뉴
        Packet socket (Y)
         => tcpdump와 같이 커널에서 실행중인 중간 네트워크 프로토콜없이 네트워크 디바이스와
           직접 통신할 수 있게 해준다. 이 옵션은 선택하도록 한다.(Y)
        Packet socket: mmapped IO
         => 패킷 프로토콜 드라이버가 IO매카니즘을 이용하게 되어 보다 빠른 통신이 가능하게 해준
           다. 선택하지 않아도 된다.(N)
        Netlink device emulation (NEW)
         => 커널의 어떤부분 또는 모듈과 사용자 프로세스들 사이에 쌍방향통신이 가능하도록 해주는
           옵션이다. 꼭 선택하도록 한다.(Y)
        Network packet filtering (replaces ipchains)
         => 리눅스 박스를 통과하는 패킷들을 필터링하는 설정에 관련된 옵션이다. ipchains는 커널
           2.2에서 사용하던 필터링기법이고, 2.4커널에서는 iptables를 사용한다. 방화벽을 설정
           하거나 마스커레이드를 사용한다면 선택한다.(Y)
         *Network packet filtering debugging (NEW)
            => 필터링관련 오류분석하는데 있어서 유용한 메시지를 줄 수 있으므로 디버깅 정보를
              필요로 하는 경우에 선택한다.(N)
        Socket Filtering
         => 사용자 공간 필터를 소켓에 연결할 수 있도록 해주고, 패킷 통과를 허용하거나 거부할
           수 있도록 해준다. 기본적으로는 선택하지 않는다.(N)
        Unix domain sockets
         => 소켓들은 네트워크 접속이 이루어지게 하고 접근될 수 있도록 하는 표준 유닉스 메카니
           즘으로 X윈도우나 syslog와 같은 프로그램들은 이 소켓을 이용하므로 선택한다.(Y)
        TCP/IP networking
         => 꼭 선택해야 하는 옵션이다. X윈도우 구동이나 로컬호스트의 핑과도 관련이 있다.(Y)
          * IP: multicasting
           => 네트워크상의 여러 컴퓨터에 동시에 같은 자료를 전송할 수 있도록 하는데 필요한
             옵션이다. 주로 인터넷방송국과 같은 스트리밍서비스하는 MBONE에 접속하기 위해 필요
             한 옵션이다. 기본적으로 선택하지 않는다.(N)
          * IP: advanced router
           => 시스템이 네트워크 패킷들은 포워드해주거나 재분배하는 기능을 갖는 라우터로 사용
             시에 필요한 옵션이다. IP 포워딩이나 마스커레이드를 사용할 경우에는 선택해야 한다.
             (Y)
          * IP: kernel level autoconfiguration
           => 커널이 부팅될 때 아이피와 라우팅테이블을 자동으로 설정할 수 있도록 해준다. 디스
             크가 없는 리눅스 시스템이 네트워크로 부팅될 수 있도록 하기 위해서는 이 옵션을
             선택해야 한다. 그러나 네트워크 이더넷 부팅을 하지 않는다면 사용하지 않도록 한다.
             만일 이 옵션을 선택하는 경우에 커널 부팅시 네트워크 부팅 설정을 하기 위해 오랜
             시간 동안 멈추는 현상이 있다.(N)
          * IP: tunneling
           => 하나의 프로토콜안에 다른 프로토콜 자료를 캡슐화하여 서로 다른 프로토콜 사이에서
             전송하는 기능으로 이 옵션을 Mobile쪽에서 사용되므로 선택하지 않는다.(N)
          * IP: GRE tunnels over IP
           => GRE(Generic Routing Encapsulation)는 시스코 라우터 사용시 유용하며, 멀티캐스트
             및 IPV6를 지원하지만 일반적으로 선택하지 않는다.(N)
          * IP: multicast routing
           => 멀티캐스팅 서비스를 할 경우에만 선택한다. 일반적으로 선택하지 않는다.(N)
          * IP: TCP Explicit Congestion Notification support (N)
           => ECN(Explicit Congestion Notification)는 라우터로 하여금 네트워크 폭주시 클라이
             언트에게 통보하게 하여 버려지는 패킷들이 감소되어 네트워크 성능을 향상시켜 주는
             데 이 옵션은 커널에 ECN기능을 추가해 주고, 실행도중 ECN기능이 꺼지도록 하는
             sysctl(/proc/sys/net/ipv4/tcp_ecn)도 추가해 준다. 일반적으로 선택하지 않는다.(N)
          * IP: TCP syncookie support (disabled per default) (Y)
           => TCP/IP의 결점을 이용하여 서버에 접속할 수 없도록 하는 SYN ATTACK을 막기 위해서는
             이 옵션을 반드시 선택해야 한다. 이 옵션을 사용하기 위해서는 File systems  --->
            /proc file system support와 General setup  --->[*] Sysctl support를 꼭 선택해야
            한다. 그리고나서 시스템이 부팅된 후 echo 1>/proc/sys/net/ipv4/tcp_syscookies 를
            실행시켜야 한다.
        IP: Netfilter Configuration : 필터링관련 프로그램사용허부를 설정한다. 2.4커널에서
                                     사용하는 iptables, 2.2커널에서 사용하는 ipchains, 2.0
                                     커널에서 사용하는 ipfwadm에 관련된 설정을 한다.
         * Connection tracking (required for masq/NAT) (NEW) (M)
          => 접속추적기능(Connection tracking)은 어떠한 패킷들이 리눅스 머신을 통과했는지
            기록하여 어떻게 접속되는지를 알 수 있도록 해준다. 이 옵션은 마스커레이드나 다른
            네트워크 주소변환(Network Address Translation, NAT)에 이용되며, 또한 패킷 필터링
            을 향상시키는데 사용될 수 있다.
           - FTP protocol support (NEW) (M)
            => FTP서비스에 대한 접속 추적기능을 사용하고자 할 때 사용한다.
           - Amanda protocol support (NEW) (N)
            => Amanda라는 백업패키지를 사용하는 경우에만 선택한다.
           -  TFTP protocol support (NEW) (N)
            => TFTP 를 사용하는 경우에만 선택한다.
           - IRC protocol support (NEW) (N)
            => 인터넷 채팅인 IRC에 대해서 접속 추적기능을 사용하고자 할 때 사용한다.
         * IP tables support (required for filtering/masq/NAT) (NEW) (Y)
          => iptables를 이용하여 패킷필터링, 마스커레이딩, 포트포워딩등 NAT기능을 사용할 때
            사용하는 옵션이다. 선택하도록 한다.(Y)
          - limit match support (NEW) (M)
           => 방화벽 규칙의 일치율을 조절할 수 있도록 해주는 옵션으로 "LOG target support"와
             함께 유용하게 쓰이며 일부 무차별 공격(DoS attack)을 막는데 유용하다.
          - MAC address match support (NEW) (M)
           => 이더넷카드의 맥주소를 패킷의 이더넷 주소에 따라서 패킷들과 일치시켜주는 기능을
            한다.
          - Packet type match support (NEW) (M)
           => 패킷이 BROADCAST, MULTICAST 등 주어진 조건과 매칭되는 것을 찾아주는 옵션이다.
          - netfilter MARK match support (NEW) (M)
           => Mark타겟에 의해서 설정되는데, 패킷 내에 있는 'ntmakr'값에 따라서 패킷들이 일치
             하는 값에 따라서 일치하도록 해주는 옵션이다.
          - Multiple port match support (NEW) (M)
           => 일련의 출발지 포트 또는 목적지 포트에 따라서 TCP 내지 UDP패킷들을 일치하도록 해
             주는 기능으로 일반적으로 하나의 규칙으로 단일 포트 범위만 일치해 줄 수 있다.(M)
          - TOS match support (NEW) (N)
           => IP패킷의 서비스 필드 유형에 따라서 패킷들을 일치시켜 준다.
          - ECN match support (NEW) (N)
           => TCP 헤더 필드의 ECN과 패킷들을 일치시켜준다.
          - AH/ESP match support (NEW) (N)
           => AH/ESP 패킷들을 일치시켜 준다.
          - LENGTH match support (NEW) (N)
          - TTL match support (NEW) (N)
          - tcpmss match support (NEW) (N)
           => TCP SYN 패킷의 MSS값을 검사할 수 있도록 해주며, 그러한 접속에 있어서 최대 패킷의
             크기를 조절해 주는 'tcpms  s'일치성을 부여한다.
          - Helper match support (NEW) (N)
          - Connection state match support (NEW) (M)
           => 추적된 접속과 관계에 따라 패킷들이 일치하도록 해주는 옵션으로 패킷 분류에 있어서
             매우 강력한 도구이다.
          - Connection tracking match support (NEW) (M)
           => 일반적인 conntrack 일치하도록 해주는 옵션이다.
          - Packet filtering (NEW) (M)
           => 패킷 필터링을 사용하고자한다면 선택한다.
             * REJECT target support (NEW) (M)
              => 거부 필터링 규칙이 들어오는 패킷에 응답하여 ICMP에러 메시지가 말없이 없어지지
                않고 나타나도록 지시하고자 할 때 사용한다.
          - Full NAT (NEW) (M)
           => 마스커레이딩, 포트포워딩, 또는 다른 형태의 완전한 네트워크 주소 포트변환기능을
             허용한다. 이는 iptables에서 'nat'테이블로 조절된다.
             * MASQUERADE target support (NEW) (M)
              => 마스커레이딩 환경에서 사용한다.
             * REDIRECT target support (NEW) (M)
              => 외부에서 들어오는 패킷들을 내부의 인터페이스 주소로 리다이렉트시키고자 할 때
               사용한다. 특히 포트 포워딩을 하고자 할 때 사용한다.
             * NAT of local connections (READ HELP) (NEW)
              => 로컬에서 접속하는 NAT를 가능하게 해주는 옵션이다.
          - Packet mangling (NEW) (M)
           => iptables에 패킷이 어떻게 라우트되는가에 영향을 주는 다양한 패킷 변환에 이용되는
             'mangle'테이블에 부여한다.
             * TOS target support (NEW) (M)
              => 'TOS'타겟을 부여하여 라우팅이 이뤄지기 전에 아이피 패킷에 대한 서비스 필드
                유형을 바꾸는 'mangle'테이블 내에서 생성할 수 있도록 해준다.
             * MARK target support (NEW) (M)
              => 'MARK'타겟을 부여하여 'mangle'테이블 내에서 라우팅이 이뤄지기 전에 패킷과
                연관된 넷필터 마크 필드를 변경하는 규칙을 만들 수 있다.
          - LOG target support (NEW) (M)
           => iptables내에서 패킷 헤더를 syslog에 기록하도록 하는 규칙을 만들 수 있도록 'LOG'
             타겟을 제공한다.
          - TCPMSS target support (NEW) (M)
           => TCP SYN패킷의 MSS값을 바꿀 수 있도록 해주고, 그러한 접속시 최대 크기를 조절할 수
             있도록 해주는 'TCPMSS'타겟을 사용하고자 할 때 쓰는 옵션이다.
          - ARP tables support (NEW) (M)
           => ARP 테이블 지원여부이다.
         * ipchains (2.2-style) support (NEW) (Y)
          => 커널 2.2대에서 사용하는 방화벽툴인 ipchains를 사용할 때 선택한다.
         * ipfwadm (2.0-style) support (NEW) (N)
          => 커널 2.0대에서 사용하는 방화벽툴인 ipfwadm를 사용할 때 선택한다.
        802.1Q VLAN Support (N)
         => 802.1Q VLAN 사용할 대 설정한다.
        The IPX protocol (N)
         => 노벨 네트워크 프로토콜을 사용할 때 설정한다.
        Applet!alk protocol support (N)
         => 애플 컴퓨터를 위한 네트워크 프로토콜을 사용할 때 설정한다.
        DECnet Support (N)
         => DEC사에서 개발한 프로토콜을 사용할 때 설정한다.
        802.1d Ethernet Bridging (N)
         => 리눅스 박스에서 하나의 이더넷을 브릿지로 하여 이더넷 네트워크를 연결하고자 할 때
           사용하는 옵션으로 이 기능이 필요할 때만 선택하도록 한다.
        QoS and/or fair queueing (N)
         => 패킷 스케줄에 따라 패킷을 제어할 때 사용되는 옵션으로 일반적으로 선택하지 않는다.
        Network testing   ---> (N)
         => Network 테스트관련 설정이다. 선택하지 않도록 한다.
   11) Telephony Support : 음성전화카드를 사용할 때만 선택한다. 보이스 모뎀과는 상관없으므로
                          선택하지 않는다. (N)
   12) ATA/IDE/MFM/RLL support
     Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (Y)
      => EIDE 하드디스크 및 CD-ROM등을 사용하기 위해서는 반드시 이 옵션을 선택해야 한다.
      * Use old disk-only driver on primary interface (N)
       => 선택이 필요없다.
      * Include IDE/ATA-2 DISK support (Y)
       => IDE 하드디스크 사용시 꼭 선택한다.
       - Use multi-mode by default : 멀티모드관련 부분으로 보통 아래와 같이 메시지가 나온다면
                                    꼭 선택해야 한다. (Y)
         hda: set_multimode: status=0x51 { DriveReady SeekComplete Error }
         hda: set_multimode: error=0x04 { DriveStatusError }
      * Auto-Geometry Resizing support (N)
       => HDD의 Geometry 조정 지원 여부를 지정한다.
      * PCMCIA IDE support (N)
       => PCMCIA 방식의 IDE를 사용할 경우 선택한다.
      * Include IDE/ATAPI CDROM support (Y)
       => EIDE CD-ROM을 사용할 경우 선택한다.
      * Include IDE/ATAPI TAPE support (N)
       => 백업테이프를 사용할 경우 선택한다.
      * Include IDE/ATAPI FLOPPY support (N)
       => IDE로 연결하여 사용하는 플로피 장치를 사용할 경우에 선택한다.
      * SCSI emulation support (M)
       => IDE CD-ROM과 같이 IDE주변기기를 SCSI장치처럼 사용할 수 있도록 에뮬레이트해주는 옵션
         으로 CD-RW을 사용한다면 설정해야 한다.
      * IDE Taskfile Access (N)
       => 선택하지 않는다.
      * CMD640 chipset bugfix/support (N)
       => CMD 640칩을 탑재한 마더보드를 사용할 경우 심각한 데이터를 상실시킬 수 있는 결함이
         있을 때 이러한 문제를 해결할 때 사용한다.
      * ISA-PNP EIDE support (N)
       => ISA타입 EIDE장치를 사용할 때 선택한다. 요즘은 잘 사용하지 않는다.
      PCI IDE chipset support
      * Generic PCI IDE chipset support (Y)
       => 마더보드의 IDE칩에 의해서 DMA기능을 사용하기 위해서는 이 기능을 선택한다. DMA33이상
         의 하드디스크를 사용하면 꼭 선택한다.
        - Sharing PCI IDE interrupts support
         => IDE칩이 다른 주변기기와 같은 IRQ를 사용할 수 있도록 허가할 때 사용하는 옵션이다.
           선택하도록 한다.(Y)
        - Generic PCI bus-master DMA support
         => DMA를 지원하는 하드디스크를 사용할 경우 선택하면 CPU의 부하를 줄일 수 있다.(Y)
        - Boot off-board chipsets first support
         => 마더보드에 내장되어 있는 IDE커넥터 외에 PCI카드 커넥터를 사용하는 경우 PCI카드의
           커넥터 인터페이스 ide0, ide1로 부여하는 옵션이다. ATA100 Controller Card등을 쓴다면
           이 옵션을 선택하고 그렇지 않은 경우에는 선택하지 않는다.(N)
        - Enable DMA only for disks
         => DMA 기능을 사용여부를 지정하는 옵션이다. (Y)
        - Pacific Digital ADMA-100 basic support (NEW) (N)
        - AEC62XX chipset support (N)
        - ALI M15x3 chipset suppor (N)
        - AMD Viper support (N)
        - CMD64X chipset support (N)
        - CY82C693 chipset support (N)
        - Cyrix CS5530 MediaGX chipset support (N)
        - HPT34X chipset support (N)
        - HPT366 chipset support (N)
        - Intel PIIXn chipsets support (N)
        - PIIXn Tuning support (N)
         => 인텔 칩셋 보드를 사용하는 경우에 선택한다. 보통 440BX, 440LX칩을 사용한 보드를
           지원하는 옵션이다.
        - NS87415 chipset support (N)
        - PROMISE PDC202{46|62|65|67} support (NEW) (N)
        - PROMISE PDC202{68|69|70|71|75|76|77} support (NEW) (N)
        - RZ1000 chipset bugfix/support (N)
        - SCx200 chipset support (NEW) (N)
        - ServerWorks OSB4/CSB5/CSB6 chipsets support (N)
        - SiS5513 chipset support (N)
        - SLC90E66 chipset support (N)
        - Tekram TRM290 chipset support (N)
        - VIA82CXXX chipset support (N)
      * Other IDE chipset support (N)
       => 그 외 기타 IDE관련 칩셋 지원이다. 해당 칩셋을 사용하는 보드라면 선택하도록 한다.
       - Generic 4 drives/port support (NEW) (N)
       - ALI M14xx support (NEW) (N)
       - DTC-2278 support (NEW) (N)
       - Holtek HT6560B support (NEW) (N)
       - QDI QD65xx support (NEW) (N)
       - UMC-8672 support (NEW) (N)
     Old hard disk (MFM/RLL/IDE) driver (NEW) (N)
      => 예전에 사용하던 MFM방식의 하드디스크를 장착했을 경우 사용한다. 현재는 거의 사용하지
        않으므로 선택할 필요가 없다.
     IGNORE word93 Validation BITS (N)
   13) SCSI support : 스카시장치를 사용하고자 하면 선택해야 한다. 또한 E-IDE CD-RW을 사용하기
                     위해서는  SCSI generic support를 사용해야 한다. 이 때 SCSI CD-ROM support
                     는 선택할 필요가 없다. (N)
   14) Fusion MPT device support : LSI 로직의 관련 장치를 사용할 때 선택한다. (N)
   15) I2O device support : Intelligent Input/Output(I20)은 전용 I/O프로세서를 가지고 있어 CPU
                           가 I/O처리를 잃지 않도록 해서 빠른 입출력 속도를 내고자 할 때 사용
                           한다. 이러한 아키텍쳐를 가진 인터페이스 어탭터 카드를 가지고 있는
                           경우에만 선택하도록 한다. (N)
   16) Network device support
      ㄱ. 설명: 네트워크장치를 선택하는 옵션이다. 맞는 장치를 선택하면 된다.
      ㄴ. 메뉴
         Ethernet (10 or 100Mbit) : 보통 사용하는 이더넷카드를 설정하는 옵션이다.
          * 정리: 일반적으로 사용하는 이더넷카드정리
           3COM cards : 유명한 3COM사의 네트워크카드이다.
           Other ISA cards : 예전에 사용하던 10MBPS용 이더넷카드를 선택할 수 있다. 예전의 ISA
                            랜카드를 사용하려면 NE2000/NE1000 support (NEW) 를 선택한다.
          * 참고: 하나로통신이나 한국통신의 ADSL 외장형모뎀을 사용하기 위해서는 PPP모듈에 대
                 해서 설정을 해주어야 한다. PPP(Point-to-Point Protocol) support항목에서 2가지
                 를 선택한다.
             PPP support for async serial ports (NEW)
             PPP support for sync tty ports (NEW)
   17) Amateur Radio support: 아마추어 햄통신을 할 경우에 선택한다. (N)
   18) IrDA (infrared) support: IrDA(무선 적외선 포트)장치가 있다면 선택한다. 이 기능을 사용
                               하려면 irmanager와 irattach와 같은 유틸리티가 필요하다. (N)
   19) ISDN subsystem: ISDN을 사용할 경우에만 선택한다. 현재는 거의 서비스를 하지 않고 있다.
   20) Old CD-ROM drivers (not SCSI, not IDE) : 2배속과 같은 구형의 CD-ROM을 사용할 때 선택
                                               한다. (N)
   21) Input core support: USB방식의 키보드와 마우스를 사용할 때 선택해야 한다. (Y or M)
   22) Character devices
      Virtual terminal: 리눅스에서 지원하는 가상 콘솔을 사용하기 위해서는 이 옵션을 선택해야
                       한다. CTRL+ALT+F1~F6키를 사용하는 콘솔이다.
       * Support for console on virtual terminal (Y)
        => 시스템콘솔은 모든 커널메시지와 경고메시지를 전달받고, 싱글 유저 모드로 로그인을
          할 수 있도록 해주는 디바이스로 이 옵션을 선택해 줌으로써 가상 콘솔을 "console=tty4"
          와 같은 명령을 사용하여 시스템 콘솔을 사용할 수 있다.
      Standard/generic (8250/16550 and compatible UARTs) serial support (N)
       => 시리얼포트에 장착된 디바이스(모뎀, 마우스)를 사용하고자 할 때 사용한다.
       * Support for console on serial port (N)
        => 시리얼 콘솔로 부팅할 경우처럼 시리얼포트를 시스템 콘솔로 사용할 수 있다.
      Non-standard serial port support (N)
       => 표준 시리얼포트가 아닌 멀티 포트를 지원할 때 사용한다.
      Unix98 PTY support (Y)
       => 가상 접속 터미널 디바이스의 /dev/pts파일 시스템 형태를 사용하고자할 때 사용하는 옵
         션으로 선택한다.
      (256) Maximum number of Unix98 PTYs in use (0-2048) (256)
       => 동시에 가상 터미널로 접속 가능한 디바이스 개수를 설정한다. 동시 접속자 수를 늘리려면
        값을 증가시키면 된다.
      I2C support (N)
       => I-Square-C라고 하면 많은 마이크로 컨트롤러에서 사용되는 느린 직렬버스 프로토콜로 필립
         스에서 개발된 것으로 하드웨어 센서 기능과 비디오지원시 이 기능을 필요로 한다.
      Mice (Y)
       => 시리얼 마우스가 아닌 PS/2마우스를 설정할 때 사용된다.
      Joysticks (N)
       => 조이스틱을 설정할 때 사용한다.
      QIC-02 tape support (N)
       => 비스카시 테입 드라이브를 가지고 있다면 선택한다.
      Watchdog Cards (N)
       => 시스템이 잠금 상태로 서비스를 제공할 수 없는 상태일 경우 시스템을 다시 시작할 수
        있도록 해주는 기능이다. 일반적으로 선택하지 않는다.
      Intel i8x0 Random Number Generator support (N)
       => 인텔 i8xx기반 마더보드에 있는 난수 발생기를 커널 차원에서 지원해주는 드라이버이다.
      /dev/nvram support (N)
       => 일반 PC바이오스라고 하고, 아타리에서는 NVRAM이라고 부르는데, 하드 디스크에 두기는
         위험한 데이터 또는 정전되었을 때 사라지면 안되는 데이터들을 저장하는데 사용된다.
      Enhanced Real Time Clock Support (Y)
       => PC에 내장된 실시간 클럭을 액세스 할 수 있도록 해주는 기능이다. 이러한 클럭정보는
         /proc/rtc파일을 통하여 볼 수 있으며, 멀티 프로세스를 사용하는 시스템이라면 이 옵션
         을 선택하도록 한다.
      Double Talk PC internal speech card support (N)
       => RC system사에 만든 음성합성장치인 Double Talk PC를 위한 기능이다.
      Ftape, the floppy tape device driver (N)
       => 플로피디스크 컨트롤러에 연결된 테이프 드라이브가 있다면 사용한다.
      /dev/agpgart (AGP Support) (M)
       => agpgart모듈은 3D 가속 비디오카드의 AGP기능을 사용할 수 있도록 해준다. 커널에 이
         모듈이 로딩되어 비디오 카드나 특수한 값을 전송하여 GART레지스터에 프로그래밍할 수
         있도록 해준다. AGP비디오 카드를 가지고 있어 이 기능을 사용하고자 한다면 모듈로 선
         택하고 자신의 마더보드에 있는 AGP지원 칩을 선택한다.
      Direct Rendering Manager (XFree86 DRI support)
       => XFree86 4.0이상부터 지원되는 DRI(Direct Rendering Infrastructure)를 커널에서 사용할
         수 있도록 해주는 기능이다. 이 모듈은 동기화 및 보안 그리고 DMA전송을 지원한다. 커널
         2.2대부터 지원해 즈는 비디오 카드 칩으로는 3DFX 부두계열, GMX200, ATI RAGE128, I810,
         MATROX의 G200/G400등이 있다.
   23) Multimedia devices: 멀티미디어관련 장치를 설정하는 부분이다. (N)
   24) File systems
     ㄱ. 설명: 파일시스템 여부를 설정하는 단계로 필요없는 파일시스템에 대해서는 설정하지
               않도록 한다.
     ㄴ. 메뉴
        Quota support (Y)
         => 사용자들에게 계정 용량을 제한하기 위하여 디스크 쿼타를 설정한다면 선택해야 한다.
        Kernel automounter support (N)
        Kernel automounter version 4 support (also supports v3) (Y)
         => 원격 호스트의 파일 시스템들은 유저들의 요구에 따라 자동으로 마운트해주는 기능으로
           NFS서버를 마운트하고자 한다면 선택해야 한다.
        Reiserfs support (Y)
         => 저널링 파일시스템(Journalling Filesystem)인 reiserfs파일시스템은 정전 또는 시스템
           장애로 인하여 생긴 파일시스템 문제를 리눅스 표준 파일 시스템인 ext2와 같이 시스템을
           체크하지 않고, 인덱스에 대한 로그를 기록하여 손상된 파일 시스템을 복구하는 파일시스
           템으로 이 파일시스템을 사용한다면 선택한다.
        DOS FAT fs support (Y)
         => 윈도우 95/98을 사용하여 이러한 운영체제의 파일 시스템을 리눅스에서 사용하고자 할
           때 필요한 옵션이다.
        Virtual memory file system support (former shm fs) (N)
         => 가상메모리에 있는 모든 파일들을 보존해주는 파일시스템을 지원하는 옵션이다. 이 기능
           을 사용하려면 /etc/fstab에 다음과 같이 설정해야 한다.
           tmpfs    /dev/shm    tmpfs    defaults   0 0
        Simple RAM-based file system support (N)
         => RAMfs는 램내에 있는 모든 파일들을 보존해주는 파일 시스템으로 읽고 쓰기가 가능한
           파일시스템이다. 이 기능을 사용한다면 /etc/fstab에 다음을 추가해야 한다.
           ramfs    /dev/ramfs    ramfs    defaults   0 0
        ISO 9660 CDROM file system support (Y)
         => CD-ROM을 마운트하기 위해서는 반드시 선택해야 한다.
          * Microsoft Joliet CDROM extensions
           => 마이크로소프트사의 CD-ROM형식이다.
        NTFS file system support (read only) (Y)
         => 리눅스와 Microsoft NT를 같이 사용한다면 선택해야 한다.
        /proc file system support (Y)
         => 커널과 프로세스 정보들을 가지는 /proc파일시스템 지원을 위한 옵션이다 .반드시 선택
          해야 한다.
        /dev/pts file system for Unix98 PTYs (Y)
         => 가상 터미널 포트로 /dev/pts를 사용할 수 있도록 해주는 옵션으로 반드시 선택해야
           한다.
        Second extended fs support (Y)
         => 리눅스 파일시스템인 ext2를 지원하는 옵션이므로 반드시 선택해야 한다.
        Network File Systems (Y)
         => 삼바와 NFS같은 네트워크 파일시스템을 지원하는 옵션이다.
         * NFS file system support (Y)
          => NFS 클라이언트로 사용하게 되면 필요하다.
         * NFS server support (Y)
          => NFS 서버로 사용시에 필요하다.
         * SMB file system support (to mount Windows shares etc.) (Y)
          => 삼바 윈도우 서버를 마운트할 때 필요하다. 삼바서버를 운영시에는 필요가 없다.
        Partition Types
          => 확장된 형태의 파티션 타입을 선택할 때 쓴다. 지정하지 않는다.
        Native Language Support
          => 추가로 사용할 언어를 지정할 때 쓴다.
            "Korean charset (CP949, EUC-KR) (NEW)" 찾아 선택하도록 한다.
   25) Console drivers
      ㄱ. 설명: 콘솔 드라이버에서 유용한 옵션으로 프레임버퍼(Frame Buffer)의 지원으로 커널
               부팅시 펭귄 그림을 화면 좌측 상단에 띄울 수 있고, 커널 메시지를 해상도에 따
               라 조절할 수 있도록 해준다.
      ㄴ. 메뉴
         VGA text console (Y)
         Video mode selection support (Y)
          => LILO에 "vga=옵션"을 설정하여 부팅시 VGA해상도를 선택할 수 있다.
            Color    640x480   800x600   1024x768   1280x1024   1600x1200
             8비트    0x301     0x303     0x305       0x317      0x31D
            16비트    0x311     0x314     0x317       0x31A      0x31E
            24비트    0x312     0x315     0x318       0x31B      0x31F
   26) Sound : 사운드 카드를 설정할 때 한다. (N)
   27) USB support
     ㄱ. 설명: UBS장치를 설정해 주는 옵션이다. 이 항목에서 USB마우스, USB키보드,스캐너,프린터
              화상카메라등을 설정할 수 있다.
     ㄴ. 메뉴
        Support for USB (Y)
         => 장치를 사용하려면 반드시 선택해야 한다.
        UHCI Alternate Driver (JE) support (Y)
         => 현재마더보드에서 사용하는 방식으로 꼭 선택해야 한다.
        Preliminary USB device filesystem (Y)
         => USB장치관련 파일시스템을 지원하도록 해준다 .선택하도록 한다.
        USB Human Interface Device (full HID) support (Y)
         => USB장치들을 커널에 탑재되도록 하거나 모듈화 해준다. 선택하도록 한다.
   28) Bluetooth support (N)
      => 블루투스를 사용하면 선택하도록 한다.
   29) Kernel hacking
      Kernel debugging (Y)
       => 커널 디버깅중에 시스템이 다운되었을 경우 Magic키를 사용하여 시스템을 제어할 수
         있도록 해준다. 선택하도록 한다. Magic키를 사용하는 방법은 sysRq+Alt+[명령키]를 조합
         하여 누른다. 대표적인 명령키로는 K는 현재의 가상 콘솔의 모든 프로그램을 죽이고자
         할 때 사용하며, B키는 하드디스크를 언마운트하지 않은 상태에서 바로 재부팅하고자 할 때
         사용한다. 그 외의 자세한 옵션은 /usr/src/linux/Documentation/sysrq.txt에 있다.
   30) Library routines (N)
      => zlib관련 루틴사용여부이다. 선택하지 않는다.
(4) 저장하고 빠져나오기: 커널옵션을 설정한 후에 EXIT버튼을 눌러 저장하고 빠져나온다.

7. 의존성검사 및 클리닝
(1) 커널 의존성 검사
   1) 설명: 커널의 이미지를 생성하기에 앞서 필요한 라이브러리나 헤더 파일 등이 시스템에 제대
           로 있는지의 의존성을 확인한다.
   2) 사용법
     make dep
(2) 크리닝
   1) 설명: 기존의 소스로 컴파일을 한번이라도 한 경우에 생겼을 오브젝트 파일이나 임시 파일,
           커널 이미지등의 잔여물을 없애기 위한 것으로 소스 파일이나 rpm파일을 새로 가져와서
           처음 할 경우에는 안 해도 별 상관없지만, 습관처럼 사용해도 된다.
   2) 사용법
     make clean

8. 커널이미지 만들기(컴파일단계)
(1) 설명: 컴파일 과정은 make bzImage명령을 실행하여 수행한다. 이 명령을 수행하게 되면 커널의
          이미지는 /usr/src/linux/arch/i386/boot디렉토리에 bzImage로 생성된다. 그러나 이렇게
          생성된 커널이미지는 /boot디렉토리로 자동 이동되지 않으므로 make install명령을 실행
          하여 /boot/vmlinuz-커널 버전파일로 복사하고, 바뀐 커널 이미지로 정보를 변경해야
          한다.
(2) 커널이미지의 종류
   1) make zImage: 커널의 이미지를 GNU zip형식으로 압축하여 만든다. 커널 사이즈가 크기않은
                  시절에 많이 사용하였다. 요즘에도 사용할 수 있지만 현재의 커널들이 상당히
                  많은 기능과 드라이버를 제공하기 때문에 이 컴파일 명령으로 만들어진 커널이
                  지는 크기가 너무 커져 커널에 올리기가 어렵다.
   2) make bzImage: 커널의 이미지를 압축률이 높은 .bz형식으로 압축하여 만든다. make zImage와
                   같지만, 큰 커널이미지를 만들 때 유용하다. 일반적으로 사용한다.
   3) make zlilo: 커널의 이미지를 만든 후에 LILO에 등록한다.
   4) make zdisk: 커널의 이미지를 만든 후에 플로피디스크에 복사
   5) make bzlilo: make bzImage와 lilo명령을 한번에 수행하는 결과를 보이게 된다. 따라서 make
                  bzImage에 의해서 생성된 커널이미지를 /boot디렉토리로 복사하고 바뀐 커널이미
                  지로 리로정보를 갱신하도록 lilo명령을 실행하도록 하는 일련의 컴파일명령이다.
(3) make install : 이 명령을 수행하기 위해서는 먼저 /sbin/installkernel파일이 존재해야 한다.
                   이 명령을 수행하면 커널이미지를 생성하고 생성한 이미지를 /boot디렉토리에
                   커널이미지를 복사하고, lilo명령을 수행하여 lilo정보를 변경하면 된다.
(4) 사용예
   make bzImage
   make install

9. 커널모듈 만들기(make modules)
(1) 설명: 커널 모듈은 make modules명령에 의해서 만들어지며 make modules_install명령에 의해
          /lib/modules/커널버전 디렉토리로 자동 복사하게 된다. 그리고 depmod -a 명령을 실행
          하여 컴파일된 모듈에게 의존성을 부여하게 된다. 이렇게 생긴 모듈은 커널에 적재되는
          것이 아니므로 커널에 적재하려면 modprobe 나 insmod명령으로 해당 모듈 드라이버를
          띄워야 한다.
(2) 사용예
   make modules
   make modules_install
   depmod -a

10. Boot Loader의 환경설정파일 편집
(1) lilo인 경우
   1) 설명: 커널 컴파일후에는 새로운 커널로 부트 로더 정보를 갱신해 주어야 하는데, 컴파일된
           커널 이미지의 경로를 /etc/lilo.conf에서 커널 이미지부분을 추가하거나 수정해야 한다.
   2) 사용예
     boot=/dev/hda
     map=/boot/map
     install=/boot/boot.b
     prompt
     timeout=50
     message=/boot/message
     lba32
     default=linux

     image=/boot/vmlinuz-2.4.2-3
       label=linux
       read-only
       root=/dev/hda7

     image=/boot/vmlinuz-2.4.18
       label=linux_new
       read-only
       root=/dev/hda7
        => 이렇게 새로운 커널 이미지를 리로설정파일에 추가하면 컴파일이 잘못되어 커널이미지에
          이상이 있어 부팅되지 못할 경우 기존의 커널이미지로 부팅하여 복구할 수 있도록 하기
          위해서이다.
(2) grub인 경우
   1) 설명: grub.conf에 커널이미지부분을 추가한다.
   2) 사용예
     default=0
     timeout=10
     splashimage=(hd0,0)/grub/splash.xpm.gz
     title Red Hat Linux (2.4.20-8)
             root (hd0,0)
             kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
             initrd /initrd-2.4.20-8.img

     title Red Hat Linux (2.4.21)
             root (hd0,0)
             kernel /vmlinuz-2.4.21
             initrd /initrd-2.4.21.img           // mkinitrd 명령으로 생성해야 한다.
(3) 참고: mkinitrd 명령을 통한 초기화 램디스크 이미지 생성
   1) 설명: 레드햇 8.0 버전부터는 본격적으로 ext3파일시스템을 사용한다. ext3 파일시스템에서는
           부팅시 필요한 모듈과 이미지를 초기화 램디스크 이미지로 부팅시에 부트로더가 읽어들이
           도록 되어 있다. 따라서 해당 이미지를 만들어 줘야 한다.
   2) 사용법
     mkinitrd /boot/initrd-커널버전.img 커널버전
   3) 사용예
     mkinitrd /boot/initrd-2.4.21.img 2.4.21

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. 모듈(Module)이란?
모듈의 사전적인 의미는 프로그램이나 하드웨어 기능단위, 교환가능한 구성부분, 그리고, 우주선의
일부를 이루지만 독립적으로 행동할 수 있는 작은 소선을 뜻한다. 리눅스에서의 모듈은 우주선의 경
우와 비슷하다. 우주선의 모체는 커널이미지이고, 작은 소선이 커널 모듈이다. 커널 모듈이 필요할
때는 커널 이미지에 합류하고 필요하지 않을 때에는 커널에서 빠져 나와 모듈 형태로 존재하므로 시
스템의 메모리를 절약할 수 있다. 따라서, 보통 모듈이 로드되었다는 것은 커널 밖에 존재하던 해당
드라이버가 커널의 일부로 되었다는 뜻이다. 언로드하면 다시 커널과 별도로 존재한다.

2. 모듈관리
(1) 개요: 리눅스 시스템에서 시스템장치를 제어하는 코드는 컴파일되어 커널에 포함될 수 있다.
          그런데 커널은 대부분의 시스템장치에 대한 기능을 이미 내장하고 있으므로 모노리딕(mono
          lithic)이라 하며 커널이 자체에 모든 시스템 하드웨어를 관리한다는 의미이다. 모노리딕
          커널은 그다지 융통성이 뛰어나지 못해 시스템에 새로운 장치가 추가될 경우 커널을 새롭
          게 만들어야 할 필요가 있다. 또한 모노리딕 커널은 실제 시스템에 장착되지 않은 하드웨
          어 드라이버까지 포함하고 있으므로 지나치게 비대해질 가능성이 있다. 대신 대부분의
          사용자들은 모듈형(modular)커널을 사용하는데 이것은 커널이 필요한 경우에만 장치 드라
          이버를 적재하는 방식이다 모듈을 이용하면 드라이버를 업그레이드하는 편리한 방식을
          통해 시스템이 운영중에도 하드웨어 설정을 변경할 수 있다.
(2) 모듈파일
   1) 설명: 리눅스 커널 모듈은 C컴파일러로 만들어진 오브젝트(.o)이지만 실행파일(이 경우 커널
           실행파일)안에 링크되어 들어가지 않는다. 대부분의 모듈은 커널과 함께 컴파일되어
           배포된다. 모듈은 커널과 매우 밀접한 관계가 있으므로 여러 커널이 설치될 경우 각
           커널에 맞는 독립된 모듈의 집합이 설치된다. 이것은 모듈이 다른 버전 커널에 삽입을
           막아준다.
   2) 모듈의 위치: '모듈은 /lib/modules/커널버전' 디렉토리에 위치한다. 여기서 커널버전은
                  uname -r의 실행 결과 나오는 문자열이 된다. 또한 이 디렉토리의 하위디렉토리
                  로 아래와 같은 디렉토리가 생성되면서 관련 모듈들이 위치한다.
     ㄱ. block: RAID 제어기, IDE 테이프 드라이버와 같은 블록장치를 위한 모듈
     ㄴ. cdrom: 비표준 CD-ROM장치를 위한 장치 드라이버
     ㄷ. fs: MS도스와 같이 파일시스템을 위한 드라이버(msdos.o)
     ㄹ. ipv4: IP 매스커레이딩(masquerading)과 같이 IP처리에 관련된 모듈
     ㅁ. misc: 다른 분류에 속하지 않는 것으로 이 디렉토리의 최상위는 비어 있다.
     ㅂ. net: 네트워크 인터페이스 드라이버 모듈
     ㅅ. scsi: SCSI 컨트롤러 드라이버 모듈
     ㅇ. video: 비디오 어댑터을 위한 특별한 드라이버 모듈
    (참고) 2.4 커널버전인 경우에는 /lib/modules/2.4.2-3/kernel/drivers 에 위치한다.
(3) 모듈의 사용: 모듈이 로드되면 동작중인 커널에 동적으로 링크되어 사용한다. 대부분의 리눅스
                 커널 모듈은 자동으로 처리된다. 그러나 종종 필요한 모듈을 직접 처리해야 하는
                 경우도 있으며 스크립트에서도 모듈을 처리하는 부분을 볼수도 있다. 예를 들면
                 특정 드라이버에 문제가 있을 경우 새 버전의 드라이버 소스 코드를 구해 컴파일
                 한 후 새로운 모듈을 동작중인 커널에 넣을 필요가 있다. 이 경우에는 모듈관련
                 명령어를 사용해야 한다.

3. 모듈관련명령어
(1) lsmod
   1) 설명: 적재된 각각의 모듈명, 크기, 사용횟수 다른 참조 모듈 등의 정보를 출력한다. 이 명령
           의 실행결과는 /proc/modules파일의 내용과 같다.
   2) 사용법
     lsmod
   3) 사용예
     [root@www /root]# lsmod
     Module                  Size  Used by
     autofs                 11296   1  (autoclean)
     8139too                16512   1  (autoclean)
     3c59x                  25376   1  (autoclean)
     ipchains               39360   0  (unused)
     usb-uhci               20752   0  (unused)
     usbcore                49728   1  [usb-uhci]
(2) insmod
   1) 설명: 동작중인 커널에 모듈을 적재한다. 모듈은 자동으로 검색되고 삽입된다. 그러나 의존성
           이 있는 모듈인 경우에는 적재를 하지 못한다.
   2) 사용법
     insmod [option] 모듈
   3) option
     -s : 실행결과를 터미널 대신 syslog에 기록한다.
     -v : 메시지를 자세히 보여준다.
   4) 사용예
     [root@www scsi]# insmod ide-scsi.o
(3) modprobe
   1) 설명: insmod와 마찬가지로 modprobe도 모듈을 적재할 때 사용된다. 그러나 modprobe는 단일
           모듈, 의존성이 있는 여러 모듈, 특정 디렉토리의 모든 모듈들을 적재할 수 있다. -r
           옵션을 사용하면 모듈을 제거할 때에도 사용할 수 있다. 또한 모듈에 '기호=값'형식을
           이용하여 매개변수를 전달할 수 있다. 만일 모듈이 다른 모듈에 의존하고 있을 경우
           필요한 모듈을 먼저 적재한다. 이 명령어는 최상위 모듈디렉토리에 존재하는 modules.dep
           파일을 참고해 모듈간의 의존성을 해결한다.
   2) 사용법
     modprobe [option] 모듈 [기호=값]
   3) option
     -l : 사용가능한 모든 모듈을 보여준다.
     -r : rmmod와 같이 모듈을 제거한다. 여러 모듈을 한꺼번에 지정할 수 있다. 또한 의존성이
         걸려 있는 모듈들도 찾아 자동으로 제거한다.
     -c : 기본값과 /etc/modules.conf(배포판에 따라 /etc/conf.modules)에 정의된 지시자를 포함
         해 완전한 모듈설정을 보여준다.
   4) 사용예
     ㄱ. [root@www net]# modprobe -l
         /lib/modules/2.4.18/kernel/drivers/block/loop.o
         /lib/modules/2.4.18/kernel/drivers/md/lvm-mod.o
         /lib/modules/2.4.18/kernel/drivers/net/3c501.o
         /lib/modules/2.4.18/kernel/drivers/net/3c503.o
           => 사용가능한 모든 모듈을 보여준다.
     ㄴ. [root@www net]# modprobe ide-scsi
           => ide-scsi 라는 모듈을 올린다.
     ㄷ. [root@www net]# modprobe -r ide-scsi
           => ide-scsi라는 모듈을 제거한다.
     ㄹ. [root@www net]# modprobe -c
           => 모듈설정들을 보여준다.
(4) rmmod
   1) 설명: 모듈을 커널에서 제거하는 명령이다. 의존성이 있는 모듈은 제거하지 못한다.
   2) 사용법
     rmmod [option] 모듈
   3) option
     -a : 사용되지 않는 모든 모듈을 제거한다.
   4) 사용예
     [root@www /etc]# rmmod ide-scsi
(5) modinfo
   1) 설명: 모듈 오브젝트 파일의 모듈 정보를 보여준다. 어떤 모듈은 아무 정보도 없으며, 어떤
           모듈은 한 행 정도의 간단한 설명이 있고 몇몇은 비교적 상세하게 설명하고 있다.
   2) 사용법
     modinfo option 모듈_오브젝트_파일
   3) option
     -a : 모듈 제작자를 표시한다.
     -d : 모듈에 대한 설명을 보여준다.
     -p : 모듈이 지원하는 매개변수를 보여준다.
   4) 사용예
     ㄱ. [root@www net]# modinfo -d 3c59x.o
         3Com 3c59x/3c9xx ethernet driver LK1.1.16 19 July 2001
           => 모듈에 대한 설명을 보여준다.
     ㄴ. [root@www net]# modinfo -p 3c59x.o
           => 모듈이 지원하는 매개변수를 보여준다.

4. 모듈 사용하기
(1)모듈 올리기
    1) insmod 모듈이름
      예) insmod ne io=0x300 irq=3 (참고로 '*' 가 아니고 그냥 알파벳 'x'임.)
    2) modprobe 모듈이름
      예) modprobe ne
    *한꺼번에 할 경우
      modprobe ne io=0x300 irq=3
   (참고) insmod와 modprobe명령 모두 모듈을 적재하지만 insmod명령을 사용하면 의존성문제때문에
         모듈이 적재되지 않는 경우도 있고, 적재되더라도 정상적으로 동작하지 않을 수도 있다. 따
         라서, modprobe 명령을 이용하는 것이 좋다.
(2)모듈의 확인 : lsmod
    *사용예
     [root@house /root]# lsmod
     Module                  Size  Used by
     autofs                  9316   1  (autoclean)
     lockd                  31496   1  (autoclean)
     sunrpc                 53028   1  (autoclean) [lockd]
     ne                      6672   1  (autoclean)
     8390                    6076   0  (autoclean) [ne]
     eepro100               15924   1  (autoclean)
     aic7xxx               135768   2
   (설명) 위에서는 ne 라는 모듈과 다른 여러 모듈이 사용중임을 알 수 있다. 이 예에서는 ne(8390
         과 의존성이 있는 모듈)와 eepro100이 랜카드 모듈이고 두 개 모두 used항목이 1이기 때문
         에 현재 사용중임을 알 수 있다.
(3)모듈 내리기(삭제)
    rmmod 모듈이름
   (참고) 모듈이 현재 사용중이라면 모듈의 삭제가 안된다. 이 경우에는 ifconfig eth0 down등의 명
         령으로 이더넷카드 사용을 중지하고 rmmod명령을 사용해야 한다.
(4)모듈의 관련파일
    1) /boot/module-info : 모듈, 특히 랜카드관련 모듈에 대한 정보를 볼 수 있다. (배포판에 따라
                          또는 2.4대 커널에는 없을 수도 있음)
    2) /etc/modules.conf : 부팅과 동시에 로드되는 모듈들을 알 수 있다. 또한 modprobe과정없이
                          모듈을 올릴 수 있다.
       예) ne io=0x300 irq=3 인 경우
           alias eth1 ne      => alias [인터페이스이름] [모듈]
           options ne io=0x300 irq=3 => options [모듈] io=[설정한 주소] irq=[설정한 irq값]
     (참고) 2.2 커널버전에서는 /etc/conf.modules 이었음
    3) /usr/src/linux/Documentation/networking/net-modules.txt : 리눅스에서 사용가능한 이더넷
                                                                카드에 대한 정보를 담고있다.

5. 모듈관련 설정파일: /etc/modules.conf
(1) 설명: 경우에 따라 하드웨어 인터럽트나 DMA채널값 등의 모듈 인자를 조절해야 하는 경우가
          있다. 또한 모듈을 삽입하거나 제거를 위해 특별한 절차를 따라야 할 때도 있는데, 이
          러한 설정을 하는 파일이 /etc/modules.conf(또는 /etc/conf.modules)이다.
(2) 설정
   1) 주석: 공백행이나 #로 시작되는 행은 무시한다.
   2) keep: path지시자보다 앞서 나오면 기본 경로를 유지하고 지정된 경로를 추가한다.
   3) depfile=절대경로:
     ㄱ. 설명: 모듈 의존성 파일 modules.dep의 기본위치를 변경한다.
     ㄴ. 사용예
        depfile=/lib/modules/2.4.18/modules.dep
   4) path=경로: 이 지시자는 모듈을 검색할 디렉토리를 지정한다.
   5) options 모듈 옵션1=값1 옵션2=값2
     ㄱ. 설명: modules.conf나 modprobe명령행에서 options를 이용해 모듈에 특정한 값을 전달할 수
              있다. 명령행에서 지정한 값이 설정 파일의 값보다 우선 적용된다. 모듈은 .so확장자
              를 제외한 모듈명이다. 옵션은 '옵션=값'의 형식을 이용하며 이 값들은 모듈이 인식할
              수 있는 값이어야 하며 'modinfo -p'를 이용해 확인할 수 있다.
     ㄴ. 사용예
        option ne io=0x300 irq=3
   6) alias
     ㄱ. 설명: 앨리어스를 이용해 특정 모듈에 대한 일반 이름을 부여한다.
     ㄴ. 사용예
        alias eth0 3c59x
   7) pre-install 모듈명령
     ㄱ. 설명: 모듈을 적재하기 전에 지정된 셀 명령을 실행한다. 예를 들어 PCMCIA서비스는 pcmcia
              _core모듈보다 앞서 실행되어야 하는 데 이런 경우에 사용한다.
     ㄴ. 사용예
        pre-install pcmcia_core /etc/rc.d/init.d/pcmcia start
   8) install 모듈명령: 기본 모듈 적재 명령 대신 이곳에 지정된 명령을 사용한다.
   9) post-install: 모듈을 적재한 후 지정된 쉘 명령을 실행한다.
   10)pre-remove 모듈: 모듈을 제거 전에 지정 쉘 명령을 실행한다.
   11)remove 모듈: 기본 모듈 제거 명령 대신 이곳에 지정된 명령을 사용한다.
   12)post-remove 모듈: 모듈을 제거한 후 지정 쉘 명령을 실행한다.
(3) /etc/modules.conf의 예
    alias eth0 8139too
    alias eth1 ne    
    options ne io=0x300 irq=3

6. 모듈 의존성파일: modules.dep
(1) 설명: modprobe명령은 모듈 사이의 의존성을 파악해 자동으로 필요한 모듈을 먼저 적재할 수
          있다. 이를 위해 modprobe는 적재해야 할 모듈을 찾기 위해 /lib/modules/커널버전/module
          s.dep를 검색한다.
(2) modules.dep의 형식
   module_name.o: 의존성1 의존성2 .....
(3) modules.dep의 예
   /lib/modules/2.4.18/kernel/net/ipv4/netfilter/ip_conntrack_ftp.o:       /lib/modules/2.4.18
   /kernel/net/ipv4/netfilter/ip_conntrack.o
(4) 참고
    시스템에서 사용할 수 있는 모든 모듈은 modules.dep에 등록되어 있으며 .o확장자를 포함한 전체
   경로를 통해 참조한다. 다른 모듈이 필요로 하지 않은 모듈도 등록되어 있으며 의존성 부분은 비
   어 있다. modprobe에 의해 필요한 모든 모듈이 커널에 우선 적재되고 나면 원래 의도했던 모듈을
   적재한다.
(5) 관련명령어: depmod
    modprobe가 정상으로 동작하기 위해 modules.dep는 항상 적절하게 갱신되어야 한다. 만일 모듈
   간의 의존성이 변경되면서 modules.dep이 수정되지 않는다면 의존성을 가진 필요한 모듈을 찾지
   못해 modprobe가 동작하지 않는다. 따라서 modules.dep는 시스템이 부팅할 때마다 갱신된다.
   이 때 갱신해주는 명령이 'depmod -a'이다. 이러한 작업은 모듈간의 의존성이 변경되었을 경우에
   필요하다. 보통 /etc/rc.d/rc.sysinit파일에 등록되어 부팅시마다 수행한다.

(참고) 모듈로 설치하지 않고 커널 속에 집어넣기
1. 개요
   모듈로 설치하지 않고 커널이미지 안에 네트워크 모듈을 집어넣을 수 있다. 이 방법은 리눅스가
  모듈기능을 지원하기 전에 사용하던 방법으로 커널 컴파일시에 네트워크 카드를 선택하고 컴파일
  한 후에 /etc/lilo.conf에 랜카드 관련 항목을 입력하여 인식시킨다.
2. 방법
  (1) 커널 컴파일시에 네트워크카드를 인식시키고 컴파일한다.
  (2) /etc/lilo.conf파일에 다음과 같은 형식으로 내용을 적는다.
     append="ether=3, 0x300, eth0"
      => ehter는 이더넷을 가리키고, eth0에 IRQ는 3, IO주소는 0x300를 할당한다는 뜻이다.
  (3) /sbin/lilo를 실행하여 lilo.conf파일을 재반영시킨다.
  (4) 시스템을 재부팅하면 랜카드가 인식된다.

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. 프린터데몬 및 관련파일
(1) lpd : Line Printer Daemon의 약자로 리눅스에서 프린트 서비스를 담당하는 데몬이다.
(2) lpr
   1) 설명: 데몬에게 프린트 작업을 요청하는 일을 하는 명령이다.
   2) 사용법
     lpr [option] 파일이름
   3) option
     -b : 배너(banner)나 헤더(header)를 출력하지 않는다.
     -F : 파일의 포맷을 설정한다.
     -K(또는 -#num) : 한 페이지당 몇장씩 출력할 것인지 출력할 문서의 장수를 지정한다.
     -m : 에러 메시지를 메일로 보낸다.
     -P 프린터이름 : 기본 설정된 프린터 이외에 사용할 프린터를 지정한다.
     -Q : 기본값으로 사용하는 큐 이외의 다른 큐를 설정한다.
     -R : 원격 프린트 작업을 보낼 때 원격 계정 이름을 구별하기 위해 사용된다.
     -s : 지정된 파일을 spool 디렉토리로 복사하는 대신 심볼릭링크를 한다.
     -T : 타이틀 페이지에 들어갈 타이틀을 설정한다.
     -w : 페이지의 폭을 정한다.
(3) /etc/printcap
   1) 설명 : 프린터 설정파일로 lpd가 구동할 때 참조하는 파일이다.
   2) 설정예
     hp:\
             :sh:\
             :ml=0:\
             :mx=0:\
             :sd=/var/spool/lpd/hp:\
             :lp=/dev/lp0:\
             :lpd_bounce=true:\
             :if=/usr/share/printconf/mf_wrapper:
      => (설명)
        프린터 설정항목들은 ':'으로 구분되며, 원래는 한 줄로 적어야 하는데, 여러 줄에 걸쳐
       입력되므로 '\'가 붙었다.
        hp: 프린터의 이름을 정의한 것이다. printtool의 Name and Aliases항목에서 설정한다.
        sh: 표기페이지(burst page)를 인쇄하는 설정이다. 버스트페이지란 사용자, 프린트된 파일
           이름, 작업번호, 또는 기타 다른 정보를 인쇄하는 페이지이다.
        sd: spool directory의 약자. 일반적으로 'var/spool/lpd/프린터이름'으로 설정된다.
        mx: 이것은 프린터로 보내어질 파일의 최대크기를 정의한다. #0은 최대 파일 크기를 정의
           하지 않는다.
        lp: 프린트를 위한 장치이름이다.
        if: input filter의 약자. 어떤 파일이든지 프린터로 보내질 때, |(pipeline)을 통하여 if
           명령과 함께 프린트 큐(queue)에 저장된다.
2. 프린트관련 유틸리티
(1) lpq
   1) 설명: 프린트 큐에 있는 작업의 목록을 보여주는 명령이다. 프린터 데몬으로부터 필요한
           정보를 가져온다.
   2) 사용법
     lpq [option]
   3) option
     -P : 특정프린터를 지정한다.
     -a : /etc/printcap파일에 있는 모든 프린터들에 대한 정보를 보여준다.
     -s : 결과를 간략하게(short format) 보여준다.
     -l : 결과를 자세하게(long format) 보여준다.
(2) lprm
   1) 설명: 프린터 큐에 대기중인 작업을 삭제하는 명령으로 프린트를 취소하고 싶은 작업의 번호를
           입력한다. 작업번호를 명시하지 않을 경우, 프린트 요청한 마지막 작업을 삭제한다.
   2) 사용법
     lprm [option]
   3) option
     -P : 특정한 프린트 큐를 지정한다.
     -a : 프린트 큐에 있는 모든 작업을 삭제한다.
     -V : 작업의 진행상황을 보여준다.(verbose)
(3) lpc
   1) 설명: 라인 프린터컨트롤 프로그램으로 프린터나 프린트 큐를 제어한다.
   2) 사용법 : lpc 라고 입력하면 된다.
   3) 사용예
     [root@www /root]# lpc
     lpc>
       => 이 상태에서 커맨드를 입력하면 된다.
   4) command
     disable : 새로운 프린트작업을 못하게 한다.
     enable  : 프린트작업이 가능하게 한다.
     down    : 지정된 프린터를 사용할 수 없게 한다.
     up      : 모든 환경을 활성화시키고, 새로운 lpd데몬을 구동시킨다.
     status  : 지정된 프린터의 상태를 확인한다.
     quit    : lpc를 끝낸다. exit와 같다.

3. 파일의 인쇄
(1) 일반적인 파일 출력하기
    [root@www /root]# cat a.txt > /dev/lp
     => /dev/lp는 프린터에 대한 심볼릭 링크이다. 프린터 사용할 수 있는 권한자는 루트권한자나
       프린트데몬에 등록된 그룹의 사용자만이 직접 파일을 보내어 사용하는 것이 가능하다. 일반
       사용자는 lpr명령을 사용해야 한다.
(2) 포스트스크립트(Postscripts)파일 출력하기
   1) 설명 : 포스트 스크립트파일을 프린트할 때 가장 큰 문제는 사용하는 프린터와 드라이버가
            포스트 스크립트를 지원하느냐가 중요하다. 만약 지원하지 않으면 고스트스크립트(GS :
            Ghostscripts)를 이용할 수 있다. 이것은 포스트스크립트처리를 하여 포스트 스크립트
            프린터가 아닌 일반프린터가 이해할 수 있는 형식으로 바꾸어 주는 프로그램이다.
   2) 사용법
     ㄱ. gs 사용
        gs -dSAFER -dNOPAUSE -sDEVICE=deskjet -sOutputFile=\ |lpr test.txt
     ㄴ. Ghostview : Ghostscript를 X-window에서 구현한 것으로 Postscript파일을 출력전에 살펴볼
                    수 있다.(ftp://prep.ai.mit.edu/pub/gnu)

4. 프린터의 설정
(1) 설명: x-window상에서 printtool이라는 명령으로 설정하면 손쉽게 할 수 있다.
(2) 설정하기
   1) printtool 실행
   2) New 선택
   3) Name and Aliases항목에서 Queue Name설정
   4) Queue Type에서 맞는 타입설정 : 로컬인 경우에는 기본값을 사용하면 된다.
   5) Printer Driver항목에서 맞는 모델선택
   6) APPLY를 선택한다.
(3) 확인: /etc/printcap 파일을 확인해본다.

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. 기본적인 시스템 하드웨어 설정
(1) 바이오스 : PC에 설치된 펌웨어를 보통 기본 입출력 시스템(BIOS, Basic Input/Output System)
              또는 바이오스라 부르며 시스템이 시작된 후 운영체제가 시작될 때까지 각 장치를 점검
              한다. BIOS프로그램은 보통 ROM에 저장되어 있어 ROM-BIOS라고도 부른다. 시스템에
              따라 차이는 있지만 이 과정에는 시스템의 초기화, 메모리 및 기타장치 의 테스트,
              저장 장치에서 운영체제를 읽어들이는 것등이 포함된다. 또한 낮은 수준의 시스템
              설정 인터페이스를 제공하며 사용자로 하여금 부팅시에 이들을 설정할 수 있게 하며
              자원을 할당한다. 보통 디스크설정, 메모리 설정, 보드에서 제공하는 포트(시리얼/
              패러럴등), 시계, 부트 장치 등을 설정할 수 있다.
(2) 자원 할당 : 바이오스 설정 중에서 몇몇 세부 사항에는 인터럽트(IRQ), I/O주소, DMA(Direct
               Memory Access)채널 등의 시스템 자원이 포함되어 있다.
   1) 포트 : 리눅스에서는 표준 직렬(Serial), 병렬(Parrarel), 조이스틱포트 모두 지원한다. 또한
           이러한 포트들과 주변기기는 /dev디렉토리에서 파일로 관리된다. 직렬포트는 ttyS0,
           ttyS1..등의 이름으로 사용되어 /dev디렉토리에서는 /dev/ttyS0, /dev/ttyS1등으로
           존재하고 마찬가지로 패러럴포트는 lp0,lp1..의 이름으로 사용되어 /dev/lp0, /dev/lp1
           등으로 존재한다.
     ㄱ. 직렬포트 : CPU는 직렬포트로 들어온 데이터를 처리하기 위해서 그 데이터가 어디에서 온
                  것이며, 어떤 신호를 사용되어 CPU가 데이터를 처리하도록 요청하엿는가를 알고
                  있어야 하는데 그 정보를 나타내는 값이 I/O주소(I/O ports)와 IRQ(Interrupt
                  ReQuest)로 직렬 포트 장치들은 이 값들을 메모리에 저장해 두어야 한다. 일반
                  적인 ISA버스에는 IRQ0~IRQ15까지 총 16개의 IRQ가 있다.
     ㄴ. 직렬포트 IRQ와 주소
        포트    리눅스장치파일    IRQ           기능                  I/O주소
        COM1      /dev/ttyS0       4    마우스                         0x3f8
        COM2      /dev/ttyS1       3    플로터/외장모뎀                0x2f8
        COM3      /dev/ttyS2       4    사용안함(마우스와 충돌)        0x3e8
        COM4      /dev/ttyS3       3    내장모뎀                       0x2e8
   2) 인터럽트 : PC 마이크로 프로세서에게 전달되는 전기적 신호로 현재 작업을 잠시 멈추고 비동
               기적 이벤트(예를 들면 키보드 누름)에 반응하도록 한다. 최근의 PC장치들은 인터럽
               트를 공유할 수 있으나 구형 하드웨어는 다른 장치와 충돌하지 않도록 직접 고유값으
               로 지정해야 한다. 보통 IRQ(Interrupt ReQuest)라 부른다.
     ㄱ. IRQ 목록
       IRQ               기능
       IRQ0         System timer
       IRQ1         Keyboard controller
       IRQ2         공유
       IRQ3         COM2/COM4
       IRQ4         COM1/COM3
       IRQ5         LPT2/SOUND CARD
       IRQ6         Floppy Drive Controller
       IRQ7         LPT1 parallel Port
       IRQ8         Real-Time Clock(TTC)
       IRQ9         예비(주로 미디카드에서 사용)
       IRQ10        Lan Card
       IRQ11        SCSI Adapter
       IRQ12        PS/2 Mouse
       IRQ13        Coprocessor
       IRQ14        IDE Controller(Primary)
       IRQ15        IDE Controller(Secondary)
     ㄴ. 관련파일 : /proc/interrupts => 현재 사용중인 IRQ를 알 수 있다. 병렬포트에 대한 내용은
                                      없다.
       예)
       [posein@www posein]$ cat /proc/interrupts
                  CPU0
         0:   51736181          XT-PIC  timer
         1:          5          XT-PIC  keyboard
         2:          0          XT-PIC  cascade
         5:     260033          XT-PIC  usb-uhci, usb-uhci, usb-uhci, eth1
         8:          1          XT-PIC  rtc
        12:    2979673          XT-PIC  eth0
        14:     131256          XT-PIC  ide0
        15:          2          XT-PIC  ide1
       NMI:          0
       LOC:          0
       ERR:          0
   3) I/O주소 : 마이크로 프로세서의 메모리 맵(메모리 번지를 정의한 목록)에 위치하며 네트워크
               인터페이스와 같은 입출력 장치를 위해 예약되어 있다. 마이크로 프로세서는 메모리에
               데이터를 기록하는 방법과 동일하게 장치에 데이터를 기록할 수 있고, 이것은 장치
               인터 페이스를 간단하게 할 수 있다. 만일 여러 장치들이 우연히 동일한 I/O주소를
               공유하게 되면 시스템 충돌이 일어난다.
     ㄱ. 표준 I/O 주소
      060h + 064h        Keyboard Controller
      170h + 376h        Secondary IDE Controller
      1F0h + 3F6h        Primary IDE Controller
      220h               Sound Card
      300h               Lan Card
      330h               SCSI Adapter
      3F2h               Floppy Drive Controller
      3F8h               COM1
      2F8h               COM2
      3E8h               COM3
      2E8h               COM4
      378h               LPT1
      278h               LPT2
     ㄴ. 관련파일 : /proc/ioports => 현재 사용중인 I/O 주소에 대한 정보를 알 수 있다.
     ㄷ. 관련 명령 : setserial 명령어를 이용하여 직렬포트를 확인할 수 있다.
        [root@www /root]# setserial -g /dev/ttyS*
        /dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
        /dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
        .....
   4) DMA : 몇몇 장치들이 DMA채널을 이용해 메모리에 직접 작업하고 마이크로 프로세서는 다른
           작업할 수 있게 해준다. 만일 DMA가 없을 경우 모든 데이터는 장치들의 포트를 통해
           읽어서 메모리에 저장해야 되며 이 마이크로 프로세서에 의해 수행된다. DMA를 지원하는
           장치들은 마이크로 프로세서가 작업중일 때 메모리에 직접 접근해서 필요한 데이터를
           기록하게 된다. 이것을 결과적으로 성능을 향상시키는 역할을 한다.
     ㄱ. 관련파일 : /proc/dma => dma의 값을 알 수 있다.
(3) 1024 실린더 제한 : 대부분의 PC운영에서 바이오스는 마스터 부트 레코드(MBR)이라고 알려진
                      디스크의 시작부분에서 운영체제를 불러온다. 윈도우즈 운영체제 사용자들은
                      부트 레코드가 다른 곳에 설치되지 않으므로 MBR에 대해 별로 신경을 쓰지
                      않는다. 그러나 리눅스의 경우 사용자가 부트로더(LILO)를 MBR이나 루트
                      파티션에 설치할 수 있다. 이러한 유연성 때문에 종종 바이오스와 LILO가
                      부팅에 실패하는 경우가 생긴다. 이 문제는 바이오스가 우선 LILO를 메모리
                      로 로드한 뒤 실행해야 하지만 바이오스는 1024 실린더 이후의 디스크 영역
                      에는 접근할 수 없기 때문이다. 만일 바이오스가 전체 LILO를 읽을 수 없다면
                      부팅에 실패하게 된다. 또한 구 버전의 LILO는 비슷한 이유로 커널 이미지를
                      반드시 1024 실린더 안쪽에 위치시켜야만 한다.

2. SCSI와 NIC 장치 설정
(1) 네트워크 인터페이스 카드
   1) 네트워크 카드의 시대적 분류
    ㄱ. 점퍼시대 : 이 방식의 하드웨어는 점퍼 위치를 변경함으로써 설정할 수 있도록 만들었다. 이
                 러한 방식은 점퍼 설정에 필요한 관련문서를 참고해 PC를 열어 내부에 접근해야
                 한다.
    ㄴ. 비휘발성 메모리시대 : 이 방법도 여전히 수동으로 설정한다. 점퍼를 제거하고 비휘발성 메모
                          리에 저장하는 방식이다. 물리적으로 접근해야 하는 문제는 없어 졌지만
                          제조사에서 제공되는 프로그램을 이용해야 한다. 이러한 프로그램은
                          대부분 MS-DOS용으로 만들어져 리눅스에서 이 장치를 사용하기 위해서는
                          초기 설정을 위한 별도의 MS-DOS시스템이 필요하다.
    ㄷ. 현재 : 최근 PCI 버스 방식의 네트워크 카드들은 대부분 자동으로 설정된다. 운영체제가
             시작되기 전에 시스템 초기화 단계에서 설정한다. 이러한 자동화는 수동으로 설정하는
             불편함과 장치 충돌을 방지한다.
   2) /proc 파일시스템 이용
     운영중인 리눅스 시스템에 새로운 하드웨어를 추가할 경우 기존의 장치들이 사용하는 리소스를
    확인할 필요가 있는데 이러한 커널의 상태 정보는 /proc에 저장된다. interrupt, dma, ioports
    등의 파일들은 현재 사용중인 자원을 보여준다.
     예) 1. /proc/interrupts
         2. /proc/dma
         3. /proc/ioports

3. 기타관련명령어
(1) lspci
   1) 설명: 시스템에 사용되는 PCI관련 정보를 출력해주는 명령어이다.
   2) 사용법
     lspci [options]
   3) options
     -v : 정보를 자세히 출력해준다.
   4) 사용예
     [root@mybestone /root]# lspci
     00:00.0 Host bridge: VIA Technologies, Inc.: Unknown device 3128 (rev 01)
     00:01.0 PCI bridge: VIA Technologies, Inc. VT8633 [Apollo Pro266 AGP]
     00:08.0 VGA compatible controller: ATI Technologies Inc 3D Rage II+ 215GTB [Mach64 GTB] (rev 9a)
     00:0a.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 (rev 10)
     00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 (rev 10)
     00:11.0 ISA bridge: VIA Technologies, Inc. VT8233 PCI to ISA Bridge
     00:11.1 IDE interface: VIA Technologies, Inc. Bus Master IDE (rev 06)
     00:11.2 USB Controller: VIA Technologies, Inc. UHCI USB (rev 1b)
     00:11.3 USB Controller: VIA Technologies, Inc. UHCI USB (rev 1b)
     00:11.4 USB Controller: VIA Technologies, Inc. UHCI USB (rev 1b)
     00:11.5 Multimedia audio controller: VIA Technologies, Inc. AC97 Audio Controller (rev 30)

Trackback
Reply

출처 : 대전국제 IT교육센터 정성재 강사

 

1. 리눅스와 하드웨어 개요
운영체제에서 하드웨어의 인식은 굉장히 중요하다. 사용자가 하드웨어에게 명령을 내리고자 한다면
운영체제에서 하드웨어를 인식해야 한다. 내부적으로는 커널이 하드웨어를 지원하고 인식해야 제어할
수 있다. 리눅스에서 하드웨어의 종류에 따른 여러 가지 특성을 분석해보자.

2. 하드웨어와 관계된 기본 자원
(1) 하드웨어 관련 로그
   1) 설명: 부팅이란 쉽게 설명하면 커널이 하드웨어를 인식하는 단계이다. 부팅을 시작하면 커널은
           부팅하면서 인식되는 하드웨어 정보를 화면에 보여주고, 또한 그 정보를 기록한다. 그
           정보가 기록되는 파일이 /var/log/dmesg이다.
   2) 확인: 로그정보의 확인은 로그 기록파일명과 같은 dmesg 명령을 이용한다. 이 명령을 내리면
           부팅시 발생된 로그를 확인할 수 있으며, 이 내용은 /var/log/dmesg라는 파일에서 가져
           온다.
(2) 하드웨어 자동인식 데몬 kudzu
   1) 설명: 리눅스에서도 윈도우처럼 자동으로 하드웨어를 인식하여 설치해주는 데몬이 있는데 이
           데몬이 kudzu이다. 새로운 하드웨어를 인식하고 설정하여 그 설정된 목록을 파일에 저장
           한다. 이 파일은 데이터베이스화하여 관리되고, 새로운 하드웨어 발견시 이 파일과 비교
           하여 기록에 없으면 새 하드웨어로 인식하여 데이터베이스를 갱신한다.
   2) 관련 파일 및 디렉토리
    ㄱ. /etc/sysconfig/hwconf: kudzu가 인식한 하드웨어를 설정하여 데이터베이스화하여 관리하는
                              파일이다. 이 파일에 현재 장착된 하드웨어의 정보가 담겨 있다.
    ㄴ. /usr/share/hwdata : kudzu가 인식할 수 있는 하드웨어의 목록파일이 들어 있는 디렉토리이
                           다.
(3) /proc 디렉토리: 관련 하드웨어에 대한 정보는 가상파일시스템의 일종인 /proc디렉토리에 위치
                    하게 된다. 이 디렉토리내의 파일을 통해 여러 하드웨어 정보를 알 수 있다.
(4) 관련 유틸리티 : hwbrowser
   X window 기반 그래픽 유틸리티인 hwbrowser는 현재 찾아낸 하드웨어의 정보를 보여주는 프로그램
  이다.

3. 각 하드웨어별 분석
(1) CPU
   현재 리눅스에서 지원되는 CPU의 종류를 살펴보면 Intel의 x86계열과 IA-64, Compaq Alpha, IBM
  S/390, PowerPC, Motorola 68k, SPARC 등을 지원한다. CPU 갯수로 보면 리눅스 커널 디자인상으로
  는 총 32개까지 지원이 가능하지만 x86계열은 8개까지 지원한다. 그러나, x86계열에서 실제적으로
  4개 이상은 사용하지 않는다.
(2) Memory
   리눅스는 i586인 경우에 기본으로 1GB의 메모리를 지원한다. i686/athlon을 사용하는 경우에는
  4GB까지 사용가능하다. 또한 인텔의 PAE(Physical Address Extensions)를 지원하는 CPU인 경우에는
  최대 64GB까지 지원한다.
(3) Block Device 와 Character Device
   1) 설명: 리눅스에서는 장치들을 파일화하여 관리한다. 이러한 파일들은 /dev디렉토리에 위치하게
           되고, 크게 Block Device와 Character Device로 분리하여 관리된다. 또한 블록디바이스나
           캐릭터 디바이스의 쉬운 접근을 위해 심볼릭링크(Symbolic Link)로 사용하기도 한다.
   2) Block Device
    ㄱ. 설명: Block 단위로 전송하는 장치들을 말하며, 흔히 Random한 접근이 가능한 장치를 일컫기
             도 한다. Floppy, IDE, SCSI, RAID 등이 이러한 장치에 속한다.
    ㄴ. 블록 디바이스 파일의 예
       [root@www dev]# ls -l /dev/fd0
       brw-rw----    1 root     floppy     2,   0  8월 31 08:31 /dev/fd0
        => 첫번째필드가 권한을 나타내는 부분에서 맨 앞쪽이 b로 표기됨을 알 수 있다. 또한 /dev
          디렉토리안에 있는 디바이스들은 두 개의 숫자로 이루어진 식별자값을 갖는데, 이 들 숫자
          를 각각 Major Number, Minor Number라 부른다. Major 번호는 노드번호와 동일하며, Minor
          번호는 의례적으로 첨자번호(예를 들면 fd다음에 붙는 숫자값)을 부여하게 된다.
   (참고) Major/Minor Number관련 정보는 /usr/src/linux-커널버전/Documentation/devices.txt
         파일에서 찾아볼 수 있다.
    ㄷ. Block Device의 종류
       hd[a-t] : IDE 하드디스크 드라이브
       sd[a-z] : SCSI 하드디스크 드라이브
       fd[0-7] : 표준 플로피 디스크 드라이브
       md[0-31] : 소프트웨어적 RAID 디스크
       loop[0-15] : loopback devices
       ram[0-19] : ramdisks
   3) Character Device
    ㄱ. 설명: Character단위로 전송하는 장치를 말하며, 흔히 순차적 접근만이 가능한 장치를 일컫
             는다.
    ㄴ. 캐릭터 디바이스 파일의 예
       [root@www dev]# ls -l /dev/tty1
       crw-------    1 root     root       4,   1  1월 21 19:58 /dev/tty1
        => 첫번째 필드의 맨 앞쪽이 c로 표기되어 있다.
    ㄷ. Character Device의 종류
      tty[0-31]  : 가상 콘솔장치
      ttyS[0-9]+ : Serial Ports
      lp[0-3]    : Parallel Ports
      null       : 휴지통같은 장치
      zero       : 무제한의 0값을 갖는 장치
      [u]random  : 랜덤한 정보를 갖는 장치
      fb[0-31]   : framebuffer 장치
   4) Symbolic Links
    ㄱ. 설명: 블록디바이스나 캐릭터디바이스의 접근을 쉽게 하기 위해 링크를 걸어둔 장치를
             말한다.
    ㄴ. 종류
      /dev/cdrom => /dev/hd[a-t], /dev/sd[a-z]+
      /dev/modem => /dev/ttyS[0-9]+
      /dev/pilot => /dev/ttyS[0-9]+
   5) 관련명령어: mknod, hdparm
(4) System Bus Support
   1) PCI 장치
    ㄱ. 설명: 리눅스는 PCI 버스관련 장치들도 지원한다. 대부분 커널에서 자동으로 인식한다.
    ㄴ. 관련명령어
       lspci
         => 현재 설치된 pci관련 장치의 정보를 보여준다.
    ㄷ. 관련디렉토리
       /proc/bus/pci
   2) ISA 장치
    ㄱ. 설명: PCI 이전에 사용하던 슬롯으로 현재는 거의 사용되지 않는다.
    ㄴ. 관련디렉토리
       /proc/isapnp
        => 찾아진 ISA 장치의 정보가 기록된다.
(5) Hotswappable Bus Support
   1) USB & IEEE 1394
    ㄱ. 명령어: /sbin/hotplug
         => USB나 IEEE 1394 관련 주변장치를 찾아 커널에게 알려주는 명령이다.
    ㄴ. 관련디렉토리: /proc/bus
        => 장치들의 정보는 /proc/bus의 하위디렉토리에 기록된다.
    ㄷ. /etc/hotplug
        => 관련장치들이 기록되는 환경설정디렉토리이다.
    ㄹ. USB 장치관련 파일
       /dev/usb
    ㅁ. 관련명령어
      a. /sbin/lsusb
          => 설치된 USB장치의 리스트를 보여주는 명령이다.
      b. /sbin/usbmodules
          => USB장치를 커널모듈로 등록시키는 명령이다.
    ㅂ. 관련문서 : "/usr/share/doc/hotplug-버전" 디렉토리나 커널소스의
                  /usr/src/linux-2.4/Documentation/usb 디렉토리에서 참고할 수 있다.
   2) PCMCIA
    ㄱ. /etc/sysconfig/pcmcia : 시스템에서 사용하는 PCMCIA 컨트롤러에 관한 내용이 설정된다.
    ㄴ. /sbin/cardmgr : Hotswap 이벤트를 모니터링하는 데몬이다.
    ㄷ. /sbin/cardctl : PCMCIA 카드를 제어하는 프로그램이다.
    ㄹ. /etc/pcmcia : PCMCIA 관련 환경파일들이 존재하는 디렉토리이다.
    ㅁ. /etc/init.d/pcmcia : 스크립트 데몬파일이다.
    ㅂ. 관련문서: man pcmcia 하거나 "/usr/share/doc/kernel-pcmcia-cs-버전" 디렉토리에서 참조
                 한다.
(6) Peripheral Device Ports
   1) Serial Ports
    ㄱ. /proc/tty/driver/serial
       => 현재 시리얼포트의 설정상태를 보여준다.
    ㄴ. /sbin/setserial
       => 시리얼포트의 정보를 보여주거나 설정하는 명령이다.
    ㄷ. /etc/rc.serial
       => 시스템부팅시에 시리얼포트를 사용하도록 해주는 스크립트이다.
    ㄹ. 관련 심볼릭링크
       /dev/modem
       /dev/pilot
    ㅁ. 관련문서
       /usr/src/linux-커널버전/Documentation/serial-console.txt
   2) Parallel Ports
     커널모듈형태로 지원되며 /etc/modules.conf에서 parport_lowlevel 이라는 이름으로 사용된다.
    x86계열 아키텍쳐에서는 패러럴포트는 parport_pc 라고 인식한다.
(7) Console and Graphics
   1) Console
    ㄱ. 설명: 리눅스는 기본적으로 SVGA 텍스트 콘솔을 지원한다. 커널 부트파라미터에서 'vga'라는
             값으로 조정한다.
    ㄴ. 관련명령어
       /usr/bin/setterm
   2) Frame Buffer
    ㄱ. 설명: 프레임버퍼란 화면에 나타날 영상정보를 일시적으로 저장하는 기억장치이다. 비디오카
             드의 중앙처리장치(CPU)로부터 도형을 표현하는 디스플레이 리스트를 받아 변환하여 프
             레임 버퍼에 기록한다. 프레임 버퍼의 각 기억 단위는 화면의 하나의 화소에 하나씩 대
             응하여 화면에 그대로 반영된다. 즉 화면의 각 점의 온(on)/오프(off)나 색깔을 비트맵
             으로 기억하고 있으며 이 기억 장치에 어떤 내용을 써넣으면 그것이 화면에 표시된다.
             이는 대개 시스템의 주기억 장치와는 별도로 분리되어 있으며, 특별한 기술을 사용하여
             속도를 빠르게 하기도 한다. 프레임버퍼를 이용하여 콘솔모드에서 한글쓰기 등이 가능
             하다.
    ㄴ. 리눅스와 프레임버퍼: 리눅스에서 프레임버퍼는 모드 그래픽하드웨어에 대해 지원되는 것은
                            아니고 일부 비디오카드에 대해서만 지원한다. fbset 이라는 프레임버
                            퍼를 관리하는 RPM패키지가 제공되며, /usr/sbin/fbset 이라는 명령과
                            /etc/fs.modes라는 환경설정파일을 이용한다.
    ㄷ. 관련문서
       /usr/src/linux-커널버전/Documentation/fb
       /usr/src/linux-커널버전/Documentation/svga.txt

4. 하드웨어관련 문서 찾아보기
(1) 레드햇리눅스 관련문서
   1) 사이트: http://www.redhat.com/support/hardware
   2) 설명 : 레드햇사에서 테스트한 하드웨어를 포함하여 레드햇리눅스와 호환되는 하드웨어목록과
            관련 정보를 얻을 수 있다.
(2) X-Window System관련 문서
   1) 사이트: http://www.xfree86.org
   2) 설명: X-window 지원하는 비디오카드 등의 하드웨어 정보를 알 수 있다.
(3) 기타관련문서
   1) 사이트: http://www.tldp.org
   2) 설명: The Linux Documentation Project의 약자로 하드웨어뿐만아니라 리눅스와 관련된 거의
           모든 문서를 찾을 수 있다.

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. 리눅스에서 IP 부여
(1) 명령어 이용하는 방법 : ifconfig, route 등의 명령어를 이용하여 IP를 부여한다.
   1) 사용예
     ifconfig eth0 192.168.0.5 netmask 255.255.255.0 broadcast 192.168.0.255
     route add -net 192.168.0.0 netmask 255.255.255.0 eth0
     route add default gw 192.168.0.1
   2) 장점 : /etc/sysconfig/network-scripts/ifcfg-eth0파일에서의 설정이 필요없다.
   3) 단점 : 재부팅시 재설정을 필요로 한다.
   4) 주의점: network 데몬을 재가동해서는 안된다. network데몬은 시스템의 /etc/sysconfig 디렉
            토리이하에 존재하는 네트워크 관련파일의 정보를 보고 설정한다.
   5) 보완책 : ifconfig, route같은 명령을 이용하여 IP를 부여하면 시스템을 재부팅했을 경우에는
              그 설정이 없어진다. 따라서, 명령어를 이용하여 지속적인 IP세팅을 하려면 부팅시
              마다 항상 참조하는 파일인 /etc/rc.d/rc.local파일안에 설정하면 된다.
(2) /etc/sysconfig/network-scripts/ifcfg-eth0파일을 이용 : 설정하고자 하는 IP를 다음과 같이
                                                           파일안에 넣는다.
   1) 설정예
     DEVICE=eth0
     BOOTPROTO=static
     BROADCAST=192.168.0.255
     IPADDR=192.168.0.5
     NETMASK=255.255.255.0
     NETWORK=192.168.0.0
     ONBOOT=yes
(3) netconfig를 이용 : 레드햇 리눅스 text모드에서 사용가능하다.
(4) linuxconf를 이용 : text모드, 웹브라우저(네스케이프)모드, X-window모드 세가지형태로 지원한
                      다. (레드햇 7.x버전이하만 가능하고 레드햇 8 버전에서는 지원하지 않는다.)
(5) netcfg, netconf를 이용 : X-window에서만 지원한다. (레드햇 7.x버전이하만 가능하고 레드햇 8
                             버전에서는 지원하지 않는다.)
(6) redhat-config-network: 레드햇리눅스 8에서 지원하는 명령으로 X-window 에서만 지원한다.
                           neat라고 입력해도 된다.

2. IP를 변경하기
(1) 명령어를 이용한 설정을 했을 경우
   1) 네트워크 인터페이스의 작동을 중단시킨다.
      ifdown eth0      또는   ifconfig eth0 down
   2) 역시 명령어를 이용하여 변경을 한다. 만약 /etc/rc.d/rc.local파일 안에 설정을 했을 경우에는
     그 파일안에서 설정을 변경한다.
   3) 네트워크 인터페이스를 재작동시킨다.
      ifup eth0        또는   ifconfig eth0 up
(2) /etc/sysconfig/network-scripts/ifcfg-eth0파일과 /etc/sysconfig/network파일을 이용했을
    경우 리눅스에서 네트워크카드(랜카드)는 ethx(여기서 x는 해당숫자임)로 관리한다. 만약 시스템
    에 랜카드가 하나라면 eth0 이다. IP를 변경하기 위해서 편집해야 할 파일은 다음의 두 가지
    파일이다.
   1) 관련파일
    ㄱ. /etc/sysconfig/network-scripts/ifcfg-eth0 : IP,Netmask,Broadcast값을 변경하기위한 파일
    ㄴ. /etc/sysconfig/network : Gateway값을 변경하기 위한 파일
       참고로 이더넷카드를 두 개 장착했을 경우 두번째 이더넷카드의 설정은 ifcfg-eth1번이다.
   2) 설정순서
    ㄱ. 네트워크 인터페이스의 작동을 중단시킨다.
       ifdown eth0             또는    ifconfig eth0 down
    ㄴ. /etc/sysconfig/network-scripts/ifcfg-eth0파일안에 다음과 같은 형식으로 IP를 적는다.
       (설정예)
      DEVICE=eth0
      BOOTPROTO=static
      BROADCAST=192.168.0.255
      IPADDR=192.168.0.5
      NETMASK=255.255.255.0
      NETWORK=192.168.0.0
      ONBOOT=yes
    ㄷ. 네트워크 인터페이스를 재작동시킨다.
       ifup eth0
    ㄹ. /etc/sysconfig/network파일안에 게이트웨이값을 부여한다.
       NETWORKING=yes
       HOSTNAME=www
       GATEWAY=192.168.0.1
    ㅁ. 재부팅하거나 네트워크 데몬을 재가동한다.
       /etc/rc.d/init.d/network stop 한 뒤 /etc/rc.d/init.d/network start
         또는
       /etc/rc.d/init.d/network restart
         또는
       service network restart

(참고1) 고정IP와 유동IP의 비교
1. /etc/sysconfig/network 파일: 게이트웨이 설정파일
  (1) 고정IP : 게이트웨이항목이 한 줄 더 있다.
     NETWORKING=yes
     HOSTNAME=www
     GATEWAY=192.168.0.1
  (2)유동IP
     NETWORKING=yes
     HOSTNAME=www

2. /etc/sysconfig/network-scripts/ifcfg-eth0 : 이더넷카드 설정파일
  (1) 고정IP
     DEVICE=eth0
     BOOTPROTO=static
     BROADCAST=192.168.0.255
     IPADDR=192.168.0.5
     NETMASK=255.255.255.0
     NETWORK=192.168.0.0
     ONBOOT=yes
  (2) 유동IP
     DEVICE=eth0
     BOOTPROTO=dhcp
     ONBOOT=yes

(참고2) 추천하는 /etc/sysconfig/network파일과 /etc/sysconfig/network-scripts/ifcfg-eth0
1. /etc/sysconfig/network
   NETWORKING=yes
   HOSTNAME=www
   GATEWAY=192.168.0.1               //유동아이피인 경우에는 생략한다.
   GATEWAYDEV=eth0                   //기본적으로 생략가능하다.
   FORWARD_IPV4=false                //ipchain등을 이용하여 방화벽이나 인터넷 공유시에는 true
                                       로 값을 지정해야 한다.
2. /etc/sysconfig/network-scripts/ifcfg-eth0
   DEVICE=eth0
   BOOTPROTO=static                 //유동아이피인 경우에는 'dhcp'가 된다.
   IPADDR=192.168.0.2               //부여받은 IP어드레스를 적으면 된다.
   NETMASK=255.255.255.0            //부여받은 넷마스크값을 적으면 된다.
   NETWORK=192.168.0.0              //보통 부여받은 아이피의 맨 끝자리가 0인 값이다.
   BROADCAST=192.168.0.255          //보통 부여받은 아이피의 맨 끝자리가 255인 값이다.
   ONBOOT=yes

3. IP를 추가로 부여하기
(1) 설명: 시스템에 이더넷카드(eth0)가 하나만 존재한다. 기존의 IP 이외에 남는 IP가 존재하여
          추가로 IP를 부여하고자 한다. 리눅스에서는 이러한 기능을 지원하는데 이러한 방법을
          Alias IP라고 한다.
(2) 방법 : 다음과 같이 세가지 방법이 있다.
   1) 명령어를 이용하는 방법: ifconfig 명령을 이용하는 방법이다. 이 방법을 사용해서 명령을
                             내렸을 경우 재부팅하면 설정값이 부여되지 않는다.
   2) 파일을 이용하는 방법: 가장 쉬운 방법으로 기존의 파일을 복사하여 설정하면 된다.
   3) netconfig 유틸리티를 이용하는 방법: 그래픽하게 지원하는 방법으로 이 설정을 하면 자동
                                         으로 해당파일이 생성된다.
(3) 사용예: 기존의 eth0에 추가로 203.xxx.xxx.76번을 부여해본다.
   1) 명령어를 이용하는 방법
     ifconfig eth0:0 203.xxx.xxx.76 netmask 255.255.255.0 broadcast 203.xxx.xxx.0
       => eth0:0 으로 추가로 부여할 IP를 지정하면 된다. 절대로 이 설정후에 network데몬을 재시
         작해서는 안된다. network데몬은 관련파일의 정보를 가져와 설정한다.
   2) 파일을 이용하는 방법
    ㄱ. cd /etc/sysconfig/network-scripts 로 이동한다.
    ㄴ. 기존의 이더넷카드 설정파일인 ifcfg-eth0을 ifcfg-eth0:0으로 복사한다.
    ㄷ. ifcfg-eth0:0의 설정내용을 변경한다.(/etc/sysconfig/network-scripts/ifcfg-eth0:0)
       DEVICE=eth0:0                  // 이 디바이스명을 잘 적어줘야 한다.
       BOOTPROTO=static
       BROADCAST=203.xxx.xxx.255
       IPADDR=203.xxx.xxx.76
       NETMASK=255.255.255.0
       NETWORK=203.xxx.xxx.0
       ONBOOT=yes
   3) netconfig 유틸리티 이용하기
     netconfig --device eth0:0 명령을 내린 뒤 설정한다.

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. /etc/modules.conf
(1) 설명: 네트워크 인터페이스카드 설정관련 파일이다. 이 파일에서 모듈화된 네트워크 디바이스를
          파일화시킨다.
(2) 예
   [root@www root]# cat /etc/modules.conf
   alias parport_lowlevel parport_pc
   alias eth0 8139too
   alias eth1 8139too
   alias sound-slot-0 via82cxxx_audio
   post-install sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1 || :
   pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 || :
   alias usb-controller usb-uhci
    => Realtek 8139 이더넷카드를 eth0 으로 alias 시킨다.

2. /etc/sysconfig/network
(1) 설명: 전체 네트워크 설정과 관련된 항목들이 들어있는 파일이다. 게이트웨이주소, 호스트네임
          등이 기록된다.
(2) 주요항목
   1) NETWORKING = yes|no
       => 네트워킹 사용 유무를 지정한다.
   2) HOSTNAME = 호스트이름
       => 전체도메인이름을 지정을 기본으로 하나 임의로 지정해도 상관없다.
   3) GATEWAY = 게이트웨이 IP
       => 게이트웨이 IP를 지정한다.
   4) GATEWAYDEV=디바이스명
       => GATEWAY로 연결된 디바이스를 지정한다.
   5) FORWARD_IPV4=false/true 또는 yes/no
       => 이 시스템을 게이트웨이나 라우터를 사용할 때는 필요한 항목이다. 구체적으로 ipchains등
         을 이용하여 방화벽이나 인터넷 공유시에는 true나 yes로 값을 지정해야 한다.
   6) NISDOMAIN = NIS 도메인이름
       => NIS 도메인 이름을 지정한다. 또는 "DOMAINNAME= "이라고 해도 된다.
  (3) 사용예
     NETWORKING=yes       // 네트워크를 작동시킨다.
     HOSTNAME=www         // 호스트이름을 나타낸다. 이 곳의 호스트이름은 다음라인의 도메인이름
                           을 포함해야 한다.
     DOMAINNAME=          // NIS서비스 등을 받을 경우 네트워크의 도메인 이름을 나타낸다.
     GATEWAY=192.168.0.1  // 게이트웨이 주소를 나타내며 유동아이피인 경우에는 생략된다.
     GATEWAYDEV=eth0      // 기본 게이트웨이와 연결되어 있는 인터페이스를 지정한다. 생략가능
     FORWARD_IPV4=false   //  참고로 설정값은 true/false, yes/no

3. /etc/sysconfig/network-scripts 디렉토리
(1) 설명: 리눅스에서 네트워크 인터페이스환경설정과 관련된 파일들이 저장되는 디렉토리이다.
(2) 관련파일
   1) /etc/sysconfig/network-scripts/ifcfg-eth0 : 첫번째 이더넷카드의 설정파일이다.
   2) /etc/sysconfig/network-scripts/ifcfg-eth1 : 두번째 이더넷카드의 설정파일이다.
   3) /etc/sysconfig/network-scripts/ifcfg-eth0:0
       => 첫번째 이더넷카드에 추가로 IP주소를 부여할 때 설정하는파일이다.
   4) /etc/sysconfig/network-scripts/ifcfg-eth1-range0
    ㄱ. 설명: 여러 IP를 한번에 부여할 수 있다. 현재 이 파일은 두번째 랜카드에 특정 IP 대역을
             부여하기 위한 파일이다.
    ㄴ. 사용예
       [root@www network-scripts]# cat ifcfg-eth1-range0
       IPADDR_START=192.168.3.1
       IPADDR_END=192.168.3.254
       CLONENUM_START=0
        => eth1 이더넷카드에 192.168.3.1부터 192.168.3.254까지 부여하였다. C클래스 기준으로
          최대 256개를 부여할 수 있다.
(3) ifcfg-ethx의 주요설정
    DEVICE=디바이스명
     => 네트워크 인터페이스 장치명을 나타낸다.
    BOOTPROTO=none|static|dhcp
     => 프로토콜을 나타낸다. 고정아이피인 경우에는 static 유동아이피인 경우에는 'dhcp'가 된다.
    IPADDR=아이피주소
     => 부여받은 IP어드레스를 적으면 된다.
    NETMASK=넷마스크값
     => 부여받은 넷마스크값을 적으면 된다.
    NETWORK=네트워크주소
     => 부여받은 네트워크주소값을 적는다. 보통 부여받은 아이피의 맨 끝자리가 0인 값이다.
    BROADCAST=브로드캐스트주소
     => 부여받은 브로드캐스트값을 적는다. 보통 부여받은 아이피의 맨 끝자리가 255인 값이다.
    GATEWAY=게이트웨이주소
     => 이 파일에 게이트웨이값을 부여하면 /etc/sysconfig/network파일의 설정은 반영되지 않는다.
       가능하면 게이트웨이값 설정은 /etc/sysconfig/network파일에서 하도록 한다.
    USERCTL=yes|no
     => 일반적으로 네트워크인터페이스의 작동 유무 결정은 root만이 가능한데 일반사용자도 작동
       가능하게 해주는 설정이다.
    PEERDNS=yes|no
     => ppp0같은 모뎀을 사용하거나 dhcp를 사용하는 경우에는 이 값을 yes로 설정하는데 DNS서버
       관련파일인 /etc/resolv.conf파일에 설정내용을 자동으로 업데이트한다. 이 값을 no로 하면
       이 파일의 내용을 업데이트하지 않는다.
    ONBOOT=yes|no
     => 부팅시에 해당디바이스 활성화 유무를 결정한다.
(4) 설정예(ifcfg-ethx기준)
    DEVICE=eth0
    BOOTPROTO=static
    IPADDR=192.168.0.2
    NETMASK=255.255.255.0
    NETWORK=192.168.0.0
    BROADCAST=192.168.0.255
    ONBOOT=yes

4. /etc/host.conf
(1) 설명 : DNS 서비스를 제공할 때, 먼저 이 파일을 검사하여 파일의 설정에 따라 서비스한다.
(2) 주요내용
    [root@www root]# cat /etc/host.conf
    order hosts, bind
      => /etc/hosts파일을 먼저 검색 후, /etc/resolv.conf파일 내용을 참조한다.

5. /etc/hosts
(1) 설명: DNS 서버를 사용하기 이전에 사용하던 파일로 IP주소와 호스트이름을 매핑시켜 데이터베
          이스화해서 사용하는 파일이다. 로컬 네트워크상에서 접속을 쉽게하기 위해 등록해서 사용
          할 수 있다.
(2) 구성예 : 3개의 필드로 구성되어 있다.
    IP_Address         전체_도메인명  별칭
(3) 기본구성
   [root@www /root]# cat /etc/hosts
   127.0.0.1           localhost.localdomain localhost
    => 기본 3개의 필드로 구성되어 있다. 현재시스템을 접속할 때 그냥 localhost라고 해도 된다.
(4) 설정예
   203.247.40.252  www.mybestone.com      mybestone
    => 만약 위와 같아면 telnet 203.247.40.252 대신에 telnet mybestone으로 가능하다.

6. /etc/resolv.conf
(1) 설명: 사용하고자 하는 네임서버(DNS)를 설정하는 파일이다. 보통 자신이 속한 도메인을 관장
          하는 DNS서버를 첫번째로 등록하고, 그 외에 잘 알려진 곳의 서버를 등록한다. 3개까지
          설정가능하다.
(2) 설정예
   [root@www /root]# cat /etc/resolv.conf
   search linux.com
   nameserver 168.126.63.1
   nameserver 203.247.32.31
    => search는 기본을 검색하는 도메인을 지정할 때 사용하지만 사용하지 않아도 된다. nameserver
      에 사용하는 네임서버의 IP를 지정하면 된다.

7. /proc/sys/net/ipv4/ip_forward
(1) 설명: IP를 포워딩시킬 때 설정해야 하는 파일이다. 즉, ipchains나 iptables를 통한 인터넷공
          유, NAT(Network Address Translation) 등을 할 때 꼭 설정해야 하는 파일이다.
(2) 설정
   1) 기본값확인
     [root@www root]# cat /proc/sys/net/ipv4/ip_forward
     0
      => 즉 기본값은 IP 포워딩을 허용하지 않는다.
   2) IP 포워딩 허용하기
     [root@www root]# echo 1 > /proc/sys/net/ipv4/ip_forward
       => IP 포워딩을 허용한다.

8. 기타: /etc/rc.d/rc.local파일을 이용한 네트워크 설정
(1) 설명: 이 파일안에 네트워크 명령어로 설정할 경우에는 /etc/sysconfig/network-scripts/ifcfg
          -eth0 파일 설정이 별도로 필요하지 않다.
(2) 설정예: 랜카드 두 개를 장착했을 겨우
   ifconfig eth0 210.123.193.194 netmask 255.255.255.192
   route add -net 210.123.193.192 netmask 255.255.255.192 eth0
   route add default gw 210.123.193.193
   ifconfig eth1 192.168.0.1 netmask 255.255.255.0
   route add -net 192.168.0.0 netmask 255.255.255.0 eth1

9. 일반사용자와 네트워크 인터페이스
(1) 설명: 원칙적으로 네트워크 인터페이스는 루트사용자만 임의로 조작가능하다. 그러나 관련파일
          에서 설정을 하면 일반사용자도 네트워크 인터페이스를 임의로 다운시키거나 업시킬수
          있다.
(2) 설정
   1) 방법: ifcfg-ethx 파일에서 'USERCTL' 이라는 변수를 사용한다.
   2) 사용예
     [posein@www network-scripts]$ cat ifcfg-eth1
     DEVICE=eth1
     BOOTPROTO=static
     BROADCAST=192.168.0.255
     IPADDR=192.168.0.1
     NETMASK=255.255.255.0
     NETWORK=192.168.0.0
     ONBOOT=yes
     USERCTL=yes                // 사용자가 임의로 네트워크 인터페이스를 up/down시킬 수 있다.
   3) 사용명령1
    ㄱ. 설명: ifup/down 스크립트명령을 이용해야 한다.
    ㄴ. 사용법
       ifup 네트워크_인터페이스
       ifdown 네트워크_인터페이스
    ㄷ. 사용예
       [posein@www posein]$ /sbin/ifdown eth1
        => ifup/ifdown 명령은 /sbin디렉토리에 위치하고 있는데 일반사용자는 패스가 설정되어 있
          지 않으므로 절대경로로 입력해야 한다.
   4) 사용명령2
    ㄱ. 설명: usernetctl이라는 명령을 이용할 수도 있다.
    ㄴ. 사용법
       usernetctl 네트워크_인터페이스  [up | down]
    ㄷ. 사용예
       [posein@www posein]$ /usr/sbin/usernetctl eth1 down
        => eth1 인터페이스의 작동을 중지시켰다. 역시 일반사용자가 명령을 실행하려면 패스가 설
          정되어 있지 않으므로 절대경로로 입력해야 한다.

10. Route에 대하여
(1) 기본 Route 설정
   기본 라우트설정 즉 Gateway값을 부여할 수 있는 파일은 /etc/sysconfig/network파일과 /etc/sys
  config/network-scirpts/ifcfg-ethx에서 모두 가능하다. /etc/sysconfig/network파일이 전체 기본
  라우트 파일이고, /etc/sysconfig/network-scripts/ifcfg-ethx에 부여하면 해당 인터페이스의
  게이트값으로 설정된다.
(2) 정적 라우트에 대하여
   1) 설명: 리눅스 커널 2.2이상 버전에서는 자동으로 라우트를 생성해준다. 그러나 특정파일에
           정적 라우트(Static Route)를 정의할 수 있다.
   2) 관련파일 : /etc/sysconfig/static-routes
    ㄱ. 설명: 정적라우트를 정의할 때 사용한다.
    ㄴ. 파일 선언법
       <device> host|net <argument to route command>
    ㄷ. 사용예
      a. eth0 host 192.168.2.2 eth0
        => 호스트 192.168.2.2가 부여된 eth0 을 통하여 라우팅된다.
      b. any host 192.168.2.0 netmask 255.255.255.0 ppp0
        => 192.168.2.0 네트워크 호스트들 ppp0을 통하여 라우팅된다.

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. telnet : 원격서버접속
(1) telnet이란?
    원격의 텔넷 서버에 접속하기 위한 시스템 기본 텔넷 클라이언트  프로그램이다.
(2) 사용법
    telnet [hostname or IP_Address ] (port)
     => 포트를 입력하지 않으면 기본적으로 23번 포트로 연결된다. 왜냐하면 텔넷의 기본포트가
       23번이기 때문이다. (참고로 ftp의 포트는 21번이고, 전체 포트의 확인은 /etc/services에서
       한다.)
(3) 사용예
   1) telnet 192.168.1.100
       => 192.168.1.100 서버로 텔넷서비스를 시도한다.
   2) telnet mybestone.com
       => mybestone.com 이라는 도메인으로 텔넷서비스를 시도한다.
(4) 관련파일
   1) /etc/hosts
    ㄱ. 설명: 인터넷을 이용하기 위해서는 DNS서버를 이용한다. 이 DNS서버보다 먼저 참조하는
              파일이 /etc/hosts파일이다. 이 파일에 해당 IP주소와 간단한 이름을 붙이면 그
              간단한 이름만으로도 텔넷접속이 가능하다. 즉 /etc/hosts 파일에는 주로 DNS를 거치
              지 않고 연결될 수 있는 컴퓨터의 리스트를 나열한다. 어떻게 보면 윈도우의 단축아이
              콘과 비슷하다.
    ㄴ. 사용예
       [root@www root]# cat /etc/hosts
       192.168.3.137      posein
        => telnet posein 이라고 입력하면 해당 IP주소(192.168.3.137)로 telnet 접속된다.
    ㄷ. 참고
       /etc/hosts파일을 열어보면 기본값으로 127.0.0.1 localhost.localdomain localhost라는 설정
      이 있는데 이것은 그냥 나눈다. 127.0.0.1은 자기 자신을 가리키는 내부 IP 주소대역이고
      localhost라는 것은 내부네트워크 테스트등에 유용하게 쓰인다.
   2) /etc/issue, /etc/issue.net
     사용자가 로그인 할 때 'login : ' 이라는 메시지를 보여주기 전에 출력되는 내용을 적는 파일
    이다. /etc/issue는 로컬에서 로그인할 때 보여주는 메시지이고, /etc/issue.net은 telnet을
    통해 네트웍으로 접근해 올 때 보여주는 파일이다.
   3) /etc/motd
     성공적으로 로그인되었을 때 접속된 사용자에게 메시지를 화면에 보여주는 파일이다. 이 파일에
    전달하고자하는 메시지의 내용을 적어넣으면 된다.

2. ftp
(1) 설명 : file transfer protocol의 약자로 원격의 FTP서버에 접속하여 파일을 전송하고 내려받도
           록 해주는 기본 클라이언트 프로그램이다.
(2) 사용법
    ftp [hostname or IP_Address]
(3) 사용예
    ftp 211.36.134.233
   (참고) ftp는 파일을 다운받거나 업할때 쓰이는 프로그램이다. 대부분의 사이트에서 ftp는 계정없
        이도 가능하도록 되어있다. 로그인시 ID와 password를 anonymous(익명이라는 뜻)로 입력하면
        된다. 물론 계정이 있는 경우에는 해당 ID와 패스워드를 입력하면 자신의 홈디렉토리로
        접속한다.
(4) ftp 명령어 : ftp접속후 help 또는 ? 라 입력하면 리스트를 볼 수 있다.
   ls  [dir_name]  : 디렉토리의 리스트를 보여준다. 'dir'명령과 동일하다.
   put [File_name] : 로컬 시스템에 있는 파일을 원격의 FTP서버로 전송한다. send [file_name]과
                    같다.
   get [file_name] : 원격의 ftp서버에 있는 파일을 자신의 로컬시스템으로 가져온다.
                    recv [file_name]과 같다.
   size [File_name] : 원격의 ftp서버에 있는 파일의 크기를 출력한다.
   mkdir [dir_name] : 원격의 ftp서버에 새로운 디렉토리를 생성한다.
   rmdir [dir_name] : 원격의 ftp서버에 있는 디렉토리를 제거한다.
   status : 현재의 상태를 출력한다.
   exit : 현재의 ftp서버에서 빠져 나온다. quit명령과 동일하다.
   mput [file1 file2 ..] : 로컬시스템에 있는 여러개의 파일을 동시에 보낼때 사용한다.
   cd [dir_name] : 디렉토리를 이동한다.
   rename [file1 file2] : 원격의 ftp서버에 있는 file1의 이름을 file2로 바꾼다.
   chmod : 원격의 ftp서버에 있는 파일이나 디렉토리의 퍼미션을 조정한다.
   delete [file_name] : 파일을 삭제한다.
   mdetete [file1 file2 ...] : 여러개의 파일을 동시에 삭제한다.
   close : 현재 연결을 끊는다.
   open IP주소 또는 호스트네임 : 새로운 서버로 연결을 시도한다.
   lcd [dir_name] : 로컬 호스트의 작업디렉토리를 변경한다. 윈도우계열에서는 지원되지 않는다.
(5) 기타명령어
   hash : 파일전송 및 다운시 진행상태를 '#'으로 나타낸다.
   bi : 바이너리모드로 파일을 전송하거나 다운받는다.

3.ping(Packet Internet Groper)
(1) 개요 : 네트워크 연결을 확인할 수 있는 명령어로 원격의 호스트(로컬 호스트 포함)와 서로
           연결이 되어 있는지의 확인여부와 패킷을 보내고 받는 시간이 출력되므로 어느 정도의
           네트워크 장애가 있는지 미루어 짐작할 수 있다.
(2) 사용법
   ping [option] IP_Address or Host_name
(3) option
   -c 개수 : 몇 개의 패킷을 보낼 것인지를 정한다. 이 옵션이 없으면 무한대로 보낸다. 멈추고자
            할 경우에는 [CTRL]+[C]를 누른다.
   -i 초   : 몇 초 간격으로 패킷을 보낼 것인지를 결정한다. 이 옵션이 없으면 기본값인 1초 간격
            으로 보낸다.
   -s 패킷크기 : 보내고자 하는 패킷 크기를 bytes 단위로 설정한다. 이 옵션이 없으면 기본값은
                56bytes이다. 즉 기본 56bytes와 ICMP 헤더데이터인 8bytes를 합쳐서 총 64bytes패
                킷을 원격지 호스트로 보낸다. 만일 1024bytes의 패킷을 보내려고 한다면 '-s 1016
                '으로 설정한다. 최대 값은 헤더데이터인 8bytes를 뺀 65,507bytes이다.
   -w 초 : 패킷을 보내고 몇 초 후에 실행을 멈출 것인지를 설정한다. 만약 -c 옵션과 동시에 사용
          했을 경우 둘 중 먼저 끝나는 값을 반영한다.
   -n : IP 주소만으로 체크한다. DNS서버가 다운되었거나 사용할 수 없을 때 쓴다.
(4) 참고
   1) 원리: ping은 ICMP echo packet을 보내어 상대방에게 응답 패킷을 받아 네트워크의 연결 상태
           를 체크한다. 응답시간, 유실된 패킷 등의 상태를 알 수 있다.
   2) ping에 응답하지 않기
    ㄱ. 설명: /proc/sys/net/ipv4/icmp_echo_ignore_all 의 파일을 vi편집기로 열어보면 0이라는 값
             으로 되어있다. 0값은 ping에 응답을 하고 1로 수정하면 ping에 응답하지 않는다.
    ㄴ. 사용예
       [root@mybestone /root]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
   3) 주의점: ping 명령어를 잘못 사용하면 원격지 호스트에 대한 공격(attack)이 될 수 있으므로
             주의해야 한다.
(5) 사용예
    [posein@www posein]$ ping -c 4 www.yahoo.com
    PING www.yahoo.akadns.net (66.218.71.86) from 210.123.193.194 : 56(84) bytes of data.
    64 bytes from w7.scd.yahoo.com (66.218.71.86): icmp_seq=0 ttl=55 time=167.032 msec
    64 bytes from w7.scd.yahoo.com (66.218.71.86): icmp_seq=1 ttl=55 time=359.955 msec
    64 bytes from w7.scd.yahoo.com (66.218.71.86): icmp_seq=2 ttl=55 time=129.962 msec
    64 bytes from w7.scd.yahoo.com (66.218.71.86): icmp_seq=3 ttl=55 time=169.950 msec
    --- www.yahoo.akadns.net ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max/mdev = 129.962/206.724/359.955/89.862 ms
     => ping은 ICMP 패킷에 64Bytes 메시지를 실어서 보낸다. icmp_seq는 패킷의 순서를 나타내고
       time은 밀리세컨드(1/1000초) 단위로 이 값은 적게 나올 수록 상대편과 가깝거나 네트워크
       부하가 적다는 것을 의미한다.
(6) 특징 : ping이 사용하는 프로토콜은 ICMP(Internet Control Message Protocol)이며, 결과값중
           TTL(Time To Live)은 패킷이 살아서 갈 수 있는 라우팅 최대값이다.

4.ifconfig
(1) 개요 : ifconfig는 interface config의 약자로 네트워크 인터페이스 관련 명령어로 설정하거나
           직접확인하는 명령어이다.
(2) 사용법
   ifconfig [interface] [address] [up/down] [option]
    => (설명)
      interface : NIC(Network Interface Card)를 말하며, 보통 랜(LAN)카드 또는 이더넷(Ethernet)
                 카드라 한다. 리눅스에서는 랜카드가 하나인 경우 eth0으로 설정되며, 만약 두개를
                 장착하면 두번째 랜카드는 eth1이 된다.
      address : 보통 IP가 부여된다.
      up/down : 네트워크를 활성화/비활성화 시킨다.
      option : netmask, broadcast등을 설정할 수 있다.
(3) 사용예
   1) ethernet카드에 부여된 IP확인
     ifconfig [인터페이스이름]
       => 현재 네트워크 인터페이스에 설정되어 있는 값을 알 수 있다. 만약 인터페이스 이름을
         입력하지 않으면 모든 인터페이스의 값을 출력한다. ifconfig -a 한것과 같다.
     예) ifconfig 
          => 현재 설정된 모든 이더넷카드의 IP설정을 보여준다.
         ifconfig eth0
          =>  첫번째 이더넷카드인 eth0의 IP설정을 보여준다.
   2) ethernet카드의 작동을 중지시키거나 활성화시킨다.
     ifconfig [인터페이스 이름] [up | down]
       => 특정 네트워크 인터페이스를 활성화(up)하거나 비활성화(down)시킨다.
     예) ifconfig eth0 down
           => eth0카드의 작동을 중지시킨다. ifdown eth0과 같다.
         ifconfig eth0 up
           => eth0카드의 작동을 활성화한다. ifup eth0과 같다.
   3) ethernet카드에 IP주소, 넷마스크값, 브로드캐스트값을 부여한다.
     ifconfig [인터페이스이름] [IP주소] [기타설정] [up | down] : 네트워크의 설정
     예) ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up
          => 첫번째 랜카드인 eth0에 IP주소를 192.168.0.2를 부여하고 Netmask는 255.255.255.0
            Broadcast는 192.168.0.255를 부여하고 활성화시킨다.
         ifconfig eth0 192.168.0.2 up
          => 첫번째 랜카드인 eth0에 192.168.0.2를 부여하고 활성화시킨다. 보통 IP주소만 부여하
            면 Netmask등은 자동설정된다. 하지만 기본 클래스인 A,B,C 클래스가 아닌 다른 서브넷
            를 사용할 경우에는 꼭 부여해야 한다.
         ifconfig eth0 192.168.3.1 netmask 255.255.255.128 up
(4) ifconfig의 항목 설명
   1) Link encap : Ehternet => 장치에 사용중인 프로토콜이 Ethernet임을 나타낸다.
   2) Hwaddr : 이더넷 카드에 있는 고유 하드웨어 주소로, 48비트로 되어 있다. 보통 MAC(Media
              Address Control)주소라고도 한다.
   3) inet addr : IP주소를 나타낸다.
   4) Bcast : 브로드 캐스트 주소를 나타낸다.
   5) Mask : 넷마스크(Netmask)값을 나타낸다.
   6) UP : 인터페이스가 활성화되어 있음을 나타낸다.
   7) BROADCAST : 브로드 캐스트를 사용한다.
   8) RUNNING : 동작중임을 뜻한다.
   9) MULTICAST : 멀티 캐스트를 사용한다.
   10) MTU : Maximum Transmission Unit의 약자로 한번에 전송할 수 있는 최대 패킷의 크기를
            말한다.
   11) Metric : 라우팅할 때 참조되는 거리로 로컬인 경우 값이 1이 된다.
   12) RX/TX : 받은 패킷/전송한 패킷의 총 개수(packets), 그 중 에러가 발생한 패킷의 수는
              errors에, 그냥 버린 패킷의 수는 dropped, 손실된 패킷의 개수는 overruns에 표시
              된다.
   13) collisions : 충돌이 발생한 패킷의 수
   14) Interrupt : Ethernet 카드가 현재 사용중인 IRQ
   15) Base address : Ethernet 카드가 현재 사용중인 주소
(5) IP Alias 사용하기
   1) 설명: Ethernet카드에 IP를 하나만 부여하는 것이 아니라 여러 개의 IP를 부여할 수 있다. 이
           러한 기능을 IP Alias라고 한다. 첫번째 Ethernet카드에 추가로 IP를 부여할 경우에는
           eth0:0, eth0:1 등으로 표기하여 부여하면 된다.
   2) 방법
     [root@www root]# ifconfig eth0:0 203.247.xxx.xxx
(6) 참고
   1) ifconfig명령으로 설정한 것은 시스템을 재부팅하면 그 정보가 사라진다. 따라서, 지속적으로
     유지하려면 /etc/rc.d/rc.local파일에 위의 설정을 입력해 놓거나 /etc/sysconfig/network-scr
     ipts/ifcfg-eth0파일에 설정해 놓아야 한다.
   2) ifconfig 명령으로 스니핑상태를 알 수 있다.
    ㄱ. 정상적인 상태
       [root@www /root]# ifconfig eth0
       eth0      Link encap:Ethernet  HWaddr 00:C1:26:03:65:08
                 inet addr:203.247.40.252  Bcast:203.247.40.255  Mask:255.255.255.0
                 UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                 RX packets:250100 errors:2 dropped:0 overruns:0 frame:0
                 TX packets:7404 errors:0 dropped:0 overruns:0 carrier:0
                 collisions:394 txqueuelen:100
                 Interrupt:5 Base address:0xf000
    ㄴ. 스니핑상태
       [root@www /root]# ifconfig eth0
       eth0      Link encap:Ethernet  HWaddr 00:C1:26:03:65:08
                 inet addr:203.247.40.252  Bcast:203.247.40.255  Mask:255.255.255.0
                 UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1  // PROMISC상태
                 RX packets:250100 errors:2 dropped:0 overruns:0 frame:0
                 TX packets:7404 errors:0 dropped:0 overruns:0 carrier:0
                 collisions:394 txqueuelen:100
                 Interrupt:5 Base address:0xf000

5.라우팅과 route 명령어
(1) 라우팅의 개요
   TCP/IP 프로토콜에서는 패킷들이 어디서부터 어디로 보내져야 하는지 결정이 되어야 하는데 이
  경로를 결정하는 것이 라우팅이다. 이러한 경로를 적어놓은 것을 라우팅 테이블이라고 한다.
(2) 라우팅의 종류
   1) 정적라우팅(Static Routing): 라우팅 경로를 시스템 관리자가 직접 적어주는 방식으로 일반적
                                 으로 사용하는 방법이다.
   2) 동적라우팅(Dynamic Routing)
    ㄱ. 설명: 라우팅 경로를 수동으로 작성하는 것이 아니라 라우팅 프로토콜을 사용해서 경로를
             동적으로 변화시키는 방법이다. 이것은 주로 라우터와 라우터 사이에 사용된다. 리눅스
             시스템을 라우터로 사용하지 않는다면 동적라우팅을 설정할 필요는 없다.
    ㄴ. 동적라우팅을 사용하는 프로그램의 종류
       a. routed: RIP(Routing Information  Protocol)을 사용하는 동적 라우팅 데몬프로그램이다.
       b. gated: OSPF(Open Short Path First)프로토콜을 사용하는 동적 라우팅 데몬프로그램이다.
(3) 라우팅관련 명령어: route
   1) 설명: route 명령어는 현재 사용하고 있는 리눅스 시스템의 라우팅 테이블이 어떻게 구성되어
           있는지 알 수 있다. 또한, 라우팅 정보를 추가,삭제할 수 있다.
   2) 사용법
     route [add/del] [-destination] [netmask 넷마스트값] [gw 게이트웨이값] [[dev] [NIC]]
      => 설명
      add/del : 라우팅 테이블에 추가(add)하거나 삭제(del)한다.
      -destination : 호스트주소(-host), 네트워크 주소(-net), default를 지정한다.
      netmask : 넷마스크값을 지정한다. 일반적으로 ifconfig명령으로 가능하므로 생략한다.
      gw : 호스트가 사용할 게이트웨이주소를 지정한다.
(4) 사용예
   1) 라우팅 테이블 확인
     [root@mybestone ~]# route
     Kernel IP routing table
     Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
     192.168.1.0     *               255.255.255.0   U     0      0        0 eth1
     203.247.40.0    *               255.255.255.0   U     0      0        0 eth0
     127.0.0.0       *               255.0.0.0       U     0      0        0 lo
     default         203.247.40.1    0.0.0.0         UG    0      0        0 eth0
      => 현재 설정되어 있는 라우팅 테이블을 보여준다. netstat -r 명령과 같다.
        (항목설명)
          - Destination: 목적지 네트워크 주소를 나타낸다. default로 표시되는 것은 목적지 네트
                        워크로 등록되지 않은 다른 모든 네트워크 주소를 처리하는 곳이다. 네트워
                        크 주소는 IP주소할당법을 따른다. 시스템의 주소가 192.168.1.1이고 넷마
                        스크가 255.255.255.0이면 C클래스이므로 네트워크 주소는 192.168.1.0 이
                        된다.
          - Gateway: 목적지 주소로 보내기 위한 게이트웨이 주소를 가리킨다. 보통 목적지가 자신
                    의 네트워크 인터페이스와 직접 연결되어 있는 것이면 '*'로 표시되고 그러지
                    않으면 게이트웨이의 IP주소가 입력된다.
          - Genmask: 목적지의 네트워크 주소를 알아내기 위한 넷마스크이다. IP주소에 Netmask를
                    AND연산자로 계산하면 목적지의 네트워크 주소를 알 수 있다.
          - Flags: 목적지 네트워크와의 연결 상태를 보여준다. 상태로 표시되는 기호는 다음과 같
                  다.
            U: 인터페이스가 사용되고 있음을 나타낸다.
            G: 라우트가 게이트웨이로 사용되고 있음을 나타낸다.
            H: 오직 단독 호스트만이 라우트를 거쳐서 접근할 수 있다. 이러한 경우의 루프백 엔트
              리는 127.0.0.1이 된다.
            D: 테이블 엔트리가 설정된 경우, ICMP 리다이렉트 메시지로 운영된다.
            M: 테이블 엔트리가 설정된 경우, ICMP 리다이렉트 메시지에 의해 수정되고 있음을 나타
              낸다.
          - Metric: 목적지 네트워크와의 거리(Hop count)를 나타낸다. 직접 연결되어 있으면 0이고
                   라우터를 하나 거칠때마다 1씩 증가한다.
          - Ref/Use: 다른 라우터가 목적지로 가기 위해 참조한 횟수와 사용한 횟수를 나타낸다.
          - Iface: 목적지 네트워크와 연결된 인터페이스를 가리킨다.
   2) 라우팅 정보 삭제
     route del -net [IP_Address] netmask [netmask값] dev [Net_interface]
      예) route del -net 192.168.3.0 netmask 255.255.255.0
   3) 라우팅 정보 추가
     route add -net [IP_Address] netmask [netmask값] dev [Net_interface]
      예) route add -net 192.168.3.128 netmask 255.255.255.192 dev eth0
   4) 기본 게이트웨이 삭제
     route del default gw [IP_Address] dev [Net_interface]
      예) route del default gw 192.168.3.1
   5) 기본 게이트웨이 추가
     route add default gw [IP_Address] dev [Net_interface]
      예) route add default gw 192.168.3.254 eth0

(주의) route명령도 시스템이 재부팅되면 그 정보는 모두 사라진다. 따라서 /etc/sysconfig/network
       와 /etc/sysconfig/network-scripts/ifcfg-eth0 파일을 직접수정해야 한다.

6. netstat
(1) 개요 : 네트워크의 연결 상태를 확인하는 명령
(2) 사용법
    netstat [option] [address family options]
(3) option
   -a : 연결된 모든 소켓을 출력
   -n : 기호화된 호스트나 포트이름, 유저이름 대신에 숫자로 표시한다. 예를 들면 www은 80으로
       표기한다.
   -p : 소켓에 대한 PID/프로그램을 출력
   -r : 라우팅 테이블을 출력
   -i : 인터페이스 테이블을 출력
   -s : SNMP(Simple Network Managemanet Protocol)와 같은 네트워크 통계를 출력
   -c : 계속되는 리스트를 출력
   -t : tcp를 이용하여 접속한 리스트를 출력한다.
   -u : udp를 이용하여 접속한 리스트를 출력한다.
(4)address family options
   1) 형태 : --protocol (inet, unix, ipx, ax25등)
   2) 사용법
      netstat --inet
(5)사용예
   1) netstat -anp
      => 연결된 모든 소켓의 PID및 프로그램을 출력하되 호스트, 포트이름등을 숫자로 출력한다.
   2) netstat -r
      => 라우팅 테이블에 대한 정보를 출력한다. route 명령의 결과와 유사하다.
   3) netstat -t
      => tcp로 접속한 리스트를 출력한다.
   4) netstat -inet -p
      => 인터넷으로 접속한 상태를 보여주고 프로그램과 PID를 출력한다.
(6) netstat명령의 결과에서 state부분에 나타나는 연결상태
   LISTEN : 서버의 데몬이 떠서 접속 요청을 기다리는 상태
   SYS-SENT : 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태
   SYN_RECEIVED : 서버의 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만,
                 아직 클라이언트에게 확인 메시지는 받지 않는 상태
   ESTABLISHED : 3Way-Handshaking이 완료된 후 서로 연결된 상태
   FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2 : 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청
                                     하고 회신을 받아 종료하는 과정의 상태
   CLOSING : 흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태
   TIME-WAIT : 연결은 종료되었지만 분실되었을지 모를 느린 세그멘트 위해 당분간 소켓을 열어놓은
              상태
   CLOSED : 완전히 종료된 상태

7. traceroute
(1) 개요 : 특정 호스트 또는 연결된 노드를 알아보는 명령어로 특히 라우팅에 어떤 장애가 있을
           경우 그 위치를 파악할 수 있다. 윈도우계열의 tracert 명령과 유사하다. 루트권한자만
           사용가능한 명령이다.
(2) 사용법
   traceroute [Host_name or IP_Address]
(3) 사용예
   [root@www root]# traceroute www.yahoo.co.kr
   traceroute to yahoo.co.kr (211.32.119.151), 30 hops max, 38 byte packets
    1  203.247.40.1 (203.247.40.1)  1.692 ms  1.688 ms  1.663 ms
    2  203.247.37.2 (203.247.37.2)  0.656 ms  0.493 ms  0.456 ms
    3  yahoo.co.kr (211.32.119.151)  0.593 ms  0.854 ms  0.592 ms
     => 각 3개의 TTL값을 전달하여 시간을 보여준다.
(4) 참고
   1) traceroute 동작원리
    ㄱ. 1.1.1.1에서 목적지 10.10.10.10에 대한 TTL=1인 ICMP echo request를 생성하고 전달한다.
    ㄴ. 첫번째 ip네트워크장비가 TTL을 1로 감소시키고 TTL=0이 되므로 TTL이 모자라 더이상 packet
       전달할 수 없다는 ICMP time exceed를 1.1.1.1에게 전달하여 delay를 알아낸다.
    ㄷ. 1.1.1.1에서는 TTL=2인 ICMP echo request를 보낸다. 목적지까지 가는 경로상의 두번째 장비
       가 ICMP time exceed를 발생시키고 1.1.1.1에서는 이것으로 두번째 장비까지의 delay를 알아
       낸다.
    ㄹ. 이 같은 방법을 연속적으로 하여 해당 목적지까지 계속 보낸다.
   2) traceroute time out : *
    ㄱ. 종종 목적지 중간경로에 있는 장비에서 timeout현상(*로 표기됨)이 발생하는데 이것이 sourc
       e와 destination간의 네트웍상태를 정확히 나타내는 것은 아니다.
    ㄴ. 몇몇 IP네트워크 장비에서 ICMP packet이 아닌 다른 일반적인 packet에 보다 많은 시간을
       할애하도록 설계된 경우가 있는데, 해당 IP네트워크장비가 매우 바쁠경우에 TTL=0인 packet에
       대해서 ICMP time exceed등을 생성하고 전달하는 작업을 하지 않는 경우가 많다.
    ㄷ. 다른 경우는 중간경로에 있는 IP네트워크 장비가 아예 ICMP echo reply 혹은 ICMP time exce
       ed를 발생하지 않는 경우인데 주로 이러한 장비들은 Firewall인 경우가 많다. 그러나 Firewal
       l이라고 해서 ICMP echo reply, ICMP time exceed를 생성하지 않는 것이 아니며, 관리자의 설
       정에 따라 좌우된다.
    ㄹ. *의 결과는 traceroute수행시 중간경로상의 timeout현상에 대해서는 무시해도 좋으며, 최종
       목적지와 ping상태가 좋은지를 파악하는 것이 보다 중요하다.

8. hostname
(1) 개요 : 호스트네임을 화면에 출력한다. 명령어는 /bin/hostname에 있다.
(2) 사용법
   1) hostname 출력
     hostname [option]
      *option
       -v : 호스트네임을 출력한다.
       -d : DNS 도메인 네임을 출력한다.
           예)eles.co.kr로 등록했으면 eles.co.kr로 값이 나타난다.
       -f : 완전한 호스트네임(FQDN)을 출력한다.
           예)www.eles.co.kr
       -a : 호스트 네임에 대한 Alias이름을 출력한다.
       -i : 호스트 네임에 대한 IP주소를 출력한다.
   2) hostname 바꾸기
    예) hostname new_hostname
(3) 사용예
   1) [posein@www posein]$ hostname
      www
   2) [posein@www posein]$ hostname -i
      203.247.xxx.xxx
(4) 참고
   1) 설명: hostname 명령어를 이용하여 hostname을 변경한 경우 재부팅을 하면 변경전의 값으로 돌
           아간다. 그러므로, 완전한 변경을 하려면 다음과 같은 절차를 거쳐야 한다.
   2) 방법
    ㄱ. /etc/sysconfig/network 파일에서 'HOSTNAME'이라는 항목의 값을 변경한다.
    ㄴ. /etc/rc.d/init.d/network restart하거나 재부팅한다.

9. host
(1) 개요 : 원격의 호스트에 대한 정보를 출력
(2) 사용법
   host [option] 호스트명
(3) option
   -a: -a: 원격호스트에 모든정보(A, MX, NS 등)를 보여준다.
   -v: 좀 더 자세히 출력한다.
(4) 사용예
   1) [root@www root]# host kr.yahoo.com
        => 기본 IP주소에 대한 정보를 보여준다.
   2) [root@www root]# host -a daum.net
        => 모든 정보를 보여준다.

10. nslookup
(1) 개요 : DNS를 조회하는 명령이다. 바로 값을 DNS서버를 조회할 수도 있고, 여러 도메인을
           조회할 경우에는 대화형으로 조회할 수도 있다.
(2) 사용법
   nslookup [option] [hostname]
(3) option
   -type=mx : mx설정관련 부분을 출력한다.
(4) 사용예
   1) nslookup => 현재서버의 DNS이름과 IP를 출력하고, '>'와 함께 대화형모드로 접속한다.
   2) nslookup yahoo.co.kr => 현재서버의 DNS이름과 IP출력과 함께 yahoo.co.kr의 사이트의 정보도
                            함께 출력한다.
   3) nslookup -type=mx yahoo.co.kr => yahoo.co.kr의 mx(메일설정관련)에 대한 정보도 출력한다.
   4) 대화형모드의 사용 : 아무 옵션이나 도메인 없이 그냥 nslookup이라는 명령만 내리면 '>'와
                         함께 대화형 모드로 접속한다. 여기에서는 여러 도메인의 정보를 조회할
                         경우에 편리하다. 조회후에는 exit를 치면 셀프롬프트상태로 빠져나온다.
    ㄱ. > server yahoo.co.kr => 대화형모드 접속후에는 'server'라는 입력한 후 도메인네임을 적
                                 어주면 정보가 나타난다.
    ㄴ. > set type=mx
        > mybestone.com
        Server:         203.247.40.252
        Address:        203.247.40.252#53

        mybestone.com   mail exchanger = 10 mybestone.com.
         => 특정도메인의 메일서버를 확인한다.
    ㄷ. > set type=ns
        > mybestone.com
        Server:         203.247.40.252
        Address:        203.247.40.252#53

        mybestone.com   nameserver = ns.mybestone.com.
         => 특정도메인의 네임서버를 확인한다.
    ㄹ. > exit
         => nslookup 대화형모드를 중단한다. 

11. dig
(1) 설명: 도메인명(FQDN:Fully Qualified Domain Name)으로 정보를 알아볼 수 있는 명령이다.
(2) 사용법
   dig 도메인명 [type]
    => [type] 에는 MX, A, ANY 등 DNS 서버설정에 사용하는 값을 지정할 수 있다.
(3) 사용예
   1) [posein@www posein]$ dig www.daum.net

      ; <<>> DiG 9.2.1 <<>> www.daum.net
      ;; global options:  printcmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47916
      ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 2, ADDITIONAL: 0

      ;; QUESTION SECTION:
      ;www.daum.net.                  IN      A

      ;; ANSWER SECTION:
      www.daum.net.           86400   IN      A       211.233.28.114
      www.daum.net.           86400   IN      A       211.233.28.115
      www.daum.net.           86400   IN      A       211.233.28.116
      www.daum.net.           86400   IN      A       211.32.117.21
      www.daum.net.           86400   IN      A       211.233.28.112
      www.daum.net.           86400   IN      A       211.233.28.113

      ;; AUTHORITY SECTION:
      daum.net.               86400   IN      NS      ns2.daum.net.
      daum.net.               86400   IN      NS      ns.daum.net.
  
      ;; Query time: 159 msec
      ;; SERVER: 203.247.40.252#53(203.247.40.252)
      ;; WHEN: Wed Jan 29 09:40:20 2003
      ;; MSG SIZE  rcvd: 161
   2) [posein@www posein]$ dig www.daum.net mx
        => 메일서버 세팅인 MX 설정관련 부분만 보여준다.

(참고) ARP(Address Resolution Protocol)
(1) 주소결정 프로토콜이라고 한다.
(2) 하드웨어주소(NIC 주소, MAC 주소라고도 함)를 IP주소(논리주소)와 연계시키기 위한 프로토콜.
(3) 48bit인 하드웨어 주소를 32bit인 IP주소와 매핑시킨다.
(4) 목적 호스트의 IP주소를 알고 있는데, 물리주소(MAC address)를 모르는 경우에 사용한다.

12. arp
(1) 개요 : ARP(Address Resolution Protocol)캐쉬를 설정하는 것으로 ARP캐쉬는 현재 접속되어
           있는 32비트 IP주소를 하드웨어주소(MAC address)로 바꾸어서 기억하는 곳이다. 이
           ARP캐쉬를 보면 현재 들어와 있는 호스트를 알아낼 수 있다.약 15분정도 쓰이지 않은
           MAC주소는 ARP캐쉬에서 제거된다.
(2) 사용법
   arp [option]
(3) option
   -a : ARP캐쉬에 기록되어 있는 것 중 특정한 호스트의 정보를 보여준다.
   -d : ARP캐쉬에서 해당 호스트를 제거한다.
   -n : 결과를 도메인 주소대신에 32bit IP주소로 출력한다.
(4) 사용예
   1) [root@www /root]# arp
      AddressHWtypeHWaddress    Flags Mask  Iface        Flags Mask            Iface
      cslee.hannam.ac.kr     ether   00:A0:C9:8E:8C:4C   C                     eth0
      192.168.0.3            ether   00:60:97:AA:FF:71   C                     eth1
      203.247.40.1           ether   00:E0:16:7C:63:8C   C                     eth0
   2) [root@www /root]# arp -n
      Address                 HWtype  HWaddress           Flags Mask            Iface
      203.247.40.164          ether   00:A0:C9:8E:8C:4C   C                     eth0
      192.168.0.3             ether   00:60:97:AA:FF:71   C                     eth1
      203.247.40.1            ether   00:E0:16:7C:63:8C   C                     eth0

13. 네트워크 설정관련 유틸리티
(1) 개요
  ifconfig, route, netstat, ping, traceroute 등은 리눅스를 포함한 모든 유닉스계열에서 공통적으
로 사용되는 명령어이다. linuxconf(레드햇리눅스 7.1 이전에 사용)는 리눅스에서만 실행되며,
netconfig는 레드햇리눅스에서 text(콘솔)모드에서 사용되고, netcfg와 netconf는 레드햇리눅스의
X-window에서 실행된다. 물론 netconf명령은 콘솔모드에서도 실행되지만 X-window만큼 원할하지 못
하다.
(2) 관련유틸리티
   1) netcofig
    ㄱ. 설명: 콘솔에서 손쉽게 IP주소, 넷마스크, 게이트웨이, 네임서버 주소를 입력할 수 있다.
             리눅스를 텍스트모드로 설치할 때 나타나는 설정유틸리티로 kudzu라는 데몬이 부팅시
             에 이용하는 유틸리티이기도 하다.
    ㄴ. 사용법
       netconfig [option] [Network_interface]
    ㄷ. option
       --device : 이더넷카드 디바이스명을 지정한다.
    ㄹ. 사용예
      a. [root@www root]# netconfig
          => 기본 eth0의 네트웍을 설정한다.
      b. [root@www root]# netconfig --device eth1
          => eth1의 네트웍을 설정한다.

   2) netconf : linuxconf에 포함되어 있는 모듈로 네트워크에 관련된 모든 설정을 할 수 있다.
               (레드햇 7.x버전이하만 가능하고 레드햇 8 버전 이후에서는 지원하지 않는다.)
   3) netcfg : X-window에서 지원하는 네트워크 유틸리티이다. 이 유틸리티를 사용하면
             /etc/sysconfig/network파일과 /etc/sysconfig/network-scripts/ifcfg-eth#파일에
             기록되고, 네임서버는 /etc/resolv.conf에 기록된다. (레드햇 7.x버전이하만 가능하고
             레드햇 8 이후버전에서는 지원하지 않는다.)
   4) redhat-config-network
    ㄱ. 설명: X-window인 GNOME 기반 네트워크 유틸리티로 레드햇 8 버전에서 지원한다. neat라고
             입력해도 된다.
    ㄴ. 사용법
       redhat-config-network
       neat
    ㄷ. 참고
       이 툴을 사용하면 /etc/sysconfig/networking이라는 디렉토리안에 설정과 관련된 디렉토리 및
      파일들이 생성된다. 또한 /etc/sysconfig/network-scripts 디렉토리안의 설정과 같은 파일들이
     /etc/sysconfig/networking/profiles 디렉토리안에 같이 생성된다.

14. 기타 네트워크관련 유틸리티
(1) mii-tool
   1) 설명: Media Independent Interface(MII) Tool의 약자로 보통 네트워크 인터페이스의 상태를
           체크하고 설정하는 유틸리티이다.
   2) 사용법
     mii-tool [option] [Network_interface]
   3) option
     -v : 상태정보를 더 자세히 보여준다. (--verbose)
     -r : 자동인식을 위해 재시작한다. (--restart)
     -F : 강제로 설정한다. (--force)
   4) 사용예
    ㄱ. [root@www root]# mii-tool
        eth0: autonegotiation failed, link ok
        eth1: negotiated 100baseTx-FD, link ok
         => 현재 설정된 이더넷카드의 정보를 보여준다.
    ㄴ. [root@www root]# mii-tool -v
        eth0: autonegotiation failed, link ok
          product info: vendor 00:00:00, model 0 rev 0
          basic mode:   autonegotiation enabled
          basic status: autonegotiation complete, link ok
          capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
          advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
        eth1: negotiated 100baseTx-FD, link ok
          product info: vendor 00:00:00, model 0 rev 0
          basic mode:   autonegotiation enabled
          basic status: autonegotiation complete, link ok
          capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
          advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
          link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
           => 이더넷카드의 정보를 좀 더 자세히 보여준다.
    ㄷ. [root@www root]# mii-tool -v --force 100baseTx-FD eth1
          => 자동인식한 설정을 없애고, 강제적으로 설정을 한다.
    ㄹ. [root@www root]# mii-tool -r
          => 자동으로 인식하도록 한다.
(2) mtr
   1) 설명: 네트워크 진단 도구로 traceroute 명령과 유사하며 각각의 라우터에 패킷을 보내 확인
           한다.
   2) 사용법
     mtr 도메인명
   3) 사용예
     mtr www.yahoo.co.kr

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. 리눅스 네트워크의 개요
(1) 개요: 리눅스에서 네트워크 서비스를 사용하려면 가장 먼저 네트워크 하드웨어를 설치해야 하고
          다음으로 네트워크 프로토콜, 네트워크 서비스 프로그램 순으로 설치해야 한다.
(2) 순서
   1) 네트워크 하드웨어의 설치: Ethernet Card나 모뎀, 시리얼/패러럴 케이블 등의 설치가 해당
                               된다.
   2) 네트워크 프로토콜의 설치: TCP/IP 프로토콜이나 SLIP, PPP등을 설치해야 한다. 현재 배포판
                               리눅스에서는 이러한 프로토콜이 기본적으로 제공되므로 따로 설치
                               할 필요는 없다.
   3) 네트워크 서비스 프로그램의 설치: 실제 사용할 네트워크 서비스 프로그램을 설치한다. 웹서비
                                      스를 위한 웹서버나 메일서버등이 이에 해당된다.

2. 네트워크 하드웨어 설치
(1) 리눅스에서 지원하는 네트워크 하드웨어
   1) 설명: 리눅스는 다양한 네트워크 하드웨어를 지원한다. 일반 이더넷카드, 모뎀이외에 ISDN,
           AX.25, ATM등도 지원한다.
   2) 대표적인 네트워크 하드웨어
    ㄱ. lo : 로컬 루프백(Local loop back) 인터페이스를 가리킨다. 물리적으로 존재하는 인터페이
            스가 아니라 가상으로 만들어진 것으로 네트워크 카드의 유무와 상관없이 항상 컴퓨터
            자신을 가리키며 IP는 127.0.0.1을 갖는다. 리눅스는 자기자신 IP에게 PING이 안되므로
            자신에게 PING 테스트등 네트워크 디버깅을 할 때 쓰인다.
    ㄴ. ethx: 일반적으로 사용하는 이더넷카드의 인터페이스를 나타낸다. 랜카드는 여러장을 동시에
             장착할 수 있으며 그것은 각각 번호로 구분한다. 즉 첫번째 랜카드는 eth0, 두번째 랜
             카드는 eth1 등이 된다.
    ㄷ. dlx: D-Link DE-600 포켓 어댑터 시리즈의 어댑터 인터페이스이다. 이것은 패러럴 포트를
            통해 구동되는 DE-600에서만 사용된다.
    ㄹ. slx: SLIP 인터페이스를 나타낸다.
    ㅁ. pppx: PPP인터페이스를 나타낸다. 가정에서 사용하는 모뎀으로 네트워크를 사용할 때 사용
            하는 인터페이스이다.
    ㅂ. plipx: 패러럴 케이블을 사용하는 패러럴 라인 인터페이스를 나타낸다.
(2) 이더넷(Ethernet Card) 설치하기
   1) 설명: 현재 나오는 리눅스에서는 대부분의 PCI 랜카드는 자동으로 인식하여 설치해주기 때문
           에 별도의 설정이 필요가 없다. 구형 ISA 랜카드인 경우에는 자동으로 인식이 안 될수도
           있다. 이 경우에는 관련 모듈을 추가하여 올려줘야 한다.
   2) 사용예: ne2000호환 ISA방식의 LAN Card설치하기
    ㄱ. 시스템의 하드웨어적 설정 : 마더보드의 CMOS에서 "PNP OS Installed : NO"로 설정한다.
                                   그리고, 사용하고자 하는 IRQ관련부분을 ISA로 놓는다.
    ㄴ. LAN Card의 PNP기능 제거
      점퍼로 PNP 기능을 제거할 수 있는 경우 제거하고, 점퍼가 없는 경우에는 프로그램으로 제거해
     야 한다. NE2000관련된 소프트웨어가 몇가지 되므로 알맞는 프로그램을 다운받는다. 도스용 부
     팅디스켓을 만들어 부팅디스켓에 넣은 뒤 PNP기능을 제거하고, 사용하지 않는 IO 어드레스와
     IRQ로 세팅을 한다. 메이커 계열인 Realtek 8019는 "rset8019.exe"를 사용하면 되고, Intel
     EthernetExpress Pro/10 ISA는 "e10disk.exe"를 사용하면 된다. 참고로 리눅스에서 빈 IO 어드
     레스와 IRQ의 확인은 각각 "/proc/ioports"와 "/proc/interrupts"이다.
    ㄷ. 모듈올린다.
      a. 첫번째 방법 : modprobe 명령이용
         modprobe ne io=0x300 irq=3 => io값과 irq값은 시스템에 따라 달라질 수 있다.
      b. 두번째 방법 : /etc/modules.conf 이용하여 다음과 같이 삽입
        alias eth0 ne
        options ne io=0x300 irq=3
    ㄹ. 해당 ip를 부여한다.
   (참고)/etc/rc.d/rc.local파일이용하는 법 : 맨 마지막 부분에 다음과 같이 삽입한다.
      modprobe ne io=0x300 irq=3
      ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up
      route add -net 192.168.0.0 netmask 255.255.255.0 eth0
      route add default gw 192.168.0.1 eth0

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. 프로토콜(Protocol)이란?
사람은 언어를 사용한다. 한국사람은 한국어를 사용하고 미국사람은 영어를 사용한다. 미리 정해진
특별한 규칙에 의해 서로 의사소통을 한다. 프토토콜이란 바로 컴퓨터간의 통신을 위해 미리 정해진
특별한 규칙이자 규약을 말한다.

2. TCP/IP란?
(1) 개요 : TCP/IP는 컴퓨터의 기종에 관계없이 정보교환이 가능케 해주는 것으로 인터넷에서 정보
           전송을 위해 사용하는 프로토콜(통신규약)이다. TCP(Transmission Control Protocol)와
           IP(Internet Protocol)라는 두개의 프로토콜의 이름을 따서 만든 것이다. 인터넷에서
           사용하는 대부분의 통신은 이 두개의 프로토콜을 사용하여 서로 정보를 교환한다. 그러나
           인터넷에서 사용하는 프로토콜은 TCP/IP만 사용하는 것은 아니며, 다른 프로토콜도 사용
           한다.
(2) TCP와 IP 프로토콜의 역할
   1) TCP프로토콜
     ㄱ. IP프로토콜에 의해서 만들어진 패킷들의 전송 흐름 부분을 담당한다.
     ㄴ. 패킷이 목적지 주소에 올바른 순서로 도달하도록 제어한다.
     ㄷ. 패킷이 중간에 유실되지 않도록 한다.
   2) IP프로토콜
     ㄱ. 보내고자 하는 자료를 패킷으로 쪼갠다.
     ㄴ. 목적지 주소를 지정한다.
     ㄷ. 쪼개진 패킷을 목적지 주소로 운반한다.
(3) TCP/IP 프로토콜과 OSI 7 레이어 구조 비교
   

TCP/IP 프로토콜 구조 OSI 7 레이어 구조
APPLICATION APPLICATION
PRESENTATION
SESSION
TRANSPORT TRANSPORT
INTERNET NETWORK
NETWORK INTERFACE DATA LINK
PHYSICAL


(4) TCP/IP 프로토콜 계층설명
   1) Application Layer(응용계층)
    사용자 응용 프로그램으로부터 요청을 받아들여서 이를 적절한 메시지로 변환하고 하위 계층인
   Transport Layer로 전달한다. 이 계층에서 지원하는 프로토콜에는 FTP, NFS, POP, SMTP, TELNET,
   SNMP, DNS, HTTP, NNTP(뉴스송수신) 등이 있다.
   2) Transport Layer(트랜스포트 계층)
    ㄱ. 개요 : 이 계층의 역할은 Application Layer로 부터 받은 데이터를 세그먼트(Segment)형태로
             만들어 네트워크를 통해 상대방까지 전달하는 역할을 한다. TCP와 UDP 두가지 프로토콜
             이 제공된다.
    ㄴ. TCP(Transmission Control Protocol)
      연결지향(Connection Oriented)전송 프로토콜로 세그먼트가 상대측까지 제대로 전달되었는지
     응답(Ack)을 주고 받음으로서 점검한다. 즉 TCP는 IP에 의해 전달되는 패킷의 오류를 검사하고
     재전송을 요구하는 등의 보다 정교한 제어를 담당한다. TCP는 패킷을 전송할 두 지점을 네트워
     크상에 있는 최단 경로로 찾아서 1:1로 직접 연결한 뒤에 패킷을 주고 받기 때문에 전송과 오류
     수정에 있어 신뢰도가 높다. 두 지점을 직접 제어하기 때문에 다른 프로토콜에 비해 상대적으로
     많은 전송 시간이 필요하다. 그러나 안전성과 신뢰성이 뛰어나 사용자 데이터 전송, 대용량 전
     송에 이용된다.
    ㄷ. UDP(User Datagram Protocol)
      비연결(Connectionless)전송 프로토콜로 세그먼트를 보내기만하고 Ack를 주고 받지 않는다.
     따라서 제대로 전달되었는지 확인하지 않는 특성을 갖고 있고, 오류 수정을 하지 않는다. 오류
     수정 등의 기능은 없지만 TCP에 비해 속도가 빠르며, 직접 연결에 따른 네트워크 부하를 줄일
     수 있다. 보통 시스템 내부 메시지 전달과 데이터 전달, 소규모 데이터 전송에 이용된다.
   3) Internet Layer(인터넷 계층)
    ㄱ. 개요 : Transport계층에서 받은 패킷을 목적지까지 효율적으로 전달하는 역할을 한다. 패킷
              이 목적지에 제대로 도착되었는지, 데이터의 손상 여부에 대해서는 상위 계층에서 처
              리한다. 이 계층에 해당하는 프로토콜은 ICMP, IP, ARP가 있다.
    ㄴ. ICMP(Internet Control Message Protocol)
       메시지에 대한 오류 보고와 이에 대한 피드백을 원래 호스트에 보고하는 역할을 수행한다.
      ICMP제어 메시지는 IP패킷의 형태로 전달된다.
    ㄷ. IP(Internet Protocol)
       데이터 세그먼트를 패킷으로 만들어 이를 목적지로 전달하는 역할을 수행한다. 그러나 전달
      여부를 보장하지는 않는다. 라우터(Router)는 Internet Layer에 원격 네트워크간 패킷의 전달
      을 담당하는 장치로서 최적 경로를 결정하고 결정된 경로로 패킷을 전달하는 역할을 한다.
    ㄷ. ARP(Address Resolusion Protocol) : 주소찾기 프로토콜
       IP 프로토콜은 하드웨어 주소(Physical 계층에서 MAC Address라고도 하며 Lan Card에 설정에
      있는 고유한 값)와 논리적인 할당에 의한 IP주소를 갖는다. 개별 호스트는 비록 독자의 IP주소
      를 할당받지만 실제의 데이터 전달은 하드웨어 주소를 알아야 한다. 따라서, 이 두 가지의 주
      소를 적절히 매칭시킬 필요가 있는데 동적으로 특정 프로토콜에 의해서 필요한 때마다 목적지
      호스트의 하드웨어 주소를 찾는 역할을 한다.
   4) Network Interface layer(네트워크 인터페이스 계층)
     이더넷 카드 등으로 연결된 물리적인 네트워크를 의미하며, 프레임을 물리적인 회선에 올리거나
    내려받는 역할을 한다. 즉, 보내는 쪽은 상위계층에서 받은 패킷을 프레임으로 만들어서 물리적
    인 회선에 올리게 되고, 받는 쪽은 필요한 데이터를 추출하여 조합한 프레임을 패킷으로 변환
    하여 상위계층으로 전달한다.

3. IP 주소
(1) 개요 : 사람으로 말하면 주민등록번호에 해당하는 것으로 하나의 IP주소는 전세계적으로
           고유하다. 고유한 만큼 IP주소는 완전히 개인것이 아니다. IP주소는 사용 후 해당
           ISP업체에 반납해야 한다.
(2) IP주소의 구성
   1) 구성
     IP주소 = 네트워크 부분주소 + 호스트 부분 주소
   2) 특징 : 32비트의 숫자로 8비트 4부분으로 구성되어 있으며, 각 부분은 .(dot)으로 구분한다.
            각 부분은 십진수 숫자로 0-255 까지의 숫자를 갖는다.

    (참고1) 8비트는 다음과 같다.
        2726252423222120
        으로 구성되어 있으므로 한 자리가 가질수 있는 최대의 수는 255이다.

   3) IP주소 예
     192.168.0.2
      => 이 주소 방식을 IPv4(IP version 4)라고 하며, 위 예에서 192.168.0.0 네트워크에 속해
        있는 주소라고 할 때, 192.168.0은 네트워크 ID를 나타내는 부분이고 마지막 2는 호스트
        ID를 나타낸다. IP주소의 첫번째 자리는 주소의 클래스를 구분하는 자리로, A,B,C,D,E 5개
        의 클래스가 있다. A,B,C 클래스는 일반적인 목적으로 사용되고, 나머지는 특수 목적으로
        사용된다.
(3) IP 클래스
   1) A 클래스(N.H.H.H)
     IP 주소 첫번째 자리의 1bit가 '0'이며, 네트워크 ID는 0~127까지 나타낼 수 있다. 속해있는
    IP주소는 0.0.0.0 ~ 127.255.255.255까지 가능하다. 이 중 0.0.0.0과 127.0.0.0는 각각 기본
    라우터와 루프백 네트워크 주소를 나타내는 특수용도로 사용되므로 실질적으로 사용 가능한
    네트워크 주소는 1 ~ 126 까지이다.
   2) B 클래스(N.N.H.H)
     IP 첫번째 자리의 2bit가 '10'이며 네트워크 주소는 128.0 ~ 191.255 까지 사용한다.
   3) C 클래스(N.N.N.H)
     IP주소 첫번째 자리의 3bit가 '110'이며, 네트워크 주소는 192.0.0 ~ 223.255.255 이다.
   4) D 클래스
     IP주소 첫번째 자리의 4bit가 '1110'이며, 다중 방송 통신(MULTICAST)용으로 사용된다.
   5) E 클래스
     연구용으로 사용된다. 보통 E 클래스를 D 클래스와 같이 묶어 D클래스라고 통칭한다.
   6) 참고
     특정한 네트워크 클래스라도 맨 처음과 마지막IP주소는 네트워크 인터페이스를 나타내는데 사용
    하지 않고 특수한 용도로 사용한다. 맨 마지막이 0인 네트워크 주소는 네트워크 전체를 나타내는
    네트워크 주소이고, 제일마지막이 255인 주소는 브로드캐스트 주소로 사용하기 때문에 네트워크
    인터페이스를 나타내는 주소로 사용하지 않는다.

(참고2) 클래스별 IP 네트워크 전체 범위
클래스 IP 네트워크 전체 범위
A 클래스 0.0.0.0 127.255.255.255
B 클래스 128.0.0.0 191.255.255.255
C 클래스 192.0.0.0 223.255.255.255
D 클래스 224.0.0.0 255.255.255.255


(4) 기타 특수한 IP
   1) 내부 IP : 직접 인터넷에 연결되지 않고 내부 네트워크를 구축할 경우에 사용하는 IP이다.
     -A 클래스(1개의 네트워크)      : 10.0.0.0 ~  10.255.255.255
     -B 클래스(16개의 네트워크)   : 172.16.0.0 ~ 172.31.255.255
     -C 클래스(256개의 네트워크) : 192.168.0.0 ~ 192.168.255.255
   2) 루프백 IP : 루프백네트워크라 하면 127.0.0.0 네트워크이다. 관련파일은 /etc/hosts이다.
     -A 클래스 : 127.0.0.0 ~ 127.255.255.255


4. 넷마스크(netmask)
(1) 개요 : 서브 넷마스크(sub netmask) 또는 줄여서 서브넷이라고 한다. 서브넷을 구성하는 이유는
           체계적인 네트워크의 구성과 트래픽장애를 제거하기 위해서이다.
(2) 네트워크주소와 브로드캐스트
   1) 네트워크주소
    ㄱ. 설명: 네트워크 주소는 서브 네트워크에 속한 모든 IP 호스트를 말할 때 사용한다. 일반적
             으로 서브 네트워크 주소는 최하위(맨위쪽) IP주소가 네트워크 주소이다.
    ㄴ. 클래스와 호스트의 갯수
     a. C클래스: 하나의 C클래스로 하나의 네트워크를 구성했을 경우, 네트워크 주소가 192.168.2.0
                이라고 표현하면 192.168.2.0부터 192.168.2.255까지의 모든 IP 호스트(256개)를
                말한다.
     b. B클래스: B클래스 네트워크일 경우에 172.16.0.0으로 표현하면 172.16.0.0부터 172.16.255.
                255까지의 모든 호스트를 말하면 호스트의 개수는 256*256인 65,536개이다.
     c. A클래스: A클래스 네트워크인 경우에 10.0.0.0으로 표현하면 10.0.0.0 부터 10.255.255.255
                까지의 모든 호스트를 말하며 갯수는 256*256*256인 16,777,216개의 호스트가 이에
                해당된다.
    ㄷ. 특징: 넷마스크값과 브로드캐스드값이 주어지면 네트워크주소는 자동으로 계산할 수 있다.
   2) 브로드캐스트
    ㄱ. 설명: 브로드캐스트는 넷마스크로 나누어진 지역 서브 네트워크의 모든 IP호스트가 듣는
             특별한 주소이다. 일반적 브로드캐스트 주소는 서브 네트워크의 최상위(맨뒤쪽)의 IP
             주소가 이에 해당된다.
    ㄴ. 특징: 넷마스크값과 네트워크 주소가 주어지면 브로드캐스트 주소는 자동으로 계산할 수
             있다.
   3) 구성예
     IP 주소          : 192.168.2.20
     넷마스크 주소    : 255.255.255.0
     네트워크 주소    : 192.168.2.0
     브로드캐스트주소 : 192.168.2.255
(3) 서브넷마스크와 네트워크 계산
   1) 각 클래스별 IP주소를 기준으로 넷마스크, 브로드캐스트, 네트워크주소 분석
    ㄱ. IP주소
       - A클래스인 경우: 10.2.1.3
       - B클래스인 경우: 172.16.1.3
       - C클래스인 경우: 192.168.1.3
    ㄴ. 넷마스크
       - 하나의 A클래스 네트워크일 경우: 255.0.0.0
       - 하나의 B클래스 네트워크일 경우: 255.255.0.0
       - 하나의 C클래스 네트워크일 경우: 255.255.255.0
    ㄷ. 네트워크주소
       - 하나의 A클래스 네트워크일 경우: 10.0.0.0
       - 하나의 B클래스 네트워크일 경우: 172.16.0.0
       - 하나의 C클래스 네트워크일 경우: 192.168.1.0
    ㄹ. 브로드캐스트 주소
       - 하나의 A클래스 네트워크일 경우: 10.255.255.255
       - 하나의 B클래스 네트워크일 경우: 172.16.255.255
       - 하나의 C클래스 네트워크일 경우: 192.168.1.255

   2) 하나의 C클래스의 넷마스크값이 255.255.255.0인 경우
192.168.3.0
네트워크주소
192.168.3.1
192.168.3.2
.
.
.
192.168.3.253
192.168.3.254
실제 네트워크 인터페이스에 사용할 수 있는 IP주소
(호스트 부분의 IP주소를 의미)로 총
254개를 사용할 수 있다.
192.168.3.255
브로드캐스트


   3) 하나의 C클래스를 두 개의 서브넷으로 나눌 경우(서브넷마스크: 255.255.255.128)
192.168.3.0
네트워크주소
서브넷 1
(128개)
총256개
사용가능한 IP호스트는
총 252개이다.
192.168.3.1
192.168.3.2
.
.
.
192.168.3.125
192.168.3.126
사용가능한
IP호스트
(126개)
192.168.3.127
브로드캐스트주소
192.168.3.128
네트워크주소
서브넷 2
(128개)
192.168.3.129
192.168.3.130
.
.
.
192.168.3.253
192.168.3.254
사용가능한
IP호스트
(126개)
192.168.3.255
브로드캐스트


   4) 하나의 C클래스를 네개의 서브넷으로 나눌 경우(서브 넷마스크: 255.255.255.192)
192.168.3.0
네트워크주소
서브넷1
(64개)
총 256개
사용 가능한IP 호스트는
총 248개
192.168.3.1
192.168.3.2
.
.
.
192.168.3.61
192.168.3.62
사용가능한
IP 호스트
(62개)
192.168.3.63
브로드캐스트주소
192.168.3.64
네트워크주소
서브넷2
(64개)
192.168.3.65
192.168.3.66
.
.
.
192.168.3.125
192.168.3.126
사용가능한
IP 호스트
(62개)
192.168.3.128
브로드캐스트주소
192.168.3.129
네트워크주소
서브넷3
(64개)
192.168.3.130
192.168.3.131
.
.
.
192.168.3.189
192.168.3.190
사용가능한
IP 호스트
(62개)
192.168.3.191
브로드캐스트주소
192.168.3.192
네트워크주소
서브넷1
(64개)
192.168.3.193
192.168.3.194
.
.
.
192.168.3.253
192.168.3.254
사용가능한
IP 호스트
(62개)
192.168.3.255
브로드캐스트주소



5. DNS
(1) 개요 : Domain Name System의 약어로 도메인 네임을 IP주소와 매칭시켜 클라이언트에게
          IP주소를 알려주는 역할을 하는 서버를 말한다. 처음 인터넷이 생겼을 때는 IP주소를
          사용해 통신을 했는데, IP주소는 기억하기 어려웠다. 그래서, 등장한 것이 영문이름이고
          이것을 관리하는것이 DNS 서버이다.
(2) DNS의 역사
   Domain Name System의 역사는 인터넷에서 컴퓨터에 이름 대 주소 매핑 서비스를 제공하기 위해
  개발되었다. 1987년 DNS가 소개되기 전까지는 주로 hosts파일이라는 정적 공유 파일을 사용하여
  친숙한 컴퓨터의 이름을 IP주소에 매핑하는 방법을 사용하였다. 초기 인터넷은 규모가 작았기
  때문에 중앙에서 관리하는 한 파일을 사용해서 매핑하는 데 충분했으며 이 파일은 FTP를 이용하여
  인터넷에 연결된 곳에 게시되고 다운로드되었다. 각 인터넷 사이트는 주기적으로 이 Hosts파일
  복사본을 업데이트했고 업데이트된 Hosts파일의 버전이 게시되어 네트워크 변경 내용을 반영하였다.
  인터넷을 사용하는 컴퓨터의 수가 증가함에 따라 한 기관이 중앙에서 모든 인터넷 호스트를 단일
  Hosts파일에서 관리하는 것이 불가능해졌다. 또한 파일이 점차 커지면서 모든 사이트에 업데이트된
  최신 상태의 파일을 유지하고 배포하기가 어려워졌다. 그래서, 등장한 것이 Domain Name System
  이다.
(3) Domain Name의 이해
   1) IP주소 : 컴퓨터가 이해하는 숫자로된 컴퓨터의 주소를 말한다.
   .   예) 168.126.63.1
   2) Domain Name : 인간이 이해하는 영문으로 된 주소를 말한다.
       예) www.yahoo.com
   3) DNS 서비스 : IP주소를 도메인네임과 상호변경시켜주는 서비스를 말한다.
(4) Domain Name의 구성 : 마침표(.)로 각각의 레이블을 구분하며 각 레이블은 2개 이상이 존재하며
                         여러단계로 구분되어 진다.
   1) 최상위 도메인 : 이름을 사용하는 국가/지역 또는 조직의 종류를 나타내는 데 사용된다.
     예) .com, .kr 등
   2) 둘째 수준 도메인 : 인터넷에서 사용하기 위해 개인 또는 조직에 등록되는 이름.
     예) yahoo.com, kisa.or.kr 등
   3) 하위 도메인 : 등록된 둘째 수준 도메인이름에서 파생된 추가 이름으로 조직이 만들 수 있는
                   이름이다. 즉, 조직의 DNS이름 트리를 확장하여 부서나 지역으로 분리할 때 추가
                   하는 이름이 포함된다.
     예)kr.yahoo.com등
   4) 호스트 또는 리소스 이름 : 호스트 또는 리소스를 식별하기 위한 이름으로 보통 컴퓨터의
                               이름이 등록된다. 사용용도에 따라 www, ftp, home등이 사용된다.
    예)www.yahoo.com등
(5) DNS가 제공하는 기능
   1) 도메인 네임과 자원레코드에 대한 정보를 저장하고 있다. 트리구조화된 네임존과 네임과
     관련된 정보를 저장하고 있다. 개념적으로 도메인트리의 각 노드와 HOST는 한세트의 정보에
     이름을 부여하고, 질의작업은 특정세트로부터 고유의 정보유형을 추출한다. 인터넷은 도메인
     네임을 사용하여 호스트들을 식별하는데, 주소자원에 대한 질의를 답변하기 위해 관련 정보들을
     담고 있다.
   2) 네임서버의 기능을 제공한다.
   3) 클라이언트 요청에 응답하여 네임 서버들로부터 정보를 추출하는 기능을 제공한다.
(6) DNS의 설정
   DNS는 도메인과 IP주소를 매칭시키는 역할을 하므로, 어느 DNS주소를 설정해도 상관이 없다. 특정
  DNS가 다운됐을 경우를 대비해 두세곳을 설정해두는것이 좋다. PING테스트를 해서 속도가 빠른
  곳으로 설정한다. 일반적인 경우라면 DNS는 자신이 속한 네트워크에 있는 것으로 설정하는 것이
  좋다. 로컬네트워크가 대체적으로 외부망보다 빠르기 때문이다. 물론 현재 리눅스서버로 DNS서버를
  구축했을 경우에는 자기 자신의 IP가 Name Server의 역할을 한다.
(7) 관련파일 : 현재 리눅스시스템에서 DNS서버의 설정확인은 /etc/resolv.conf에서 확인한다.
   예) /etc/resolv.conf
      nameserver    168.126.63.1                             //한국통신 DNS
      nameserver    210.94.0.7                               //하나로통신 DNS

6. PPP설정과 사용
(1) PPP(Point-to-Point Protocol)
   1) 설명: 모뎀을 이용하여 인터넷 전용선에 연결된 것처럼 인터넷을 사용하는 프로토콜을 말한다.
           PPP의 목적은 호스트가 전화접속을 이용하여 네트워크, 즉 네트워크나 인터넷에 접속할
           수 있도록 하는 것이다. TCP/IP에 대한 초기의 라인프로토콜은 SLIP(Serial Line Inter
           net Protocol)이었다.
   2) 모뎀설정: modeltool & minicom
    ㄱ. 연결: PPP연결은 /usr/sbin/pppd와 /usr/sbin/chat을 사용해서 이루어진다.
       a. pppd: 명령 자체로 모뎀을 제어할 수 있지만, 실제 다이얼링이나 로그인을 할 수 없다.
       b. chat: 모뎀에 명령을 내리고, 필요한 로그인 정보를 제공한다.
   3) 리눅스에서 설정단계
    ㄱ. PPP지원을 커널에 컴파일해 넣기: Kernel에 PPP지원 추가, 재 컴파일
    ㄴ. 인터넷 서비스 업체에서 정보받기: 전화번호, 유동 IP, DNS IP, 비밀번호 및 인증프로토콜
                                        (PAP)
    ㄷ. 모뎀과 직렬포트설정: IRQ 설정
    ㄹ. DNS 설정
       - /etc/resolv.conf (DNS 지정)
       - /etc/host.conf
    ㅁ. /etc/ppp/options 파일은 pppd를 실행할 때 프롬프트에서 입력할 옵션을 대신 처리하도록
       하는데 사용한다.
        예) /dev/modem (모뎀 포트)
            crtscts (하드웨어 흐름제어방식인 RTS/CTS를 사용한다.)
            defaultroute (연결된 ISP의 router로 패킷을 전송한다.)
    ㅂ. kernel에서 모뎀과 직렬 포트의 IRQ 설정이 제대로 되어 있는지 확인한다.
   4) PPP관련 설정파일: 참고로 버전에 따라 존재하지 않을 수도 있다.
    ㄱ. /usr/sbin/ppp-on: PPP연결할 때 사용하는 스크립트
    ㄴ. /usr/sbin/ppp-off: PPP연결을 끊을 때 사용하는 스크립트
    ㄷ. /usr/ppp/ppp-on-dialer
(2) 리눅스의 PPP기반에서 사용하는 인증 프로토콜
   1) PAP(Password Authenication Protocol)
   2) CHAP(Challenge Handshake Authentication Protocol)

7. 주요서비스와 포트번호
(1) 개요 : Transport Layer는 Application Layer에 데이터를 전송하기 위해서 포트번호를 사용한
           다. 이러한 포트들을 사용하여 네트워크상의 다른 호스트와 동시에 세션을 지원할 수
           있게 된다. /etc/services파일에 각 네트워크 서비스와 일반적으로 그 서비스에 사용되는
           포트 번호를 지정하고 있다.
(2) 주요 서비스와 포트번호
   21    FTP       File Transfer Protocol
   23    Telnet
   25    SMTP      Simple Mail Transfer Protocol
   53    DNS       Domain Name System
   80    www       World Wide Web
   110   POP3      Post Office Protocol 3
   119   NNTP      Network News Transfer Protocol
   143   IMAP      Internet Mail Access Protocol
   161   SNMP      Simple Network Management Protocol
Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. LAN(Local Area Network)
(1) LAN이란?
   LAN은 하나의 사무실, 집과 같은 소규모의 한정된 지역에서 컴퓨터와 컴퓨터 사이에 데이터를
  주고 받을 수 있는 네트워크를 말한다.
(2) LAN의 형태
   1) 클라이언트/서버(Client/Server) 방식
     클라이언트/서버 방식은 네트워크를 일반적으로 사용하고 있는 PC를 클라이언트라고 하고, 네트
    워크를 감독하고 클라이언트의 요구사항을 처리하는 컴퓨터인 서버로 구분하여 사용하는 방식을
    말한다. 즉 네트워크에 연결된 컴퓨터들의 역할이 다르다. 이런 방식은 서버가 항상 네트워크를
    감시하고 관리하므로 신뢰성이 높은 편이다.
     그러나 아주 많은 클라이언트가 존재하면 서버에 무리가 가게 되어 성능이 떨어질 우려가 있으
    므로 이러한 경우에는 여러 대의 서버를 둘 수도 있다. 네트워크를 활용하기 위한 역할을 분담
    하는 것이 클라이언트/서버 방식의 특징이다.
   2) 피어 투 피어(Peer-to-Peer) 방식
     피어 투 피어 방식은 네트워크에 연결된 컴퓨터들이 모두 동등한 지위를 가진다. 모든 PC가
    서버/클라이언트의 구분이 없고 필요한 상황에 따라 클라이언트와 서버의 역할을 바꿔가며 수행
    을 한다.
(3) LAN 구성장비
   1) Ethernet
    ㄱ. 설명
       이더넷(Ethernet)은 근거리 컴퓨터들의 통신을 위해 사용되는 네트워크 매체의 일종이다. 이
      더넷 외에 일반 전화선 모뎀, ADSL 모뎀, CATV모뎀, ISDN모뎀등도 쓰인다. 이더넷카드는 Local
      Area Network를 연결할 때 주로 쓰이기 때문에 랜(LAN)카드라고 불리운다. 이더넷은 10Mbps와
      100Mbps가 주로 쓰이며 기가바이트급도 있다.
    ㄴ. 이더넷의 종류
       이더넷에는 먼저 속도로 분류하면 10Mbps급과 100Mbps급이 있지만, 현재 대부분은 10/100Mbps
      를 모두 지원하는 랜카드가 출시된다. 물론 100Mbps의 랜카드가 장착되어 있어도 허브등이 10M
      bps로 작동한다면 10Mbps로 작동한다. 버스 방식은 ISA 방식과 PCI방식이 있는 데 PCI는 32bit
      로 작동하고, ISA방식은 16bit로 작동하므로 PCI방식이 더 낫다. 또한 PCI방식의 랜카드인 경
      우에는 IRQ와 IO 주소를 하드웨어에서 자동으로 설정해주므로 설치도 쉽다. 유명한 벤더(Vend
      or)에는 3COM, INTEL, Realtek, 그리고 ISA방식으로 유명한 NE2000호환등이 있다.
   2) 케이블(Cable): 실제적으로 신호를 전송하게 되는 물리적인 전송매체이다. 이더넷을 연결하는
                    케이블에는 보통 BNC케이블과 UTP케이블 이 2가지가 주로 사용된다. 요즘은 거
                    의 UTP케이블만 사용된다.
    ㄱ. BNC케이블
       보통 동축케이블(Coaxial Cable)이라고 불리우는 BNC케이블은 가정에 들어오는 케이블TV의 선
      이나 안테나선을 생각하면 된다. 이 케이블은 UTP케이블에 비해 잡음에 매우 강하다. 그 이유
      는 안쪽의 중심 도체를 절연체로 감싸고 그 위에 다시 외부도체를 넣고 그것을 다시 외부 피복
      으로 감싸는 방식으로 케이블을 구성하였기 때문이다. 그 외의 장점으로는 대역폭(신호를 한번
      에 보낼 수 있는 크기 혹은 용량)이 넓어서 여러 채널을 동시에 수용할 수 있고 빠르게 전송할
      수 있다. 그러나 케이블을 여러 겹으로 제작하다보니 무거워지고 두께가 굵어져 가격이 비싸다.
       컴퓨터 네트워크 구축할 때도 BNC케이블의 구조를 보면 선 가운데에 굵은 구리선 하나가 있으
      며, 연결되는 컴퓨터는 하나의 선으로 계속 이어나간다. 잇는 과정에서는 T커넥터를 사용하며,
      선의 양쪽끝에는 터미네이터라는 장치도 연결해야 된다. BNC케이블은 UTP처럼 허브라는 장치없
      이 여러 대의 컴퓨터를 연결할 수는 있지만, 한 컴퓨터에 문제가 생기면 전체 네트워크에 영향
      을 받을 수가 있어서 그리 안전하지 못하다. 거리는 180m에서 500m정도까지 연결가능하다.
    ㄴ. UTP(Unshieled Twisted Pair)
       트위스티드 페어 케이블(Twisted Pair Cable)은 두 개의 선이 서로 꼬여진 형태로 만들어졌는
      데 그 이유는 전자신호가 변형되는 것을 줄이기 위해서이다. 이 케이블은 가격이 저렴하고 PC
      의 네트워크 구성에 적합하지만 잡음에 약하고 단독으로 연결할 때 약 100여미터밖에 전송할
      수 없다. 트위스트 페어 케이블에는 두가지 종류가 있는데 하나는 STP(Shielded Twisted Pair)
      와 UTP(Unshielded Twisted Pair)가 있다. STP는 안쪽의 꼬인선과 바깥쪽의 피복사이에 차폐물
      을 입힌 것을 말하고 UTP는 입히지 않는 것을 말한다. 일반적으로 사용하는 케이블은 UTP이다.
       UTP케이블은 전화선보다 약간 두껍게 피복된 피복선이다. 안에는 8개의 회선이 있으면 연결단
      자는 RJ45라 불리우며 전화선단자보다 약간 크다. 보통 허브라는 연결 매체를 통해 각 컴퓨터
      마나 하나의 선으로 연결되기 때문에 한 곳에 연결 문제가 발생하더라도 다른 컴퓨터는 전혀
      지장을 받지 않는다. 케이블에는 10Mbps인 Category3와 100Mbps인 Category5가 있는데, 요즘은
      대부분 Category5이다. 8개의 내부선은 연결 방법에 따라 배열은 약간 달리하는데 용도에 따른
      배열은 다음과 같다.
     

허브와 PC의연결(일반적인 연결방법) 흰주,주,흰녹,파,흰파,녹,흰갈,갈
PC대PC 2대의 연결, 허브와 허브 UPLINK로 연결 흰녹,녹,흰주,파,흰파,주,흰갈,갈


       위의 표에서 첫줄 배열이 100Mbps권장 배열이다. 8가닥중 실질적으로 쓰이는 것은 1,2,3,6번
      인 흰주, 주, 흰녹, 녹이다. 일반적인 연결은 양쪽 모두 표의 첫줄 배열대로 연결하면 되고,
      허브없이 케이블만으로 PC 2대를 연결할 경우에는 한쪽의 배열만 표의 아래줄처럼 하면 된다.
      배열을 모두 외우지 말고 일반적인 배열만 외우고, 실질적인 배열이 1,2,3,6번이므로 이것을
      다시 1,2,3,4로 할 경우에 1번과 3번, 2번과 4번의 위치를 바꾸면 표 아래줄의 배열이 나오게
      된다. UTP방식의 전달거리는 약 100M정도이다.
    ㄷ. 광 케이블(Optical Fiber Cable)
       광케이블은 매우 가는 유리섬유를 이용해 정보를 보낸다. 넓은 대역폭(3.3GHZ)를 갖고 전송속
      도도 매우 빠르고(1Gbps), 오류도 적다. 또한 빛을 이용해 정보를 보내기 때문에 전기적인 간
      섭을 받지 않는다. 머리카락 굵기만큼의 유리섬유를 이용하여 정보를 보내는 것으로 광섬유의
      한쪽 끝에는 레이저나 LED같은 광원이 위치하고 다른 한쪽에는 광탐지기가 위치한다. 케이블의
      크기가 상대적으로 작고 가볍지만, 설치시 고도의 기술이 요구된다.
   3) 허브(HUB)
     LAN에서 기본적으로 사용되는 것으로 네트워크 케이블을 하나로 집중시켜 주는 장비를 말한다.
    대부분 하나의 사무실에 네트워크 케이블을 하나로 모아서 외부와 연결시켜 줌으로써 배선을 간
    편하게 해주고 전송 중에 문제가 생기는 신호를 복원해 주며, 신호가 충돌되는 것을 검사하는 기
    능 등을 수행한다.
   4) 라우터
     라우터는 랜과 랜을 연결해주는 망 연동장치이다. 대개 외부로 연결되는 선로와 내부의 네트워크
    를 연결하여 인터넷이 가능하도록 해준다. 그러나 소규모의 망에서 사용하기에는 비용부담이 큰
    단점이 있어서, 집처럼 작은 네트워크에서는 소프트웨어적으로 작동하는 라우터를 많이 사용한다.
    소프트웨어 라우터는 네트워크에 연결된 컴퓨터 중 한대에 프로그램을 인스톨하여 외부망과 내부
    의 네트워크를 연결해준다.

2. WAN(Wide Area Network)
WAN은 먼 거리 네트워크와 통신하기 위한 기술을 말한다. LAN과 LAN을 상호 연결하기 위해 라우터들
이 데이터를 전송하고 수신하기 위한 네트워크를 구성하는데 이것을 WAN이라 한다.
Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. 네트워크란?
네트워크란 간단히 설명하면 여러 대의 컴퓨터를 연결하여 정보를 서로 공유할 수 있도록 만든 체계
를 말한다. 집에 컴퓨터가 두 대가 있어서 자료를 공유하거나 또는 게임을 하기 위해서 서로 연결하
였다면 그것도 일종의 네트워크이다.

2. 네트워크를 사용하는 이유
(1) 자료를 손쉽게 얻거나 보내기 위해서 사용한다.
(2) 프린터나 스캐너같은 주변기기를 여러 대의 컴퓨터에서 공유하기 위해 사용한다.
(3) 인터넷 회선이 하나인 경우, 공유하여 여러 대의 컴퓨터가 인터넷을 이용하기 위해서 사용한다.
(4) 웹서비스와 메일서비스같은 여러 인터넷 서비스를 할 수 있다.
(5) 자신의 중요한 데이터를 다른 컴퓨터에 백업할 수 있기 때문에 데이터보관을 위해서도 사용한다.
(6) 인터넷에 연결되어 있는 경우 전자우편을 통해 전세계에 있는 사람들과 각종 문서나 자료를 손
    쉽게 주고 받을 수 있다.

3. 네트워크의 역사
네트워크의 역사는 인터넷의 역사와 직접적으로 연결된다. 인터넷도 처음엔 컴퓨터 두 대를 네트워
크로 구성하면서 시작했다. 처음 네트워크가 만들어진 것은 1960년대 후반 미국의 ARPA(The Advanced
Reseach Projects Agency)라는 기구이다. 미,소 냉전시대에 탄생된 ARPA는 소련이 세계 최초 인공위
성인 스프투니크를 발사하자 이에 자극을 받아 창설된 기구이다. ARPA는 전쟁이 일어나 도시가 파괴
되어도 두절되지 않는 통신망을 구축하는 연구를 하였다.
이 연구의 결과로 탄생한 것이 현재 인터넷의 모태가 된 ARPANET이다. 이 ARPANET이 일반연구소와
대학에 공개되면서 군사적인 목적보다는 연구목적으로 더 많이 사용하게 되었다. 그리고 1970년대
중반에 군사적인 목적의 네트워크와 일반 네트워크를 분리시킴으로써 자유로운 네트워크 구성의 토대
를 마련하게 되었다.
인터넷이라는 용어가 처음 나온 것은 1980년대 초반으로 이때부터 인터넷이 급격한 성장을 하기 시
작했다. 그러나, 그 때는 일반에 잘 알려지지 않았었고 주로 대학과 연구소의 학술망, 연구망들이 인
터넷을 구성하고 있었다.
1990년대가 되자 인터넷은 일반에 널리 공개되었고, 기업에서 관심을 가지기 시작해서, 인터넷을 사
용하는 인구가 폭발적으로 증가하였다. 1990년대 후반에는 다양한 인터넷서비스가 생겨났고 멀티미디
어를 더욱 빠르고 다양하게 전송할 수 있는 기술이 등장하였다.
현재 인터넷의 사용자는 계속 증가하여 전 세계적으로 약 15억의 이용자가 있으며, 국내에서 1000만
명에 육박하고 있다. 앞으로도 인터넷 사용자는 계속 증가할 것이고 그에 따른 요구 또한 다양해 질
것이므로 아직도 많은 발전 가능성을 열어놓고 있다.

4. 인터넷 서비스의 종류
(1) 개요: 인터넷에 관련된 서비스가 다양하지만 그 중 대표적인 몇가지에 대해서만 소개하겠다.
(2) 종류
   1) WWW(World Wide Web)
     가장 보편적으로 사용하는 인터넷 정보 제공 방식이다. 인터넷 익스플로어나 네스케이프같은
    웹브라우저를 이용하여 문자, 그림, 음성, 동영상 등 여러 형태의 정보를 검색할 수 있다. 인터
    넷 주소를 이용하여 각종 데이터를 하나의 통합된 문서 형태로 제공한다.
     WWW는 웹서버라는 컴퓨터에 정보를 저장해놓고, 외부에서 웹브라우저를 사용하여 정보를 요구
    하는 컴퓨터에 각종 정보를 제공한다. 웹브라우저가 정보를 요구하는 방식은 인터넷주소(URL:
    Uniform Resource Locators)를 불러내서 사용하는데, 일반적으로 사용하는
    http://www.yahoo.co.kr(야후코리아)같은 인터넷 주소를 의미한다.
   2) FTP(File Transfer Protocol)
     FTP란 파일을 서로 주고 받게 해주는 프로토콜을 말한다. FTP는 다른 컴퓨터에 저장되어 있는
    자료를 가장 빠르게 가져올 수 있는 방법중에 하나이다. FTP를 사용하면 다른 컴퓨터의 파일을
    자신의 컴퓨터로 그대로 복사할 수 있다.
     FTP를 사용하려면 먼저 FTP서버라 불리우는 FTP지원 사이트의 주소를 알아야 하고, FTP서버에
    접속하기 위한 FTP프로그램도 설치해야 한다. FTP사이트는 보통 일반인에게 공개되어 있고, 이
    러한 사이트는 익명이라는 의미의 anonymous 계정으로 로그인할 수 있다. 그러나, 사용자의 ID
    와 패스워드를 묻는 경우에는 모두 입력해야 접속할 수 있다.
   3) TELNET
     텔넷은 자신이 사용권한을 가지고 있다는 전제하에 다른 사람의 호스트 컴퓨터를 원격지에서
    접근하여 작업을 수행할 수 있도록 해주는 방법이다. 이 방법 역시 이용하려면 텔넷을 지원하는
    서버가 존재해야 하며, 텔넷접속을 위한 프로그램도 설치해야 한다.
   4) 전자우편
     인터넷을 통해 편지를 주고 받을 수 있는 것을 말한다. 서로의 전자우편주소(이름@회사주소,
   
posein@korea.com)를 알아야 가능하고 문자나 음성, 그림, 동영상 등 어떤 형태의 편지도 보낼
    수 있다.
     아웃룩 익스프레스나 넷스케이프 메신저 서비스 등으로 전자 우편을 보낼 수 있으며 전자우편
    은 전 세계 어느 곳이라도 보낼 수 있다.

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. 소스를 이용한 프로그램제작과 설치
(1) 오픈소스 프로그램얻기
   1) 프로그램형태: 소스는 보통 tar압축파일형태로 되어 있다. 파일의 형태를 자세히 보면 보통
                   tar.gz이나 tgz로 되어 있다. 이 소스코드에는 원래 프로그램들이 계층적 디렉
                   토리 구조로 되어있고 .C언어로 만들어진 소스코드, 컴파일을 위한 Makefile,
                   그리고 각종 문서들이 포함되어 있다.
   2) 프로그램구하기: 소스프로그램은 GNU웹사이트를 이용해 엄청나게 다양한 소스를 얻을 수 있다.
                     아파치같은 웹서버용 프로그램은 http://www.apache.org에서 얻는 등 대부분
                     무료로 제공하고 있다.
   3) 소스프로그램 압축풀기
     ㄱ. 개요: tar명령의 zxvf옵션을 이용하여 푼다.
     ㄴ. 사용예
        tar zxvf apache_1.3.26.tar.gz
(2) 소스컴파일
   1) 개요: 소스를 풀었으면 컴파일을 할 수 있다. 컴파일을 하기 위해서는 configure스크립트,
           GNU C 컴파일러인 gcc, 의존성 검사기인 make등의 응용프로그램이 필요하다.
   2) configure : 해당소스프로그램의 환경설정을 하는 스크립트이다. 대규모 소스 코드 패키지들은
                 대부분 소스 코드의 최상위 디렉토리에 존재한다. 사용자는 이 스크립트를 수정하
                 거나 특별히 설정할 필요는 없다. 이 스크립트는 성공적인 컴파일을 하기 위해
                 필요한 컴파일러, 라이브러리,유틸리티, 기타 정보를 시스템에서 찾아낸다. 이 스
                 크립트는 이 정보를 이용해 사용자 시스템에 적당한 소프트웨어 패키지가 생성되도
                 록 Makefile을 만든다.
   3) make: 소프트웨어를 컴파일하는 유틸리티이다. make는 타겟과 의존성(dependencies)관계하에서
           작업하고 최종적으로 실행파일을 만든다.
   4) make install: 컴파일된 실행파일을 지정한 속성으로 지정된 디렉토리에 설치하도록 한다.

2. 공유라이브러리 관리
(1) 공유라이브러리의 개요
   리눅스 시스템에서 어떤 프로그램이 컴파일될 경우 디스크, 메모리, 기타 기능을 처리하는 시스템
  라이브러리 함수가 필요하게 된다. 예를 들어, 프로그램에서 printf()가 사용되었지만 프로그래머
  는 printf()의 소스코드를 제공하지 않고 이미 이런 함수들이 포함되어 있는 라이브러리를 대신
  이용하기 원할 것이다. 컴파일러가 printf()가 사용된 코드를 링크할 필요가 있을 경우 이것은 시
  스템 라이브러리에서 찾을 수 있고 실행 파일로 복사된다. 이러한 라이브러리를 이용해 만들어진
  실행 파일은 독립적으로 존재하며 실행할 때에 추가 코드가 필요하지 않으므로 '정적으로 링크
  되었다.(statically linked)'고 말한다. 정적으로 링크된 파일은 몇가지 단점이 있다. 우선 모든
  라이브러리 함수가 실행파일에 포함되어 있으므로 파일 크기가 비교적 크다. 또한 동일한 라이브러
  리가 포함된 여러 프로그램이 실행될 경우 메모리의 낭비가 생긴다. 이러한 문제를 없애기 위해
  많은 프로그램이 동적으로 링크된다. 이러한 프로그램은 동일한 루틴을 이용하지만 파일에 라이브
  러리 코드가 포함되어 있지 않고 대신 실행 시에만 링크가 된다. 이 동적 링크는 여러 프로그램이
  메모리에서 동일한 라이브러리를 이용할 수 있게 하고 파일의 크기도 작게한다. 동적으로 링크되는
  라이브러리는 많은 응용프로그램에 공유되며 이를 공유라이브러리(Shared libraries)라 부른다.
(2) 공유라이브러리의 특징
   1)의존성: 동적으로 링크된 프로그램은 적어도 하나 이상의 공유라이브러리가 필요하다. 만일
            필요한 라이브러리가 존재하지 않거나 찾을 수 없으면 프로그램은 실행되지 않는다.
            예를 들면, GNOME 그래픽환경에서 동작하는 응용프로그램을 실행하려고 할 때 관련된
            GTK+라이브러리가 설치되어 있지 않은 경우이다.
   2)링크: 동적으로 링크된 실행 파일은 실행시에 공유 오브젝트에 대한 동적 링커인 ld.so에 의해
          검사된다. 이 프로그램은 실행 파일을 점검하고 시스템의 공유 라이브러리에 대한 의존성
          문제를 해결한다. 만일 ld.so가 지정된 라이브러리를 찾지 못하면 파일은 실행되지 못한
          다.
(3) 관련명령어
   1) ldd
     ㄱ. 설명: 각 프로그램에서 필요한 공유라이브러리를 보여준다. 라이브러리명과 파일시스템에서
              의 위치를 보여준다.
     ㄴ. 사용법
        ldd 프로그램
     ㄷ. 사용예
        [posein@www posein]$ ldd /bin/bash
        libtermcap.so.2 => /lib/libtermcap.so.2 (0x4002e000)
        libdl.so.2 => /lib/libdl.so.2 (0x40032000)
        libc.so.6 => /lib/i686/libc.so.6 (0x40036000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
         => 네 개의 공유라이브러가 필요하다.
   2) ldconfig
     ㄱ. 설명: 기본 공유라이브러리의 위치인 /usr/lib, /lib와 /etc/ld.so.conf에 등록된 디렉토리
              , 그리고 지정된 위치를 추가해 ld.so캐시 파일을 갱신한다.
     ㄴ. 사용법
        ldconfig [option] [라이브러리_위치]
     ㄷ. option
        -p : 캐시를 새로생성하지 않고 현재 캐시 내용만 보여준다.
        -v : 실행시 진행 상황을 보여준다.
     ㄹ. 사용예
        a. [root@www /root]# ldconfig
            => 캐시를 다시 생성한다.
        b. [root@www /root]# ldconfig -p
            => 현재 라이브러리를 보여준다.

3. 데비안 패키지관리(Debian Package Managment)
(1) dpkg(Debian Package)
   1) 개요: 데비안 리눅스의 패키지를 관리하는 툴로 데비안 리눅스 환경에서 각종 패키지를 설치,
           삭제하고 관리한다.
   2) 우선순위: 데비안 패키지는 리눅스안에 포함되어 있어아 할 필요성과 패키지의 의존성을 기준
               으로 한 우선순위(Priority)가 있다.
    ㄱ. Required: 시스템이 올바르게 동작하기 위해 꼭 설치되어야 하는 패키지들
    ㄴ. Import!ant: 대부분의 유닉스계열 운영체제에서 볼 수 있는 패키지들
    ㄷ. Standard: 표준 데비안 GNU/리눅스 시스템을 구성하는 패지지들
    ㄹ. Optional: Tex, X Window 시스템
    ㅁ. Extra: 몇몇 개인들에게만 유용한 패키지들 (예. HAM radio등)
   3) 데비안 패키지파일의 구조
     package_1.0-2.deb
     => (설명) package: 패키지이름이 온다.
               1.0: 해당 패키지의 버전을 나타낸다. 보통 밑줄로 버전을 나타낸다.
               2: 패키지 릴리즈이다.
               deb: 데비안 패키지의 확장자이다.
   4) 설명: 데비안 패키지관리 명령인 dpkg는 주요 작업을 지정하는 액션과 액션 기능을 제어하는
           옵션이 없거나 하나 이상의 옵션으로 구성되어 있다.
   5) dpkg의 특징: 이 명령은 /var/lib/dpkg에 패키지 정보를 저장한다. 이 파일에는 다음과 같은
                  두가지 정보가 저장된다. 이 정보들은 사용자가 직접 수정할 필요는 없다.
    ㄱ. available: 사용가능한 패키지목록
    ㄴ. status: 어떤 패키지가 설치되었는지, 어떤 패키지가 삭제 표시되었는지 등의 패키지의 속
               성이다.
   6) 사용법
     dpkg command 파일
   7) command
    -i package_name: 해당 패키지를 설치한다.(--install) 구버전 파일을 백업하고 패키지를 풀어
                    새로운 파일을 설치하고 설정한다.
    -R package_directory: 주어진 디렉토리 내의 모든 패키지를 설치한다.(-i와 함께 사용)
    -l package_name: 해당 패키지의 각종 정보를 보여준다.
    -r package_name: 패키지를 제거한다.(--remove) 설정파일은 남긴다.
    -c package_name: 해당 패키지에 포함되어 있는 모든 파일 목록을 보여준다.
    -l : 설치된 모든 패키지 목록을 보여준다.
    --unpack package_file: 패키지로부터 파일을 추출
    --configure package_name: 정확한 패키지 설치를 위하여 묶이지 않는 패키지를 설정한다.dpkg가
                             conf file과 같은 설정파일을 운영할 것을 요구
    --pending: 추출된 모든 패키지 파일들이 설치완료
    --purge package_name: 패키지와 해당 패키지의 conf file도 제거
    -s or package_name: 상태 데이터베이스에서 패키지정보를 출력(--status)
    --force: --downgrade, --configure-any, --remove-reinstreq, --remove-essential등과 함께
            사용하는 강제옵션
    --downgrade: 설치하려는 패키지가 이미 설치되어 있는 패키지보다 이전 버전일 때도 설치한다.
    --configure-any: 해당 패키지와 의존성이 있는 다른 패키지가 파일이 추출되기만하고 구성되어
                    있지 않으면 그 패키지가지 구성한다.
    --remove-reinstreq: 패키지가 재설치하기로 status file에 표시되어 있다면 이 패키지를 제거한
                       다.
    --merge-avail package_name : 패키지에 대한 정보를 추가할 수 있다.
   8) 사용예
    ㄱ. dpkg -i /usr/debian/stable/binary-i386/admin/cron_3.0p11.deb
       => 시스템에 cron이라는 패키지가 설치된다.
    ㄴ. dpkg -i -R /usr/debian/stable/binary-i386/admin
       => admin 디렉토리 아래있는 모든 패키지가 설치된다.
    ㄷ. dpkg --unpack /usr/local/Debian/archive
       => 모든 패키지가 풀린다.
    ㄹ. dpkg --configure cron
       => 패키지에 알맞게 구성된 세부사항을 구성한다.
    ㅁ. dpkg --pending
       => --unpack과 --configure로 패키지를 풀고 구성한 뒤에 패키지를 조성하여 패키지 설치를
         완성한다.
    ㅂ. dpkg -r cron
       => 패키지를 제거하지만 conf file은 삭제되지 않는다.
    ㅅ. dpkg -r -a | --pending
       => status file에서 삭제 표시된 모든 패키지를 제거한다.
    ㅇ. dpkg --purge -a | --pending
       => status file에서 삭제 표시된 모든 패키지와 conf file을 제거한다.(status file은 dpkg
         와 dselect에 의해 유지된 파일의 모든 정보를 저장하고 있는 파일이다.)
    ㅈ. dpkg -s mc
       => 패키지 버전, 패키지 관리자, 패키지의 간단한 설명, conf file등 정보를 보여준다.
(2) dselect
   1) 설명: dpkg는 명령행(command-line)유틸리티로 사용방법이 쉽지 않아 curses메뉴 방식으로
           등장한 것이 dselect이다.
   2) 사용법
     dselect
(3) alien
   1) 설명: 데비안 패키지가 아닌 패키지를 변환하거나 설치한다.
   2) 사용법
     alien [option] 파일
   3) 사용예
    ㄱ. alien package.rpm
       => package.deb라는 파일을 생성한다.
    ㄴ. alien -i package.rpm
       => 데비안 시스템에 데비안 패키지가 아닌 패키지를 설치한다.
   4) 지원되는 패키지형식
    ㄱ. 레드햇의 .rpm
    ㄴ. 스탬피드(Stampede)의 .slp
    ㄷ. 슬랙웨어의 .tgz
    ㄹ. 일반 tar.gz

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. 개요
점점 X 윈도우에 대한 관심과 활용도가 높아지면서 다양한 툴들이 제공되고 있다. 버전이 올라가면
서 더욱 더 많은 툴들이 배포판에 기본으로 들어가고 있다. 예전에 어렵게 텍스트로 편집하던 것들이
이젠 편리한 도구로 제공되고 있다. 레드햇8.0 기준으로 편하게 사용할 수 있는 툴들에 대해 간단히
살펴본다.

2. 마우스(Mouse) 사용하기
(1) 개요: X 윈도우는 기본적으로 3버튼 마우스를 사용한다. 그러나 일반적으로는 2버튼 마우스를
          사용한다. 2버튼 마우스를 사용해서 3버튼 마우스의 기능을 하려면 에뮬레이트기능을 사용
          해야 한다. 에뮬레이트 기능을 설정하면 2개의 버튼을 동시 누르면 가운데 버튼의 역할을
          하게 된다. 최근 버전에서는 휠(Wheel)기능도 지원하지만 응용프로그램에 따라 휠기능이
          되지 않을 수도 있다.
(2) 설정: 레드햇 리눅스에서는 마우스 설정용 명령어로 mouseconfig 라는 명령을 제공한다. 물론
          setup 명령을 실행뒤에 Mouse Configuration이라는 메뉴를 선택해도 된다.
(3) 마우스 사용법
   1) 왼쪽버튼 : 영역설정할 때 쓴다.
   2) 가운데버튼: 복사된 글을 붙이기 할 때 쓴다.(2버튼 마우스에서는 2개의 버튼을 동시에 누름)
   3) 오른쪽버튼 : 설정된 영역을 복사할 때 쓴다.

3. 유용한 도구들
(1) GUI Terminals
   1) xterm : Xfree86에서 제공하는 것으로 최초의 X용 터미널이다.
   2) gnome-terminal : GNOME에서 제공하는 터미널로 환경설정이 쉽다.
   3) kconsole : KDE 표준 터미널이다.
(2) GUI Editor
   1) xemacs : X용 emasc 편집기
   2) gvim : vim의 그래픽버전이다.
   3) gedit : GNOME에서 제공하는 간단한 편집기이다.
   4) kwrite : KDE에서 제공하는 편집기이다.
(3) 시스템 도구(System Tools)
   1) 시스템 감시기(gnome-system-monitor) : 프로세스의 상태를 보여준다. top 명령에 기반을 두고
                                           있어서 메모리상태와 CPU상태를 보여주며, 추가로 프로
                                           세스를 종료시킬 수도 있다.
   2) nautilus : 그놈용 파일 매니저 및 웹브라우저이다.
   3) gftp : 그래픽한 ftp 클라이언트 프로그램이다. 로컬과 원격지가 세로로 나뉘어져 있으며, 북
            마크를 지원한다.
   4) gimp: GNU에서 제공하는 이미지 편집프로그램이다.
   5) xchat: IRC 용 클라이언트 프로그램이다.
   6) kdevelop: KDE용 환경설정 프로그램이다.
(4) 웹브라우저(Web Browser)
   1) mozilla: 표준 웹브라우저이다.
   2) galeon: GNOME에서 제공하는 웹브라우저로 mozilla를 기반으로 만든 브라우저이다.
   3) konqueror : KDE 용 파일 매니저 및 웹브라우저이다.
   4) lynx : 텍스트 모드용 브라우저이다.
   5) links : 약간 발전된 형태의 텍스트모드용 브라우저이다.
(5) 메일 클라이언트
   1) evolution: GNOME에서 제공하는 메일 클라이언트 프로그램으로 스케줄 및 연락처 관리기능을
                제공한다.
   2) balsa: GNOME에서 제공하는 메일 클라이언트 프로그램으로 프로그램이 간단하다.
   3) mozilla mail: mozilla 웹 브라우저에서 제공하는 메일 클라이언트 프로그램이다.
   4) kmail: KDE 메일클라이언트 프로그램이다.
(6) 오피스(Office)관련 응용프로그램
   1) koffice: KDE에서 제공하는 오피스 패키지이다. kword, kspread, kpresenter, kontour, kchart
              등이 있다.
   2) abiword: 워드프로그램으로 MS의 Word97과 호환된다.
   3) gnumeric: 엑셀과 유사한 스프레드시트 프로그램이다.
   4) Open Office: StarOffice 패키지의 Open Source 버전이다.
(7) 이미지 관련 응용프로그램
   1) display: ImageMagick 라는 패키지에 들어 있는 이미지 편집프로그램이다.
   2) convert: Image형태를 바꿀 수 있는 텍스트 프로그램이다.
   3) gqview: 이미지 뷰어 프로그램이다.
   4) eog(Eye of Gnome): '그놈의 눈'이라는 프로그램으로 이미지 뷰어 프로그램이다.
(8) 음악관련 응용프로그램
   1) xmms: 오디오 플레이어로 프러그인을 지원한다.
   2) gnome-volume-control: GNOME에서 제공하는 표준 오디오 믹서이다.
   3) gnome-cd: GNOME에서 제공하는 CD플레이어이다.

4. X 환경설정 프로그램
(1) 설명: 레드햇 8.0버전부터는 X 설정하는 명령이 바뀌었다. 예전에는 Xconfigurator라는 명령으
          로 설정하였지만 현재는 redhat-config-xfree86 이라는 프로그램으로 바뀌었다.
(2) redhat-config-xfree86 에서 지원하는 목록
   1) X configuration 관련 도구
   2) Video Card 설정
   3) 모니터 설정
   4) 해상도 설정
   5) 색상도 설정

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. X-window 의 탄생
X 윈도우 시스템은 DEC의 Athena프로젝트의 일환으로 MIT의 컴퓨터학과 연구실에서 처음으로 개발을
시작하였다. 1984년 최초 버전이 발표되었지만, 좀 더 구체적인 모습은 1986년 X10.4가 공개되면서
그 모습 갖추고 되었다. 1987년 가을경에 현재의 모습과 유사한 X11이 만들어졌다. X11이 공개된 후 수
많은 워크스테이션 업체에서 X 윈도우를 표준 윈도우 시스템으로 채택하기 시작했고, 기술개발과 배
포를 위해 여러 업체가 모여 X 컨소시엄(http://www.x.org)을 결성하여 관리하게 되었다. 그 후 X
컨소시엄이 오픈그룹 산하단체로 바뀌었지만 근본적인 변화는 없으며 비교적 자유로운 라이선스로
인해 무료 또는 저렴한 가격으로 누구나 사용할 수 있다. 이렇듯 X 컨소시엄의 규격에 부합한다면
누구든지 X 윈도우를 개발할 수 있기 때문에 다양한 상용 또는 공개 X 서버가 발표된 상태이다.

2. X-window 와 리눅스
리눅스용 X-window(X 또는 X11이라고 함)는 XFree86프로젝트에서 만들었다. 초기의 XFree86 프로젝
트는 인텔 x86기반 플랫폼으로 개발하였으나 현재는 매킨토시, 알파, 스팍 등으로도 확대 지원한다.
XFree86을 지원해주는 오픈 데스크탑으로는 Gnome과 KDE가 양대 산맥을 이루고 있고 그 외에도 많은
윈도우 매니저가 존재한다.

3. XFree86
Xfree86은 무료로 배포되는 X 윈도우 시스템으로 비영리단체인 xfree86프로젝트에 의해 개발되었다.
Xfree86은 인텔 x86계열 플랫폼으로 개발되었지만 지금은 다양한 플랫폼에서 운영된다. Xfree86의
공식사이트는 http://www.xfree86.org이다.

4. X-window의 구조
(1) 기본구조: X-window는 클라이언트/서버의 구조로 되어 있고 서로간의 통신을 위해 X protocol을
              사용한다. X server란 그래픽하게 보여주는 하나의 시스템을 말하고, X-client란
              X server위에 동작하는 일종의 응용프로그램을 말한다.
(2) X Protocol
   1) 설명: X 프로토콜은 운영체제에 독립적으로 동작하며 많은 플랫폼에 사용되고 있다. 또한
           X 프로토콜은 독립적으로 동작하나 TCP/IP기반위에서도 동작하기 때문에 특정 컴퓨터의
           어플리케이션을 네트워크로 연결된 다른 컴퓨터에서 사용할 수 있다.
   2) 작동: 한 시스템의 X clients 와 X server는 속도가 빠른 Unix domain socket을 이용한다. 이
           소켓은 /tmp/.X11-unix/X# 형태로 존재한다. 보통 #에는 0이 온다.

5. X-window 설정
(1) X-window를 설정하기 위해 알아야 할 사항
   1) 시스템의 비디오카드의 칩의 종류와 메모리 용량
   2) 모니터 모델과 최대 해상도, 수직/수평 재생율
(참고) 현재 공식적으로 Xfree86에서 지원하는 비디오카드의 리스트를 확인하려면
       http://www.xfree86.org/cardlist.html 를 참조한다.
(2) 비디오카드관련 유틸리티
   1) SuperProbe : xfree86에서 제공하는 유틸리티로 비디오카드에 대한 자세한 정보를 보여준다.
                  루트권한자만 가능하며 텍스트모드에서도 사용 가능하다.
                  보통 /usr/bin/X11/SuperProbe 에 위치한다.
   2) xvidtune : X윈도우상에서 비디오모드를 조정할 수 있는 유틸리티이다. 화면의 상/하/좌/우,
                높이와 폭의 조정, 수평/수직의 조절이 가능하다. 또한 /etc/X11/XF86config파일에
                서 해상도 부분에 직접입력하여 조정할 수도 있다.
(3) X윈도우 설정 유틸리티
   1) Xconfigurator 이용 : 텍스트 그래픽 인터페이스의 유틸리티로서 X-window을 자동 설정해준다.
                          레드햇 7.x 버전까지 지원된다.
   2) xf86cfg 이용 : GUI방식으로 이 명령은 XFree86 3.3.6버전에서는 XF86Setup명령으로 지원되었
                    다. 콘솔과 엑스윈도우상에서 실행되는 데, 반드시 /etc/X11/디렉토리에
                    XF86Config파일이 있어야 하며, 이 방법을 이용하려면 엑스윈도우가 구동되어야
                    한다. 엑스윈도우를 띄우기 위한 설정이라기 보다는 주변기기에 대한 더욱
                    자세한 설정을 위해 사용된다.
   3) xf86config 이용 : 텍스트 방식의 설정방법으로 엑스 윈도우 설정 섹션들을 일일이 수동으로
                       설정한다. 이 명령을 이용하려면 마우스의 종류, 모니터의 주파수, 그래픽
                       카드등 하드웨어에 대한 지식을 가지고 있어야 한다. 설정된 환경은
                       /etc/X11/XF86Config파일에 저장된다.
(4) 관련파일 : /etc/X11/XF86Config
   1) 설명 : xfree86의 주설정 파일이다. 관련 심볼릭링크파일로 /etc/X11R6/lib/X11/XF86Config가
            이 파일을 가리키고 있다.
   2) 파일의 구성 : 7개의 섹션으로 구성되어 있다.
     ㄱ. Files : 시스템의 중요한 파일이 있는 장소를 지정하는 섹션이다.
        a. RgbPath     "/usr/X11R6/lib/X11/rgb"
            => RGB 데이터베이스 이름과 위치를 지정한다.
        b. FontPath   "unix/:7100"
            => X폰트를 찾을 수 있는 장소를 지정한다. 현재는 'transport/hostname:port-number'로
              구성되어 있다. transport는 폰트서버에 연결하기 위해 사용하는 transport타입을
              나타낸다. 즉 유닉스 도메인 소켓을 나타내는 unix 또는 TCP/IP접속을 나타내는 tcp등
              이 올 수 있다. hostname에는 폰트서버를 운영하고 있는 시스템의 호스트이름을 나타
              낸다. 위의 예처럼 필드가 비어 있는 것은 로컬호스트가 폰트서버를 운영하고 있는
              경우이다. port-number는 폰트 서버가 사용할 포트의 번호를 나타낸다. 일반적으로
              7100번을 사용한다. 또한 폰트경로를 여러개 지정할 수 있다.
              'FontPath   /usr/X11R6/lib/X11/fonts/TrueType'과 같이 지정가능하다.
     ㄴ. ServerFlags : X서버의 몇가지 기능을 활성화하거나 비활성화시킨다.
        a. DontZap : X강제종료를 위한 Ctrl+Alt+Backspace 사용여부를 지정
        b. DontZoom : 해상도 전환을 위한 Ctrl+Alt+[+/-] 사용여부를 지정
     ㄷ. Keyboard : 키보드 종류와 프로토콜등 키보드의 기능과 관련된 정보를 지정한다.
     ㄹ. Pointer : 마우스 종류, 마우스가 연결된 포트등 마우스 관련 설정에 사용된다.
                  이중 Emulate3Buttons은 2버튼마우스에서 좌우 두버튼을 동시에 눌렀을 경우
                  3버튼 마우스의 가운데 버튼 역할을 하도록 한다.
     ㅁ. Monitor : 모니터와 해상도 설정에 관련된 부분이다.
     ㅂ. Graphics Device : X서버가 사용할 수 있는 비디오 카드를 설명한다.
     ㅅ. Screen : Monitor와 Device섹션에 있는 정보를 함께 불러오는데 사용된다.

6. X 폰트 서버(X Font Server:XFS)
(1) 설명: X폰트서버는 XFree86이 글꼴을 사용할 수 있도록 해주는 프로세스로 XFree86의 트루타입
          폰트서버이다. 시스템이 부팅될 때 구동되는 xfs는 X서버와는 독립적으로 동작한다.
(2) 관련파일 : /etc/X11/fs/config
    => xfs의 설정파일로 어떻게 동작할 지를 결정한다.
(3) 시스템 초기화 스크립트 : /etc/rc.d/init.d/xfs
   1) 설명: xfs를 구동시키거나 멈추는 역할을 한다.
   2) 사용예
     ㄱ. /etc/rc.d/init.d/xfs stop
     ㄴ. /etc/rc.d/init.d/xfs start

7. X-window 실행
(1) X-window 실행
   1) 콘솔모드(run level 3)에서 startx라고 입력한다.
   2) run level 5로 설정하여 X 디스플레이매니저(X Display Manager:XDM)를 사용하여 그래픽하게
     로그인하면서 실행할 수 있다.
(2) startx
   1) 설명: startx에는 X윈도우를 실행하는 최적화된 스크립트로 시스템환경을 초기화하고 시작하
           는데 필요한 여러 프로그램을 호출한다. 최종적으로는 xinit를 호출한다.
   2) 사용법
     startx [option]
   3) option
     -- : 명령행의 아규먼트를 xinit으로 넘겨준다.
   4) 사용예
     ㄱ. [root@www /root]# startx
          => 기본설정된 상태로 X윈도우를 실행시킨다.
     ㄴ. startx -- -bpp 8
          => 256 color mode로 실행시킨다.
     ㄷ. startx -- -bpp 32
          => true color mode로 실행시킨다.
   5) 실행관련 파일 : /etc/sysconfig/desktop
     ㄱ. 이 파일은 startx명령시에 구동해야할 윈도우 매니저값을 가지고 있는 파일이다.
     ㄴ. 만약 X-window 설정시 기본값을 KDE를 설정했을 경우 파일안의 값은 다음과 같다.
        DESKTOP="KDE" (참고로 그냥 KDE라고만 입력해도 된다. 또한 소문자로 써도 무방하다.)
     ㄷ. 기본 X-window 를 그놈(Gnome)으로 바꾸려면 다음과 같이 값을 바꾸면 된다.
        DESKTOP="GNOME"
(2) X-window 종료
    1) 일반적인 종료 : KDE나 GNOME의 패널(윈도우 하단 메뉴바)에 있는 시작 메뉴를 누른 뒤 로그아
                    웃 메뉴로 엑스 윈도우를 종료시킨다.
    2) 강제 종료 : X-window에 장애가 발생되어 정상적으로 로그아웃을 하지 못하는 경우에 사용하는
                 방법으로 CTRL+ALT+Back Space키를 동시에 누른다.

8. X-window실행과 디스플레이 매니저
(1) 개요: 실행레벨을 5로 지정했을 경우에는 그래픽하게 로그인하는 절차가 필요한 데 이러한 역할
          을 하는 것이 디스플레이 매니저(Display Manager)이다.
(2) 디스플레이 매니저 종류
   1) xdm(X Display Manager) : 전통적인 유닉스 시스템에서 사용하던 X 윈도우 디스플레이 매니저
                              로 runlevel 5로 지정했을 경우 실행된다.
   2) gdm(GNOME Display Manager) : GNOME실행과 관련하는 디스플레이 매니저
   3) kdm(KDE Display Manager) :  KDE실행과 관련하는 디스플레이 매니저
(3) xdm의 설정
   1) xdm(X Display Manager) : 시스템을 run level 5로 구동시켰을 경우, 자동으로 X를 실행되고
                              일반적으로 gdm 도 아니고 kdm도 아닌 경우에 사용한다.
   2) xdm 관련 디렉토리 : /usr/X11R6/lib/X11/xdm 디렉토리에 위치한다.
   3) xdm 관련 파일
     ㄱ. 환경설정파일: /usr/X11R6/lib/X11/xdm/xdm-config 또는 /etc/X11/xdm/xdm-config
          => 사용자들에게 보여지는 로그인 화면을 설정하는 파일이다.
     ㄴ. Xsetup_0 : X가 시작될 때 어떤 프로그램들이 구동되어야 하는지를 xdm에게 알려준다.
   4) xdm의 실행 : root권한자만 가능하며 콘솔모드에서는 다음과 같이 명령내려서 실행
     [root@www /root]# xdm --nodaemon &
(4) gdm의 설정
   1) 설명: GNOME 디스플레이 매니저로 xdm의 환경 설정을 많이 넘겨받아 사용한다.
   2) 관련 디렉토리와 파일
    ㄱ. 주 디렉토리: /etc/X11/gdm
    ㄴ. 환경설정파일: gdm.conf이다.

9. X-window 작업하기
(1) 명령행 옵션 : X-window상의 터미널창에서 명령 수행시 다음과 같은 옵션을 사용할 수 있다.
   1) -display : 어떤 X 서버를 사용할 것인가를 지정하는 옵션이다.
   2) -geometry : 초기 윈도의 위치와 사이즈를 세팅한다. 만약 음수의 값으로 수평,수직위치를 넣으
                 면 상대적으로 거꾸로 움직여진 위치에 놓여지게 된다.
     * 형식 : 윈도우의 폭*윈도우의 높이+/-수평위치+/-수직위치
   3) -font : 생성될 윈도우의 텍스트를 위해 쓰여질 폰트지정
   4) -fn : -font옵션과 같다. 폰트를 지정한다.
   5) -bg : 바탕색을 지정
   6) -fg : 윈도우의 전경색 또는 폰트색을 지정한다.
   7) -bd : border(테두리선)의 색상을 지정한다.
   8) -name : 어플리케이션에서 사용하능한 리소스의 이름을 설정한다. 같은 어플리케이션을 두 개
             실행시키고 그 두개를 구분할 경우에 유용하다.
   9) -title : 윈도우 매니저를 통해 각 윈도우의 상단에 표시하게끔 해주는 옵션이다.
   10) -iconic : 어플리케이션을 실행할 때 아이콘화 되어 실행시킨다.
   11) -xrm : 이미 정해진 리소스 이름에 따르는 값을 새롭게 설정해줄 수 있게 해 준다.

10. X-window 구동원리(1)
(1) 설명: run level 3인 상태에서 X-window의 구동은 startx에 의해 사용자의 클라이언트 리소스와
         서버 리스소를 찾으면서 시작된다.
(2) 구동순서
   1) 사용자의 홈디렉토리에서 .xinitrc파일을 찾아 각종 리소스들은 불러 들여 실행한다.
     (존재하지 않을 경우에는 /usr/X11R6/lib/X11/xinit/xinitrc, /etc/X11/xinit/xinitrc)
    
   2) 사용자의 홈디렉토리에서 .Xclients스크립트를 찾아 실행한다. (존재하지 않을 경우에는
    /etc/X11/xinit/Xclients파일을 실행)
   3) Xclients 스크립트에 의해 어떠한 데스크탑환경을 사용할 것인지 /etc/sysconfig/desktop파일
     을 참조한다.
(3) 각 스크립트의 역할
   1) startx: X 윈도우를 구동시키는 스크립트이다.
   2) ~/.xinitrc(또는 /usr/X11R6/lib/X11/xinit/xinitrc, /etc/X11/xinit/xinitrc)
    ㄱ. ~/.Xresources 나 /etc/X11/Xresources 안의 내용설정 실행
    ㄴ. keymap파일실행: 키맵이란 아키텍쳐별로 지원되는 키코드를 말한다.
       ~/.Xkmap(존재하지 않으면/etc/X11/Xkmap) 또는 ~/Xmodmap(존재하지 않으면 /etc/X11/Xmodmap)
    ㄷ. /etc/X11/xinit/xinitrc.d 라는 디렉토리안의 스크립트를 실행시킨다.
    ㄹ. ~/.Xclients 스크립트 호출한다.
   3) ~/.Xclients(또는 /etc/X11/xinit/Xclients)
    ㄱ. /etc/sysconfig/desktop 을 검사하여 GNOME인지 KDE인지를 확인하고 실행한다.
    ㄴ. 만약 어떠한 설정을 찾지못하면 다음과 같은 순서로 실행하는데 해당 윈도우매니저가 존재
       해야 한다.
       GNOME
       KDE
       RunWM
       twm
    ㄷ. 만약 Xclients가 존재하지 않고 twm 윈도우매니저가 설치되어있다면 윈도우98의 안전모드처
       럼 xclock, xterm, netscape같은 몇가지 응용프로그램과 twm이 작동된다.

11. X-window 구동원리(2)
(1) 설명: run level 5인 경우에는 /etc/inittab 파일설정에 의거하여 /etc/X11/prefdm 스크립트가
          실행된다.
(2) 구동순서
   1) /etc/X11/prefdm에 의거하여 해당 윈도우 디스플레이 매니저 실행한다.
   2) 로그인창이 뜨기전에 /etc/X11/xdm/Xsetup_0 스크립트 실행한다.
   3) 사용자를 인증하고 /etc/X11/xdm/Xsession 스크립트를 실행한다.
   4) 사용자가 로그아웃하면 새로운 로그인 창을 띄운다.
(3) 각 스크립트의 역할
   1) prefdm
    ㄱ. /etc/sysconfig/desktop 파일에 명기되어 있는 윈도우매니저를 실행시킨다.
    ㄴ. /etc/sysconfig/desktop 파일이 없는 경우에는 gdm, kdm, xdm 순으로 검색하여 실행시킨다.
   2) /etc/X11/xdm/Xsetup_0: /etc/X11/Xresources 스크립트를 실행하고 로그인관련 내용을 실행
                            한다.
   3) /etc/X11/xdm/Xsession
    ㄱ. startx 실행시의 /etc/X11/xinit/xinitrc 스크립트의 역할인 /etc/X11/xinit/xinitrc.d 디렉
       토리안의 스크립트를 실행한다.
    ㄴ. 사용자가 설정한 데스크탑 환경을 찾아 실행한다. 만약 찾지못하면 ~/.xsession 이나
       ~/.Xcients를 실행하고 이것도 실패하면 startx 시에 실행하는 /etc/X11/xinit/Xcilents 스크
       립트를 실행한다.

12. X-window의 데스크탑 변경하기
(1) 변경이 필요로 하는 경우 : 만약 일반사용자가 startx하면 보통 /etc/sysconfig/desktop이라는
                           파일에서 선언된 X-window가 구동된다. 만약 기본 설정이 KDE인데 한
                           사용자가 GNOME을 사용하려고 할 때 이용할 수 있다.
(2) /etc/bin/switchdesk 스크립트 : 데스트탑 환경이나 윈도우 매니저를 사용자가 선택적으로 사용
                                  할 수 있도록 해 주는 데스크탑 변환 파일이다.
    1) 사용법
      switchdesk 데스크탑이름
       => 변환가능한 데스크탑이름으로는 KDE, KDE2, GNOME, Enlightenmen, WindowsMaker, twm등
    2) 사용예
      [posein@www posein]$ switchdesk gnome
      Red Hat Linux switchdesk 3.9
      Copyright (C) 1999-2001 Red Hat, Inc
      Redistributable under the terms of the GNU General Public License
      Desktop now set up to run GNOME.
      For system defaults, remove /home/posein/.Xclients
    3) 관련파일 : swichdesk 스크립트를 사용하면 .Xclients파일과 .Xclients-default파일이 생성된
                다.
      -.Xclients : /etc/X11/xinit/Xclients를 참조하지 않고 개인사용자가 독자적인 X-window를
                  사용하도록 해주는 파일이다.
        *[posein@www posein]$ cat .Xclients
         #!/bin/bash

         # Created by Red Hat Desktop Switcher

         if [ -e "$HOME/.Xclients-$HOSTNAME$DISPLAY" ]; then
             exec $HOME/.Xclients-$HOSTNAME$DISPLAY
         else
             exec $HOME/.Xclients-default
         fi
      -.Xclients-default : 설정한 데스크탑이나 윈도우 매니저가 실행될 수 있도록 명령라인이 존재
                          하는 파일이다.
        *[posein@www posein]$ cat .Xclients-default
         # Created by Red Hat Desktop Switcher
         exec gnome-session
           => 참고로 KDE인 경우에는 'exec startkde'라고 표기된다.

13. 윈도우 매니저(Window Manager)
(1) 설명: 윈도우 매니저란 X서버와 사용자를 이어주는 인터페이스로 윈도우의 경계(border), 메뉴,
          아이콘, 버튼바, 툴바 등을 제공한다. 윈도우 매니저없이 X윈도우를 사용하는 일은 불가능
          하며 각 사용자들은 자신의 취향에 맞는 윈도우 매니저를 선택할 수 있다.
(2) 종류
   1) twm : 최초의 윈도우 매니저로 다른 윈도우 매니저의 모태이다.
   2) FVWM
    ㄱ. Robert Nation에 의해 개발되었고, Tom LaStrange의 유명한 TWM에서 비롯됨
    ㄴ. 메모리 사용을 최소화하도록 설계되었고, 3D입체 화면과 단순한 가상 데스크탑 지원
    ㄷ. 약간의 수정을 통해서 새로운 느낌의 윈도우 매니저로 기능을 향상시킬 수 있도록 설계됨
    ㄹ. 관련사이트는 http://www.fvwm.org이다.
   3) FVWM95
    ㄱ. FVWM의 2.X버전 소스를 기반으로 만들어짐
    ㄴ. 윈도우95랑 인터페이스가 유사
    ㄷ. 레드햇 5.1에서 채택됨.
   4) AMIWM(Amiga Window Manager)
    ㄱ. Amiga에서 사용한 하던 윈도우 매니저를 X11R6용으로 만듬
    ㄴ. 드래그 업다운할 수 있도록 멀티 스크린을 지원
   5) CTWM
    ㄱ. Claude Lecommnader에 의해 개발된 윈도우 매니저
    ㄴ. TWM을 개선하여 32개의 작업공간(Workspace)창을 제공
    ㄷ. 3D타이틀창과 경계선을 선택적으로 지원
   6) EPIWM
    ㄱ. GPL하의 School Project의 일환으로 만들어짐
    ㄴ. 작으면서 빠르고 설정이 용이
   7) DTWM(The CDE Window Manager)
    ㄱ. CDE(Common Desktop Environment)는 Hewlett-Packard, IBM, Sun Microsystems가 공동개발한
       유닉스용 상용 GUI를 사용하는 윈도우 매니저
    ㄴ. 현재 유닉스 워크스테이션에서 표준 운영체제환경으로 채택
   8) Sawfisk : Lisp 기반의 스크립트 언어를 사용하여 만들어짐 윈도우 매니저로 SawMill이라고
               불림
   9) BlackBox : 간단하면서 빠른 인터페이스를 제공하며, 다중 데스크탑 환경을 제공하는 윈도우
                매니저
   10) Enlightenment
     ㄱ. 맨드레이크 7.0에서 gnome과 함께 기본적으로 채택
     ㄴ. 아주 극단적이고, 세밀하며 여러 설정이 가능한 환경을 제공해 준다.
     ㄷ. 관련사이트는 http://www.enligntment.org 이다.
   11) Window Maker
     ㄱ. GNU 어플리케이션들을 부가적으로 통합할 수 있도록 지원하기 위해 만들어진 X11 윈도우
        매니저
     ㄴ. Alfredo K. Kojima에 의해 개발되었으며, 알짜리눅스 6.0에서 채택됨
     ㄷ. 애프터스텝과 넥스트스텝을 흉내낸 윈도우 매니저이다.
     ㄹ. 설정파일이 변경되면 자동적으로 메뉴가 재정의되므로 변경을 적용하기 위해 윈도우 메이커
        를 다시 실행하지 않아도 된다.
     ㅁ. 다국어를 지원하며 GNU 데스크탑을 지원하므로 GNOME프로젝트에 적합하다.
     ㅂ. 개인의 취향에 맞는 윈도우 매니저의 선택외에 윈도우 매니저와 어플리케이션, 전체적인
        사용자 인터페이스를 제공하는 또 다른 요소들 등으로 구성된 데스크탑 환경을 선택할 수
        있다.
     ㅅ. 관련사이트는 http://www.windowmaker.org이다.
   12) OLVWM(OpenLook Virtual Window Manager) : X 윈도우의 표준을 주도해 온 Open Look 라이브
                                               러리에서 제공하는 윈도우 매니저이다.
   13) Afterstep
      ㄱ. NEXTSTEP의 겉모습과 느낌을 에뮬레이팅하는데서 시작하였다
      ㄴ. NEXTSTEP인터페이스의 장점을 통합하고 좀 더 유용한 기능을 추가하는데 목적이 있다.
      ㄷ. 관련사이트는 http://www.afterstep.org 이다.
   14) KDE(K Desktop Enviroment)
      ㄱ. Microsoft의 윈도우와 구성, 사용법 등이 비슷하다.
      ㄴ. 단순한 윈도우 매니저 역할을 넘어 새로운 데스크탑 환경 구현을 목표로 하고 있다.
      ㄷ. QT라이브러리를 기반으로 한다.
      ㄹ. kwin이라는 윈도우 매니저를 가지고 있다.
   15) GNOME(GNU Network Object Model Environment)
      ㄱ. 시스템과 유기적인 통합을 목표로 한다.
      ㄴ. 다른 윈도우 매니저를 띄운 상태에서 실행할 수 있다.
      ㄷ. GTK+ 라이브러리를 사용한다.
      ㄹ. metacity라는 윈도우 매니저를 가지고 있다.
      ㅁ. 관련사이트는 http://www.gnome.org, http://www.gtk.org 이다.
   16) 기타 : ICEWM, Xfce 등

14. 클라이언트에서 X Server 프로그램 사용하기
(1) 개요 : X-window는 서버와 클라이언트에서 동시에 작동하는 네트워크 지향시스템이기 때문에,
          클라이언트 X-window시스템에서 서버의 X-window프로그램을 구동할 수 있다.
(2) 관련명령과 환경변수
    1) xhost : X server에 접속할 수 있는 클라이언트를 지정하거나 해제하는 명령
      ㄱ. 사용법
        xhost + 또는 - [IP 또는 도메인명]
      ㄴ. 사용예
       xhost + : X server에 모든 클라이언트의 접속을 허용함
       xhost - : X server에 모든 클라이언트의 접속을 해제함
       xhost + 192.168.0.5 : 192.168.0.5의 접속을 허용함
    2) DISPLAY : 환경변수로써 X server의 프로그램이 실행될 때 표시되는 클라이언트의 주소 지정
(3) 사용예
   1) 조건: A라는 시스템과 B라는 시스템이 있다. A라는 시스템에는 네스케이프과 없고 B라는 시스
           템에는 네스케이프라는 프로그램이 있다고 가정하자. A라는 시스템에서 네스케이프를
           사용하고자 한다.
   2) 조건: A시스템의 IP가 192.168.0.2, B시스템을 192.168.0.3 이라고 가정한다.
   3) 방법
    ㄱ. A시스템에서 B시스템의 프로그램이 실행되는 것이므로 A시스템에서 B시스템의 접근을 허가해
       야 한다.
       예) 1. 전체허가: 모든 호스트허가
             [root@A_host root]$ xhost +
             access control disabled, clients can connect from any host
           2. 부분허가: 특정 호스트만 허가
             [root@A_host root]$ xhost + 192.168.0.3
             192.168.0.3 being added to access control list

    ㄴ. B 시스템에서 실행되는 디스플레이의 방향을 A 호스트로 해야 한다.
       [root@B_host root] export DISPLAY=192.168.0.2:0.0
    ㄷ. B 시스템에서 다음과 같이 네스케이프를 실행해보자.
       [root@B_host root]$ netcape &
       [1] 11980
        => A시스템에서 네스케이프가 실행됨을 알 수 있다.
   4) 참고
    위의 조건에서 xhost + 로 허가한 A시스템과 A시스템으로 접근가능한 B시스템사이중 어느 시
   스템이 보안상 더 위험할지 생각해보자. 사실 A,B 시스템 모두 보안상 취약하다고 볼 수 있다.
   A시스템은 모든 X client에서 접근가능하므로 불필요한 프로그램으로 인해 작업을 방해받을 수
   있다. 또한 B시스템에서도 root 사용자로 로그인한 상태에서 아무생각없이 다음과 같이 전송했
   다고 하자.
    [root@B_host root]$ xterm &
   그러면 A시스템에서는 root권한이 있는 B시스템의 X터미널하나를 전송받게 된다. 이 경우 A시스템
   에서 "rm -rf /home" 과 같은 명령을 내리게 되면 B시스템의 /home디렉토리는 사라지게 된다.

15. 클라이언트에서 X Server 프로그램 사용하기(2)
(1) 개요: xhost로 사용하여 전체 클라이언트를 허가하거나 또는 IP주소, 호스트네임으로 허가한다
          고 하더라도 원치않는 불필요한 클라이언트 프로그램이 구동될 수 있다. 이 때 주어진 키
          값을 이용해서 접속하는 xauth를 이용하면 이 문제를 어느정도 해결할 수 있다.
(2) Xauthority
   1) 개요: X 윈도우에서는 xhost처럼 호스트기반 인증도 하지만 그 외에 사용자기반 인증도 한다.
           특정사용자가 X윈도우를 실행시키면 $HOME/.Xauthority라는 파일이 생성된다. 이 파일에
           는 MIT-MAGIC-COOKIEs 라는 키값을 가지고 있어 그 키값을 가지고 X서버로 접근하면 해당
           사용자로 인증하여 사용가능하도록 하고 있다.
   2) 관련명령어: xauth
    ㄱ. 설명: Xauthority파일관련 명령어로 ~/.Xauthority파일의 내용인 MIT-MAGIC-COOKIEs값을
             보여주거나 값을 변경할 수 있다.
    ㄴ. 사용법
       xauth 옵션
    ㄷ. 사용예
      a. [root@www root]# xauth list $DISPLAY
         zzang:0  MIT-MAGIC-COOKIE-1  e1076eee8a02769d81e87725c968dcf9
         www/unix:0  MIT-MAGIC-COOKIE-1  59b4c2fe30a68e02c70cbaa4001f5ddc
          => 현재 .Xauthority파일의 MIT-MAGIC-COOKIEs값을 보여준다.
      b. [root@www root]# xauth add $DISPLAY . e1076eee8a02769d81e87725c968dcf9
          => ~/.Xauthority 파일에 MIT-MAGIC-COOKIEs값을 추가한다.
(3) 사용예
   1) 조건: Xauthority를 이용하여 A 시스템(192.168.0.2)의 X 서버에 B 시스템(192.168.0.3)의
          클라이언트 프로그램이 실행되도록 한다.
   2) 방법
    ㄱ. A 시스템의 ~/.Xauthority파일의 MIT-MAGIC-COOKIEs값 확인
       [root@A_host root]# xauth list $DISPLAY
       A_host/unix:0  MIT-MAGIC-COOKIE-1  e1076eee8a02769d81e87725c968dcf9
    ㄴ. B 시스템의 X 윈도우 DISPLAY를 A 시스템으로 변경
       [root@B_host root]# export DISPLAY=192.168.0.2:0.0
    ㄷ. B 시스템의 ~/.Xauthority파일의 MIT-MAGIC-COOKIEs 키값을 입수하여 추가한다.
       [root@B_host root]# xauth add $DISPLAY . e1076eee8a02769d81e87725c968dcf9
    ㄹ. B 시스템에서 키값 확인
       [root@www root]# xauth list $DISPLAY
       A_host:0  MIT-MAGIC-COOKIE-1  e1076eee8a02769d81e87725c968dcf9
       B_host:0  MIT-MAGIC-COOKIE-1  59b4c2fe30a68e02c70cbaa4001f5ddc
        => 추가되었음을 알 수 있다. 경우에 따라 X윈도우 터미널에서는 바뀐 A 시스템의 키값만
         보일 수도 있다. 콘솔이나 외부에서 접속하여 확인하면 전부볼 수 있다.
    ㅁ. 클라이언트 프로그램 전송
      [root@B_host root]# xterm &
       => A 시스템에 B 시스템의 터미널창이 뜬다.

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. 설치 및 갱신모드
(1) 설명: 새로운 패키지를 설치할 때 사용된다. 설치 모드의 변형으로 업그레이드 모드도 들 수
          있다.
(2) 관련옵션
   -i : 새로운 패키지를 설치할 때 사용한다. 이전 버전의 같은 패키지에 대해 정보가 지워지지
       않으며 또한 이전 버전의 설정 파일도 백업하지 않는다. (--install)
   -U : 기존의 패키지를 새로운 버전의 패키지로 업그레이드할 때 사용한다. 이전 버전이 설치된
       경우에는 환경설정파일을 제외하고 새롭게 설치하는데 원래 설정은 .rpmsave에 기록한다.
       또한, 설치된 패키지가 없을 경우에도 새로운 버전을 설치할 수 있는데 이 경우에는 -i옵션과
       같다고 볼 수 있다. (--upgrade)
   -F : 이전 버전이 설치되어 있는 경우에만 설치한다.(--freshen)
   -v : 메시지를 자세히 보여준다.
   -h : '#'기호 표시해 준다.
   --force : 기존에 설치된 패키지와 그 파일을 강제로 다시 설치하도록 한다. 업그레이드의 경우
            설치하고자 하는 패키지가 설치되어있는 패키지보다 구버전인 경우에도 강제로 설치
            한다.
   --nodeps : 의존성 관계를 무시한다.
   -vv : 메시지를 아주 자세히 보여준다.
   --test : 실제로 파일에 기록하는 작업을 제외한 대부분을 테스트한다. 패키지를 실제 설치하기
           전에 제대로 설치되는지 테스트해 볼 경우에 사용한다. -v, -h옵션과는 함께 사용할 수
           없으며 -vv는 사용가능하다.
   --oldpackage : 구버전으로 다운그레이드할 때 사용한다.
   --percent : 설치할 때 퍼센트를 보여준다.
   --replacefiles: 설치되어있는 파일이 있는 경우 덮어쓰면서 다시 설치한다.
   --replacepkgs: 같은 패키지가 있어도 다시 설치한다.
   --ignorearch: 아키텍쳐를 무시하고 설치한다.
   --root: 기준이 되는 디렉토리를 설정한다.
   --exculdepath: 지정된경로에는 파일을 설치하는 않는다.
   --prefix: 지정된 경로에 패키지를 설치한다.
   --relocate OLDPATH=NEWPATH: 원래의 경로를 새로운 경로로 바꾸고 설치한다.
   --badreloc: --relocate와 같이 사용하는 옵션으로 OLDPATH에 대한 할당 정보를 제외하고 파일,
              경로 등에 대한 정보를 허가한다.
   --rebuilddb : 특정한 패키지 설치후에 rpm패키지로 검색했으나 나타나지 않을 때 rpm데이터베이
               스를 업데이트한다
(3) 정리
   -ivh : 새로운 패키지 설치
   -Uvh : 업그레이드하거나 새로운 패키지 설치
   -Fvh : 이전 버전의 패키지가 있는 경우에만 패키지 설치
(4) 사용예
   1) [root@www src]# rpm -Uvh --oldpackage  proftpd-1.2.2-3kr.i686.rpm
       => 설치하고자 하는 버전이 이미 설치되어 있는 버전보다 낮더라도 설치한다.
   2) [root@www src]# rpm -Uvh --percent  proftpd-1.2.2-3kr.i686.rpm
       => 설치할 때 퍼센트를 출력해준다.
   3) [root@www src]# rpm -Fvh ftp://updates.redhat.com/current/i386/*.rpm
       => 이미 설치된 패키지만 업데이트한다.

2. 제거모드
(1) 설명 : 시스템에 설치된 패키지를 제거하기 위해 사용된다. rpm은 기본적으로 삭제대상 패키지에
           의존적인 다른 패키지가 없을 경우에만 삭제한다.
(2) 관련옵션
   -e : 설치된 패키지를 제거한다.
   --nodeps : 제거시 의존성을 무시한다.
   --test : 실제로 제거하지 않고 테스트한다. 역시 -v,-h옵션은 사용할 수 없으며, -vv옵션만 사용
           가능하다.
   --allmatches: 동일한 이름이 패키지가 중복설치되어 있는 경우 모두 제거한다.
(3) 사용예
   1) [root@www /root]# rpm -e --test xemacs
      error: removing these packages would break dependencies:
             xemacs = 21.1.14 is needed by xemacs-el-21.1.14-10
             xemacs = 21.1.14 is needed by xemacs-info-21.1.14-10
       => rpm패키지 제거 테스트다. 이 경우는 의존성때문에 제거할 수 없다. 만약 그래도 제거하려
         면 --nodeps를 붙여야 한다.
   2) [root@www /root]# rpm -e httpd --nodeps
       => httpd 패키지에 의존성이 있더라도 무조건 제거한다.
   3) [root@www /root]# rpm -e sendmail --allmatches
       => sendmail이 중복되어 설치되어 있는 경우 모두 지운다.

3. 질의모드
(1) 설명: 설치된 패키지와 각 패키지에 포함된 파일들을 'rpm -q'를 이용하여 질의(Query)할 수
          있다.
(2) 관련옵션
   -q : 질의시에 꼭 써야하는 옵션이다. 패키지를 찾으면 패키지이름과 버전만 표시한다.
   -i : 설치된 패키지의 정보를 보여준다. -p옵션과 사용하면 패키지 파일정보를 보여준다.
   -l : 패키지에 포함된 모든 파일을 보여준다. 역시 -p와 사용하려면 정확한 파일명을 적는다.
       (--list)
   -p 파일명: 패키지의 파일에 대한 정보를 보여준다. 이 옵션을 사용하려면 패키지파일의 정확한
             이름을 입력해야 한다.
   -a : 시스템에 설치된 모든 패키지목록을 보여준다. (--all)
       패키지명을 잘 모르는 경우에는 '| grep 패키지명'을 붙여 사용하면 유용하다.
   -f 파일명: 지정된 파일이 포함된 패키지를 출력한다.
   -c : 해당패키지의 설정파일이나 스크립트파일을 보여준다.
   -d : 해당패키지의 문서파일을 출력한다.
   -R : 어떤 패키지에 의존하고 있는지를 보여준다. (--requires)
   --changelog: 특정 패키지의 바뀐 내역을 최근부터 연대순으로 보여준다.
   --scripts: 인스톨 및 언인스톨관련 스크립트를 보여준다.
   --filesbypkg : rpm패키지가 많을 경우 목록으로 보이는 파일앞에 패키지명을 붙인다.
   --whatrequires: 해당패키지를 필요로하는 패키지를 보여준다.
   --whatprovides: 해당패키지가 제공하는 패키지를 보여준다.
   --requires: 해당패키지가 설치되거나 동작시에 필요한 패키지 목록을 보여준다.
   --queryformat: 질의의 결과를 원하는 형태로 출력할 때 쓴다. C언의 printf()함수의 동작방법과
                 비슷하다.
(3) 사용예
   1) [root@www spool]# rpm -q sendmail
      sendmail-8.12.5-7
        => 설치된 sendmail의 패키지이름과 버전을 보여준다.
   2) [root@www /root]# rpm -qi sendmail
        => sendmail의 패키지정보를 보여준다.
   3) [root@www /root]# rpm -qa
        => 현재 설치된 모든 패키지를 보여준다.
   4) [root@www /root]# rpm -qa |grep netscape
      netscape-communicator-4.77-1wl
      netscape-common-4.
      netscape-navigator-4.77-1wl
       => 네스케이프관련 패키지를 보여준다.
   5) [root@www /root]# rpm -ql sendmail
       => sendmail이 설치되어 있는 곳을 보여준다.
   6) [root@www /root]# rpm -qf /etc/lilo.conf
      file /etc/lilo.conf is not owned by any package
       => 모든 파일이 rpm패키지를 통해서 인스톨된 것은 아니다.
   7) [root@www /root]# rpm -qf /etc/sendmail.cf
      sendmail-8.11.3-1wl
       => 해당파일에 대한 관련패키지를 찾아준다.
   8) [root@www /root]# rpm -qc at
      /etc/at.deny
      /etc/rc.d/init.d/atd
   9) [root@www /root]# rpm -qd lilo
       => lilo관련 문서파일을 보여준다.
   10) [root@www /root]# rpm -qR sendmail
       => sendmail이 의존하고 있는 패키지를 보여준다.
   11) [root@www /root]# rpm -q --changelog sendmail
        => sendmail이 바뀐 내역을 최근부터 연대순으로 보여준다.
   12) [root@www root]# rpm -q --scripts sendmail
        => sendmail의 인스톨 및 언인스톨관련 스크립트를 보여준다.
   13) [root@www src]# rpm -qlp proftpd-1.2.7-3kr.i686.rpm
        => 패키지의 설치되는 파일을 보여준다.
   14) [root@www src]# rpm -qip proftpd-1.2.7-3kr.i686.rpm
       [root@www src]# rpm -qlp proftpd-1.2.7-3kr.i686.rpm
       /etc/logrotate.d/proftpd
       /etc/pam.d/ftp
         ..생략..
        => 패키지의 정보를 보여준다.
   15) [root@www src]# rpm -qp --filesbypkg *.rpm
       proftpd                   /etc/logrotate.d/proftpd
       proftpd                   /etc/pam.d/ftp
        ..생략..
        => 확인하고자하는 패키지파일이 많은 경우 각 파일앞에 패키지명을 덧붙여 보여준다.
   16) [root@www /root]# rpm -q --whatrequires httpd
        => httpd 를 필요로 하는 패키지를 보여준다.
   17) [root@www /root]# rpm -qa --queryformat "%10{size} %{name}\n"
        => 패키지를 일정한 형태로 출력한다.

4. 검증모드
(1) 설명: 설치된 패키지 파일들을 검증한다. 보통 보안상 침입자에 의해 실행파일들이 권한획득을
          위해 변조되는 경우가 있는데 이러한 것을 찾아낼 때 사용한다.
(2) 관련옵션
   -V : verify의 약자로 검증할때 쓰는 기본 옵션이다.
   -a : 모든 패키지를 검사한다.
(3) 사용예
   1) [root@www /root]# rpm -V bind
      SM5..UGT c /etc/rndc.conf
       => 환경파일은 변경될 수 있으므로 크게 신경안써도 된다.
   2) [root@www /root]# rpm -Va
       => 모든 패키지를 검사한다.
(4) RPM 검증코드
   5 : MD5체크섬을 변경
   S : 파일의크기를 변경
   L : 심볼릭 링크를 변경
   T : 파일의 수정일을 변경
   D : 장치파일을 변경
   U : 파일사용자/소유자가 변경
   G : 파일 그룹이 변경
   M : 파일모드(권한과 파일형태)가 변경
   ? : 원인을 알 수 없거나 예측하지 못한 결과인 경우
(5) 참고 : 패키지를 구해서 설치할 경우 잘 알려지지 않는 경로로 파일을 입수했을 경우에 체크를
           해보는 것이 좋다. 이 경우에 --checksig를 사용한다.
    [root@www /root]# rpm --checksig fileutils-4.0-1.i386.rpm
    fileutils-4.0-1.i386.rpm: size md5 OK
     => 'size md5 OK'는 해당 파일의 크기와 MD5체크섬의 확인결과와 본래값과 일치하므로 문제가
       없다는 뜻이다. 체크섬을 파일내용이나 다른 정보를 기초로 하여 계산된다.

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. RPM이란?
(1) 개요 : RedHat Package Manager의 약어로 프로그램등을 설치할 때 사용하는 방법이며 Red Hat사
           에서 제안하였다. rpm은 유닉스계열의 일반적인 설치방법인 소스방법에 비해 쉬운 설치를
           지원하지만 설치되는 디렉토리의 변경이 불가능하다. 설치된 디렉토리나 실행명령 등은
           설치후 질의를 통해 확인해야 한다.
(2) 파일의 구조
   1) 기본구성
     패키지이름-버전-릴리즈.아키텍쳐.rpm
   2) 구성설명
    ㄱ. 패키지이름: 어떤 패키지인가를 설명해주는 패키지의 이름을 나타낸다.
    ㄴ. 버전: 패키지의 버전을 의미한다.
    ㄷ. 릴리즈: 한 버전의 패키지를 몇번 빌드했는지를 알려준다.
    ㄹ. 아키텍쳐: 어느 아키텍쳐에 사용가능한지를 알려준다. 패키지가 사용가능한 시스템을 말한
                 다.
        예) i386, i486, i586, i686: 인텔 x86 호환계열에 사용
            ia64: IA-64(Itanium)
            alpha: Digital 알파서버용
            ppc: 매킨토시 PowerPC용
            sparc: Sun Microsystem용
            s390: IBM s/390용
   3) 파일예
     XFree86-Mach64-3.3.6-20kr.i386.rpm
(3) rpm패키지의 4가지모드
   1) 설치 및 갱신모드
   2) 제거모드
   3) 질의모드
   4) 검증모드

2. RPM사용하기
(1) 사용법
   rpm options [filename]
(2) option
   -i  : 기본적으로 설치할 때 쓴다. 이 옵션을 사용하면 이전 버전의 같은 패키지에 대한 정보가
        존재할 경우 설치하지 않는다.(--install)
   -U  : 이전버전이 설치되어 있으면 업그레이드를 하며, 설치되어 있지않으면 새롭게 설치한다.
        이전버전이 설치되어 있을 경우에 환경설정파일을 제외하고 모두 새롭게 설치한다. 설치시에
        이 옵션을 사용하도록 한다.
   -F  : 현재 설치하는 패키지의 이전 버전이 설치되어 있는 경우에만 설치하고, 그렇지 않은 경우
        에는 설치하지 않는다.
   -v : 설치중 메시지를 보여준다.
   -h :  진행과정을 '#'으로 표시하라는 뜻이다.(--hash)
   -e : 패키지를 제거할 때 쓰인다.
   -q : 패키지가 설치되어 있는 질의한다. 이 옵션 단독으로 사용하면 패키지이름과 버전만 표시된
       다.
   -qa : 현재 설치된 모든 패키지 목록을 찾는데 사용한다. 보통 grep명령과 같이 사용된다.
     예) rpm -qa |grep mail
        => mail 이라는 문자열이 들어가고 설치된 rpm패키지를 찾는다.
   -qi : 현재 설치된 패키지의 간략한 정보를 출력
   -ql : 현재 설치된 패키지의 내용을 보여준다. 어떤 파일이 어디에 설치되어 있는지 확인할 때
        쓴다.
   -Vf : 현재 설치된 파일의 검증할때 쓴다. 문제가 없으면 '.'으로 표시된다.
   -Va : 전체 패키지를 검증한다.
   -Vp : 한 패키지만 검증한다.
   --force : 보통 패키지뒤에 붙는 옵션으로 패키지와의 충돌등을 무시하고 무조건 설치하는 옵션
           이다. (앞에 옵션을 써도 무방함.)
   --nodeps : 의존성 문제를 일으켜 설치가 안될경우에 쓰는 옵션이다.
     예)rpm -Uvh xmms-1.2.4-4.i386.rpm --force
   (참고) '-'는 기본옵션을 뜻하고, '--'는 선택옵션을 뜻한다.

(3) 사용예
   1) 설치
     ㄱ. rpm -Uvh XFree86-Mach64-3.3.6-20kr.i386.rpm
        => Mach64용 X윈도우 드라이버를 설치한다.
     ㄴ. rpm -Uvh han2-0.3.7-9.i386.rpm
        => han2라는 프로그램을 설치한다.
   2) 제거
     ㄱ. rpm -e xmms
        => xmms라는 패키지를 제거한다. 의존성이 있는 경우에는 제거되지 않는다.
     ㄴ. rpm -e httpd --nodeps
        => 의존성이 있는 경우라도 무조건 제거된다.
   3) 질의
     ㄱ. rpm -q sendmail
        => 설치된 sendmail의 패키지를 보여준다.
     ㄴ. rpm -qa
        => 현재 설치된 모든 패키지를 보여준다.
     ㄷ. rpm -qa | grep xmms
        => 현재 설치된 패키지 중에 xmms라는 문장이 들어간 것만 찾는다.
     ㄹ. rpm -qi sendmail
        => sendmail 패키지에 대한 인스톨정보를 보여준다.
     ㅁ. rpm -ql sendmail
        => sendmail이 설치된 경로를 보여준다.

(참고) rpm 패키지를 이용하여 게임설치하기
1. 설명: 간단한 X-window용 게임설치를 통하여 rpm패키지를 사용해보자.
2. 방법
  (1) 심파일(http://simfile.chol.com)에 접속한다.
  (2) 검색창에 'cosmosmash' 라고 입력한다.
  (3) cosmosmash-1.3-1.i386.rpm 라는 패키지를 다운받는다. 참고로 심파일사이트는 X-window의
     웹브라우저에서는 다운받을 수 없으므로 윈도우에서 다운받도록 한다.
  (4) 설치한다.
    [root@redhat9 root]# rpm -Uvh cosmosmash-1.3-1.i386.rpm
    오류: Failed dependencies:
            gengameng >= 4.0 is needed by cosmosmash-1.3-1
            libgengameng.so.4 is needed by cosmosmash-1.3-1
     => 설치를 하면 의존성때문에 설치가 안된다. rpm패키지는 설치나 제거시에 의존성이 있으면
       설치나 제거가 되지 않는다. 이 패키지를 설치하려면 관련 패키지를 먼저 설치해야 한다.
  (5) 의존성문제를 해결하기 위해서 rpm패키지를 검색해주는 http://www.rpmfind.net 사이트에
     접속한다.
  (6) 검색창에 'gengameng'이라고 입력한다.
  (7) gengameng-4.1-3.i386.rpm 라는 패키지를 다운받는다.
  (8) gengameng-4.1-3.i386.rpm 패키지를 설치한다.
    [root@redhat9 root]# rpm -Uvh gengameng-4.1-3.i386.rpm
    경고: gengameng-4.1-3.i386.rpm: V3 DSA signature: NOKEY, key ID f9651d5a
    준비 중...                  ########################################### [100%]
       1:gengameng              ########################################### [100%]
  (9) 다시 cosmosmash-1.3-1.i386.rpm 를 설치한다.
    [root@redhat9 root]# rpm -Uvh cosmosmash-1.3-1.i386.rpm
    준비 중...                  ########################################### [100%]
       1:cosmosmash             ########################################### [100%]
      => 정상적으로 설치됨을 알 수 있다. rpm패키지는 항상 의존성문제를 먼저해결해야 한다.
  (10) 설치된 프로그램을 실행하기 위해서는 실행파일을 찾아야 한다. rpm패키지는 설치는 쉬우나
     설치될 디렉토리지정등을 할 수 없다. 따라서 어떠한 파일이 설치되었고, 어떤 디렉토리에 설치
     되었는지의 질의를 통해 알아봐야 한다.
      예) [root@redhat9 root]# rpm -qi cosmosmash
          Name        : cosmosmash                   Relocations: /usr
          Version     : 1.3                               Vendor: (none)
          Release     : 1                             Build Date: 2002년 12월 27일 (금) 오전 11시 53분 14초
          Install Date: 2003년 06월 18일 (수) 오전 01시 22분 14초      Build Host: elise.sarrazip.org
          Group       : Amusements/Games              Source RPM: cosmosmash-1.3-1.src.rpm
          Size        : 163609                           License: GPL
          Signature   : (none)
          Packager    : Pierre Sarrazin
          URL         : http://sarrazip.com/dev/cosmosmash.html
          Summary     : Clone of the Intellivision(TM) game Astrosmash(TM).
          Description :
          Clone of the Intellivision game Astrosmash.
          In this game, you control a base that must destroy
          rocks before they hit the ground, or you lose points.
          You must also prevent "spinners" from touching the ground,
          or your base will explode.

          This package installs an entry in the GNOME 1.x Games menu.
           => 간단한 설치정보를 볼 수 있다.

          [root@redhat9 root]# rpm -ql cosmosmash
          /usr/bin/cosmosmash
          /usr/man/man6/cosmosmash.6.gz
          /usr/share/gnome/apps/Games/cosmosmash.desktop
          /usr/share/pixmaps/cosmosmash.png
          /usr/share/sounds/cosmosmash
          /usr/share/sounds/cosmosmash/hyperspace.wav
          /usr/share/sounds/cosmosmash/player-hit.wav
          /usr/share/sounds/cosmosmash/pulsar-beep.wav
          /usr/share/sounds/cosmosmash/rock-hit-0.wav
          /usr/share/sounds/cosmosmash/rock-hit-1.wav
          /usr/share/sounds/cosmosmash/saucer-shooting.wav
            => 설치된 파일의 목록을 볼 수 있다. 여기서 실행파일이 /usr/bin/cosmosmash임을 알
              수 있다.
  (11) 실행한다.
    [root@redhat9 root]# /usr/bin/cosmosmash &

Trackback
Reply
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31