Jazz-drive mini-HOWTO <author>Bob Willmot, <em><htmlurl url="mailto:bwillmot@cnct.com" name="bwillmot@cnct.com"></em> <date>v1.6, 1997년 6월 4일 <trans>번역: 이 강원, <em><htmlurl url="mailto:ares@interpia.net" name="ares@interpia.net"></em> <trans>SGML 편집: 엄 기성, <em><htmlurl url="mailto:jurist@netkorea.co.kr" name="jurist@netkorea.co.kr"></em> <abstract> 이 HOWTO는 Linux에서 <em><bf>Iomega</bf></em>사의 <em><bf>Jaz Drive</bf></em>를 configure하는 방법과 사용 가능한 drive를 위한 s/w tool에 관한 것이다. </abstract> <!-- Table of contents --> <toc> <!-- Begin the document --> <sect>소개 <p> <em><bf>Iomega Jaz drive</bf></em>는 이동식 media를 사용하는 disk drive로 그 media는 <bf>1021MB</bf>의 용량을 가진다.(역자 주:최근 <bf>2GB</bf>급의 Jaz drive가 발표된 바 있음) SCSI 인터페이스를 사용하며 내장형 및 외장형 drive 모두 판매 중이다. Iomega에서는 IDE를 사용하는 내장형을 내 놓을 계획도 가지고 있다. 이 글은 Jaz Drive를 Linux에서 어떻게 사용할 것인가에 대하여 설명한다. SCSI 장비이므로 <bf>Drew Eckhardt</bf>의 <htmlurl url="http://sunsite.unc.edu/pub/Linux/docs/HOWTO/SCSI-HOWTO" name="SCSI HOWTO">가 큰 도움이 될 것이다. 아래의 사람들에게 그들의 공헌과 제공해준 정보에 대해 감사드린다. <itemize> <item>Grant Gunther, grant@torque.net <item>Tom Poindexter, tpoindex@nyx.net <item>Todd Woods, woods@cs.uiowa.edu <item>Richard B. Melrose, rbm@math.mit.edu <item>Phil Howard, phil@charon.milepost.com <item>Rick Niess, rniess@ocean.st.usm.edu <item>Bob Willmot, bwillmot@cnct.com <item>KLDP, kldp@kldp.linux-kr.org <item>JongDae Choi, petrof@chollian.net </itemize> 조언, 제안, 틀린 부분에 대한 지적은 <htmlurl url="mailto:ares@interpia.net" name="역자">에게 보내주십시오(6. <ref id="faq" name="FAQ부분">에 대해 특히..) <sect>Jaz disks <p> 1GB를 저장하는 Jaz disk(cartridge, media)는 3.5" floppy disk 세장을 겹쳐놓은 것과 비슷하게 생겼다. Drive는 앞에 붙어있는 button을 누르거나 s/w적인 명령에 따라 disk를 motor로 밀어내는 기구를 가지고 있다. <sect1>Jaz Jet host adapter <p> Iomega는 Jaz Jet이라는 이름으로 SCSI host adapter를 판매하고 있다. 현재 두가지 SCSI chipset을 사용한 두 version이 있다. 하나는 <bf>Adaptec 7800 family adapter</bf>에 기반한 것으로, 2930/2940 adapter와 호환된다. Linux 2.0은 aic7xxx driver로 이 adapter를 지원한다.(이 driver는 <em><bf>Kernel ver 1.3.?</bf></em>부터 도입되었다) 또 다른 adapter는 <bf>Advanced Systems chipset</bf>에 기반한 것이다. boot time에 다음과 같은 message를 출력한다. <code> Jaz Jet PCI SCSI adapter Copyright Advanced Systems 1996 </code> Kernel을 compile할 때 <em><bf>CONFIG_SCSI_ADVANSYS</bf></em> 변수 set을 사용한다. <sect>Jaz drive를 위한 kernel 설정 <p> Jaz drive를 Linux에서 사용하기 위하여 kernel을 SCSI adapter에 맞게 configure해야한다. Kernel을 만드는 법에 대해서는 <em><bf>/usr/src/linux/README</bf></em> file에 나와 있다. 2.x kernel을 위해서는 <em><bf>/usr/src/linux/Documentation</bf></em> directory를 참조한다. 또한 Brian Ward의 <htmlurl url="http://sunsite.unc.edu/pub/Linux/docs/HOWTO/Kernel-HOWTO" name="Kernel-HOWTO">도 참조한다. <sect>Boot time에서의 drive 인식 <p> System boot시에 adapter와 그에 연결된 disk에 대한 정보가 display되어야 한다. Boot message는 SCSI adapter에 따라 다르고, <em><bf>/var/log/messages(또는 /var/adm/messages)</bf></em> file에 기록된다. <em><bf>dmesg</bf></em> 명령으로 command prompt에서 이 message들을 replay해 볼 수 있다. 아래는 Adaptec 2940에 대한 2.0.10 kernel의 booting시 출력이다. <code> 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: csi 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 </code> 위 log에서 <bf>raw scsi device name( sda, sdb, 등등)</bf>을 주목하라. 나중에 disk를 access하려면 이 이름들이 필요하다. 위와 같은 각각의 message line이 나타나지 않는다면, h/w나 kernel에서 뭔가 잘못 설정된 것이다. <em><bf>scsi0</bf></em>: 로 시작하는 message line이 나타나지 않은 경우, host adapter와 그 driver를 바르게 설정하지 않은 것이다. 어떤 driver는 무엇이 잘못되었는지에 대해 hint를 줄 것이다. drive가 detect되지 않았다면, 아마 cable에 이상이 있을 것이다. drive 이름이 지정되지 않았다면 kernel을 생성시킬 때 SCSI disk 지원에 관한 내용을 빠뜨린 것일 것이다. 다른 debugging hint에 대해서는 drivers/scsi/README file과 SCSI HOWTO를 참조할 것. <sect1>Fdisk, mke2fs, mount, 기타 <p> 일단 Jaz를 위한 drive 이름을 알아냈다면, <em><bf>fdisk, mke2fs, mount</bf></em> 등과 같은 일반 Linux disk 관리 명령으로 drive를 조작할 수 있다. 각각의 사용법에 대해서는 manual page를 참조한다. <sect1>이미 DOS format되어 있던 disk <p> Iomega에서 출고 당시에 이미 format된 disk들은 하나의 partition을 가지고 있다. (어떤 이유에 의해 Iomega는 4번째 partition을 사용한다. 역자 주 :<bf><ref id="faq" name="FAQ"></bf>를 참조할 것.) 이 disk를 아래의 명령으로 mount할 수 있다. (jaz disk의 raw name은 sda로 가정) <tscreen><verb> # mkdir /jaz # mount -t msdos /dev/sda4 /jaz </verb></tscreen> 또는, <em><bf>Windows95/98 VFAT</bf></em>를 지원하도록 생성된 2.0 kernel을 사용하는 경우, <tscreen><verb> # mkdir /jaz # mount -t vfat /dev/sda4 /jaz </verb></tscreen> mount할 수 있다. (이렇게 해서 긴 file 이름으로 읽고 쓰기가 가능하다) Disk의 file들은 <em><bf>/jaz</bf></em>에 나타날 것이다. Disk가 mount되어 있는 동안은 eject할 수 없다. Drive를 unmount하기 위해서는 아래의 명령을 사용한다: <tscreen><verb> # umount /dev/sda4 </verb></tscreen> <em><bf>/jaz</bf></em>를 mount point로 만드는 작업은 반복할 필요가 없다. (unmount할 때 <em><bf>/jaz</bf></em> directory에 있어서는 안된다는 점도 확인할 것.) <sect1>Linux disk로 다시 format하기 <p> Jaz disk를 지우고 토종 Linux file system으로 만들고 싶다면, <em><bf>fdisk</bf></em>를 전체 disk에 대해 사용해야 한다. <tscreen><verb> # fdisk /dev/sda </verb></tscreen> 그리고 기존의 모든 partition을 삭제해야 한다. <em>( 'd' command를 사용 )</em> 그 후에 새로운 partition을 <em>'n' command</em>로 생성하고, promary partition으로 만든 뒤 'w' command로 partition table을 disk에 기록하고, <em>'q' command</em>로 끝낸다. 그리고 생성된 partition을 format한다. <tscreen><verb> # mke2fs /dev/sda1 </verb></tscreen> ('1'은 <em><bf>fdisk</bf></em>에서 이 partition에 준 숫자임) 이제 disk를 mount할 수 있다. <tscreen><verb> # mount -t ext2 /dev/sda1 /jaz </verb></tscreen> (위는 전에 만든 mounting point를 사용하는 경우) <sect1>Jaz Tools disk <p> Jaz drive와 함께 오는 disk를 사용하기 (역자 주:지우거나 쓰기) 위해선 별도의 작업이 필요하다. 출하 시에는 s/w적인 기록 방지가 <em><bf>enable</bf></em>되어 있기 때문이다. 두 가지 방법이 있는데, 하나는 DOS나 Windows에서 <em><bf>"reclaime.exe"</bf></em>를 사용하여 lock을 푸는 것이고,(또는 setup program으로부터 tools를 설치하든가) 또 하나는 Bob Willmot의 <em><bf>jaztools</bf></em> program을 사용하는 것이다.(<ref id="jaztools" name="5장">을 참조) <tscreen><verb> # jaztool /dev/sda rw </verb></tscreen> (위에서 <em><bf>/dev/sda</bf></em>는 알맞는 SCSI device에 맞게 고친다) Password를 물어보면, <tscreen><verb> APlaceForYourStuff </verb></tscreen> 라고 입력한다. <sect>Bob Willmot의 <em>jaztools</em><label id="jaztools"> <p> Iomega의 특별한 기능을 지원하기 위한 Linux program이 <htmlurl url="http://www.cnct.com/~bwillmot/jaztool/" name="아래 사이트">에 있다. http://www.cnct.com/˜bwillmot/jaztool/ GUI와 drive 검사 및 자동 mounting/unmouning기능을 지원하는 새로운 version의 jaztool이 곧 준비될 것이다. <sect>FAQ<label id="faq"> <p> <sect1>Jaz tools disk를 read only로만 mount할 수 있다. <p> Tools disk는 특별한 암호로 보호된 읽기 전용 mode로 출하된다. 푸는데는 두가지 방법이 있는데, 하나는 DOS나 Windows에서 <em><bf>"reclaime.exe"</bf></em>를 사용하여 <bf>lock</bf>을 푸는 것이고, 또 하나는 Bob Willmot의 <em><bf>jaztools</bf></em> program을 사용하는 것이다.(<ref id="jaztools" name="5장">을 참조) <tscreen><verb> # jaztool /dev/sda rw </verb></tscreen> (위에서 /dev/sda는 알맞는 SCSI device에 맞게 고친다) Password를 물어보면, <tscreen><verb> APlaceForYourStuff </verb></tscreen> 라고 입력한다. <sect1>Jaz가 spin down후에 system을 lock한다. <p> 느낌으로는, <bf>Jaz firmware</bf>와 관련된 듯 하다. 이런 문제를 가진 모든 사람은 drive의 Revistion을 <htmlurl url="mailto:bwillmot@cnct.com" name="Bob Willmot">에게 알려주기 바란다. Jaz revistion은 아래와 같은 <em><bf>/etc/dmesg</bf></em>의 출력에서 다음 부분에 나와 있다. <code> 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 </code> 이런 현상은 일반적인 Linux 사용자에게는 일어나지 않을 듯한 어떤 특정 상황에서만 발생한다. Jaz drive의 partition이 mount되었을 때, file system이 아직 mount되어 있는 중에 driver의 spin이 멈추고, 아직도 <bf>idle</bf>일 때 block device를 읽으려고 시도하는 경우이다. Linux가 partition을 재건(?)하기 위해 MBR을 다시 읽으려고 하지만, 어떤 이유에서 때때로 이 시도가 실패하고 device를 명백한 busy상태로 방치하는 듯 하다. Kernel의 MBR 읽기와 process device read는 불가능할 것인데, 이는 <em><bf>lockout</bf></em> 또는 <em><bf>busy state</bf></em>에 기인하는 듯 하다. 이 상태에서 Linux는(?) Jaz drive가 아직도 읽기 상태에 있는 것으로 생각하지만, 사실은 I/O는 일어나지 않는 것이다. Bob Willmot의 경우, 이런 현상은 대부분 block device가 MBR을 읽을 때 발생한다고 한다. <sect1>Jaz drive로부터 boot할 수 있는가 ? <p> 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로 지정할 것이다.<bf>(BIOS 0x80)</bf> 다른 BIOS들의 경우, 아마 모든 IDE drive를 설정 해제해야 할 것이다. 또 다른 BIOS들의 경우, 물리적으로 IDE drive를 떼어 내든지 IDE interface를 disable해야 할 것이다. <sect1>왜 Iomega는 partition 4번을 사용하는가 ? <p> Partition 4는 <bf>Macintosh</bf>의 기본 partition이다. Mac에서는, 첫 partition이 boot 정보를 위한 공간으로 예약되어 있고, 두 번째는 system정보, 세 번째는 resource fork, 그리고 4번째가 data fork이다. 어쨌든, PC와 대부분의 다른 system에서 4번째 partition을 쓸 수 있는 반면, Mac은 다른 partition은 전혀 사용할 수 없다. Iomega는 미리 format하는 모든 media를 출시할 때 partition 4를 사용하여 PC와 Mac모두에서 커다란 호환성 문제를 예방하고 있다. <sect1>어떻게하면 boot할 때 disk를 mount시킬 수 있는가 ? <p> <em><bf>/etc/fstab</bf></em> file에 한줄을 추가하기만 하면 된다. 예를 들어, 항상 DOS disk를 drive안에 넣고 boot한다면 <tscreen><verb> # /dev/sda4 /jaz msdos defaults 0 0 </verb></tscreen> 라고 <em><bf>fstab</bf></em> 안에 기록해 준다.(역자 주 : Iomega에서는 4번 partition을 사용하므로 <em><bf>/dev/sda4</bf></em>라고 하는 것으로 생각됨) 각자의 상황에 따라 다르겠지만, 초기화 script는 <em><bf>fstab</bf></em>에 기록된 각 partition에 대해 <em><bf>fsck</bf></em>를 실행시키려 할 것이다. 만일, disk를 boot할 때 drive 안에 넣는 것을 잊는거나 잘못된 disk 를 넣어둔다면(역자 주: 다른 type으로 format된 disk 등) 문제를 일으킬 수 있다. 이 문제를 피하기 위해, <em><bf>/etc/rc.d/rc.local</bf></em>에 Jaz를 mount하기 위한 별도의 mount 명령을 추가할 수도 있다. 이렇게 함으로써 drive에 catridge가 없는 상황에서 표준 <em><bf>"mount -a"</bf></em> 명령에 의해 발생될 문제를 피할 수 있다. <sect1>Boot시 disk가 없다면 어떻게 되나 ? <p> Kernel이 partition table을 읽으려 할 때 (결국) <bf>operation time out</bf>이 발생할 것이다. Disk를 바꿀 때는 fsck를 사용하여 새 disk의 partition 구조를 확인하는 것이 좋다. 어떤 SCSI host adapter의 BIOS는 system boot 중에 disk의 partition table을 읽으려고 할 것이다. 이것을 방지할 수 없다면, (당신의 의지와는 상관 없이) 아마 반드시 drive에 disk를 넣은 채로 boot하여야 할 것이다. <sect1>어떻게 하면 Jaz cartridge를 self-bootable하게 만들 수 있는가 ? <p> (BIOS에서 허용한다고 가정했을 경우.) Jaz drive/cartridge는 훌륭한 응급 복구용 disk가 될 수 있다. 또한 새로운 Linux system을 사용할 수 있다거나 Jaz를 갖춘 다른 사람의 machine에서 Linux를 쓸 수 있다면 재미있을 것이다. Jaz drive가 system의 유일한 drive라면, 원하는 대로 설치 procedure를 진행할 수 있을 것이다. 그러나, 현재 작동하는 system으로부터 self-bootable한 system을 Jaz cartridge에 "건설"하는 것도 가능하다. <enum> <item>drive에 partition을 생성시키고 filesystem을 만든다. 아마 swap partition도 만들어야할 것이다. 하지만, RAM이 많다면 필요 없다. 새로운 root를 <em><bf>/jaz</bf></em>로 mount하고 그 안의 추가적인 partition을 그 안의 적절한 directory에 mount한다. <p> <item>모든 file을 제자리에 복사한다. <em><bf>/dev</bf></em>의 모든 file을 copy해야만 한다. <bf>permission, ownership과 group id</bf>가 그대로인지 확인한다. <p> <item>Jaz cartridge의 file들을 booting 환경에 맞게 설정한다. 특히 <em><bf>/jaz/etc/fstab</bf></em>에서 Jaz cartridge partition을 알맞게 mount시키도록 주의한다. 또한 <em><bf>/jaz/etc/lilo.conf</bf></em>도 맞추어야 한다. <p> <item>이 단계에는 두가지 방법이 있다 : <p> <enum> <item>Kernel image floppy를 만들고 rdev를 써서 Jaz cartridge가 root로 mount되도록 한다. 준비가 되면 floppy로 boot하여 lilo를 실행시키고 Jaz MBR을 bootable하게 만든다. <p> <item>Jaz가 아닌 root로부터 <em><bf>lilo</bf></em>를 실행시켜 Jaz cartridge에 bootable MBR을 설치할 수 있다. </enum> </enum> 첫번째 <bf>system definition</bf> 전에 아래의 내용을 <em><bf>/jaz/etc/lilo.conf</bf></em> file에 추가시킨다. ("1"을 root partition number로 바꾸고 "sda"를 적당한 Jaz device 이름으로 바꾼다) <code> drive = /dev/sda1 bios = 0x80 </code> Jaz MBR을 설치할 준비가 되었다면, <em><bf>/jaz</bf></em> tree가 마치 <em><bf>/</bf></em>에 있는 것처럼 작동시키기 위해 lilo를 <em><bf>-r</bf></em> option으로 실행시킨다. 이 명령은 다음과 같다. <tscreen><verb> # lilo -r /jaz </verb></tscreen> 보통, lilo는 boot시 boot device의 BIOS device number를 찾기 위한 탐색을 실시한다. 추가된 2줄이 이 작업을 한다. lilo와 kernel로부터 여러 <bf>error message</bf>가 나타날 것이다. lilo는 이 경우가 아니면 문제되지 않을 문제점에 대해 경고할 것이다. Kernel은 lilo가 무언가 알아내기(역자 주:discover) 위해 device를 찾는 <em><bf>probe</bf></em>에 의해 촉발되는 <em><bf>/dev/hdc</bf></em>와 관련된 문제를 제시할 것이다. 이런 message는 무시해도 된다. "쓰기"가 발생하는지 <bf>Jaz drive light</bf>를 주시할 것. 이 때, Jaz drive는 반드시 <bf>bootable</bf>해야 한다. <sect>더 많이 알고 싶다면 <p> <itemize> <item>최신 mini-HOWTO 원문은 <htmlurl url="http://www.cnct.com/~bwillmot/jaztool/" name="다음 주소">에서 볼 수 있다. http://www.cnct.com/˜bwillmot/jaztool/ <item>Iomega의 web page는 <htmlurl url="http://www.iomega.com/" name="다음 주소">에 있다. http://www.iomega.com <item> Linux 문서 한글화 project의 <htmlurl url="http://kldp.linux-kr.org" name="homepage"> http://kldp.linux-kr.org </itemize> </article>