한글판 :
이강원, ares@interpia.net
1997/12/28
이 HOWTO는 Linux에서 Iomega사의 Jaz Drive를 configure하는 방법과 사용 가능한 drive를 위한 s/w tool에 관한 것이다.
이 글은 Jaz Drive를 Linux에서 어떻게 사용할 것인가에 대하여 설명한다. SCSI 장비이므로 Drew Eckhardt의 SCSI HOWTO 가 큰 도움이 될 것이다.
http://sunsite.unc.edu/pub/Linux/docs/HOWTO/SCSI-HOWTO
아래의 사람들에게 그들의 공헌과 제공해준 정보에 대해 감사드린다.
이강원,
ares@interpia.net
(6. FAQ부분에
대해 특히..)
Drive는 앞에 붙어있는 button을 누르거나 s/w적인 명령에 따라 disk를 motor로 밀어내는 기구를 가지고 있다.
현재 두가지 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를 출력한다.
Kernel을 compile할 때 CONFIG_SCSI_ADVANSYS 변수 set을 사용한다.
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
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를 참조할 것.
일반 Linux disk 관리 명령으로 drive를 조작할 수 있다.
각각의 사용법에 대해서는 manual page를 참조한다.
(어떤 이유에 의해 Iomega는 4번째 partition을 사용한다. 역자 주 : FAQ를 참조할 것.)
이 disk를 아래의 명령으로 mount할 수 있다. (jaz disk의 raw name은 sda로 가정)
mkdir /jaz
mount -t msdos /dev/sda4 /jaz
mkdir /jaz
mount -t vfat /dev/sda4 /jaz
Disk의 file들은 /jaz에 나타날 것이다. Disk가 mount되어 있는 동안은 eject할 수 없다.
Drive를 unmount하기 위해서는 아래의 명령을 사용한다:
umount /dev/sda4
/jaz를 mount point로 만드는 작업은 반복할 필요가 없다. (unmount할 때 /jaz directory에 있어서는 안된다는 점도 확인할 것.)
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를 사용하는 경우)
두 가지 방법이 있는데, 하나는 DOS나 Windows에서 "reclaime.exe"를 사용하여 lock을 푸는 것이고,(또는 setup program으로부터 tools를 설치하든가) 또 하나는 Bob Willmot의 jaztools program을 사용하는 것이다.(5장을 참조)
jaztool /dev/sda rw
(위에서 /dev/sda는 알맞는 SCSI device에 맞게 고친다) Password를 물어보면,
APlaceForYourStuff
라고 입력한다.
http://www.cnct.com/~bwillmot/jaztool/
GUI와 drive 검사 및 자동 mounting/unmouning기능을 지원하는 새로운 version의 jaztool이 곧 준비될 것이다.
푸는데는 두가지 방법이 있는데, 하나는 DOS나 Windows에서 "reclaime.exe"를 사용하여
lock을 푸는 것이고, 또 하나는 Bob Willmot의 jaztools program을 사용하는 것이다.(5장을 참조)
jaztool /dev/sda rw
(위에서 /dev/sda는 알맞는 SCSI device에 맞게 고친다) Password를 물어보면,
APlaceForYourStuff
라고 입력한다.
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을 읽을 때 발생한다고 한다.
다른 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해야 할 것이다.
Mac에서는, 첫 partition이 boot 정보를 위한 공간으로 예약되어 있고, 두 번째는 system정보, 세 번째는 resource fork, 그리고 4번째가 data fork이다.
어쨌든, PC와 대부분의 다른 system에서 4번째 partition을 쓸 수 있는 반면, Mac은 다른 partition은 전혀 사용할 수 없다. Iomega는 미리 format하는 모든 media를 출시할 때 partition 4를 사용하여 PC와 Mac모두에서 커다란 호환성 문제를 예방하고 있다.
/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" 명령에 의해 발생될 문제를 피할 수 있다.
Disk를 바꿀 때는 fsck를 사용하여 새 disk의 partition 구조를 확인하는 것이 좋다.
어떤 SCSI host adapter의 BIOS는 system boot 중에 disk의 partition table을 읽으려고 할 것이다. 이것을 방지할 수 없다면, (당신의 의지와는 상관 없이) 아마 반드시 drive에 disk를 넣은 채로 boot하여야 할 것이다.
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
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해야 한다.
http://www.cnct.com/~bwillmot/jaztool/
Iomega의 web page는 다음 주소에 있다.
Linux 문서 한글화 project의 homepage는 다음과 같다.