다음 이전 차례

9. 도스와 리눅스간의 PLIP 연결

처음 이 미니하우투가 나온 이후로 많은 사람들이 리눅스와 도스 (또는 윈도우즈) 에 관한 많은 정보를 썼다. 일반적인 재미로 이장을 더하게 됐으며 모두에게 도움이 되기를 바란다.

이 부분은 James McDuffie의 리눅스 가제트에서 발췌했다. 여기서는 리눅스와 도스컴퓨터를 윈도우즈와 트럼펫 윈속을 사용하여 설치하고 윈도우에서 X윈도우즈의 프로그램을 실행시킬 수 있는 방법을 제공할 것이다.

최신 버전은 James Vahn에 의해서 추가되었다. jvahn@short.circuit.com 그는 어떻게 이 연결을 설정하고 많은 문제들에 대한 해결책을

이 문제들에 관한 부분들은 내가아닌 그에게 물어보기 바란다.

9.1 도스와 리눅스 연결

나는 당신이 반대편의 리눅스 머신과 PLIP가 거의 설정되고 케이블이 올바르게 연결되어 있다고 가정한다. 그렇지 않다면, 전의 내용들을 다시 보기 바란다.

지금, 도스 쪽에서, 무엇보다도 패킷 드라이버를 설치해야한다. 그것은 이 사이트에서 찾을 수 있다.

ftp://ftp.crynwr.com/drivers/plip.zip

이 프로그램은 도스에서 실행되며 Ethernet 패킷 드라이버처럼 동작한다. 만약 윈도우즈에서 사용하기를 원한다면, 트렘펫 윈속을 사용하라. 이것은 TCP/IP 인터페이스처럼 동작한다. 다른 한편으로, 당신은 도스용 TCP/IP프로그램을 찾을수있을것이다.

지금 리눅스 컴퓨터로 돌아가서 도스 컴퓨터의 주소를 /etc/hosts에 써넣어라. 만약 당신의 도스 컴퓨터가 할당된 IP를 가지고있지 않다면 원하는 주소를 고르기 바란다. (3장의 IP에 관한 경고를 기억하라) 지금 리눅스 컴퓨터의 이름은 리눅스, 도스 컴퓨터의 이름은 도스라고 가정한다.

당신은 다음과 같이 타이핑 하여야한다.

ifconfig plip1 linux pointopoint dos arp up
route add dos

물론, 당신이 매번 부팅될때마다 리눅스 컴퓨터에서 이를 실행하기를 원한다면 /etc/rc.d/rc.inet1에 다음의 내용을 기입하라.


/sbin/ifconfig plip1 linux pointopoint dos arp up
/sbin/route add dos

이것은 인터페이스를 설정하고 경로를 추가한 것이다. 물론, 두 번째 병렬포트를 사용한다면 대신 plip2를 써야한다.

도스/윈도우즈 컴퓨터로 되돌아가서 다음의 라인을 autoexec.bat파일에 추가하라.


c:\plip\plip.com 0x60
c:\tcpip\winsock\winpkt.com 0x60

물론, 나는 c:\plip.com 디렉토리 안에 plip.com (패킷 드라이버) 이 있다고 가정하고 c:\tcpip에 winpkt.com이 있다고 가정하여 올바른 경로가 설정되어 있다고 가정한다.

plip.com의 프로그램은 패킷 벡터를 0x60으로 설정하고 같은 벡터에서 트럼펫 윈속을 시작할 winpkt.com을 로드 한다. 만약 케이블이 lpt1이 아니라면 plip.com 프로그램에 irq와 입출력 주소를 알려주어야 한다. 또한, winpkt.com은 윈도우즈에서 패킷 드라이버를 이용하기 위해 필요하다. 여기서부터 우리는 실제적인 트럼펫 윈속에 관한 설정을 하게된다. SLIP와 PPP에 관한 것들을 선택하지 말고, 패킷드라이버의 기입란에 60을 기입하라. 그후 당신이 가지고있는 IP 주소를 기입하고, 리눅스 컴퓨터의 IP주소는 기본 게이트웨이로서 그리고 만약 당신의 컴이 IP나 ISP의 주소를 가지고 네임서버의 역활을하고 인터넷과 맛물려있다면 네임서버의 역할을 할 것이다. 설정을 끝낸 후 윈속을 재실행한다. 윈속을 시작 그룹에 포함시키면 모든 설정이 자동적으로 실행되게 된다.

만약 당신이 윈도우즈 컴퓨터를 당신의 리눅스 컴퓨터를 통하여 인터넷에 접속하려고 한다면, IP-masquerading이 필요하며 이에 대해서는 NET-2-HOWTO를 보기 바란다. 이것은 간단히 윈도우즈 컴퓨터를 당신의 리눅스 컴퓨터의 IP로 속여주는 것을 말한다.

또한 나는 윈도우즈에서 X윈도우즈 프로그램을 실행시키는 프로그램을 발견했다. 주소는 다음과 같다.

http://www.tucows.com/

지정한데로 모든 설정을 하고 윈도우즈 컴퓨터에서 리눅스 컴퓨터로 telnet을 한후 display를 윈도우즈 컴퓨터 (DISPLAY=duncan:0.0) 로 한후 원하는 프로그램을 실행시켜라. 윈도우즈에서 xv를 실행시키는 것보다 더 좋은 것은 없다. 이것이 도움이 되었기를 바란다.

9.2 도스와 리눅스간의 연결경험

주의: 나는 이 문서를 James Vahn jvahn@short.circuit.com. 에서 받았고 이것을 하나도 변경하지 않고 썼다. 이것은 이 부분에 관하여 어떠한 질문이라고 나보다는 그에게 능력이 더 많으므로 그에게 보내는 것이 적합하다는 것을 의미한다. 단지 플로피만 있는 도스 컴퓨터와 리눅스 컴퓨터와의 PLIP 연결 경험은 일반적인 문제들에 관한 아주 훌륭한 예이다.

1996년 6월 11일 마지막 업데이트

나의 플로피-단지 도스 박스는 PLIP를 통하여 리눅스 컴퓨터의 두 번째 프린터 포트와 네트웍으로 연결되어있다. 처음 리눅스의 프린터 포트는 프린터를 위한 것이고, 둘다 영구적으로 연결되어있고 도스 박스는 리눅스 쪽으로 telnet되어있다. 이것들이 내가 성취하려고 하는 것들의 요점이다.

커널에서 프린터 포트를 찾았을 때, 만약 포트를 찾았을 때 지우지 않았다면 모두를 찾을 것이다. 다른 한편으로 PLIP는 아무 것도 얻지 못할 것이다. 첫 번째 목적은 필요할 때마다 모듈로서 드라이버를 로드 한다.

<gniibe@mri.co.jp> 썼다:

나는 커널 모듈로서 PLIP/LP를 사용하기를 추천한다. 왜냐하면

PLIP/LP를 커널 모듈로서, 당신은 한쪽 포트에는 PLIP를 그리고 다른 쪽 포트에는 LP를 인식시킬 수 있다. 여기의 예다:

# insmod lp.o io=0x378
# insmod plip.o io=0x278 irq=2

심지어 당신은 2개의 병렬 포트를 사용할 수 있다:

# insmod plip.o io=0x278,0x3bc irq=2,5

위의 예에서,

plip0는 0x278번지에 할당되고 irq는 2번이다.

plip1은 0x3bc번지에 할당되고 irq는 5번이다.

모듈을 사용하는 것은 확실히 앞으로 나아가는 방향처럼 보인다. 다음 방법은 모듈의 사용 없이 서로 다른 포트에 PLIP와 LP를 사용하기 위한 커널 패치를 어떻게 하는지를 보여준다. 만약 당신이 모듈의 개념에 친숙하지 않다면, 빨리 설정하는 방법을 발견할 것이다.

당신은 커널의 소스구조에서 두 파일을 변경할 필요를 요한다. 나는 커널 1.2.13을 사용하고 나의 시스템에 알맞게 ../linux/drivers/net/Space.c안에서 필요한 부분을 변경하였다. 당신의 포트의 irq가 맞는지를 확인하기 위해서 PLIP를 정의한 205라인 주변을 살펴보고 어떤 드라이버 (plip0, plip1, plip2) 가 사용되는지를 확인하라. 나의 경우에는 0x278 포트가 irq 5번 (카드에 점퍼를 꽂는 형식으로)을 사용하고, 그러나 Space.c에는 irq 2번을 정의했다. 나는 박스를 열거나 점퍼를 바꾸기보다는 이 소스를 변경했다. 유동적인 것은 후에 ifconfig 명령으로 잘못된 irq를 할당할 것이며 그것은 당신은 귀찮게 할 것이다. 이것은 단순성(한 문자로) 변화이다.

다음으로, 더 어려운 과정인 :

../drivers/char/lp.c의 파일 안에서 38번째 라인의 부분을 찾아보아라.


struct lp_struct lp_table[] = {
    { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, },
    { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, 
/*  { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, 
 * 0x278 reserved for plip1
 *
 * }; 
 * #define LP_NO 3 
 */
}; 
#define LP_NO 2 

변경은 한 포트의 주석 처리를 한 것이고, 그래서 현재 두포트만이 정의되어있다. 0x3bc 포트는 PLIP에서 작동을 안하고 - 아마 irq라인은 오래된 단일 어댑터(MDA)에서 보았을 때 irq라인이 이 포트들에서 문제를 일으킨다.

당신은 이 파일들을 변경하기 전에 반드시 백업하여라. 맞지 않는가? 지금 프린터와 net , dummy 그리고 plip를위한 새로운 커널을 만들어라.

시스템을 설정하라. 이것은 나의 /etc/rc.d/rc.inet1 파일이다. :


#!/bin/bash
#
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0

/sbin/ifconfig dummy 200.0.0.1
/sbin/route add -net 200.0.0.0 netmask 255.255.255.0
/sbin/ifconfig plip1 arp 200.0.0.1 pointopoint 200.0.0.2 up
/sbin/route add 200.0.0.2
/sbin/ifconfig dummy down

arp는 도스와 리눅스간의 연결을 통하여 사용되고 분명히 리눅스와 리눅스간의 연결에는 사용되지 않는다.

그리고 /etc/hosts 파일 안에 다음 두 라인, 단지 두머신의 이름을 추가하면 된다:


200.0.0.1 console1
200.0.0.2 console2

도스박스는 console2이다. Andrea의 경고를 생각하고, 공식적인 이름을 정하는 규칙을 따르는 것이 더 좋다.

모든 변화들이 적용되기 위해서는 재부팅을 하고 새로운 커널이 영향을 미칠 것이다. 만약 당신이 패치를 가하는동안, 부팅순서 (또는 dmesg를 실행하는 동안) 또는 모듈이 로드 되고 있는 동안 :

lp0 at 0x03bc, using polling driver
lp1 at 0x0378, using polling driver
[....]
NET3 PLIP version 2.0 gniibe@mri.co.jp
plip1: Parallel port at 0x278, using assigned IRQ 5.

"route"명령은 다음을 보여준다:

Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
console2        *               255.255.255.255 UH    1436   0      136 plip1
loopback        *               255.0.0.0       U     1936   0      109 lo

그리고 "ifconfig plip1"은 다음과 같다:

plip1     Link encap:10Mbps Ethernet  HWaddr FC:FC:C8:00:00:01
          inet addr:200.0.0.1  P-t-P:200.0.0.2  Mask:255.255.255.0
          UP POINTOPOINT RUNNING  MTU:1500  Metric:1
          RX packets:132 errors:0 dropped:0 overruns:0
          TX packets:136 errors:0 dropped:0 overruns:0
          Interrupt:5 Base address:0x278 

/etc/inetd.conf 파일을 보고 만약 telnet이 된다면 보아라. 당신이 /etc/hosts.allow와 /etc/hosts.deny 파일을 이용하기를 원한다면 tcpd에 관한 매뉴얼 페이지를 읽어보아라.

리눅스 쪽에서는 모든 것이 끝났고 , 지금은 도스 쪽이다. 다시, one이 존재한다면 0x3BC의 포트를 확인하라.

나는 NCSA의 telnet을 사용하고 Crynwr의 PLIP드라이버를 다음의 사이트에서 사용한다.

ftp://ftp.ncsa.uiuc.edu/Telnet/DOS/ncsa/tel2308b.zip

ftp://ftp.crynwr.com/drivers/plip.zip

NCSA의 telnet 버전 2.3.08의 사용과 Crynwar의 PLIP 드라이버의 11.1버전을 사용하는지를 확인하라. Crynwar의 SUPPORT.DOC 파일을 읽어보기 바란다.

CONFIG.TEL파일이다. 대부분은 기본적이고 필요에 따라 수정할 수 있는 공간을 남겨두라. 이 머신의 두 번째 포트는 0x278에 irq는 5번으로 설정되어있다.


myip=200.0.0.2 
netmask=255.255.255.0       # subnetting mask
hardware=packet             # network adapter board (packet driver interface)
interrupt=5                 # IRQ which adapter is set to
ioaddr=60                   # software interrupt vector driver is using
#
#[...lots unchanged...]
#
# at the end of the file, put this line:
name=console1 ; hostip=200.0.0.1 ; nameserver=1 ; gateway=1 

(console1은 리눅스 머신의 이름이고, 어디에서나 사용할 수 있다.)

나는 두 머신사이에 12핀의 널 케이블을 만들었고, 그리고 (처음에는 잘못 만들었다.) 거기에는 아무런 문제도 없다. 표준적인 11-wire 널 케이블도 잘 작동한다. 리눅스의 plip.c 소스는 선의 연결을 보여준다. 비록 내 케이블이 17-17번이 연결되어 있지만, 더이상 사용되지 않고 만들어진 케이블도 현존하지 않는다.


@echo off
plip.com 0x60 5 0x278
telbin -s console1

위 내용은 리눅스 박스의 /dev/ttyp와 연결하도록 한 것이다. NCSA의 telnet은 8개의 가상 스크린을 제공하고 ftp 서버처럼 작동한다. PLIP 인터페이스는 매우 질이 좋고 나의 경우에는 파일 전송에 6.5K/s의 전송속도를 얻었다. 더 좋은 속도가 나오길 바란다. :-)


다음 이전 차례