JAZ-drive mini-HOWTO

원저자 : Bob Willmot, bwillmot@cnct.com
v1.6, 04 June 1997

한글판 : 이강원, ares@interpia.net
1997/12/28

이 HOWTO는 Linux에서 Iomega사의 Jaz Drive를 configure하는 방법과 사용 가능한 drive를 위한 s/w tool에 관한 것이다.

1. 소개

Iomega Jaz drive는 이동식 media를 사용하는 disk drive로 그 media는 1021MB의 용량을 가진다 (역자 주:최근 2GB급의 Jaz drive가 발표된 바 있음) SCSI를 사용하며 내장형 및 외장형 drive 모두 판매 중이다. Iomega에서는 IDE를 사용하는 내장형을 내 놓을 계획도 가지고 있다.

이 글은 Jaz Drive를 Linux에서 어떻게 사용할 것인가에 대하여 설명한다. SCSI 장비이므로 Drew Eckhardt의 SCSI HOWTO 가 큰 도움이 될 것이다.

http://sunsite.unc.edu/pub/Linux/docs/HOWTO/SCSI-HOWTO

아래의 사람들에게 그들의 공헌과 제공해준 정보에 대해 감사드린다.

조언, 제안, 틀린 부분에 대한 지적은 역자에게 보내주십시오 :

이강원, ares@interpia.net 
(6. FAQ부분에 대해 특히..)

2. Jaz disks

1GB를 저장하는 Jaz disk(cartridge, media)는 3.5" floppy disk 세장을 겹쳐놓은 것과 비슷하게 생겼다.

Drive는 앞에 붙어있는 button을 누르거나 s/w적인 명령에 따라 disk를 motor로 밀어내는 기구를 가지고 있다.

2.1. Jaz Jet host adapter

Iomega는 Jaz Jet이라는 이름으로 SCSI host adapter를 판매하고 있다.

현재 두가지 SCSI chipset을 사용한 두 version이 있다.

하나는 Adaptec 7800 family adapter에 기반한 것으로, 2930/2940 adapter와 호환된다. Linux 2.0은 aic7xxx driver로 이 adapter를 지원한다.(이 driver는 Kernel ver 1.3.?부터 도입되었다)

또 다른 adapter는 Advanced Systems chipset에 기반한 것이다.

boot time에 다음과 같은 message를 출력한다. 



    Jaz Jet PCI SCSI adapter Copyright Advanced Systems 1996  

Kernel을 compile할 때 CONFIG_SCSI_ADVANSYS 변수 set을 사용한다.

3. Jaz drive를 위한 kernel 설정

Jaz drive를 Linux에서 사용하기 위하여 kernel을 SCSI adapter에 맞게 configure 해야한다.

Kernel을 만드는 법에 대해서는 /usr/src/linux/README file에 나와 있다.

2.x kernel을 위해서는 /usr/src/linux/Documentation directory를 참조한다.

또한 Brian Ward의 Kernel-HOWTO도 참조한다.

http://sunsite.unc.edu/pub/Linux/docs/HOWTO/Kernel-HOWTO

4. Boot time에서의 drive 인식

System boot시에 adapter와 그에 연결된 disk에 대한 정보가 display되어야 한다.

Boot message는 SCSI adapter에 따라 다르고, /var/log/messages(또는 /var/adm/messages)

file에 기록된다. dmesg 명령으로 command prompt에서 이 message들을 replay해 볼 수 있다.

아래는 Adaptec 2940에 대한 2.0.10 kernel의 booting시 출력이다.



    aic7xxx: BurstLen = 8 DWDs, Latency Timer = 64 PCLKS

    aic7xxx: AHA-2940 Ultra Rev B.

    aic7xxx: devconfig = 0x580.

    aic7xxx: Reading SEEPROM...done.

    aic7xxx: Extended translation enabled.

    aic7xxx: Using 16 SCB's after checking for SCB memory.

    AHA-2940 Ultra (PCI-bus):

        irq 11

        bus release time 40 bclks

        data fifo threshold 100%

        SCSI CHANNEL A:

            scsi id 7

            scsi selection timeout 256 ms

            scsi bus reset at power-on enabled

            scsi bus parity enabled

            scsi bus termination (low byte) enabled

    aic7xxx: Downloading sequencer code...done.

    aic7xxx: Resetting the SCSI bus...done.

    scsi0 : Adaptec AHA274x/284x/294x (EISA/VLB/PCI-Fast SCSI) 3.2/3.1/3.0

    scsi : 1 host.

    aic7xxx: Scanning channel A for devices.

    aic7xxx: Target 4, channel A, now synchronous at 10.0MHz, offset(0xf).

      Vendor: iomega    Model: jaz 1GB           Rev: G.60

      Type:   Direct-Access                      ANSI SCSI revision: 02

    Detected scsi removable disk sda at scsi0, channel 0, id 4, lun 0

    scsi : detected 1 SCSI disk total.

    SCSI device sda: hdwr sector= 512 bytes. Sectors= 2091050 [1021 MB] [1.0 GB]

    sda: Write Protect is off


위 log에서 raw scsi device name( sda, sdb, 등등)을 주목하라.

나중에 disk를 access하려면 이 이름들이 필요하다.

위와 같은 각각의 message line이 나타나지 않는다면, h/w나 kernel에서 뭔가 잘못 설정된 것이다.

scsi0: 로 시작하는 message line이 나타나지 않은 경우, host adapter와 그 driver를 바르게

설정하지 않은 것이다. 어떤 driver는 무엇이 잘못되었는지에 대해 hint를 줄 것이다.

drive가 detect되지 않았다면, 아마 cable에 이상이 있을 것이다. drive 이름이 지정되지 않았다면

kernel을 생성시킬 때 SCSI disk 지원에 관한 내용을 빠뜨린 것일 것이다.

다른 debugging hint에 대해서는 drivers/scsi/README file과 SCSI HOWTO를 참조할 것.

4.2 Fdisk, mke2fs, mount, 기타

일단 Jaz를 위한 drive 이름을 알아냈다면, fidsk, mke2fs, mount 등과 같은

일반 Linux disk 관리 명령으로 drive를 조작할 수 있다.

각각의 사용법에 대해서는 manual page를 참조한다.

4.2.1 이미 DOS format되어 있던 disk

Iomega에서 출고 당시에 이미 format된 disk들은 하나의 partition을 가지고 있다.

(어떤 이유에 의해 Iomega는 4번째 partition을 사용한다. 역자 주 : FAQ를 참조할 것.)

이 disk를 아래의 명령으로 mount할 수 있다. (jaz disk의 raw name은 sda로 가정) 


       mkdir /jaz
       mount -t msdos /dev/sda4 /jaz


또는, Win95 VFAT를 지원하도록 생성된 2.0 kernel을 사용하는 경우, 
       mkdir /jaz
       mount -t vfat /dev/sda4 /jaz


로 mount할 수 있다. (이렇게 해서 긴 file 이름으로 읽고 쓰기가 가능하다)

Disk의 file들은 /jaz에 나타날 것이다. Disk가 mount되어 있는 동안은 eject할 수 없다.

Drive를 unmount하기 위해서는 아래의 명령을 사용한다: 


       umount /dev/sda4

/jaz를 mount point로 만드는 작업은 반복할 필요가 없다. (unmount할 때 /jaz directory에 있어서는 안된다는 점도 확인할 것.)

4.2.2 Linux disk로 다시 format하기

Jaz disk를 지우고 토종 Linux file system으로 만들고 싶다면, fdisk를 전체 disk에 대해 사용해야 한다. 
       fdisk /dev/sda

그리고 기존의 모든 partition을 삭제해야 한다. ( 'd' command를 사용 ) 그 후에 새로운 partition을 'n' command로 생성하고, promary partition으로 만든 뒤 'w' command로 partition table을 disk에 기록하고, 'q' command로 끝낸다.

그리고 생성된 partition을 format한다. 


       mke2fs /dev/sda1

('1'은 fdisk에서 이 partition에 준 숫자임) 이제 disk를 mount할 수 있다. 


       mount -t ext2 /dev/sda1 /jaz

(위는 전에 만든 mounting point를 사용하는 경우)

4.2.3 Jaz Tools disk

Jaz drive와 함께 오는 disk를 사용하기 (역자 주:지우거나 쓰기) 위해선 별도의 작업이 필요하다. 출하 시에는 s/w적인 기록 방지가 enable되어 있기 때문이다.

두 가지 방법이 있는데, 하나는 DOS나 Windows에서 "reclaime.exe"를 사용하여 lock을 푸는 것이고,(또는 setup program으로부터 tools를 설치하든가) 또 하나는 Bob Willmot의 jaztools program을 사용하는 것이다.(5장을 참조) 


        jaztool /dev/sda rw

(위에서 /dev/sda는 알맞는 SCSI device에 맞게 고친다) Password를 물어보면, 


        APlaceForYourStuff

라고 입력한다.

5. Bob Willmot의 jaztools

Iomega의 특별한 기능을 지원하기 위한 Linux program이 아래 site에 있다.

http://www.cnct.com/~bwillmot/jaztool/

GUI와 drive 검사 및 자동 mounting/unmouning기능을 지원하는 새로운 version의 jaztool이 곧 준비될 것이다.

6. FAQ

6.1 Jaz tools disk를 read only로만 mount할 수 있다.

Tools disk는 특별한 암호로 보호된 읽기 전용 mode로 출하된다.

푸는데는 두가지 방법이 있는데, 하나는 DOS나 Windows에서 "reclaime.exe"를 사용하여

lock을 푸는 것이고, 또 하나는 Bob Willmot의 jaztools program을 사용하는 것이다.(5장을 참조) 


        jaztool /dev/sda rw

(위에서 /dev/sda는 알맞는 SCSI device에 맞게 고친다) Password를 물어보면, 


        APlaceForYourStuff

라고 입력한다.

6.2 Jaz가 spin down후에 system을 lock한다.

느낌으로는, Jaz firmware와 관련된 듯 하다. 이런 문제를 가진 모든 사람은 drive의 Revistion을 Bob Willmot(bwillmot@cnct.com) 에게 알려주기 바란다. Jaz revistion은 아래와 같은 /etc/dmesg의 출력에서 다음 부분에 나와 있다. 
    scsi0: Target 4, channel A, now synchronous at 10.0MHz, offset 15.
      Vendor: iomega    Model: jaz 1GB           Rev: G.60
      Type:   Direct-Access                      ANSI SCSI revision: 02

이런 현상은 일반적인 Linux 사용자에게는 일어나지 않을 듯한 어떤 특정 상황에서만 발생한다. Jaz drive의 partition이 mount되었을 때, file system이 아직 mount되어 있는 중에 driver의 spin이 멈추고, 아직도 idle일 때 block device를 읽으려고 시도하는 경우이다. Linux가 partition을 재건(?)하기 위해 MBR을 다시 읽으려고 하지만, 어떤 이유에서 때때로 이 시도가 실패하고 device를 명백한 busy상태로 방치하는 듯 하다. Kernel의 MBR 읽기와 process device read는 불가능할 것인데, 이는 lockout 또는 busy state에 기인하는 듯 하다. 이 상태에서 Linux는(?) Jaz drive가 아직도 읽기 상태에 있는 것으로 생각하지만, 사실은 I/O는 일어나지 않는 것이다. Bob Willmot의 경우, 이런 현상은 대부분 block device가 MBR을 읽을 때 발생한다고 한다.

6.3. Jaz drive로부터 boot할 수 있는가 ?

Jaz drive의 SCSI ID는 0~6사이의 어떤 값으로도 지정할 수 있다.

다른 SCSI hard drive와 함께 연결되어 있을 경우, 대부분의 BIOS는 최저 SCSI ID 값을 가진 disk로부터 boot하려고 할 것이다. 어떤 것은 Jaz와 같은 이동식 drive인지 detect하고 무시해버린다.

IDE hard drive와 공존할 경우에는, 거의 모든 BIOS가 첫번째 IDE HDD로부터 boot하려고 할 것이다. 어떤 BIOS는 첫번째 IDE drive를 설정 해제하는 것을 허용하고 첫번째 SCSI drive를 boot device로 지정할 것이다. (BIOS 0x80) 다른 BIOS들의 경우, 아마 모든 IDE drive를 설정 해제해야 할 것이다. 또 다른 BIOS들의 경우, 물리적으로 IDE drive를 떼어 내든지 IDE interface를 disable해야 할 것이다.

6.4. 왜 Iomega는 partition 4번을 사용하는가 ?

Partition 4는 Macintosh의 기본 partition이다.

Mac에서는, 첫 partition이 boot 정보를 위한 공간으로 예약되어 있고, 두 번째는 system정보, 세 번째는 resource fork, 그리고 4번째가 data fork이다.

어쨌든, PC와 대부분의 다른 system에서 4번째 partition을 쓸 수 있는 반면, Mac은 다른 partition은 전혀 사용할 수 없다. Iomega는 미리 format하는 모든 media를 출시할 때 partition 4를 사용하여 PC와 Mac모두에서 커다란 호환성 문제를 예방하고 있다.

6.5. 어떻게하면 boot할 때 disk를 mount시킬 수 있는가 ?

/etc/fstab file에 한줄을 추가하기만 하면 된다. 예를 들어, 항상 DOS disk를 drive안에 넣고 boot한다면 
       /dev/sda4   /jaz  msdos  defaults  0 0

라고 fstab 안에 기록해 준다.(역자 주 : Iomega에서는 4번 partition을 사용하므로 /dev/sda4라고 하는 것으로 생각됨) 각자의 상황에 따라 다르겠지만, 초기화 script는 fstab에 기록된 각 partition에 대해 fsck를 실행시키려 할 것이다. 만일, disk를 boot할 때 drive 안에 넣는 것을 잊는거나 잘못된 disk 를 넣어둔다면(역자 주: 다른 type으로 format된 disk 등) 문제를 일으킬 수 있다.

이 문제를 피하기 위해, /etc/rc.d/rc.local에 Jaz를 mount하기 위한 별도의 mount 명령을 추가할 수도 있다. 이렇게 함으로써 drive에 catridge가 없는 상황에서 표준 "mount -a" 명령에 의해 발생될 문제를 피할 수 있다.

6.6. Boot시 disk가 없다면 어떻게 되나 ?

Kernel이 partition table을 읽으려 할 때 (결국) operation time out이 발생할 것이다.

Disk를 바꿀 때는 fsck를 사용하여 새 disk의 partition 구조를 확인하는 것이 좋다.

어떤 SCSI host adapter의 BIOS는 system boot 중에 disk의 partition table을 읽으려고 할 것이다. 이것을 방지할 수 없다면, (당신의 의지와는 상관 없이) 아마 반드시 drive에 disk를 넣은 채로 boot하여야 할 것이다.

6.7. 어떻게 하면 Jaz cartridge를 self-bootable하게 만들 수 있는가 ? (BIOS에서 허용한다고 가정했을 경우.)

Jaz drive/cartridge는 훌륭한 응급 복구용 disk가 될 수 있다. 또한 새로운 Linux system을 사용할 수 있다거나 Jaz를 갖춘 다른 사람의 machine에서 Linux를 쓸 수 있다면 재미있을 것이다.

Jaz drive가 system의 유일한 drive라면, 원하는 대로 설치 procedure를 진행할 수 있을 것이다.

그러나, 현재 작동하는 system으로부터 self-bootable한 system을 Jaz cartridge에 "건설"하는 것도 가능하다.

Step 1 - drive에 partition을 생성시키고 filesystem을 만든다. 아마 swap partition도 만들어야할 것이다. 하지만, RAM이 많다면 필요 없다. 새로운 root를 /jaz로 mount하고 그 안의 추가적인 partition을 그 안의 적절한 directory에 mount한다.

Step 2 - 모든 file을 제자리에 복사한다. /dev 모든 file을 copy해야만 한다. permission, ownership과 group id가 그대로인지 확인한다.

Step 3 - Jaz cartridge의 file들을 booting 환경에 맞게 설정한다. 특히 /jaz/etc/fstab에서 Jaz cartridge partition을 알맞게 mount시키도록 주의한다. 또한 /jaz/etc/lilo.conf도 맞추어야 한다.

Step 4 - 이 단계에는 두가지 방법이 있다 :

A : Kernel image floppy를 만들고 rdev를 써서 Jaz cartridge가 root로 mount되도록 한다.

준비가 되면 floppy로 boot하여 lilo를 실행시키고 Jaz MBR을 bootable하게 만든다.

B : Jaz가 아닌 root로부터 lilo를 실행시켜 Jaz cartridge에 bootable MBR을 설치할 수 있다.

첫번째 system definition 전에 아래의 내용을 /jaz/etc/lilo.conf file에 추가시킨다.

("1"을 root partition number로 바꾸고 "sda"를 적당한 Jaz device 이름으로 바꾼다) 


       drive = /dev/sda1
       bios = 0x80


Jaz MBR을 설치할 준비가 되었다면, /jaz tree가 마치 /에 있는 것처럼 작동시키기 위해 lilo를 -r option으로 실행시킨다. 이 명령은 다음과 같다. 
     lilo -r /jaz

보통, lilo는 boot시 boot device의 BIOS device number를 찾기 위한 탐색을 실시한다. 추가된 2줄이 이 작업을 한다.

lilo와 kernel로부터 여러 error message가 나타날 것이다. lilo는 이 경우가 아니면 문제되지 않을 문제점에 대해 경고할 것이다. Kernel은 lilo가 무언가 알아내기(역자 주:discover) 위해 device를 찾는 probe에 의해 촉발되는 /dev/hdc와 관련된 문제를 제시할 것이다. 이런 message는 무시해도 된다.

"쓰기"가 발생하는지 Jaz drive light를 주시할 것.

이 때, Jaz drive는 반드시 bootable해야 한다.

7. 더 많이 알고 싶다면

최신 mini-HOWTO 원문은 다음 주소에서 볼 수 있다.

http://www.cnct.com/~bwillmot/jaztool/

Iomega의 web page는 다음 주소에 있다.

http://www.iomega.com/

Linux 문서 한글화 project의 homepage는 다음과 같다.

http://kldp.linux-kr.org