본문 바로가기

Management/Linux

Remote Host에서 X응용프로그램 사용



리눅스를 사용하다보면 다른 시스템(remote host)의 X 응용 프로그램을 실행시키고 싶은 경우가 생깁니다. 이럴때는 어떻게 해야 할까요? 다음은 제가 han.sys.linux 그룹을 주기적으로 구독하면서 배워서 사용 하고있는 방법들을 정리해 본것입니다. 제생각에는 리눅스 뿐만 아니라 다른 시스템에서도 부분적으로는 적용할수 있을 겁니다. 고수분들은 이미 다 알고 계시는 내용입니다. 제가 잘못알고 있는 점도 많이 있을터인데 기탄없이 지적해 주시고, 다른 방법을 알고 계시는 분들도 의견을 주시면 고맙겠습니다.

  1. startx 또는 openwin
  2.        대부분의 사람들이 startx 나 openwin 명령으로 X window 를 사용
         합니다.  저는 startx 를 사용합니다.  이 경우 X window 화면은 
         VT 7 에 있읍니다.  X 가 뜬 직후에 startx 명령을 내린 가상콘솔
         (vc - Virtual Console)로 화면을 전환( ctrl + alt + F# )하여
         보면 (using VT number 7) 이라고 쓰여 있는 줄이 있읍니다.  
           다시 X 화면으로 돌아 옵시다.( alt + F7 )  xterm 이나 hanterm
         의 terminal window 를 띄우고  ps ax | grep 'X :' 이라고 명령을
         내려 봅시다.  다음과 비슷하게 나옵니다. 
              nuclina:~# ps ax | grep 'X :'
                321  ?  S    50:16 X :0
               1579  ?  S     0:23 /usr/X11/bin/X :1 <-- 이줄은 없을 것임.
               1655 pp2 D     0:00 grep X :
              nuclina:~# 
         위에서 X :0 그리고 X :1 이라고 되어 있는 것중 :(콜론) 다음의 숫자
         가 displaynumber 라고 합니다.  연습을 한번 더 할까요?
         env | grep DISPLAY 라고 쳐봅시다.  저는 다음과 같이 나오는 군요.
              nuclina:~# env | grep DISPLAY
              HOSTDISPLAY=nuclina:0.0
              DISPLAY=:0.0
              nuclina:~# 
         여기서 nuclina:0.0 라는 것은 nuclina 라는 host 의 0번 display
         (0.0 에서 앞의 0 이 displaynumber) 의 0번 screen (0.0 에서 뒤의 0
         이 screennumber 인데 여기서 screennumber 라 함은 한대의 PC 에 
         모니터가 여러개 달려 있을때 순서대로 0,1,... 하는 식으로 번호가 
         붙습니다. 대부분은 모니터가 하나이므로 screennumber 는 0 으로
         나옵니다.) 을 사용하고 있음을 의미합니다.  그러나  위와 같이
         나오지 않는다고 해서 실망할 필요는 없습니다.
           서설이 너무 길었지요?
         이제 remote host (remote host 의 hostname 을 그냥 remote 라고
         하겠습니다) 의 hanterm( 윈도우가 뜨는  remote 의 X 용 프로그램
         들중 어느 것을 택해도 상관 없음) 을 실행시켜 봅시다. hanterm 이나
         xterm 에서 다음 순서대로 합니다.  자기 host 의 hostname 을
         myhost 라고 합시다. 
            myhost:~$ xhost +remote
            myhost:~$ telnet remote
         login 을 했지요?  DISPLAY 라는 변수를 정해 줍니다.
         Bourne Shell(sh), Bourne-Again Shell(bash), Korn Shell(ksh)
         에서는
            remote:~$ DISPLAY=myhost:0 ; export DISPLAY  
         C shell(csh), tcsh 의 경우에는 (이하 csh 의 경우 만 쓰겠습니다) 
            remote:~$ setenv DISPLAY myhost:0  --> 저는 안되더 군요. 
         display 를 open 하지 못한다고 에러를 뿌립니다.  저도 이유를
         모르겠읍니다. 제 host 는 네임서버에 A 레코드, PTR 레코드가
         다 등록되어 있고 ns.krnic.net 에서도 제대로 확인이 되는데...
         그렇지만 실망마세요.  다음과 같이 하니까 되는 군요.
            remote:~$ setenv DISPLAY my_IP_address:0
         콜론(:) 옆의 숫자가 무엇인지 아시겠지요? 위에서 확인한 자신의
         displaynumber 입니다.  이제 remote 의 hanterm 을 실행해야지
         요?  위의 Can't open display 운운은 실제는 이과정에서 나옵니다.
            remote:~$ hanterm &
         물론 hanterm 이 자기의 path 에 속해 있어야 되지요. hanterm 이
         성공적으로 뜨면, netscape 도 띄워 보십시요.
            remote:~$ netscape &
    
    

  3. xinit
  4.      1) xinit
            리눅스를 X-terminal 로 사용하고자 하는 분이 많더군요.
            이 방법을 사용해 보십시요.
            
            전제조건은 일단 myhost 에서 아무런 X 도 띄우지 마십시요.
            startx 건 openwin 이건 xdm 이건 아무것도 띄우지 않아야
            합니다.  가상콘솔에서 
                myhost:~$ xinit
            자기 홈 디렉토리에 .xinitrc 라는 파일이 있으면 다른 이름
            으로 미리 rename 시켜 놓으십시요.
            
            회색화면에 xterm 하나만 왼쪽상단에 달랑뜨는데 윈도우 매니저
            (fvwm, olvwm, olwm, twm, mwm 등등)가 없기 때문에 이 xterm
            을 움직일수도 크기를 변경시킬수도 없읍니다.  걱정마십시요.
            위와 같은 절차를 밟습니다.
                myhost:~$ xhost +remote
                myhost:~$ telnet remote
            remote 에 login 했지요?   아까와 같이 DISPLAY 변수를 정해
            줍니다.  csh 의 경우
                remote:~$ setenv DISPLAY my_IP_address:0
            
            이제는 remote 에서 윈도우 매니저를 찾아 봅니다.
            일반적으로 X 의 실행파일들은 /usr/X11/bin 에 있습니다.
                remote:~$ cd /usr/X11/bin
                remote:~$ ls -l *wm
            이제 이들 중 하나의 윈도우 매니저를 실행시킵니다. mwm 이
            있으면
                remote:~$ mwm &
            이렇게 하면 mwm 이 실행되고 xterm 의 위치도 변경시킬수 있고
            크기도 조절할수 있습니다.  저의 경우 remote 가 SunOs 4.1.3
            인데 fvwm 이 있더군요.  그래서 fvwm 을 실행시켰더니 리눅스
            처럼 9개의 가상윈도우 Pager 가 나타나고 마우스로 메뉴를 
            호출했더니 Shells 서브메뉴에 있는 각종 Terminal Window 가
            다 작동합디다.
    
    
          2) xinit 와 startx
             위의 경우가 다 성공적입니까?  성공하지 못하셨다고 저에게
             메일을 보내지는 말아 주십시요.  제가 아는한 말씀드린 것이
             라 저에게 문의 하셔도 더이상은 저는 알지 못합니다.  에러
             메시지와 함께 뉴스 그룹에 포스팅 하십시요.  고수분들이 많이
             계시니까 답변해 주실 분이 있을 겁니다.  답변이 없다면
             포기하거나 외국 뉴스그룹에 영어로 포스팅하는 수밖에 없을
             겁니다.  각설이 타령 그만하고...
    
               성공하신 분들은 욕심이 생기죠.
             startx 도 실행하여 내것도 사용하고, remote 의 mwm 도 돌리고.
             한번 생각해 봅시다.  여기까지 왔으면 man xinit 로 매뉴얼을
             읽어 보셔야 되리라고 생각합니다.  어떻게 할수 있을까요?
    
             vc(가상콘솔) 1번에서 startx 로 내것을 먼저 띄웁니다.  VT 7 
             에 자신의 X 가 있지요.  displaynumber 는 0 번만을 사용하고 
             있음을 확인 합니다.
    
             목표는 display 1번에 remote 의 mwm 을 실행하는 것으로 합
             시다.  다음 순서를 따라서 해봅니다.
             vc 2번 ( ctrl + alt + F2 ) 으로 login 합니다.
                myhost:~$ xinit -- /usr/X11/bin/X :1
             마이너스표시가 2개, 공백, 그리고 Full path 를 주셔야 합니다.
                myhost:~$ xhost +remote
                myhost:~$ telnet remote
                remote:~$ setenv DISPLAY my_IP_address:1
                remote:~$ mwm &
    
             제대로 동작합니까? 이제는 매뉴얼을 읽으십시요.
    
             이상은 remote 의 X client 들을 실행시킬수 있는 허가(permission)
             와 path 만 제대로 되어 있으면 됩니다.  제가 다 test 를 해보았
             습니다.  안된다고 저에게 메일 보내지 마십시요.
    
    
          3) startx 로 X 를 여러개 띄우기
             자신의 컴퓨터에서 X 를 여러개 띄울 수 있을까요?
             다음과 같이 해봅시다.
             vc 1 에서 평상시와 같이 startx 로 X 를 띄웁니다.
             vc 2 에서 이번에는 16 bpp 로 X 를 띄웁시다. 명령은 다음과 
             같이 내립니다.
                startx -- :1 -bpp 16
             메모리만 넉넉하면 가상콘솔이 허용되는 한 띄울수 있을겁니다.
             다섯개 까지 띄워 본 분도 있습니다. 띄워 쓰기를 주의 하십시요.
             어느 명령을 먼저 내리든 간에 제일 먼저 띄운 X 가 VT 7 번을 
             사용하고 VT 숫자가 순서대로 증가합니다.  
    

  5. xdm
  6.      remote 의 xdm 을 사용하여 myhost 를 X-terminal 처럼 사용하는 
         방법이 있읍니다.  이 경우 remote 에 xdm 이 데몬으로 떠 있어야 
         합니다.  remote 에 login 하여 ps ax | grep xdm 으로 확인해 
         봅니다.  default setting 이면 일반적으로 xdm 이 데몬으로 떠 있기
         만 하면 됩니다. 혹시 잘 안되면 *** 로 표시 된 부분을 건드려
         보십시요.
    
         1) remote 의 xdm 관련 파일들과 setup
            xdm 에 관련된 파일들은 일반적으로 /usr/lib/X11/xdm 속에 있읍
            니다.  이 파일들을 수정하려면 당연히 수퍼유저(root) 의 권한이
            있어야 됩니다.  이제 이 파일들중 몇가지를 알아 봅시다.
    
           (1) Xservers 
               이 파일에는 일반적으로 예제가 있읍니다.  리눅스 시스템은 
               다음과 같군요.
               # $XConsortium: Xserv.ws.cpp,v 1.3 93/09/28 14:30:30 ...
               #
               # Xservers file, workstation prototype
               #...... 중 략 
               #..........................  Each X terminal line should
               # look like:
               #       XTerminalName:0 foreign
               #
               :0 local /usr/X11R6/bin/X
    
               다른 시스템도 거의 대동소이 합니다.  마지막 줄은 약간 
               다를 수도 있는데 remote 의 자체 display 에 xdm 으로 X 를 
               띄우는 줄입니다.  이 줄 (:0 local ...) 을 # 로 막으면 
               달리 사용하는 방법이 있는데 뒤에 설명하겠읍니다.
       
    
           (2) Xaccess
               이 파일은 누가 접속할수 있는가를 제어하는 것인데 수정할
               필요가 없습니다.  대부분이 # 으로 시작하는 주석문이고
               자세한 설명이 쓰여 있지요. comment 가 아닌 곳은 두군데로
               * 으로 시작하는 line 이 두개 있읍니다.  저도 읽어보지
               않았읍니다.
    
           (3) Xresources
               login prompt 의 모양등을 조정할수 있습니다. 
               별로 손댈 필요가 없겠지요.
    
           (4) xdm-config  --- *** : test 해보지 않았읍니다.
               xdm 을 전체적으로 config 하는 파일 입니다.  
               리눅스 시스템의 파일을 들여다 보지요.
    
    nuclina:/usr/lib/X11/xdm# cat xdm-config
    ! $XConsortium: xdm-conf.cpp,v 1.2 93/09/28 14:30:32 gildea Exp $
    DisplayManager.errorLogFile:    /usr/X11R6/lib/X11/xdm/xdm-errors
    DisplayManager.pidFile:         /usr/X11R6/lib/X11/xdm/xdm-pid
    DisplayManager.keyFile:         /usr/X11R6/lib/X11/xdm/xdm-keys
    DisplayManager.servers:         /usr/X11R6/lib/X11/xdm/Xservers
    DisplayManager.accessFile:      /usr/X11R6/lib/X11/xdm/Xaccess
    DisplayManager._0.authorize:    true
    DisplayManager._0.setup:        /usr/X11R6/lib/X11/xdm/Xsetup_0
    DisplayManager._0.startup:      /usr/X11R6/lib/X11/xdm/GiveConsole
    DisplayManager._0.reset:        /usr/X11R6/lib/X11/xdm/TakeConsole
    DisplayManager*resources:       /usr/X11R6/lib/X11/xdm/Xresources
    DisplayManager*session:         /usr/X11R6/lib/X11/xdm/Xsession
    DisplayManager*authComplain:    false
    
               line 들이 길어서 줄을 맞추지 않았습니다.
               손댈 필요가 없다고 생각되지만 잘 되지 않으면 다음과
               같이 해보십시요. Test 해보지 않았습니다.
               위에서 _0( 위에서 설명한 :0 과 같은 의미임) 이 들어 있는 
               4줄을 복사하여 아래와 같이 고쳐서 추가합니다.  
               물론 remote 의 xdm-config 파일을 수정하는 것이지요.  
               수정하기전에 다른이름으로 복사하는 것을 잊으시면 안됩니다.
    DisplayManager.myhost_0.authorize:    true
    DisplayManager.myhost_0.setup:        /usr/lib/X11/xdm/Xsetup_0
    DisplayManager.myhost_0.startup:      /usr/lib/X11/xdm/Givemyhost
    DisplayManager.myhost_0.reset:        /usr/lib/X11/xdm/Takemyhost
               
               이제 Givemyhost 와 Takemyhost 라는 dummy 파일을 만듭
               니다.  remote 의 /usr/lib/X11/xdm 디렉토리에서( 또는
               위에서 path 를 remote 에서의 자신의 홈 디렉토리로
               설정하고 자신의 홈 디렉토리에서)
                  remote:~$ touch Givemyhost
                  remote:~$ touch Takemyhost 
    
           (4) xdm-errors
               에러가 기록됩니다. 이상이 있으면 이 파일을 읽어 보십
               시요.
    
         2) myhost 에서 접속할때의 명렁  
            이제는 myhost 의 가상콘솔에서
               myhost:~$ X :1 -query remote
            하면 끝입니다.  이제는 위의 콜론(:) 다음의 숫자 1 에 대해서 
            설명하지 않아도 되겠지요?  myhost 에서 이미 startx 로 0(zero) 
            번 display 를 사용하고 있기 때문입니다.  성공이면 X-terminal 
            처럼 그래픽 화면에 xdm login prompt 가 뜹니다.
    
            실패든 성공이든 myhost 와 remote 양쪽 에서 man xdm, man Xserver 
            로  매뉴얼을 읽어 보십시요
    

  7. xdm 과 startx
  8.      이번에는 다음의 상황을 생각해 봅시다.
    
         myhost(자신의 리눅스 시스템) 에서 startx 로 자신의 X 를 사용
         하면서 myhost 에서 xdm 을 데몬으로 띄우고(xdm 의 X 는 띄우지 않고)
         LAN 상의 다른 리눅스 호스트가 myhost 에 X-terminal 로 접속해 올
         수가 있을 까요? 
    
         앞의 3번의 Xservers 파일에서 0: local ... 이라고 되어 있는
         line 을 #(hash) 로 막고, xdm 을 띄우고, 다른 리눅스 호스트에서 
         접속을 시도해 보십시요.  
    
    

  9. Xnest
  10.      3번의 xdm 방법이 제대로 작동하면 myhost 에서 startx 로 X 를 띄우고
         xterm 이나 hanterm 에서 
            myhost:~$ Xnest :1 -query remote &
         라고 한번 해보십시요.  ctrl + alt + F# 로  X 화면을 돌아다니지
         않아도 되지요.  man Xnest 를 잊지 마십시요.
    
    

  11. 기타 다른 방법.
  12.      다른 분들이 채워 주시겠지요.
    
    

  13. fs (font server)
  14.      폰트 서버라 함은 일반적으로 X 에서 사용할 수 있는 폰트들을 제공하는 것이라
         하겠습니다.  LAN 상의 어느 remote 호스트에서 폰트 서버를 띄어 놓으면 그 
         호스트에서 제공하는 폰트들을 LAN 상의 다른 컴퓨터에서 사용할 수 있습니다.
         반대로 본인의 컴퓨터(myhost)에서 폰트 서버를 띄어 놓으면 LAN 상의 다른
         컴퓨터들이 myhost 에서 제공하는 폰트들을 사용할 수 있습니다. 디스크 공간의
         부족으로 폰트들을 많이 설치할 수 없다거나 폰트의 저작권 때문에 설치할 수
         없는 경우에 해결책이 되겠지요.
    
         myhost(리눅스)에서 remote(폰트 서버를 띄어 놓고 있는)가 제공하는 폰트들을
         사용하려면 /etc/XF86Config 파일내에 FontPath 라는 줄이 있는 곳에 다음과
         같이 한줄을 추가하면 됩니다.
    	FontPath  "tcp/remote:7000"
         여기서 7000 은 remote 의 tcp_port 인데 일반적으로 7000 또는 7100 정도인데
         remote 의 관리자에게 확인합니다.  이미 X 가 떠있는 상태에서 필요에 따라
         사용하려면 다음과 같이 명령을 내립니다.
            xset +fp tcp/remote:7000
         +fp 와 fp+ 의 경우가 서로 다릅니다. 전자는 폰트 서버의 폰트를 현재 load 
         되어 있는 것들 보다 앞에 두라는 의미입니다.(참조 man xset)
     
         리눅스에서 사용가능한 폰트 서버들은 다음의 것들이 있습니다.
         
         1) xfs
            리눅스 X 패키지에 기본적으로 들어 있습니다.  myhost 가 폰트서버가 되려
            면 xfs 를 실행시키면 됩니다(man xfs 참조).  제공할 폰트들에 관한 것은 
            /usr/lib/X11/fs/config 라는 파일에서 설정합니다.
    
         2) mxfs
            문홍석님이 만든 것으로 이야기(DOS 또는 MS-Windows 용 통신 프로그램)에서
            사용하는 다양한 한글 완성형 폰트들을 X 에서 사용할 수 있도록 해줍니다.
            수많은 이야기폰트가 같이 들어 있는 바이너리(파일이름이 fs.tgz ?  저는 
            source 를 보지 못했습니다.)패키지 인데 Hitel Linux 동의 자료실에서
            구할 수 있다고 합니다.
    
         3) xfstt -- True Type Font Server
            MS-Windows 나 win95 등에서 사용하는 True Type Fonts(*.ttf) 들을 
            X 에서 사용할 수 있도록 해줍니다. sunsite 의 Incoming 디렉토리에서 
            구할 수 있습니다.(Xfstt.tgz)  myhost 에서 이것을 실행시켰을 때 
            remote 에서 사용할 수 있는지는 모르겠습니다.  사용방법이 앞의 
            두가지와 약간 다릅니다.  X 를 띄울때 마다 사전에  xfstt 를 실행시켜야 
            합니다. 
    
         4) 미지리서치의 htm
            아래아 한글(hwp)에서 사용하는 다양한 폰트들을 X 에서 사용할 수 있도록
            해줍니다. 현재 버전은 1.0 으로 GNU libc(libc.so.6)를 사용하는 레드햇
            5.0 이상에서는 htm-1.0-2.i386.rpm 를 설치하고 아직 libc.so.5 를 사용
            하는 슬랙에서는 htm-1.0-1.i386.rpm 를 설치하면 됩니다.
    
         다음의 글들을 더 읽어 보십시요.
         김범철님의 X Font
         최준호님의 X-Window용 한글 폰트 모음   
         신정식님의 faq 6번 How can I use Hangul under Unix?
    
    

  15. X-TrueType Server: X에서 트루타입 폰트 이용하기
  16.      X 서버를 truetype 을 지원하도록 patch 해서 새로 설치하거나 폰트서버(xfs)만
         새로 구성하거나 할 수 있습니다. 앞에서의 xfstt 대신 이 방법을 권장합니다.
    
         제가 사용할 목적으로 Xserver, libfont, xfs 등을 XFree86
         3.3.3.1 과 커널 2.2.7, freetype 1.2(libttf.so.2.1.0), xtt-1.2.1 과
         libc 5.4.46 에서 (with X_LOCALE) egcs 1.1.2 로 컴파일 한 것이 있습니다.
         xc 소스트리에서 make World 로 했는데 컴파일에 걸린시간이 너무 아까워 
         링크를 걸어 놉니다. 필요한 X 서버와 라이브러리만 있으면 되리라 생각되는데 
         FreeType 라이브러리도 필요로 하는지는 모르겠습니다. 제대로 작동할 지도 
         모르겠고요. 이 것에 관한 질문은 사양합니다.
         I don't want any question mail related X-TT Server!!!
         X-TT Server binary(xtt 1.2.1/XFree86 3.3.3.1/libc5/freetype 1.2/X_LOCALE)
      
    

  17. win95 용 X-emulator 설정 및 사용
  18.     win95 에서 리눅스등의 X 프로그램을 실행시키려면 X-emulator 가 있어야 겠지요.
        다음의 site 들을 참조하십시요. 
        http://dao.gsfc.nasa.gov/software/grads/win32/X11R6.3/
        http://www.rahul.net/kenton/xsites.html#XMicrosoft 
    
        이하는 제가 접해 볼 수있었던 것들에 대한 간략한 경험담입니다. 
        저는 정품 또는 freeware 제품만을 접할 수 있을때 테스트 해보고, shareware 나 
        trial(demo) version 은 win95 에 깔지 않으므로 이 부분의 update 는 자주되지
        않을 것입니다. 
    
         1)Hummingbird Exceed(http://www.hummingbird.com)
           Exceed 는 현재 6.01 버전이 나와 있는데 제가 설정하여 본것은 5.0 입니다.
           Linux(slackware 3.4 정도) Box 에 xdm 을 띄우고 접속하는 방법에 대한 것입니다.
           Linux 쪽의 설정은 위를 참조하도록 하십시요. 이하는 win95 쪽에서 Exceed 의
           Xconfig 에 관한 것입니다. Exceed 의 Xconfig window 를 참조하십시요.
           참고로 제 win95 는 삼성 Sense 600 노트북 pc 인데 Linux 를 깔지 않았습니다.
    
           Exceed 의 설정 및 사용 
    
         2)MI/X(http://tnt.microimages.com/www/html/freestuf/mix/)
           처음에 freeware 로 시작했는데 Win95 용은 더이상 free 가 아니고 매킨토쉬용만 free
           이군요. 예전의 free 버전은 이제 제공을 하지 않는 군요.
           예전의 free 로 사용가능한 버전은 SHAPE extension 이 없어서 xv 가 제대로 실행되지
           않는 군요. remote 의 X 프로그램을 실행시키려면 다음과 같이 하니 되는 군요.
           예전의 free 경우입니다.
           (1)winterm 등으로 remote 로 telnet 접속을 한다.
           (2)remote 에서 export DISPLAY=myhost:0
           (3)win95 에서 X 를 실행시킨다.(Mix_95 폴더에서 Xs 를 클릭한다)
           (3)winterm 의 remote 에서 적당한 Window Manager 를 실행시킨다.(예를 들어 fvwm &)
           (4)X 프로그램을 실행시킨다. (Mouse 의 왼쪽버튼을 눌러 메뉴가 뜸을 확인한다)
    
         3) Xwin32(http://www.starnet.com/)
           이것은 사용 경험이 없습니다.  다음의 웹페이지를 참조하십시요.
           (1)Xwin32 맛뵈기(http://ha_nl.kyungpook.ac.kr/etc/lecture/computer/Xwin/Xwin32.htm)
           (2)Xwin32 의 설치(http://www.postech.ac.kr/hemos/help/Tutor/hemos_139.html)
     
         4) Virtual Network Computing (http://www.uk.research.att.com/vnc/)
           win95 에서 리눅스의 X화면을 모니터링할 수 있습니다. 프로그램도 실행시킬
           수 있구요. 반대로 리눅스에서 win95 의 화면을 볼수도 있고 프로그램도 실행
           시킬수가 있군요. 신기하네... vncserver 와 vncviewer 등으로 구성되어 있습니
           다. 사람들의 평은 느리다고 하네요.
            
         5)VMware(http://www.vmware.com)
          이 것을 무어라고 해야될는지... 가상머신? 리눅스 호스트에서 M$ 의 
          win-3.1/95/98/NT 등등을 돌릴수 있고, WinNT 에서 리눅스/M$ 의 OS 를 돌릴 수
          있다는 군요. 저는 경험이 없습니다.
    

  19. 다른 읽을 거리