Ftape-HOWTO

Kai Harrekilde-Petersen, <khp@dolphinics.no>

v1.7.1, 13 February 1996 for ftape-2.06

佐藤亮一, <GFG02131@niftyserve.or.jp>

v1.7.1j, 2 October 1996
この 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 文書の目録は <http://sunsite.unc.edu/mdw/HOWTO>で入手できます. また HOWTO本体 については公 式サイトの一つである sunsite.unc.edu:pub/Linux/doc/HOWTO から(ftpを使って) 入手できます.あるいは Linux 関連文書プロジェクトのホームページある <http://sunsite.unc.edu/mdw/linux.html>から取得するという方法もあります.

注意: この文書はかなり以前に書かれたものなので、 いまどきの Linux 環境にはあてはまらない箇所があります。 (JF Project)

1. Legalese

2. ニュースフラッシュ

3. The preliminaries

4. ftape の入手法とインストール

5. サポートしているハードウェア・していないハードウェア

6. バックアップとデータの復旧

7. ftape 用緊急ブートフロッピー

8. よくある質問

9. ftape ドライバーのデバッグ


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)

version 1.7 (January 28, 1996)

version 1.6.2 (January 23, 1996)

version 1.6.1 (January 16, 1996)

version 1.6 (January 10, 1996)

Bas Laarhoven 氏は本業が多忙を極めているので,ftape のメンテから撤退しました (declined from),しかしながら同氏は,ftape に対する側面からの援助は続けたいと の意向を表明しています.同氏に代ってメンテ作業に従事しているのは,著者である Kai Harrekilde- Petersen <khp@pip.dknet.dk> です. 著者は ftpe 本体と同 HOWTO の両方の維持管理に携わっています.HOWTO の更新は,テンポのバラつきは大きくな るものの(今まで通り大きいものの?)今後も続けていく方針です.

3. The preliminaries

筆者は,HOWTO の維持管理に従事してはいるものの,もう自分自身では ftape を使用し ていません.従って「どのドライブを購入すればいいか?」という質問にたいしては あまり最新のアドバイスを提供できません.この種の問題に関しては, comp.os.linux.help で質問するか vger.rutger.edu のテープ関するログを参照する ようお薦めします(以下の,ftape の開発に加わるには?の項をご覧ください).問 題がたとえ部分的にではあっても解決した場合には,問題及びその解決法の要旨を投 稿するようにしてください. また,発見された解決法を著者 (<khp@pip.dknet.dk>) にも御送付下されば幸いです.必要に応じて本 HOWTO に追加させていただきます.

著者はメイルを毎日読んでいます.何方にたいしても返事をさし上げるべく努力して おりますが,間髪を入れずお答えできるという自信はありません.またニュースグル ープは (comp.os.linux.help et al) たまにしか目を通しておりません.というのもイ ンターネットにはモデムを介してしかアクセスできない,ニュースをオンラインで読 むしかないという環境に著者は置かれているのです.

この文書を CD-ROM 上の文書あるいは印刷配布の一部として入手された方は,是非 Linux Documentation のホームページ <http://sunsite.unc.edu/mdw/linux.html> あるいは ftp サイト <ftp://sunsite.unc.edu:/pub/Linux/doc/HOWTO> で最新版がな いかどうかをお確かめ下さい.転ばぬ先の杖となるかもしれません.

3.1 ftape とは何か?

ftape とはフロッピーコントローラーに接続するタイプの低価格テープドライブ各種 を制御するためのドライバープログラムです.

ftape そのものはバックアッププログラムではありません.ftape は,デバイス ファイル /dev/[n]rft[0-3] を介してテープドライプを 使えるようにするためのデバイスドライバーなのです(SoundBlaster 16 ドライバー を使えばサウンドカードが利用できるようになるのと同じことです).

ftape は Bas Laarhoven <bas@vimec.nl> 氏が「友人達から 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サイトを掲げます.

sunsite は ftape を探す場合の正式サイトです.これに対し pip は著者自身のプラ イベートサイトです.最新かつ最強の ftape をお探しの場合は,pip こそ最適の場所と 言えるでしょう(ここはベータテスター用の場所であることをお忘れなく)

将来的には,このセクションにインストール法の解説を記載する予定です.しかしそ れまでは,ftape 配布に付属している文書をお読みください.

4.2 ftape のインストールに必要なもの

ftape を動かすためには以下の3つのソースが必要です.

1.2.8 以前のカーネルに付属している modules-1.2.8 は使えないことに注意してくだ さい.モジュールを更新する際には,カーネルの更新も必要となります.

1.3.57 以前のカーネルおよび 1.2.x に付属している modules-1.3.57 なら問題なく使 用できます(モジュールパッケージの開発者である Bjorn Ekwall もこれの使用を推 奨しています).

モジュールユーティリティ

新しいカーネル (1.1.85以降) にはローダブルモジュールという機能があります(Bjorn Ekwall, Jacques Gelinas 氏が開発したものです).これは(もし可能であればの話 ですが)古いカーネル用にコンパイルしたモジュールを新しいカーネルで使えるよう にする機能です.ローダブルモジュールをサポートしたカーネルをコンパイルするた めには,modules-1.2.8.tar.gz, modules-1.3.57.tar.gz パッケージのいずれかが必 要です.このパッケージは tsx-11.mit.edu, sunsite.unc.edu にあります.カーネ ルをコンパイルする前に,このパッケージをコンパイルしインストールして下さい.

modules-1.3.57 の新機能にはどんなものがありますか ?

1.3.57 から,いわゆるカーネルデーモン (kerneld) 機能が標準カーネルに搭載される ようになりました.カーネルデーモンというのは必要なモジュールを適宜ロード・ア ンロードする機能です.この機能を使うためには,カーネルデーモンを機能を備えて いる modules-1.3.57 のパッケージが必要です.

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 以降のカーネルの場合は,この機能は標準装備となっています(上の記述をも 参照してください)

モジュールユーティリティのインストール

ファイルを適当な場所で展開してください.それから modules-1.3.57 (あるいは 1.2.8) ディレクトリーに移動し,'make all; make install' を実行します. 注意:ファイル及びマニュアルページをインストールするためにはルート権限が 必要です.

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 のカーネルは安定性の点では未知数であるということをよく肝に銘じて おいてください.カーネルのパッチ,コンフィグ,コンパイルを繰り返さなければな らないかもしれません.

カーネルのコンパイル 早分かり

カーネルソースは /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

Makefile をいじって, コンパイルオプションをいくつか加えることもできます. 最も重要な点:お使いの gcc が v2.4.5 の場合には,'FTAPE_OPT' に `-DGCC_2_4_5_BUG' を付け加えること.また Colorado FC-10,FC-20 コントローラーを使用する場合には,その旨を設定しておく必要があります.

4.3 4.3. ftapeドライバーの開発に参加するには

ftape ドライバー開発に参加なさりたい方,開発の現況を知りたい方は,vger 上の TAPE メイルリストへの参加をご検討下さい.メイルリストへ参加する際は ' subscribe linux-tape'というメイルを majordomo@vger.rutgers.edu まで ご送付下さい.参加申し込みを頂き次第,投稿法・メイルリスト脱退の方法を記した 挨拶状を送付いたします.

4.4 Linux でテープをフォーマットすることは可能ですか?

できません.これを可能にするための作業も行っていません.これに挑戦しようとい う方は,著者にまでご一報ください.今のところは,MessyDOS を使うか,あるいはフ ォーマット済みのテープを買うかのいずれかの方法しかありません.市販のフォーマ ット済みテープの中には不良セクタの検査をしていないものがあるので要注意です. 不良ブロックを発見すると ftape ドライバーは,警告を発します.ftape がフォーマッ ト済みテープに不良箇所を発見した場合には,DOS 用のソフトでもう一度ためしてみ てください.DOS 用プログラムでも ftape でも不良が見つかった場合には,フォーマッ トをやり直すのが得策でしょう.

注:新しいフォーマット済みテープを ftape で利用するためには,以下のコマンドで まずテープを消去する必要があります.

mt -f /dev/nftape erase

4.5 DOS で使えるフォーマットプログラムにはどのようなものがありますか?

作動が確認されているソフトを以下に列挙します

以下のソフトにはバグがあることがわかっています.

実際問題として,DOS 用プログラムの大部分は問題なく利用できます.Conner Backup Basics v1.0 には parameter off by one というバグがありましたが (QIC-80 の特性 を正しく読み取れない場合がありました),v1.1 では修正されています.ftape は このバグを検出し,これを処理することができます.Dennis T. Flaherty (<dennisf@denix.elk.miles.com>) 氏からは「Conner C250MQ をお持ちの方は Conner (米国内なら1-800-4Conner )に電話して,v1.1 を入手することができる.更 に名目的なフロッピー代を払うだけでアップグレードを求めることも可能である. Windows 用の Colorado テーププログラムのなかにはセグメントナンバーに関する off-by-one エラーを含むものがある.ftape はこのバグを検出し,これを処理するこ とができる」との報告を頂きました.

Central Point Backup も使えます.ただしこのプログラムには,テープ上の不良箇 所を発見した場合に貴重なテープスペースを無駄にしてしまうという欠点があります.

注:上記リストに掲載されていない DOS 用のフォーマットプログラムをお使いになっ た場合には,著者(<khp@pip.dknet.dk>) までご一報ください.リストに追加 させていただきます.

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 での作動がこれまでに確認されているドライブを以下に示します.

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 (<klanvi@uta.fi>) 氏からは 「linux/drivers/scsi/aha1542.c に記載されている CMD_BUSON_TIME を 4 に,CMD_BUSOFF_CMD を 12 にすれば うまくいく」との報告を頂いています.

注:上記リスト以外で ftape が認識できるドライブをご存じの方は,HOWTO の管理者で ある (<khp@pip.dknet.dk>) までご一報ください.

5.2 専用コントローラー

ftape がサポートしている高速コントローラーの一覧を以下に掲げます.

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 <sbailey@xcc.mc.xerox.com>) 氏による実証テスト済).

Iomega Ditto Dash 及びその他の 2Mbps コントローラー

Iomega Ditto Dash 及びその他の 2Mbps コントローラーはいずれも Intel 82078-1 チップを使用することによって 2Mbps のスピードを実現しています.82078-1 チップに 対するサポートは目下開発中です.1月あるいは2月中には完成するのではないかと 期待しています.目下の開発状況はすでに 1Mbps は達成したというところです.2Mbps も近い内にクリアできるでしょう.

5.3 サポートしていないテープドライブ

パラレルポートと接続するタイプのドライブはどれもサポートされていません.これ はインターフェースの特性が異なるためです.パラレルポート接続タイプのドライブ は 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 にとってみれば,両方とも同じものなのです.

電源コネクターは 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 コマンド (あるいはテープにアクセスできる他のコマンド)を実行するだけでいいのです.

7. ftape 用緊急ブートフロッピー

この節の著者は Claus Tondering <ct@login.dknet.dk>氏です.

テープドライブと数本のバックアップ済みテープを持っている人ならだれしも「もし 何もかもがまずいことになってしまってハードディスクの内容をすべて失ってしまっ た時には,どうやってテープからファイルを復旧すればいいのだろう?」と自問 することでしょう.

必要なのは Linux をブートアップしテープからハードディスクを復旧するに足るだけ のファイルが入った緊急フロッピーディスクです.

まず最初に,The Linux Bootdisk HOWTO ( 日本語訳) (Graham Chapman <grahamc@zeta.org.au> 氏著)を熟読しましょう.緊急ディスクを作る際に知っておかなければならないこと は,すべてこの HOWTO に記載されています.以下の数段落には,Graham Chapman 氏の 方法に従って作業をする場合に役に立つ追加情報を掲げました.

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 <tracing-level>

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 管理者 (<khp@pip.dknet.dk>) 及びテープリストまでお知らせ下さい.

9.2 はいはい.それはバグ...いやいや仕様ですね.どうやって報告を送ればいいですか?

まず,問題を再現できることを確認してください.再現性のないような偽物のエラー はタチの悪い獲物のようなものです。捕まえようがないのですから。

以下に,簡単なチェックリストを掲げます.

カーネル及び ftape.o ファイルは消去しないでください.ご使用中の システムにパッチを当てたり,別のテストを行うようにお願いするかもしれません.

トレーシングレベルを7に上げて(これは,最大レベルの1つ下です),問題となっ たコマンドをもう一度実行してみてください.カーネルログあるいは /proc/kmsg にある(エラーメッセージをどこに書き込むように設定して いるかによって異なります)トレーシングデータを検討してみましょう. ftape が出力したメッセージをじっくり眺めてみてください. 最初はとっつきにくい 印象がありますが,ログファイルには貴重な情報が一杯詰まっています. メッセージの前には関数名が記入されている場合がほとんどなので,問題の所在は 容易に突き止められるはずです.ソースを熟読しましょう.この作業を行わずして 「狼が来た.助けてくれ」と叫んではいけません.

ご使用中のカーネルのバージョン(あるいはftapeのバージョン)が最新カーネルで はない場合には,バージョンアップを試みてください.そして,問題が解決するかど うかを調査してみてください.「問題報告」を送付なさる際には,ftape のバージョ ン・カーネルのバージョン・拡張バスの種類 (ISA, VL-bus, PCI, EISA)・バス速度・ フロッピーコントローラー=テープドライブの種類を明記するようお願いします.ど のようなことをしたら,システムにどのようなことが発生したかを正確に記載してく ださい.「ftape は PCI マザーボードをもとにしたシステムでは使えないが,ISA/386 機では問題なく使用できた」と報告してきた方もいらっしゃいました.(上記’PCI マザーボードと ftape’の項をも参照してください)

身銭を切ってインターネットにアクセスしている可哀想な人(著者もその一人です) のことも配慮してくださるようにお願いいたします.ftape運用結果の(巨大な)ロ グを特段の理由もなく送り付けるのは避けてください.そんなことをしなくても,問 題を記述しログを関係先に送るようにすることは可能なはずです.

バグレポートの送付先は <linux-tape@vger.rutgers.edu>です. バグに関するメールは <khp@pip.dknet.dk>にお送りくださっても結構です.