RaSCSI Document

From 흡혈양파의 번역工房
Revision as of 07:19, 5 March 2018 by Onionmixer (talk | contribs) (내용 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
------------------------------------------------------------------------------
 SCSI Target Emulator RaSCSI (*^..^*)
 version 1.33 for Raspberry Pi

 Powered by XM6 TypeG Technology.
 Copyright (C) 2016-2018 GIMONS
------------------------------------------------------------------------------

변환 기판의 필요성에 대해

SCSI 는 TTL 레벨에서 5V 를 220Ω 과 330Ω 에서 분압(수동 터미네이터의 경우)해서 각 신호선에 3V 미만의 전압이 걸린 상태가 정상 상태(negative 신호)로되어 있습니다.

초기측 또는 대상측이 신호를 주장하는(=0V)하려고하면 양쪽 종단에서 총 5000 ÷ 220 × 2 = 45mA 의 전류가 흐르게됩니다 (X68000 의 SCSI 컨트롤러 인 MB89352 데이터 시트를 보면 싱크 전류로 Iol48mA 이 지정되어 있습니다).

RPI 의 GPIO 는 이처럼 큰 싱크 전류는 처리할 수 없습니다. 전기적으로 안전한 연결을 하기 위해서는 범용 로직 IC 등으로 변환 기판을 만들 필요가 있습니다. 범용 로직 IC 에서 48mA 의 싱크 전류에 견디기 위해서 74LS06 이나 07 등의 오픈 콜렉터에서 하이 파워 타입의 것을 사용합니다.

저자는 74HC541 × 3,74HC126 × 1,74HC04 × 1 에서 기본 SCSI 의 방향 제어를 수행 더욱 74LS07 × 3 을 사용하여 버스(데이터버스)를 드라이브하는 회로를 만들어 보았는데 문제없이 작동하는 것을 확인했습니다.

그 밖에도 74LS641 의 파생 버전인 74LS641-1 를 사용하는 회로는 간단하게 구성할 수 있습니다. 일반 제품과 달리 싱크 전류가 48mA 대응이기 때문에 74LS07 를 사용할 필요가 없습니다. 하지만 구하기는 어렵습니다.


변환 기판의 회로 도안

같은 폴더에 회로 도안을 넣어두었습니다.

  • target.png

SCSI target 모드를 사용하기위한 변환 기판 회로도입니다. 기본 기능인 HDD 나 MO 에뮬레이션을 수행한다면 이 회로도 수준의 물건을 만들면 좋습니다. 사용하는 GPIO 핀도 가장 적은 구성됩니다.

핀 할당을 변경하지 않는다면 RaSCSI 의 standard 디렉토리에 포함된 바이너리를 사용하면 됩니다.


  • initiator.png

SCSI target 모드 이외에 initiator 모드를 사용하기 위한 변환 기판 회로도입니다. 기본 기능 이외에 RPI 가 초기화되며 실제 HDD에 명령을 내릴 수 있습니다. 모드 제어를 위해 추가로 하나의 GPIO 핀을 소비합니다. 이 initiator 모드를 사용한 샘플 프로그램으로 rasdump 를 준비했습니다. 실제 HDD 나 MO 에서 이미지 파일로 덤프할 수 있습니다. 옵션에서 복원 기능도 사용할 수 있습니다.

핀 할당의 정의에서 PIN_IND 표준에서는 7 을 설정하고 컴파일해야 합니다. 핀 할당 사용자 정의를 참조하십시오.


  • fullspec.png

SCSI target 모드, initiator 모드 이외에 SCSI 통신을 모니터 할 수 있는 변환 기판 회로도입니다. SCSI 프로토콜을 분석하는 등의 특수 요구 사항이있는 경우에는 이 회로가 최적입니다. 모든 74LS641-1 의 방향 제어를 RaSCSI 에서 실시하기 때문에 특별히 GPIO 핀 3개를 여분으로 사용합니다. SCSI의 개발에 관심이 있다면 이 회로를 만들어 보는 것은 어떨까요. 특징으로서 GPIO 핀을 추가로 사용하는 대신에 위의 initiator 모드를 사용할 수 있는 기판에 비해 74LS86 가 필요하지 않기 때문에 기판이 심플하게 된다는 이점이 있습니다.

핀 할당 사용자정의(커스터마이즈)로 PIN_TAD, PIN_IND, PIN_DTD 에 각각 표준에서는 6,7,8 을 설정하고 컴파일해야 합니다. 핀 할당 사용자 정의를 참조하십시오.


이미 만들어져 있는걸 입수하는 방법

최근에는 주로 Twitter 근처 통해 RaSCSI 용 변환 기판을 만들어주고있는 분들이 계십니다.

또한 아키하바라에서 위탁 판매되고 있습니다.


현재 시판되고있는 것으로서

  • BEL 씨 개발의 あいぼむ 버전
  • tomcat 님 개발 GAMERnium 버전

등이 있습니다.


핀 할당의 정의

GPIO 신호 제어 논리 및 핀 할당은 gpiobus.h 과 rascsidrv.c 에서 정의합니다. 정의가 나뉘어있는 것은 rascsidrv.c 만 GPL 이므로 굳이 분리합니다. 잘 살펴 보시기 바랍니다.

사용자 정의의 예로서 gpiobus.h 와 rascsidrv.c 에 대해 아래의 두 변환 기판에서의 정의하는 예제를 준비했습니다. 배포판에 컴파일 된 바이너리가 포함되어 있습니다.

  • BEL 씨 개발의 あいぼむ 버전
  • tomcat 님 개발 GAMERnium 버전


지정 방법

  • RaSCSI 시작 메시지입니다.
   CONNECT_DESC
  • 신호 제어 모드를 선택합니다.
   SIGNAL_CONTROL_MODE
 0 : SCSI 논리 사양
   직접연결 또는 HP 에 공개한 74LS641-1 등을 사용하는 변환 기판
   Arthur : 0V
   Negate : 오픈 콜렉터 출력 (버스에서 분리)
 1 : 부 논리 사양 (부 논리 -> SCSI 논리로 변환 기판을 사용하는 경우)
   현재이 사양에 의한 변환 기판은 존재하지 않습니다
   Arthur : 0V -> (CONVERT) -> 0V
   Negate : 3.3V -> (CONVERT) -> 오픈 콜렉터 출력
 2 : 정 논리 사양 (정 논리 -> SCSI 논리로 변환 기판을 사용하는 경우)
   RaSCSI Adapter Rev.C @ 132sync 등
   Arthur : 3.3V -> (CONVERT) -> 0V
   Negate : 0V -> (CONVERT) -> 오픈 콜렉터 출력
  • 제어 신호 핀 할당
   PIN_ACT : SCSI 명령을 처리중인 상태를 나타내는 신호 핀 번호.
   PIN_ENB : 시작에서 종료 사이의 유효 신호를 나타내는 신호 핀 번호.
   PIN_TAD : 대상 신호 (BSY, IO, CD MSG, REG)의 입출력 방향을 나타내는 신호 핀 번호.
   PIN_IND : 이니시에타 신호 (SEL, ATN, RST, ACK)의 입출력 방향을 나타내는 신호 핀 번호.
   PIN_DTD : 데이터 신호 (DT0 ... DT7, DP)의 입출력 방향을 나타내는 신호 핀 번호.
  • 제어 신호 출력 논리
   0V : FALSE 3.3V : TRUE로 지정합니다.
   ACT_ON : PIN_ACT 신호의 논리입니다.
   ENB_ON : PIN_ENB 신호의 논리입니다.
   TAD_IN : PIN_TAD 인바운드시의 논리입니다.
   IND_IN : PIN_ENB 인바운드시의 논리입니다.
   DTD_IN : PIN_ENB 인바운드시의 논리입니다.
  • SCSI 신호 핀 할당
   PIN_DT0 ~ PIN_SEL : 각 SCSI 신호의 핀 번호입니다.


컴파일 방법

  • 실행 파일 (rascsi, rasctl)
gpiobus.h 수정
make clean
make


* 커널 드라이버 (rascsidrv.ko)

① OS 최신버전 (필요한 경우)

<syntaxhighlight lang="text">
sudo apt-get update
sudo apt-get upgrade
sudo reboot

② 커널 헤더 얻기 (필요한 경우)

    
sudo apt-get install raspberrypi-kernel-headers

③ 컴파일

cd kernelmodule
rascsidrv.c 수정
make


------------------------------------------------------------------------------
SCSI Target Emulator RaSCSI (*^^*)
version 1.32 for Raspberry Pi

Powered by XM6 TypeG Technology.
Copyright (C) 2016 2017 GIMONS
------------------------------------------------------------------------------


RaSCSI 는

RaSCSI 는 Raspbery Pi 에서 작동하는 SCSI 장치 (하드 디스크, MO, CD-ROM)을 가상으로 재현하는 에뮬레이터입니다. SCSI 를 채용한 SHARP 의 X68000 에서 사용하는 것을 목적으로 개발되었습니다. RaSCSI 를 도입한 Raspberry Pi 를 X68000의 SCSI 커넥터에 연결하면 물리적 SCSI 장치로 인식됩니다.

X68000 이외에도 SCSI 를 채용한 FM TOWNS 및 PC98 등의 레트로 PC 에서도 사용할 수 있을지도 모릅니다. 저자는 FM TOWNS 과 PC9821Ce 에서의 동작까지는 확인하고 있습니다.

RaSCSI 는 SCSI 장치를 에뮬레이트하는 소프트웨어를 포함해서 Raspberry Pi 의 GPIO 커넥터를 SCSI 커넥터로 변환하는 장치까지를 의미합니다.


동작 환경

(1) Raspberry Pi

Raspberry Pi 3 Model B 를 권장합니다.

Raspberry Pi2 Model B 와 Zero 에서도 동작한다고 생각합니다. 핀 할당을 직접 수정해서 Raspberry Pi 1 에서 작동시켰다는 보고도 있습니다.


(2) OS RASPBIAN JESSIE 및 STRETCH 에서 개발 및 테스트하고 있습니다.

sudo aptget update 및 sudo apt-get upgrade 를 이용해서 OS 를 최신으로 갱신할 수 있습니다. 이 문서를 작성하고 있는 시점에서 커널 버전은 아래와 같습니다.

  • JESSIE : Linux Raspberry Pi 4.9.35v +
  • STRETCH : Linux Raspberry Pi 4.9.59-VT +


RasCSI 는 SCSI 신호를 GPIO 를 이용해서 제어하고 있기 때문에, 가능하다면 낮은 레이턴시 상태에서 사용해야 합니다. 따라서 CUI 모드에서 사용하는 것이 좋습니다. 또한 불필요한 서비스는 최대한 중지하시기 바랍니다.


SCSI 커넥터에 연결하는 방법

상황이 복잡해졌기 때문에 홈페이지에서 정보를 제공하고 있습니다. 이 문서의 마지막에 있는 공식 홈페이지를 참고하시기 바랍니다.


배포판

배포되는 압축파일에는 실행 파일, 문서, 소스 코드가 각각의 디렉토리로 나뉘어 포함되어 있습니다.


bin/ ... 실행파일
raspberrypi/ ... RPI 용 프로그램
rascsi.tar.gz ... 실행파일과 커널 모듈을 tar + gzip 으로 압축했습니다.
x68k/ ... X68000 용 프로그램
RASDRV.SYS ... host drive 드라이버
RASETHER.SYS ... 이더넷 드라이버
doc/ ... 문서
rascsi.txt ... 보고있는 문서
cable.pdf ... 직접 연결 케이블 작성 예제
src/ ... 소스코드
raspberrypi/ ... RPI 의 프로그램 소스 모음
x68k/ ... X68000 용 프로그램 모음


Raspberry Pi 에서 사용되는 프로그램은 rascsi.tar.gz 이므로 Raspberry Pi 에 전송한 이후에 압축을 풀기 바랍니다. 권한 등을 유지하기 위해 Raspberry Pi 에서 압축을 해제할것을 권장합니다.

rascsi.tar.gz 는 standard, fullspec, album, gam emium 디렉토리가 포함되어 있습니다. 일반적인 경우 standard 디렉토리에 있는 실행 파일을 사용하시기 바랍니다.

album, gamermium 디렉토리의 내용은 "あいぼむ버전”, "GAMERnium버전" 의 변환 기판을 사용할 때를 위한 것입니다. fullspec 디렉토리의 내용은 공개한 fullspec 버전 변환 기판의 회로 도안을 이용해서 변환 기판을 만들했을때 사용하면 됩니다.


RASCSI 본체의 사용 방법 (rascsi)

sudo rascsi [-ID{01234567} FILE] ...

root 사용자의 권한이 필요하기 때문에 sudo 등으로 시작해야 합니다. 옵션 -h 를 사용하면 간단한 도움말이 표시됩니다.

Usage: ./rascsi [-ID{0|1|2|3|4|5|6|7} FILE] ...

ID is SCSI identification number.
 FILE is disk image file.

Detected images type based on file extension.
 hdf : SASI HD image
 hds : SCSI HD image
 hdn : SCSI HD image(NEC GENUINE)
 hdi : SCSI HD image(Anex86 HD image)
 nhd : SCSI HD image(T98Next HD image)
 hda : SCSI HD image(APPLE GENUINE)
 mos : SCSI MO image
 iso : SCSI CD image

인수 -ID {01234567} 과 FILE 세트에서 하나씩의 SCSI 장치를 지정할 수 있습니다.

-ID 뒤의 번호는 SCSI ID 입니다. SCSI ID 는 0~7 까지의 값을 지정할 수 있지만, 일반적인 경우라면 레트로 PC 본체에서 초기값으로 ID7 등을 사용하고 있다고 가정합니다. 이 경우 0~6 사이의 값을 지정할 수 있습니다.

FILE 은 가상 디스크 이미지 파일 경로입니다. 이미자 파일 이름에는 확장자가 필요합니다. 확장자에 의해 HD, MD, CD 의 종류를 판단합니다.

예) SCSI IDD 는 HEIMAGED.HDS, ID1 에 HDIMAGE1.HDS 를 지정하고 시작하면

  sudo rascsi -ID0 HDIMAGE0.HDS -ID1 HDIMAGE1.HDS


종료하려면 CTRL+C 를 사용합니다. 백그라운드에서 실행한 경우하면 kill 명령 해당 프로세스에 INT 신호 또는 HUP 신호를 보내는 것으로 종료할 수 있습니다.

rascsi 프로그램을 시작한 뒤에는, 소켓 6868 포트를 열어 외부에서 관리 명령을 받고 처리할 수 있는 상태가 됩니다. 따라서 이미 다른 프로세스로 rascsi 가 시작되어 있다면, 오류 메시지와 함께 부팅을 중단해야 합니다.


관리 도구의 사용 방법(rasctl)

버전 1.10 에서부터 rasctl 이라는 관리 도구를 제공합니다. 이 도구를 이용해서 rasci 프로세스가 백그라운드에서 실행(6868 포트에서 연결 대기 상태)되는 경우라면 디스크 작업 명령을 실행하는 것이 가능합니다. 명령행은 다음과 같습니다.

rasctl -i ID [-c CMD] [-t TYPE] [-f FILE]

ID   : SCSI ID
CMD  : 操作コマンド
 attach  : ディスクを取り付ける
 detatch : ディスクを取り外す
 insert  : メディアを挿入する(MOまたはCDのみ)
 eject   : メディアを取り出す(MOまたはCDのみ)
 protect : メディアを書き込み禁止にする(MOのみ)
TYPE : ディスク種別
 hd: ハードディスク(SASI/SCSI)
 mo: MO(光磁気ディスク)
 cd: CDROM(CDROMドライブ)
 bridge  : ブリッジデバイス
FILE : ディスクイメージファイルのパス


rasctl -i ID [-c CMD] [-t TYPE] [-f FILE]

ID   : SCSI ID
CMD  : 조작명령
 attach  : 디스크를 설치
 detatch : 디스크를 제거
 insert  : 미디어 삽입 (MO 또는 CD 전용)
 eject   : 미디어 꺼내기 (MO 또는 CD 전용)
 protect : 미디어를 쓰기 방지 (MO 만)
TYPE : 디스크 유형
 hd: 하드 디스크 (SASI / SCSI)
 mo: MO (광 자기 디스크)
 cd: MO (광 자기 디스크)
 bridge  : 브리지 장치
FILE : 디스크 이미지 파일의 경로


ID 는 필수입니다. CMD 를 생략한다면 기본적으로 attach 로 지정됩니다. TYPE 은 CMD 값이 attach 인 경우에는 FILE 지정값의 확장자를 이용해서 자동으로 판단합니다. FILE 은 TYPE 을 명시적으로 지정하고 있습니다. 이런 경우라면 확장자가 달라도 상관은 없습니다. CMD 의 기본값에서 TYPE 의 해석은 대소문자를 무시합니다. 현재는 첫글자만 판정합니다.

명령 예

rascsi -i 0 -f HDIMAGE0.HDS


위 예제의 경우 SCSI ID는 0, CMD 는 기본적으로 attach 이며 TYPE 확장자는 HDS 로 판단하기 때문에, 이미지를 HD 로 추측하며 그 외에는 rascsi 시작 옵션 지정과 동일합니다.

현재 상태를 확인하려 할때, 오직 -l 옵션만 사용하면 장치 목록이 표시 됩니다. 명령 줄은 다음과 같습니다.

rasctl -l

rasctl 자체를 사용하려 할때 별도의 root 권한은 필요하지 않습니다.


디스크 덤프 도구의 사용 방법 (rasdump)

직접연결, 직졉연결 기판, 또는 initiator 대응의 변환 기판용 샘플 프로그램입니다. 현재의 변환 기판은 "あいぼむ버전" 만 대응하고 있습니다.

이름 그대로 SCSI HDD 와 MO 의 이미지를 덤프(옵션으로 복구모드)합니다. 자신(초기)의 ID 는 7 고정값 입니다.

rasdump -i ID -f FILE [-r]
 ID   : SCSI ID
 FILE : ダンプファイル名
 -r  : リストアモード
     
rasdump -i ID -f FILE [-r]
 ID   : SCSI ID
 FILE : 덤프 파일 이름
 -r  : 복구모드


샘플이므로 최소한의 처리밖에 구현하지 않고 있기 때문에, 개선해서 사용하셔야 합니다.


커널 모듈의 사용 방법 (rastsidry.ko)

version 1.24 에서 안정화를 위해 GPIO 제어의 일부를 커널 모듈에서 동작 시키는 확장을 추가했습니다.

커널 모듈을 사용하지 않아도 작동은 할수 있지만 X68000 시리즈의 SASI 를 사용하는 경우와 순정 SCSI 보드등을 추가하면, 커널 모듈을 사용하지 않은 경우의 동작은 불안정합니다.

커널 모듈을 활성화하려면 다음의 명령을 사용하시기 바랍니다

sudo insmod rascsidrv.ko


커널 모듈의 시작을 보려면 dmesg 명령으로 출력되는 로그의 마지막에, 다음과 같은 내용이 표시되어야 합니다.

"RaSCSI GPIO Driver Loaded(STANDARD)"


주의!

커널 모듈은 사용중인 OS 버전에 따라 달라집니다.


rascsi 와 rasctl 과 같은 계층에있는 rascsidry.ko 는 Raspberry Pi 2/3 용 "Linux raspberrypi 4.9.59-v7+" 에 맞춰 컴파일된 모듈입니다.

같은 계층의 rpi 1 or Zero / rascsidev.ko 는 Raspberry Pi Zero 용입니다. "Linux raspberrypi 4.9.59+" 에 맞춰 컴파일된 모듈입니다.

당신의 장비에서 커널 모듈을 컴파일하는 방법을 간단하게 적어 둡니다.


OS 를 최신으로 유지하기

sudo apt-get update
sudo apt-get upgrade
sudo reboot


커널 헤더 얻기

sudo apt-get install raspberrypi-kernel-headers


커널 모듈 컴파일

cd kernelmodule
make


지원하는 디스크 이미지

SCSI 하드 디스크

HDS 파일 형식 (확장자 HDS/HDN/HDI/NHD/HDA) 파일 크기는 10MB 미상 4095MB 이하의 범위에서 임의의 크기 (단 512 바이트)

확장자가 "HDN" 의 경우 NEC 순수 55 보드 (PC-9801-55) 용 순정 하드를 에뮬레이션 합니다. INQUIRY 에서 반환되는 정보와 MODE SENSE 크기에서 차이가 있습니다.

확장자가 "HDI", "NHD" 인 경우라면, 각각 PC98 에뮬레이터인 Anex86 및 T98Net SCSI 하드 디스크 이미지를 사용하는 것입니다. HDN 때와 마찬가지로 일부정보가 NEC 로 변환됩니다.

확장자가 "HDA" 인 경우라면 APPLE 정품 하드 디스크를 에뮬레이션 합니다. INQUIRY 및 MODE SENSE 에서 반환되는 정보에 차이가 있습니다.


SASI 하드

HDF 파일 형식 (확장자 HDF) 파일 크기는 10441728 byte, 20748288 byte, 41496576 byte 중 하나(각각 10MB 드라이브, 20MB 드라이브, 40MB 드라이브에 해당).


SCSI 광 자기 (MO) 디스크

MOS 파일 형식 (확장자 MOS) 파일 크기는 다음 4가지 중 하나가 되어야 합니다.

  • 128 MB 타입 (127398912 바이트)
  • 230 MB 타입 (229518400 바이트)
  • 540 MB 타입 (533248000 바이트)
  • 640 MB 타입 (635600896 바이트)

128 MB, 230 MB, 540 MB 는 512 바이트 섹터, 640 MB 는 2048 바이트 섹터입니다.


SCSI CD-ROM 디스크

ISO 파일 형식 (확장자 ISO, ISO9660 베타 이미지)

모드 1 (2048 byte/sector)에서 데미터만 포함된 파일과 RAW 형식으로 기록된 파일을 모두 지원합니다.


디스크 이미지 생성

RaSCSI 자체는 X68000 에뮬레이터인 XM6 TypeG 에서 유래되었습니다. 따라서 디스크 이미지 생성은 XM6 TypeG 의 '도구' 메뉴에서 할 것을 전제로 하고 있습니다. 물론 앞서 언급한 사양에 따르면 dd 등으로 빈 이미지 파일을 만드는 것도 가능합니다.

예) 100 MB 의 HDS 이미지(비어있는 파일)를 만드는 경우

dd if=/dev/zero of=HARDDISK.HDS bs=512 count=204800


작동 사례

작성자의 개발 환경인 X68000 PRO (내장 SASI / 정품 SCSI 보드), X68000 내장형 SCSI, XVI Compact 내장형 SCSI 등에서 작동을 확인하고 있습니다. Mach-2 에서도 작동했습니다.

그 외에도 초대 X68000, ACE, EXPERT, XVI, PRO2, SUPER 등으로 작동된다는 보고가 있었으며, X68000 시리즈 에서는 거의 문제가 없을 것입니다.

기타 레트로 PC 에서 FM TOWNS 시리즈, PC98 시리즈, Apple Macintosh, MSX(MEGA-SCSI 이용)에서 작동된다는 보고가 있습니다.

다른 기종에서도 하나 둘씩 작동보고를 받고 있습니다.


활용 방법

XM6 등의 X68000 에뮬레이터를 사용하는 경우 에뮬레이터에서 환경을 구축한 HDD 이미지를 FTP 등으로 Raspberry Pi 에 전송함으로서 해당 이미지를 X68000 실기로 접속시킬수 있습니다. 그리고 그 반대의 경우도 마찬가지로, 실기에 존재하는 파일을 저장한 HDD 이미지를 PC 에 FTP 등으로 전송해서 에뮬레이터에서 활용할 수 있습니다.


라이센스

RaSCSI 커널 드라이버를 제외한다면 있는 그대로 "AS IS" 로 배포되는 소프트웨어입니다. 커널 드라이버 소스 rascsidry.c 만 GPL 입니다(참고바랍니다).

즉 사용자가 받은 모든 손해에 대한 책임을 가지지 않습니다. 또한 소프트웨어 및 하드웨어에 작은 결함 또는 오류가 있었다고 해도 수정해야 하는 책임도 없습니다.

RaSCSI 를 이용했을때, Raspberry Pi 와 레트로 PC 의 고장 위험이 있습니다. 어디까지나 본인의 책임하에 도전하시기 바랍니다.

XM6 TypeG 와 마찬가지로 실험 결과 공개라는 특성상 내 Homepage 이외의 배포는 인정하지 않습니다.

XM6 의 라이센스 조건을 계승하고 있기 때문에 잡지/책에서 소개될 때에는 사전 허락이 필요합니다. 원래 2017 년 시점에서 SCSI 에 반응하는 것은 한정된 사람 뿐이라고 생각합니다.


변환 기판의 배포에 대해

변환 기판의 배포에 대해서는 저자에게 허락을 얻을 필요가 없습니다. 일단 연락해 주신다면 무언가를 지원할 수 있을지도 모릅니다.

그러나 레트로 PC 의 SCSI 환경 개선을 응원한다는 취지에서 유료인 경우라면, 기판 제작비 + 부품 비용 + 운송비 + 수수료(사회 통념 상 일반) 를 넘어가는 배포는 중지해 주시기 바랍니다.


------------------------------------------------------------------------------
SCSI Targe Emulator RaSCSI (*^..^*)
version 1.31 for Raspbery Pi

Powered by M6 TypeG Technology,
Copyright (C) 2016-2017 GIMONS
------------------------------------------------------------------------------

X68000 고유의 기능

RaSCSI 에는 브리지 장치로서 가상 SCSI 장치가 구현되어 있기 때문에, X68000 과 호스트인 Raspbery Pi 의 중개를 할 수 있습니다. 이 브리지 장치와 X68000 용의 전용 드라이버를 사용해서 다음과 같은 기능을 제공합니다.

  • 이더넷

Neptune-X 와 같은 이더넷 기능을 제공합니다. SCSI 연결 이더넷 BOX 처럼 RaSCSI 가 동작합니다. Raspberry Pi 의 TAP 장치가 패킷을 중계 하는 것으로 작동되고 있습니다. Ether+ 와 비슷합니다.

  • 호스트 파일 시스템

X68000 에뮬레이터의 표준 기능인 Windrv 에 해당되는 기능을 제공합니다. Raspberry Pi 의 파일 시스템을 원격 드라이브로 마운트할 수 있습니다.


브릿지 장치의 부팅 방법

RaSCSI 를 시작할 때 파일 이름으로 "BRIDGE" 라는 키워드를 지정하면 해당 ID 에 대해 브릿지 장치를 생성합니다.

sudo rascsi -ID0 HDIMAGE0.HDS -ID6 BRIDGE


이더넷 연결

배포판에 포함된 RASETHER.SYS 를 사용합니다. 이 장치 드라이버를 이용해서 브리지 장치와 연결되어 이더넷 패킷 송수신을 할 수 있습니다.

이제부터 Raspberry Pi 가상 머댑터 (TAP)의 IP 주소를 "192.168.68.1" 로, X68000 쪽을 "192.168.68.3" 으로 설정하는 경우에 대해 설명합니다.

  • X68000 설정

RASETHER.SYS 는 Neptune-X 용 드라이버를 개조해서 만든 것이므로 사용 방법은 동일합니다. X68000 을 인터넷에 연결하기 위해서는 별도의 환경설정이 필요합니다. 설정 방법은 자력으로 조사해 주실 것을 부탁드립니다.


아래의 내용은 실제로 사용하는 CONFIG.SYS 및 AUTOEXEC.BAT 발췌한 것입니다.

[CONFIG.SYS 발췌]
PROCESS    = 3 10 10
DEVICE    = \NETWORK\RASETHER.SYS
[AUTOEXEC.BAT 발췌]
SET SYSROOT=A:/NETWORK/
SET temp=A:\
SET tmp=A:\
SET HOME=A:/NETWORK/ETC/
SET HOST=X68000
XIP.X
IFCONFIG.X lp0 up
IFCONFIG.X en0 192.168.68.3 netmask 255.255.255.0 up
INETDCONF.X +router 192.168.68.1 -rip
INETDCONF.X


Raspberry PI 설정

TAP Device 라는 것을 이용해야 하기 때문에 TAP 을 사용하십시오. 아마도 최근 Jessie 경우 처음부터 사용할 수 있을 것입니다. 확인 방법은 (Raspnerry Pi 의) /dev/net/tun 이라는 파일이 존재하면 tap 활성화되어 있다고 판단해도 됩니다.

가상 어댑터를 만드는 방법은 다음과 같이 진행하면 됩니다.

[/etc/rc.local 등의 설정]
ip tuntap add ras0 mode tap user root
ip link set ras0 up
ifconfig ras0 inet 192.168.68.1/8 up
route add -net 192.168.68.0 netmask 255.255.255.0 dev ras0


위의 내용으로 Raspbery Pi(192.168.68.1)와 X68000(192.168.68.3) 사이에서 통신이 가능해 집니다.


인터넷 등과 연결하는 경우 Raspbery Pi 측에서 브리지 및 라우팅 설정을 해줄 필요가 있습니다. 당신의 환경에 맞게 설정하세요, 무선 LAN 의 경우에 브리지를 구성하려면 여러가지 문제가 있기 때문에 포워딩과 NAT 구성 등도 좋은 방법입니다. 저자는 rc.local 에서 다음과 같은 설정으로 사용하고 있습니다.

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE


호스트 파일 시스템 연계

X68000 에뮬레이터에서 자주 이용되는 Windrv 및 WindrwXM 과 동일한 기능을 제공합니다. 전용 RASDRV.SYS 라는 장치 드라이버를 사용하면 Raspberi Pi 파일 시스템을 X68000 측의 드라이브로 등록되도록 조작할 수 있다는 의미입니다. 장치 드라이버의 등록은 간단합니다.

DEVICE    = \SYS\RASDRV.SYS


이 경우 기본적으로 Raspberry Pi 의 루트 디렉토리를 마운트합니다. 장치 드라이버는 부팅할 때 어떤 드라이브에 마운트되었는지를 표시합니다. 루트를 제외한 디렉토리를 마운트하려면 별도의 디렉토리를 지정하십시오. 예를들어 /home/pi 디렉토리 등을 마운트하려면 다음과 같은 내용으로 지정합니다.

DEVICE    = \SYS\RASDRV.SYS /home/pi


여러개의 디렉토리를 지정하면 각각 별도의 드라이브로 마운트 할 수 있습니다.

SUSIE 를 이용하시는 분은 SUSIE 보다 먼저 RASDRV.SYS 를 설정하기 바랍니다. SUSIE 의 이후에 로딩되면 제대로 인식하지 못할 것으로 생각됩니다.