ftape-HOWTO Kai Harrekilde-Petersen, v1.7.1, 13 February 1996 for ftape-2.06 日本語訳作成:佐藤亮一(GFG02131@niftyserve.or.jp) このHOWTOはLinux の ftape ドライバーにできること,できないことの概要を記した ものです.ftapeドライバーインターフェースはQIC-40, QIC-80, QIC-3010, QIC-3020 及びこれらの互換ドライプのみをサポートしています.QIC-3010, QIC-3020 は Travan (TR-2, TR-3)の名称でも知られているものです.上記のドライ ブはいずれもフロッピーディスクコントローラーを介して接続するタイプのものです. Linux の ftape ドライバ−は SCSI あるいは QIC-02 テープドライプはサポートし ていません.また DAT ドライブは通常(常に?)SCSI コントローラーと接続します. 本文書は Linux HOWTO 文書の一つとして作成されたものです.HOWTO文書の目録は で入手できます.またHOWTO本体については公 式サイトの一つであるsunsite.unc.edu:pub/Linux/doc/HOWTO から(ftpを使って) 入手できます.あるいは Linux 関連文書プロジェクトのホームページある から取得するという方法もあります. 1. Legalese 本文書は,ftape ドライバーに関する「よくある質問」(FAQ)とHOWTO を併せたもの です.(Copyright (C) 1993, 1994, 1995, 1996 Kai Harrekilde-Petersen) 著作権の取り扱いについて: この文書は「削除・変更を一切加えない限り」自由に配布することが許されています. この文書を部分的に配布する場合には,著作権に関する記述を併記すると共に,「配 布された部分がHOWTOの全体ではないこと」および本HOTWO全体の入手方法を付記して ください.本文書を商用配布に同梱する場合にも,著者の事前同意が不要であること を特に明記しておきます.しかしながら,商用配布に際してはご一報くださいますよ うお願いいたします. 本HOWTOの翻訳は自由です.ただし,著作権に関する記述はそのまま併記してくださ い.更に当文書翻訳者に関する記載を付け加えてください. DISCLAIMER: While I have tried to include the most correct and up-to-date information available to me, I cannot guarantee that usage of the information in this document does not result in loss of data. I provide NO WARRANTY about the information in the HOWTO and I cannot be made liable for any consequences for any damage resulting from using information in this HOWTO. 著者は入手できる最新かつ最も正確な情報を記載すべく努力しています.しかし「こ の文書に記載されている情報を利用した結果,データーが失われることがない」との 保証は致しかねます.著者はこのHOWTOに記載した情報に関する一切の責任を負いま せん.またこのHOWTOに記載されている情報を利用した結果生じるいかなる損害に対 しても責任を負いません. 2. ニュースフラッシュ これは厳密な意味ではニュースとは言えないでしょう.とはいうものの,ASCII版及 びHTML版には permuted セクション見出しがあります.これはLDP プロジェクトが採 用している SGMLシステムの特色です.この点については著者もどうしようもありま せん.HTML版では著者の記載したヘッターがもう一度そのまま繰り返されているよう に見える場合も少なくありませんが,こうした場合にも内容は全く同一です.GNU info 版には,"(Un)supported drives"というセクションはありません.これは info システムが"(Un)"という部分を別ファイルの参照と判断してしまうためです. 履歴 version 1.7.1 (February 13, 1996) ftape-2.06bへの対応 version 1.7 (January 28, 1996) ftape-2.06,modules-1.3.57への対応 version 1.6.2 (January 23, 1996) Connor TST3200R ドライバ鴫に関する記述を追加 2Mbps fdc にかんする情報を更新 version 1.6.1 (January 16, 1996) 細部の訂正 version 1.6 (January 10, 1996) ftape の管理者交代 v2.05への対応 新型ドライプ関連情報の追加 Bas Laarhoven氏は本業が多忙を極めているので,ftape のメンテから撤退しました (declined from),しかしながら同氏は,ftapeに対する側面からの援助は続けたいと の意向を表明しています.同氏に代ってメンテ作業に従事しているのは,著者である Kai Harrekilde- Petersen です.著者は ftpe 本体と同HOWTO の両方の維持管理に携わっています.HOWTOの更新は,テンポのバラつきは大きくな るものの(今まで通り大きいものの?)今後も続けていく方針です. 3. The preliminaries 筆者は,HOWTOの維持管理に従事してはいるものの,もう自分自身ではftapeを使用し ていません.従って「どのドライブを購入すればいいか?」という質問にたいしては あまり最新のアドバイスを提供できません.この種の問題に関しては, comp.os.linux.help で質問するか vger.rutger.edu のテープ関するログを参照する ようお薦めします(以下の,ftapeの開発に加わるには?の項をご覧ください).問 題がたとえ部分的にではあっても解決した場合には,問題及びその解決法の要旨を投 稿するようにしてください.また,発見された解決法を著者() にも御送付下されば幸いです.必要に応じて本HOWTOに追加させていただきます. 著者はメイルを毎日読んでいます.何方にたいしても返事をさし上げるべく努力して おりますが,間髪を入れずお答えできるという自信はありません.またニュースグル ープは(comp.os.linux.help et al)たまにしか目を通しておりません.というのもイ ンターネットにはモデムを介してしかアクセスできない,ニュースをオンラインで読 むしかないという環境に著者は置かれているのです. この文書をCD-ROM上の文書あるいは印刷配布の一部として入手された方は,是非 Linux Documentationのホームページ あるいはftp サイト で最新版がな いかどうかをお確かめ下さい.転ばぬ先の杖となるかもしれません. 3.1. ftape とは何か? ftape とはフロッピーコントローラーに接続するタイプの低価格テープドライブ各種 を制御するためのドライバープログラムです. ftapeそのものはバックアッププログラムではありません.ftapeは,デバイスファイ ル /dev/[n]rft[0-3]を介してテープドライプを使えるようにするためのデバイスド ライバーなのです(SoundBlaster 16 ドライバーを使えばサウンドカードが利用でき るようになるのと同じことです). ftape はBas Laarhoven 氏が「友人達からECC(error correcting code)に関する若干の助言を得て」作成したものです.ftape の著作権は同氏が保有 しており,著作権の取り扱いについてはGNUの General Public License に従うと定 められています.この規定は「今後もそれをみんなで共有していこう.誰かがそれを コピーし再配布することを禁じるようなことはしない」という精神に基づいたもので す. ftape はかなり安定しています.既にかなり前からこの状態に達していました.今回 の主な変更点は,QIC-3010, QIC-3020 (Travan)テープフォーマット及び若干の新し いテープドライブをサポートするようになった点です.ftape は大切なバックアップ の作成にも十分使用できるだけの信頼性を備えています(しかしいつの日にか痛い目 を見ないように,バックアップをチェックする習慣をつけて下さい). ftape は,QIC-117, QIC-80, QIC-40, QIC-3010, QIC-3020 の各フォーマットのテー プを使用するドライブをサポートしています. ftape はQIC-02, IDE (ATAPI), SCSI テープドライブをサポートしていません.SCSI ドライブには/dev/[n]st[0-7] を介してアクセスきます.SCSIテープドライブはカー ネルのSCSIドライバーがサポートしています.SCSIテープドライブに関する情報は, SCSI-HOWTOから入手してください.1.3.46以降のカーネルはATAPIテープドライフを サポートしています.「サポートしているドライブ,サポートしていないドライブ」 の項をも参照してください. 4. ftape の入手法とインストール 4.1. ftape の入手法 ftape は世界各地の ftp サイトから入手できます.以下に主要2サイトを掲げます. ftp://sunsite.unc.edu/pub/Linux/kernel/tapes/ ftp://www.pip.dknet.dk/pub/pip93/ sunsite は ftape を探す場合の正式サイトです.これに対し pip は著者自身のプラ イベートサイトです.最新かつ最強のftapeをお探しの場合は,pipこそ最適の場所と 言えるでしょう(ここはベータテスター用の場所であることをお忘れなく) 将来的には,このセクションにインストール法の解説を記載する予定です.しかしそ れまでは,ftape配布に付属している文書をお読みください. 4.2. ftape のインストールに必要なもの ftape を動かすためには以下の3つのソースが必要です. ftape v2.06b modules v1.2.8 あるいは v.1.3.57 Linux kernel v1.2.系の内特定のバージョン あるいは v1.3.x 1.2.8以前のカーネルに付属している modules-1.2.8 は使えないことに注意してくだ さい.モジュールを更新する際には,カーネルの更新も必要となります. 1.3.57以前のカーネルおよび1.2.xに付属している modules-1.3.57 なら問題なく使 用できます(モジュールパッケージの開発者である Bj嚴 Ekwall もこれの使用を推 奨しています). 4.2.1. モジュールユーティリティ 新しいカーネル(1.1.85以降)にはローダブルモジュールという機能があります(Bj嚴 Ekwall, Jacques Gelinas 氏が開発したものです).これは(もし可能であればの話 ですが)古いカーネル用にコンパイルしたモジュールを新しいカーネルで使えるよう にする機能です.ローダブルモジュールをサポートしたカーネルをコンパイルするた めには,modules-1.2.8.tar.gz, modules-1.3.57.tar.gz パッケージのいずれかが必 要です.このパッケージは tsx-11.mit.edu, sunsite.unc.edu にあります.カーネ ルをコンパイルする前に,このパッケージをコンパイルしインストールして下さい. 4.2.1.1. modules-1.3.57の新機能にはどんなものがありますか ? 1.3.57 から,いわゆるカーネルデーモン(kerneld)機能が標準カーネルに搭載される ようになりました.カーネルデーモンというのは必要なモジュールを適宜ロード・ア ンロードする機能です.この機能を使うためには,カーネルデーモンを機能を備えて いるmodules-1.3.57のパッケージが必要です. 4.2.1.2. modules-1.2.8の新機能にはどんなものがありますか ? 1.2.8のパッケージは,ftapeをカーネルにロードするときに発生する有名な (infamous) insmod Oops バグをフィックスしています.このバグの原因は,insmod が4Kバイトを越える静的データを含むモジュールを正しく取り扱えない点にありまし た.しかし,このバグがなくなった点を除いても,1.2.8パッケージは長足の進歩を 遂げています. 1.2.8は,必要なモジュールを自動的にロードする機能であるカーネルデーモン機能 を備えています.この機能を利用するためにはカーネル 1.2.xのパッチが必要です. 1.3.57以降のカーネルの場合は,この機能は標準装備となっています(上の記述をも 参照してください) 4.2.1.3. モジュールユーティリティのインストール ファイルを適当な場所で展開してください.それから modules-1.3.57(あるいは 1.2.8)ディレクトリーに移動し, 'make all; make install' を実行します.注意: ファイル及びマニュアルページをインストールするためにはルート権限が必要です. 4.2.2. Linux カーネル Linux 1.2 の公開後かなりの月日が経過し,ほとんどの人は1.2(あるいは1.3)への 移行をすませたようです.まだ旧バージョンをお使いの方は,新しいバージョンを利 用するようになさるのがよろしいかと存じます.インストール法その他の点で使い易 くなった新バージョンのご使用をお薦めします. カーネルは下記の他,世界各地のサイトで入手できます. sunsite.unc.edu [152.2.22.81]: /pub/Linux/kernel/tapes/ tsx-11.mit.edu [18.172.1.2]: /pub/linux/sources/system/ ftp.funet.fi [128.214.248.6]: /pub/OS/Linux/PEOPLE/Linus/ ftp.cs.helsinki.fi [128.214.48.123]: /pub/Software/Linux/Kernel/ 上記サイトには沢山のサブディレクトリ鴫があります. カーネルv1.2, v1.3がある のは(ご賢察通り)v1.2, v1.3というディレクトリ鴫です. v1.2が更新されるのは,重大なバグが見つかり,これに対する対処法が実用テストを 経て確立した場合だけです.従ってバージョンアップはかなり稀です.これに対し v1.3は開発中のカーネルといえます. トラブルの少ないカーネルをご希望の方は,v1.2を選ぶほうがよいでしょう.他方, 実験的なものをお望みの場合(またお使いのCDROM用ドライバーがv1.2にはないよう な場合)にはv1.3が適しているでしょう. ただし,v1.3のカーネルは安定性の点では未知数であるということをよく肝に銘じて おいてください.カーネルのパッチ,コンフィグ,コンパイルを繰り返さなければな らないかもしれません. 4.2.2.1. カーネルのコンパイル 早分かり カーネルソースは /usr/src/linux に展開するのが普通です(この方法に従うようお 薦めします). /usr/src に移動し,tar xzf linux-1.2.13.tar.gz (コンパイルするバージョンによ って数字はもちろん変化します)を実行してください.linux 及びそれ以下のサブデ ィレクトリ鴫にカーネルソースが展開されます.以上をまとめると # cd /usr/src # tar xzf linux-1.2.13.tar.gz とすればいいわけです. ついで linux ディレクトリ鴫に移動し,カーネルの設定を行います.以下のコマン ドを実行してください. # cd linux # make config 設定用スクリプトは,どのドライバーを組み込むのか?,どの機能を用いるのか(ネ ットワーク,ファイルシステムなど)?に関する質問を次々に発します.v1.3.34以 降のカーネルにはftapeに関するオプションはありません.これは,ftape がinsmod 実行時にDMAバッファを配置するようになったためです.つまりカーネルがftapeをサ ポートする必要はなくなったのです.pre-2.04のftape配布を入手なさった場合には, ダイナミックバッファ機能を利用するためのパッチを著者のホームページから取得し てください. 注:ftape をサポートしたカーネルにftape モジュールを取り込んでも危険はありま せん.ただdmaにできる貴重なメモリーが112Kbも少なくなってしまうだけのことです. v1.2のカーネルを御使いの場合には,カーネルディレクトリ鴫周辺で若干の追加作業 が必要です.すなわち kernel/ksyms.cにパッチを当てる必要があるのです.パッチ ファイルは ftape-2.06b/linux-1.2/ksyms.patch です.パッチを当てるためには以 下のようにして下さい. # cd kernel # patch < ../../ftape-2.06/linux-1.2/ksyms.patch # cd .. (これは ftape のソースが /usr/src/ftape-2.06 にあると仮定した場合のもので す) カーネルの設定が終わったら,「依存ファイル」を作り,次いでカーネルをコンパイ ルするという作業が必要です.以下のコマンドを実行してください. # make dep # make zImage 万事がうまくいけば,コンパイル済みカーネルが arch/i386/boot/zImage にできて いるはずです.何らかのドライバーをモジュール化した場合には,'make modules'を も実行してください. さあ,これで新しいカーネル用のftapeをコンパイルする用意が整いました(この時 点でリブートする必要はありません).まず,以下のようにしてディレクトリーを移 動してください. # cd /usr/src/ftape-2.06 2−3のオプションは,Makefileに手を加えることで変更できます. 最も重要な点:お使いの gcc が v2.4.5の場合には,'FTAPE_OPT'に `-DGCC_2_4_5_BUG' を付け加えること.またColorado FC-10, FC-20 コントローラ ーを使用する場合には,その旨を設定しておく必要があります. 4.3. ftapeドライバーの開発に参加するには ftapeドライバー開発に参加なさりたい方,開発の現況を知りたい方は,vger上の TAPE メイルリストへの参加をご検討下さい.メイルリストへ参加する際は さい.参加申し込みを頂き次第,投稿法・メイルリスト脱退の方法を記した挨拶状を 送付いたします. 4.4. Linux でテープをフォーマットすることは可能ですか? できません.これを可能にするための作業も行っていません.これに挑戦しようとい う方は,著者にまでご一報ください.今のところは,MessyDOSを使うか,あるいはフ ォーマット済みのテープを買うかのいずれかの方法しかありません.市販のフォーマ ット済みテープの中には不良セクタの検査をしていないものがあるので要注意です. 不良ブロックを発見するとftapeドライバーは,警告を発します.ftapeがフォーマッ ト済みテープに不良箇所を発見した場合には,DOS用のソフトでもう一度ためしてみ てください.DOS用プログラムでもftapeでも不良が見つかった場合には,フォーマッ トをやり直すのが得策でしょう. 注:新しいフォーマット済みテープをftapeで利用するためには,以下のコマンドで まずテープを消去する必要があります. mt -f /dev/nftape erase 4.5. DOSで使えるフォーマットプログラムにはどのようなものがありますか? 作動が確認されているソフトを以下に列挙します Colorado Memory System's software (tape.exe) Conner Backup Basics v1.1 及び Windows用全バージョン Norton Backup QICstream version 2 Tallgrass FileSecure v1.52 Escom Powerstream 3.0 (qs3.exe -- QICstream v3?) 以下のソフトにはバグがあることがわかっています. Conner Backup Basics 1.0 Colorado Windows tape program CP Backup (テープを著しく浪費する点を除けば,利用可能です) 実際問題として,DOS用プログラムの大部分は問題なく利用できます.Conner Backup Basics v1.0 には parameter off by one というバグがありましたが(QIC-80の特性 を正しく読み取れない場合がありました),v1.1 では修正されています.ftapeは このバグを検出し,これを処理することができます.Dennis T. Flaherty () 氏からは「Conner C250MQ をお持ちの方は Conner (米国内なら1-800-4Conner )に電話して,v1.1を入手することができる.更 に名目的なフロッピー代を払うだけでアップグレードを求めることも可能である. Windows用のColorado テーププログラムのなかにはセグメントナンバーに関する off-by-one エラーを含むものがある.ftapeはこのバグを検出し,これを処理するこ とができる」との報告を頂きました. Central Point Backup も使えます.ただしこのプログラムには,テープ上の不良箇 所を発見した場合に貴重なテープスペースを無駄にしてしまうという欠点があります. 注:上記リストに掲載されていないDOS用のフォーマットプログラムをお使いになっ た場合には,著者()までご一報ください.リストに追加させてい ただきます. 4.6. フロッピードライブとftapeの共存 フロッピードライブ・ftapeは共にFDCおよびIRQ6を必要としているので,この二つを 同時に使用することは不可能です.フロッピーディスクをマウントした状態でテープ ドライブにアクセスしようとした場合,ftapeは「IRQ6がgrabできない」というメッ セージを発したのち終了してしまいます.これが特に問題となるのは,緊急ディスケ ットとftapeを組み合わせて使う場合でしょう.解決法としては,ブート・ルートデ ィスクをラムディスクにロードし,それからフロッピーディスクをアンマウントする という方法,FDCを二つ装備する方法があります. 5. サポートしているハードウェア・していないハードウェア 5.1. サポートしているテープドライブ QIC-117互換ドライブ, QIC-40, 80, 3010, 3020標準ドライブならどれでもftapeを 使用できます.QIC-WIDE, Travan ドライブもすべてサポートしています(TR-1は8mm テープを使用するQIC-80ドライブ,TR-2, TR-3は それぞれQIC-3010, 3020同等品で す) ftapeでの作動がこれまでに確認されているドライブを以下に示します. Alloy Retriever 250 Archive 5580i / XL9250i Colorado DJ-10 / DJ-20 (aka: Jumbo 120 / Jumbo 250) Colorado 1400 HP Colorado T1000 Conner C250MQ(T), TSM420R, TSM850R, TST800R, TST3200R Escom / Archive (Hornet) 31250Q Irwin 80SX / Insight 80Mb Iomega 250 Iomega Ditto Tape Insider 420, 1700, 3200 Mountain FS8000 Reveal TB1400 Summit SE 150 / SE 250 Tallgrass FS300 (AHA1542Bと使用するには若干の小細工が必要) Memorex tape drive backup system Wangtek 3040F, 3080F ftapeが認識できるドライブリストの最新版は,ftape配布に同梱している vendors.h ファイルにあります. どのドライブを選ぶべきかについては申し上げたくありませんが,Colorad DJ-20は Conner C250MQドライブに比べるとかなりノイズが大きいということはお知らせして おきたいと思います(Colorado DJ-20はConnerのドライブに比べて5-10倍もうるさい という人もいます.これが正確かどうかは解りませんが,私の持っているColoradoド ライブがかなりうるさいことは確かです) Tallgrass FS300 を AHA1542Bと一緒に使う場合には,bus-on/bus-offタイムを増や す必要があります.Antti Virjo ()氏からは 「linux/drivers/scsi/aha1542.c に記載されているCMD_BUSON_TIME を4に, CMD_BUSOFF_CMD を12すればうまくいく」との報告を頂いています. 注:上記リスト以外でftapeが認識できるドライブをご存じの方は,HOWTOの管理者で ある()までご一報ください. 5.2. 専用コントローラー ftapeがサポートしている高速コントローラーの一覧を以下に掲げます. Colorado FC-10, FC-20 Mountain MACH-2 Iomega Tape Accelerator II 2Mbps controllers (i82078-1 fdcを使用) v1.12以降のftapeドライバーはFC-10コントローラーをサポートしています.詳しく はRELEASE-NOTES及びftape配布同梱のMakefileをご覧ください.またFC-20コントロ ーラーもv2.03以降のftapeドライバーで使えるようになりました.(RELEASE-NOTES で確認してください) ftape-1.14d 以降, MACH-2 コントローラーも使えるようになっています. IOmega Tape Accelerator IIを利用するためには,-DMACH2を用いて, I/O base, IRQ, DMAを正しく設定してください.少なくともftpe-2.02ではこのコントローラーが使用 できています(Scott Bailey )氏による実証テスト済). 5.2.1. Iomega Ditto Dash 及びその他の 2Mbps コントローラー Iomega Ditto Dash 及びその他の 2Mbps コントローラーはいずれも Intel 82078-1 チップを使用することによって2Mbpsのスピードを実現しています.82078-1チップに 対するサポートは目下開発中です.1月あるいは2月中には完成するのではないかと 期待しています.目下の開発状況はすでに1Mbpsは達成したというところです.2Mbps も近い内にクリアできるでしょう. 5.3. サポートしていないテープドライブ パラレルポートと接続するタイプのドライブ (例: Colorado Trakker) Irwin AX250L / Accutrak 250 (これらは QIC-80 ドライブではありません) IBM Internal Tape Backup Unit (Irwin AX250L ドライブ同等品) COREtape light パラレルポートと接続するタイプのドライブはどれもサポートされていません.これ はインターフェースの特性が異なるためです.パラレルポート接続タイプのドライブ はQIC-117規格とはかけなはれたインターフェースを使用しているのです. Irwin AX250L (及び IBM Internal Tape Backup Unit) もftapeでは使えません.こ のドライブはQIC-117規格は満たしているものの,QIC-80規格に準拠していないとい うのが使えない理由です(これらのドライブは Irwin社独自規格である ``servoe (Rhomat)''フォーマットを利用しています).著者はこのフォーマットについてなに も存じません.申し訳ないことながら,どうすれば情報を取得できるかも承知してお りません. COREtape light はftape の初期化コマンドを受け付けません.この問題にはうんざ りさせられています。これが解決できない限り、このドライブは使えないことになって しまうでしょう。 5.4. ftapeで外付式テープドライブを使う ブランケットにDB37メスコネクターのあるフロッピーコントローラーをお持ちなら (更に,何らかの方法でドライブに電力を供給できれば),ftapeで外付式テープドラ イブを使うことは可能です.これだけでは,あまりはっきりしませんね.次のように 言い換えてみましょう.すなわち,FDCの中には(極めて旧式のもの)ブランケット 上にDB37コネクターを備えているものがあります.これは外付フロッピードライブ用 です. FDC上のDB37コネクターと外付ドライブを繋ぐケーブルさえ自作すれば(FDC を一瞥 したところ、ストレートの1-1ケーブルを作れば良さそうな感じがします。しかし、作 業の手数は、場合によって千差万別なことでしょう,ftapeでテープドライブをコント ロールすることができるのです. こんなことが可能なのは,プログラムの側から見れば外付ドライブと内蔵ドライブに は差がないからなのです.ftapeにとってみれば,両方とも同じものなのです. Pins 20-37: GROUND 1: +12 Volt (POWER) 2: +12 Volt return (GROUND) 3: +5 Volt return (GROUND) 4: +5 Volt (POWER) 5: 2 6: 8 7: 10 8: 12 9: 14 10: 16 11: 18 12: 20 13: 22 14: 24 15: 26 16: 28 17: 30 18: 32 19: 34 電源コネクターは3.5インチフロッピードライブ用のミニタイプのものを使用します. 著者がボードを調べた限りでは,PSU(Power Supply Unit)からの電源コネクターの一 つをボードのコネクターに差し込めばOKのようです.単線ケーブルを使う場合には, 「50ワイヤ」すなわち電源線用合線ワイヤーの使用をお薦めします.(もちろん,ア ース線も必要です) 5.5. PCI マザーボードとftape 残念ながら,PCIマザーボードの中にはftapeと相性が悪いものもあるようです. 「PCIマザーボードを使ったシステムでftapeが使えなかったが,通常の386SX・ISAバ ス機なら問題なく使用できた」という報告を寄せてくださった方々もいらっしゃいま す.もし,PCIマザーボードで問題があった場合には,ftape配布に同梱している README.PCIをご一読ください. 6. バックアップとデータの復旧 この章では,tarとmtの簡単な使い方を紹介します. 6.1. アーカイブをtapeに書き込む方法 利用できるユーティリティには,tar, dd, cpio, afioがあります.テープおよび ftapeドライバーの潜在能力をフルに活用するためには mt が必要です.初心者にお 薦めできるのは tar です.これは多数のディレクトリーのアーカイブを作成したり, アーカイブから特定のファイルを抜き出したりする機能を備えたプログラムです. cpioを使えば tarよりも小さくかつ柔軟性に富むアーカイブを作成できるそうです. しかし著者自身は cpio を使用した経験はありません.afio はファイルを一つづつ 圧縮してから,圧縮済みファイルを一つに取りまとめるタイプのプログラムです.こ の方法を採用することによって,エラー発生点「以降」のファイルにもアクセスする ことが可能となっています.これに対しgzipを用いて圧縮したtar ファイルの場合だ と,エラー発生点以降のデータは失われてしまうのです!(これは「バックアップは 圧縮しない」という考え方に対する有力な論拠になると著者は考えています) tar を用いてカーネルソースのバックアップを作成するためのコマンドは以下の通り です.(ソースは /usr/src/linuxにあるものとする) cd /usr/src tar cf /dev/ftape linux この例の場合,ファイルの圧縮は行っていません.しかし,そのおかげでテープはず っとスムースに走行するようになっています.圧縮したい時には(tar 1.11.2が必要 です),-zオプションを付け加えて, 'tar czf /dev/ftape linux'としてください. tar, dd, mt の詳しい使い方については,それぞれに同梱されているマニュアルペー ジ・texinfoファイルを参照してください. tar は最初の引数をオプションと判断します.従って'-'は必要ありません.すなわ ち 'tar xzf /dev/ftape' と'tar -xzf /dev/ftape'は同じものなのです. 6.2. アーカイブの復旧 上の節で作成したカーネルソースのアーカイブを復旧してみることにしましょう.復 旧は簡単です.以下のコマンドを実行するだけです. tar xf /dev/ftape 圧縮していた場合には,次のようにしてください. tar xzf /dev/ftape 圧縮していた場合,gzipは「trailing garbage after the very end of the archive 」というエラーメッセージを表示します(これはパイプが壊れたことに伴う メッセージです).このエラーメッセージは無視しても差し支えありません. これ以外のユーティリティーについては,それぞれのマニュアルページを参照してく ださい. 6.3. アーカイブのテスト tar には二つのアーカイブを比較するためのオプション -d が設けられています.カ ーネルソースのバックアップをテストするためには,次のようにしてください. tar df /dev/ftape tar のマニュアルページをお持ちでなくても,(まだ)あきらめることはありません. tar はオプションリストを内蔵しています. 'tar --help 2 > &1 | more' をためし てみてください. 6.4. 複数のtarファイルを1本のテープに収める方法 複数のtarファイルを1本のテープに収めるためには mt というユーティリティーが必 要です.Slackware, Debianといった主要配布にはmtが含まれているので,恐らくす でにこれをお持ちのことだと思います. tar はテープアーカイブを一つだけ作成します(tar の名前の由来は Tape ARchiev にあります).従って,複数のファイルのことやテープ上のどこにファイルが位置す るかについてtarは何も関知しません.tar はデバイスの読み書きをするだけの機能 しか備えていないのです.これに対し,mt はテープの前進・後進を完全にコントロ ールする機能を備えています.しかしながら,テープからの情報の読み書きに関する 機能はありません.御賢察の通り,tar と mt を組み合わせて利用するのがコツなの です. nrft[0-3](nftape)デバイスを使用している場合には, mt を用いてテープの正確な 箇所を指定することができます.('mt -f /dev/nftapte fsf 2'とすれば,ファイル マーク=tar file を二つ越えた場所でテープは停止します)こののち,tar を使っ て必要なデータの読み書きを行います. 6.5. アーカイブにファイルを付け加える方法 アーカイブを拡張する方法,つまりデータが書き込んであるテープにあとから何かを かき加える方法はありますか? tar の説明書には 'tar -Ar'を使うようにとありますが,これはうまく機能しません. これは現行バージョンのftape が抱える限界の一つであり,アーカイブにファイルを 付け加える方法は今のところ存在しません. 6.6. テープのマウント・アンマウント テープにはファイルシステムがないので,テープのマウント・アンマウントというも のはありません.バックアップを作成するためには,テープを挿入し tar コマンド (あるいはテープにアクセスできる他のコマンド)を実行するだけでいいのです. この節の著者は Claus Tering 氏です. テープドライブと数本のバックアップ済みテープを持っている人ならだれしも「もし 何もかもがまずいことになってしまってハードディスクの内容をすべて失ってしまっ た時には,どうやってテープからファイルを復旧すればいいのだろう?」という自問 することでしょう. 必要なのはLinux をブートアップしテープからハードディスクを復旧するに足るだけ のファイルが入った緊急フロッピーディスクです. まず最初に,The Linux Bootdisk HOWTO( Graham Chapman 氏著)を熟読しましょう.緊急ディスクを作る際に知っておかなければならないこと は,すべてこのHOWTOに記載されています.以下の数段落には,Graham Chapman氏の 方法に従って作業をする場合に役に立つ追加情報を掲げました. # /etc/init, /etd/inittab, /etc/getty, /etc/rc.d/* の各ファイルをフロッピ ーディスクに収める必要はありません./etc/initが見つからない場合,Linuxは使用 中端末の/bin/shを起動しようとします.システムの復旧にはこれで充分です.上述 のファイルを消去しておけば,あとから必要になるディスク漆赦釈鴫漆の捻出に役立 つでしょう. # 軽い/bin/shを見つけてきましょう.これは大抵,Linux配布に同梱されている起 動フロッピー上にあるはずです.このshを使えば,更にディスクスペースに余裕がで ます.62KB程度しかない超軽量のashの使用をお薦めします.これはbashと高い互換 性を有しています. #緊急フロッピー上の/etc/fstabは次のような内容にしてください. /dev/fd0 / minix defaults none /proc proc defaults /dev/hda /mnt ext2 defaults フロッピーからブートしたら,以下のコマンドを実行します. mount -av # ストリーマーテープにアクセスする際には,フロッピードライブをマウントして いないことを確認してください.さもないと以下のエラーメッセージを頂戴すること になります. Unable to grab IRQ6 for ftape driver # これは,フロッピーをラムディスクにロードしなければならないということを意 味しています. しかしフロッピーをアンマウントしなければならない結果,テープからファイルを復 旧するのに必要なプログラムを緊急フロッピーと別のフロッピーに置くことができな いという副作用が発生してしまいます.この問題には以下の2段階の作業で対処でき ます. 1.tar (あるいはcpio, afio 等バックアップ作成に使用したプログラム)をフロッ ピーディスクのルートディレクトリ鴫に置きます.(上記の方法によってひねり出し た余分の空きスペースを必要としているのは,ルートディレクトリだけです) 2.テープからの復旧作業を開始する前に,tar (あるいはcpio,afio他)をハードデ ィスクにコピーし,ハードディスクからプログラムを起動する. # バックアッププログラムのほかにも,mt をフロッピーのルートディレクトリ鴫 に置いてください. # ftapeデバイス(通常 /dev/nrft0)がブートフロッピー上にあることを確認して ください. #さあ,やってみましょう!「復旧作業が行えるかどうかをためしてみるために,ハ ードディスクの内容を破壊してみる」といったことがお薦めできないのは言うまでも ありません.しかし,緊急ディスケットからの起動が可能かどうか,バックアップテ ープの内容一覧が作成できるかどうかを確認しておくことは最低限必要でしょう. 8. よくある質問 以下の問答集は,著者のもとにしばしばよせられる質問のうちFAQに適したものを集 めたものです.ここに追加した方がいいと思われる質疑応答がございましたら,どう か著者までお知らせ下さい.(ただし,「答え」の方も同信してくださいね!) 8.1. ftapeの速度はどんなものなのでしょうか? ftape を使用した場合のバックアップ・復旧速度はかなりのものです. 著者はColorado DJ-20/Adaptec 1542CFコントローラーを使用していますが, sustainedデータ(非圧縮,IDEディスク上のファイルをテープへ転送.70Mバイトtar アーカイブ作成時)の転送速度で毎分4.25Mバイトという数字を達成しています. ftapeの速度を決定する最大の要素はFDCの転送速度です.AHA1542CFは post-1991 82077と称するFDCを使用しており,テープドライブ転送速度1Mbit/secを実現してい ます.500Kbit/secしかサポートしていないFDCを使っている場合には,転送速度は上 述した数字の約半分程度にまで低下することでしょう. 8.2. トレースレベルの変更法を教えてください? 方法は二つあります.トレースレベルの初期値を変更し(ftape-rw.c にある tracingという変数を変更する)コンパイルをやりなおすというのが一つの方法です. もう一つの方法は,以下のコマンドを実行するというやり方です. mt -f /dev/ftape fsr mt のコマンドである fsr を利用するのはいささかハッカー的手法です.このコマン ドは恐らくいつのまにかなくなってしまうか,変更されてしまうものと思われます. 8.3. DOSで使っているテープとの交換は可能ですか? できません.DOS用ソフトはDOSファイルシステムのレイアウトに適した形にQIC-80の 特性を設定します.従って,DOSフォーマットを読み書きできるようなプログラムを 作成するのには(恐らく)若干の困難がつきまといます.使いやすいユーザーインタ ーフェースを作ろうとしたりすれば,困難は一層大きくなるにちがいありません. 8.4. tar で `....' をするにはどうすればいいのですか? これこそtarに関する質問の極めつけと言えましょう.マニュアルページとインフォ ページをお読みください.もしどちらもお持ちでない場合には,tar --help 2>&1 | more をやってみましょう. お使いのtar がv1.11.1以前のバージョンの場合には,v1.11.2へのバージョンアップ を検討してください.このバージョンはGNU zip を直接呼び出す機能を備えています (つまり,-z オプションが使えるのです).また強力なヘルプ機能も内蔵していま す. 8.5. ftapeの DMA トランスファーからECC エラーが発生します 誠に遺憾ながら「SVGAカード及びイーサネットカードの一部には,自分自身のアドレ スを正確にデコードできないものがある」と申し上げなければなりません.これが問 題となるのは,ftapeのバッファが0x1a0000 と 0x1c0000の間にある場合です.DMAの 書き込みサイクルが clobberedし,それ以外の書き込みバイトが不正な値(0xff)とな ってしまいます.この問題が報告されているのは,SVGA, ethernet カードです.ATI の16ビットVGAカードの一種がこの問題を引きこすことがすでに知られています. 最も安直な解決法は,元凶となっているカードを8ビットスロットに差し替えること です(カードのトランスファーを8ビットに変更するだけでは不十分な場合が多いよ うです).ftapeのバッファ域をVGAの範囲から移動するというのは部分的な解決にし かなりません.Linuxが使用する全DMAバッファがこの問題を引き起こす可能性がある からです.次の一点をはっきりさせておきましょう「これはftapeとは一切関係のな いトラブルです」 8.6. insmod が「the kernel version is wrong」というエラーメッセージを発行 します. insmod というプログラムは,現行カーネルのバージョンとftapeをコンパイルしたと きのカーネルバージョンを次の二つの方法でチェックする機能を備えています. ftapeのモジュールに記録されているカーネルバージョンと現行カーネルのバージョ ンを直接比較するというのが一つの方法です.カーネルとftapeのいずれもがバージ ョンシンボルを使ってコンパイルされている場合には,「使用されているシンボルを 比較する」という今ひとつの方法が用いられます. v2.7.0以降のGCC をお使いの場合には,モジュールユーティリティを gcc v2.7.xで 再コンパイルする必要があります. 新しいバージョンの insmod なら,バージョンが正しくない場合にもモジュールを強 制的にカーネルに挿入することができます. 8.7. その「versioned symbols stuff」(バージョンシンボル)というのはなん ですか? make configを実行する際の質問の一つである CONFIG_MODVERSIONS を yes にしてお くと,カーネルが外に送り出すシンボル(つまり,ローダブルモジュールが「見る」 ことのできるシンボル)はすべて,call/returnパラメーターのタイプに関らず checksumを含む分だけ大きくなります.こうしておくとinsmod によって,カーネル 内の変数・関数の定義がftapeのコンパイル時以降変化したかどうかを確認すること が可能になります. こうしておけば,安全性は高まります.古いモジュールを使っても,カーネルがクラ ッシュすることはなくなるからです. 8.8. insmod が「kernel 1.2.0 and 1.2.0 differ」というメッセ鴫ジを発行しま す カーネルに ksyms.c というパッチを当てていますか?まだなら,上記の「カーネル のコンパイル 早分かり」の節を参照してください. 8.9. ftape が ``This tape has no 'Linux raw format'''というメッセ鴫ジを発 行します. このエラーが出るのは,フォーマットしたてのテープを消去していないからです. ftapeは独自の方法でへッダセグメントを解釈するので,テープ上に'magic header' が必要なのです(つまり,ファイルマーク).この問題は, 'mt -f /dev/nftape erase'を実行すれば解決します. 8.10. tar/mt/cpio/dd binaries/sources/manpagesはどこにありますか? 以下のツール類はいずれもGNU プロジェクトが開発したものです.従って,ソース及 びマニュアルページは,世界各地のftpサイトで入手できます (ftp.funet.fi, tsx-11.mit.edu, sunsite.unc.eduを含む).また,GNUの公式ホームサイトである prep.ai.mit.edu [18.71.0.38]:/pub/gnu. からも取得できます. 1996年1月10日現在の最新版は以下の通りです. cpio: 2.4.1 (cpio-2.4.1.tar.gz) dd: 3.12 (fileutils-3.12.tar.gz) mt: 2.4.1 (cpio-2.4.1.tar.gz) tar: 1.11.8 (tar-1.11.8.tar.gz) gzip: 1.2.4 (gzip-1.2.4.tar.gz) 上記ツールはいずれも,Linux v1.0.4/ libc v4.5.19/ gcc v2.5.8 という環境でコ ンパイルするためのものです. mt 用パッチは ftape配布に同梱してあります.この パッチは mt のステータスコマンドからftapeドライブに関する有用な情報を得られ るようにするためのものです. 8.11. QIC規格に関する情報はどこで入手できますか? ftapeの開発に加わろうという方,テープフォーマットプログラムなどのユーティリ ティを作ってみようという方には,該当するQIC規格に関する情報が必要です. QIC-80, -117, -3010, and 3020. QIC-117の各規格は,いずれもテープドライブへ 命令を転送する方法(タイミング等を含む)を規定しています.しかし,こうした情 報はおそらく必要ないでしょう.これに対しQIC-80/3010/3020の各規格は テープレ イアウト・ECCコード・標準ファイルシステムといった「上位レベル」の部分を規定 したものです.QIC規格の入手先を以下に掲げます. Quarter Inch Cartridge Drive Standards, Inc. 311 East Carrillo Street Santa Barbara, California 93101 Phone: (805) 963-3853 Fax: (805) 962-1541 注:電話帳には「Freeman Associates, Inc」の名前で掲載されています. 8.12. tar を使う場合,ブロックサイズはどう設定すればいいのでしょう? 圧縮する場合,また一般的に考えても,出力を細かい部分に分割してtarを利用する のには利点があります.ftape はデータを29Kbyteのブロックに分割するので,-b58 と指定するのが最適の解となります. 「どうして29Kbyteなんだ」とおたずねですか? QIC-80規格は,すべてのデータをエ ラー訂正コード(ECC)で保護するよう定めています.QIC-80規格が採用しているこの 独自のコードは「Read-Solomon (R-S) code」の名前で知られています.R-S コード は,29バイト分の情報を受け取り,更に3バイトのパリティ部分を生成します.ECCコ ードの効率を高めるために,パリティバイトは 1Kバイトのセクターを29個受け取っ てからのちに初めて生成されます.つまり,ftapeは29Kバイトのデータと3Kバイトの パリティ情報を受け取り,総計32Kバイトを一気にテープに書き込むのです.ftapeが 常時32Kバイト大のブロックを読み書きし,エラーの検出・訂正を行うようになって いるのには,こうした理由があるのです. もっと詳しいことをお知りになりたい方は,ecc.c, ecc.h の両ファイルをお読みく ださい.ここにはコードの説明と共に,R-Sコードの参考書に関する情報が記載され ています. 8.13. ftape は DOS 上のQIC-3029テープより多くの不良セクターを検出するので すが? 両者の違いを知るためには,ftapeは常にDOSより多い2784セクターセクターを検出し ているという事情を了解しておく必要があります. ftapeが報告してくる数字は厳密なものです(もちろんですよね).正常に初期化さ れたQIC-3020テープには2784の固定位置セクタがあります.各セクタの位置は,不良 セクタマップに記入してあります.定格表には次のように書かれています. 「EOT/BOT 4セグメント中にあるトラック5,7,9,11,13,15,17,19,21,23,25,27 はエラ ー発生率が高くなっています.従ってこの部分は,フォーマット時に不良セクタとし てマップし,"同じセグメントから内の全セクタが不良である"旨を付記した上,不良 セクタマップに登録しています」 12トラックx2x4セグメントx29セクタ=2784セクタ という計算です. ftape はテープ上に存在する利用不能セクタの実数を報告するように設計されていま す.これに対しDOSは,より楽観的な数字を報告してくるので,テープの質が優れて いるかのような印象を受けるのです.(将来的にはftapeの仕様を変更し,正確なフ ォーマットを検出し,別々の数字を表示するようにするかもしれません.しかし,こ うした作業には低い先順位しか与えられていません.) QIC-3010 の場合も QIC-3020 と全く同様です. 9. ftapeドライバーのデバッグ 9.1. ... を実行したときに kernel/ftape がクラッシュするのはバグですか? いいえ.それは仕様というものです. ;-) まじめな話,信頼できるソフトというのはクラッシュしないものです.特にカーネル はクラッシュしないものでなければなりません.もしftapeを運用中にカーネルがク ラッシュし,かつftapeの側に問題があることを証明できる場合には,「それは修正 する必要なあるバグである」と考えてください.この場合には,詳しい状況をftape 管理者() 及びテープリストまでお知らせ下さい. 9.2. はいはい.それはバグ...いやいや仕様ですね.どうやって報告を送れば いいですか? まず,問題を再現できることを確認してください.再現性のないような偽物のエラー はタチの悪い獲物のようなものです。捕まえようがないのですから。 以下に,簡単なチェックリストを掲げます. カーネルのバージョン.当てたパッチ ftape のバージョン tape drive のモデル名・メーカー名 拡張バスのタイプ (EISA, ISA, PCI, VL-bus) 問題が発生した状況 システムに発生した障害 カーネル及びftape.o ファイルは消去しないでください.ご使用中のシステムに パッ チを当てたり,別のテストを行うようにお願いするかもしれません. トレーシングレベルを7に上げて(これは,最大レベルの1つ下です),問題となっ たコマンドをもう一度実行してみてください.カーネルログあるいは/proc/kmsgにあ る(エラーメッセージをどこに書き込むように設定しているかによって異なります) トレーシングデータを検討してみましょう.Try to look at what ftape spews out at you. 最初はとっつきにくい印象がありますが,ログファイルには貴重な情報が一 杯詰まっています.メッセージの前には関数名が記入されている場合がほとんどなの で,問題の所在は容易に突き止められるはずです.ソースを熟読しましょう.この作 業を行わずして「狼が来た.助けてくれ」と叫んではいけません. ご使用中のカーネルのバージョン(あるいはftapeのバージョン)が最新カーネルで はない場合には,バージョンアップを試みてください.そして,問題が解決するかど うかを調査してみてください.「問題報告」を送付なさる際には,ftapeのバージョ ン・カーネルのバージョン・拡張バスの種類(ISA, VL-bus, PCI, EISA)・バス速度・ フロッピーコントローラー=テープドライブの種類を明記するようお願いします.ど のようなことをしたら,システムにどのようなことが発生したかを正確に記載してく ださい.「ftapeはPCIマザーボードをもとにしたシステムでは使えないが,ISA/386 機では問題なく使用できた」と報告してきた方もいらっしゃいました.(上記’PCI マザーボードとftape’の項をも参照してください) 身銭を切ってインターネットにアクセスしている可哀想な人(著者もその一人です) のことも配慮してくださるようにお願いいたします.ftape運用結果の(巨大な)ロ グを特段の理由もなく送り付けるのは避けてください.そんなことをしなくても,問 題を記述しログを関係先に送るようにすることは可能なはずです. バグレポートの送付先は です. バグに関するメー ルは にお送りくださっても結構です.