diff --git a/ja/handbook/backups.sgml b/ja/handbook/backups.sgml index 6423390181..a330866776 100644 --- a/ja/handbook/backups.sgml +++ b/ja/handbook/backups.sgml @@ -1,583 +1,586 @@ - + - + バックアップ

訳: &a.yoshiaki; . 5 July 1998.

ハードウェアコンパチビリティの問題は現在のコンピュータ業界でもっ とも多く起きる種類の問題であり, FreeBSDもこれに無縁ではありません. 市場にある驚くほど多様な種類の製品をサポートすることによって, FreeBSDは 安価に普及している PCハードウェアで動かすことができる という利点はこの点では不利でもあります. FreeBSDのサポートするハードウェアを徹底的に調べて提供することは不 可能ですが, このセクションでは FreeBSDに含まれるデバイスドライバとそ のドライバがサポートするハードウェアのカタログを示します. 可能で適切 なものについては特定の製品についての注釈を含めました. また, このハンドブックの のセクションにも サポートされているデバイスのリストがありますのでそちらもご覧ください. FreeBSD はボランティアプロジェクトでテスト部門には資金がありません から, より多くの情報をこのカタログに載せるにはあなたがたユーザに 頼らなければなりません. あなた自身の経験により, あるハードウェアが FreeBSDで動くか動かないかがわかったとしたら&a.doc; へ e-mailして知らせてください. サポートされているハードウェアについて の質問は, &a.questions;(詳しいことは を参照してください) へ 宛ててください. 情報を提供したり質問をする時は FreeBSDのバージョンと使っ ているハードウェアのできるだけ詳しい情報を含めることを忘れないでくだ さい. * フロッピーへのバックアップはどうでしょう? テープメディア

一般的なテープメディアには 4mm, 8mm, QIC, ミニカートリッジ DLT があります. 4mm (DDS: Digital Data Storage)

4mm テープはワークステーションのバックアップメディアとして QICから置き換えられつつあります. この傾向は QICドライブの製造のリーダ であった Archiveを Connerが買収し QICドライブの製造を中止したことで加 速しました. 4mmドライブは小型で静かですが 8mmドライブの持っているような信頼性の評判はありません. カートリッジは 8mmカートリッジよりも安価で小型 (3 x 2 x 0.5 インチ ; 76 x 51 x 12 mm) です. 4mmドライブ は 8mm同様にヘリカルスキャン (訳 注: VTRと同様の回転ヘッドを使う方式) を使用しているという理由でヘッド の寿命は短いです.

これらのドライブのデータスループットは 150kB/s程度から最大 で500kB/s程度の範囲です. データ容量は 1.3GBから 2.0GBです. ハードウェア 圧縮が多くのドライブで可能で, およそ 2倍の容量になります. マルチドライ ブテープライブラリユニットは1つの筐体に 6ドライブを持つことができ自動的 にテープを交換します. ライブラリの容量は 240GBに達します. 1つの例外です) 送りだしリールと巻き取りリールの両方がカートリッジの中 にあります.

4mmドライブは 8mmドライブ同様にヘリカルスキャンを使います. ヘリカルスキャンの利点と欠点は 4mmドライブ と 8mmドライブ共通です.

テープの寿命は 2000回のパスあるいは 100回のフルパックアップ です. 8mm (Exabyte)

8mmテープは SCSIテープドライブとして最もよく使われているもの で, データ交換用として最良の選択です. ほとんどのサイトには Exabyteの 2GB 8mmテープドライブがあるでしょう (訳注: Unixワークステーションを何 台も置いているようなサイトには1台くらいはあるというような意味です). 8mmドライブは信頼性が高く, 使いやすく, 静かです. カートリッジは安価で 小型です (4.8 x3.3 x 0.6 インチ; 122 x 84 x 15 mm). 欠点は , テープとヘッドの相対的な速度が高速なために比較的ヘッドとテープの寿命 が短いことです.

データスループットは 250kB/s程度から 500kB/s程度の範囲です. データ容量は 300MBから 7GBです. ハードウェア圧縮が多くのドライブで可 能で,およそ 2倍の容量になります. 単一のユニットのドライブから, 1つの 筐体に6台のドライブと 120巻のテープを持ったマルチドライブ テープライブラリまで利用することができます. ライブラリではテープは ユニットにより自動的に交換されます. ライブラリの容量は 840GB以上に達します.

データはヘリカルスキャンを使ってテープに記録されます. ヘリカルスキャン方式ではヘッドはメディアに対してある傾き (約6度) に配 置されます. テープはヘッドのある円筒の周の 270度にわたって接触します. テープが円筒面を走行する間, 円筒は回転しています. この結果, 高密度のデータのつまったトラックは, 狭い間隔でテープの上端と 下端の間を斜めに横切ります. QIC

QIC-150テープとドライブはたぶん最も一般的に使われている ドライブとメディアでしょう. QICテープドライブは現実的なバックアップ ドライブとして少なくとも高価なものではありません. 欠点はメディアのコストです. QICテープは 8mmや 4mmテープに比較して GBあたりのデータの保存で5倍ほど高価です. しかしあなたの必要とする量が半ダース程のテープで十分であれば, QICは正 しい選択となるかもしれません. QICは 最も一般的なテープドライ ブです. すべてのサイトに QICドライブのどれかの容量のものがあります. 問題は, QICは同じようなテープ (まったく同じ場合もある) に多様な記録密度 があることです. QICドライブは静かではありません. これらのドライブはデー タ記録を開始する前に音をたててシークしますし, リード, ライト, シークの 時にはっきりと聞こえる音を出します. QICテープの大きさは (6 x 4 x 0.7 インチ; 152 x 102 x 17 mm). で使われている 1/4インチ幅のテープについては 別に議論します. テープライブラリやチェンジャはありません.

データスループットは 150kB/sから 500kB/sの範囲です. データ容量 の範囲は 40MBから 15GBです. ハードウェア圧縮が最近の多くのドライブで使 えるようになっています. QICドライブは DATドライブに置き換えられつつあ り, あまり頻繁には利用されなくなっています.

データは複数のトラックにわかれてテープに記録されます. トラックはテープメディアの長さ方向の一端からもう一方の端までです. (訳注: 1トラックの read/write が終わるとテープの走行方向を反転させ 次のトラックの read/write を行います) トラックの数と, それに対応するトラックの幅はテープの容量によって 変わります. すべてではありませんがほとんどの最近のドライブは 少なくとも読み出しについては (場合によっては書き込みも) 下位互換性があります. QICはデータの安全性についてはよいと いわれています (ヘリカルスキャンドライブに比べて機構は単純でより 丈夫です).

テープは 5000回のバックアップで寿命となるでしょう. * ミニカートリッジ DLT

DLTはここに示したドライブのタイプの中で最高速のデータ 転送レートです. 1/2インチ (12.5mm) テープが単リールのカートリッジ (4 x 4 x 1 インチ; 100 x 100 x 25 mm) に入っています. カートリッジのひとつの 側面全体がスイングゲートになっています. ドライブの機構がこのゲートを開け, テープ リーダを引き出します. テープリーダには楕円形の穴があり, ドライブ がテープを引っ掛けるのに使います. 巻き取りのためのリールはドライブの中 にあります. ここに挙げた他のカートリッジはすべて (9トラックテープはただ 1つの例外です) 送りだしリールと巻き取りリールの両方がカートリッジの中 にあります. データスループットは約1.5MB/sで, 4mm, 8mm, QIC テープドライブ の3倍です. データ容量は単一のドライブで 10GBから 20GBの範囲です. マルチテープチェンジャ,マルチテープドライブ,5から 900巻のテープを1から 20ドライブで扱うマルチドライブテープライブラリがあり, 50GBから 9TBの容量が得 られます. データは (QICテープのように) テープの走行方向と並行に複数ある トラックへ記録されます. 2つのトラックに同時書き込みを行います. Read/Writeヘッドの寿命は比較的長いと言えます. テープの走行が止まればヘッドとテープの間の相対運動はありません. 新品のテープを最初に使う場合

新品の完全な空テープを読もうとしたり書き込もうとすると処理 は失敗するでしょう. 次のようなコンソールメッセージが出るでしょう. st0(ncr1:4:0): NOT READY asc:4,1 st0(ncr1:4:0): Logical unit is in process of becoming ready テープに識別ブロック (Identifire Block:block number 0) がありません. QIC-525標準の採用されている QICテープドライブのすべてで識別ブロックをテー プに書きます. 2つの解決方法があります.

(訳注: 方法1)mt fsf 1 によってテープドライブは識別 ブロックをテープに書きます.

(訳注: 方法2)フロントパネルのボタンを押してテープをとりだします.

再びテープを入れ,データをテープに dump(8)します.

dump(8) はそのうちに DUMP: End of tape detected と表示し, コンソールには HARDWARE FAILURE info:280 asc:80,96と表示されるでしょう.

mt rewindを使ってテープを巻戻します.

この次からはテープの操作は成功するでしょう. バックアッププログラム

よく使われる3つのプログラムはdump(8), tar(1), cpio(1)です. ダンプとリストア

dump(8)restore(8) は伝統的な Unixの バックアッププログラムです. これらはドライブのファイルシステム上の ファイル,リンク,ディレクトリをディスクブロックの集まりとして処理します. dump(8)はデバイスやファイルシステム全体をバックアップし, 一部分のバックアップや, ln(1)によるソフトリンクや他のファイル システムをマウントを行った, 1つ以上のファイルシステムにまたがる ディレクトリツリーのバックアップはできません. dump(8)はファイルやディレクトリを構成するデータブロックを テープに書くだけで, ファイルやディレクトリをテープに書くことはありません. dump(8)には初期の ATT UNIXのバージョン 6 (1975年ごろ) に由来する 癖が残っています. デフォルトのパラメタは 9トラックテープ (6250 bpi) に 適したものになっていて現在の高密度メディア (最大 62,182 ftpi) に適して いません. 現在のテープドライブの容量を有効に利用するため, デフォルト 値をコマンドラインで置き換えなければなりません.

rdump(8)rrestore(8) は他の コンピュータに接続されているテープドライブにネットワーク経由で バックアップをします. どちらのプログラムもリモートテープドライブにアクセスするために rcmd(3)ruserok(3)に依存しています. このためユーザ がバックアップを実行するためには rhostsによるリモートアクセス が必要です.

rdump(8)rrestore(8)の引数は リモートコンピュータに適切なものを用います. rrestore(8)はリモートコンピュータから使うのに適しています. (例えば FreeBSDコンピュータより komodoという名前の Sunに接続されている Exabyteテープドライブへ /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nrst8 /dev/rsd0a 2>&1 として rdumpしたような場合の restoreに使います) 警告: セキュリティは rhostsの管理にかかっています. あなたの状況を注意深く調べてください. Tar

tar(1) ATT Unix のバージョン 6 (1975ごろ) に さかのぼる事ができます. tar(1)はファイルシステムと 協調して機能し, ファイルやディレクトリをテープに書きます. tar(1)cpio(1)で使えるようなフルレンジのオプション は持ちませんが cpio(1)で使うような奇妙なコマンドパイプライン は必要ありません.

大部分の tar(1) にはネットワーク経由のバックアップの 機能はありませんが, FreeBSD で使用されている GNU の tar(1) は, rdump とおなじ構文でリモートデバイスを扱うことができます. komodo というホスト名の Sun に繋いである Exabyte のテープデバイスに対して tar(1) を実行するには, 次のようにします. /usr/bin/tar cf komodo:/dev/nrst8 . 2>&1 リモートデバイスをサポートしていない tar を使用している場合は, パイプラインと rsh(1)を使うことで, リモートテープデバイスに データを送る事ができます. (コマンド使用例はまだです) Cpio

cpio(1) は本来, Unixファイルを磁気メディアで交換 するためのプログラムです. cpio(1)はバイトスワッピング, 多くの異なるアーカイブフォーマットの書き込みのオプション(それ以外にも 多数のオプションがあります)があり, パイプで他のプログラムにデータを 渡す事もできます. この最後に挙げた特徴により, cpio(1)は インストールメディアについては優れた選択です. cpio(1)STDINからの入力でなければならず, ディレクトリツリーの探索やファイルリストについての機能はありません.

cpio(1)はネットワーク経由のバックアップの機能はあ りません. リモートテープドライブにはパイプラインと rsh(1) を使って送る事ができます. (コマンド使用例はまだです) Pax

pax(1)tarcpio に対する IEEE/POSIX の回答です. 長年の間, 様々なバージョンの tarcpio は, 互いにわずかながら非互換性を有していました. 各々をしらみ潰しに標準化する代わりに, POSIXは新しいアーカイブ ユーティリティを作ることにしました. pax は専用に 開発された新しいフォーマットに加えて, いくつもの cpio や tar の フォーマットの読み書きに対応しようと試みています. コマンド群は tar よりも cpio の方にいくぶん似ています.

Amanda (Advanced Maryland Network Disk Archiver) は単一の プログラムではなくクライアント/サーバ型のバックアップシステムです. Amanda サーバは, Amandaクライアントであるネットワークでサーバに接続 された複数のコンピュータから一つのテープドライブへバックアップを おこないます. このような場合の一般的な問題はいくつもの大容量のディスクからデータ ディレクトリをテープにバックアップするには時間がかかりすぎてしまう という事です. Amanda はこの問題を解決します. Amandaは同時に複数の ファイルシステムのバックアップをおこなう時に 「ホールディングディスク」 を使う事ができます. Amandaの設定ファイルに書いたすべてのファイルシステムのフルバックアップを 特定の間隔でとるために「アーカイブセット」と呼ばれるテープグループを 作ります. これには夜間に作られるすべてのファイルシステムの増分 (あるいは差分として) のバックアップも含みます. 障害の起きたファイルシステムの回復には最も新しいフルバックアップと 増分のバックアップが必要です.

設定ファイルでバックアップのコントロールと Amanda による ネットワークトラフィック量を設定します. Amanda はデータをテープに 書くのにバックアッププログラムのいずれかを使うでしょう. Amandaはその一部分でもパッケージでも利用可能ですが, デフォルトでは インストールされません. 何もしない

「何もしない」というのはコンピュータのプログラムでは ありませんが, バックアップの戦略として最も広く採用されている物です. これには初期投資が必要ありません. したがわなければならない バックアップスケジュールもありません. ただ何もしないだけです. もしデータに何かが起きたら, 苦笑いして耐えてください.

あなたにとって時間やデータの価値が少ないかあるいはまったくない のであれば「何もしない」のはあなたのコンピュータに最も適した バックアッププログラムでしょう. しかし注意してください. Unix は便利なツールです. 6ヶ月も使っていれば価値のあるファイルの山が でき上がっているでしょう.

「何もしない」は /usr/obj やその他の, コンピュータに よってつくり出されたディレクトリツリーについては適切な方法です. 一つの 例はこのハンドブックのファイルで, これらは SGMLのファイルより 生成された物です. HTMLファイルのバックアップを作る必要は ありません. SGMLのソースファイルは定期的にバックアップ します. どのバックアッププログラムが最適でしょう?

定期的に dump(8)しましょう. Elizabeth D. Zwicky はここで検討したプログラムすべてについて拷問的なテストを おこないました. すべてのデータと Unixファイルシステムの状態すべてを 保存するには明らかに dump(8)でしょう. Elizabethは大きく変化 に富んだ異常な状態 (いくつかはあまり異常でもない状態のものもあります) になっているファイルシステムで, それぞれのプログラムで ファイルシステムのバックアップとリストアを行ってテストしました. 特色のある状態には, ホールを持つファイル, ホールとヌルブロックを持つ ファイル, 奇妙な文字をファイル名に持つファイル, 読み出し不可, 書き込み不可のファイル, デバイスファイル, バックアップ中にファイルの サイズを変更する, バックアップ中にファイルの作成/削除をおこなうなどが あります. 彼女は1991年10月の LISA Vで結果の発表をしています. + +を参照してください. 緊急時のリストア手順 災難の起きる前に

起き得るどのような災難に対しても以下の 4ステップだけが必要な 準備です.

ステップ 1では, ファイルシステムテーブル(/etc/fstab) やブートメッセージで示されるすべてのディスクの disklabelをそれぞれ2コピー づつプリント (例えば disklabel sd0 | lpr を実行します) します.

ステップ 2では, boot と fixitフロッピーにそのシステムの すべてのデバイスドライバが含まれているか確認します. 最も簡単な確認の 方法は, フロッピーをドライブに入れてリブートし, ブートメッセージを 確認することです. あなたのシステムのデバイスがすべて含まれ, 機能していれば, step 3へ飛んでください.

そうでないなら, そのシステムのすべてのディスクをマウントでき, テープドライブにもアクセスできる 2種類のカスタムブート フロッピーディスクを作る必要があります. これらのフロッピーには fdisk(8), disklabel(8), newfs(8), mount(8), と利用したい バックアッププログラムが入っていなければなりません. これらのプログラム はスタティックリンクされたプログラムである必要があります. dump(8)を使うのであればフロッピーに restore(8)を 入れる必要があります.

ステップ 3では, 通常の方法でバックアップを作ります. 最新のバックアップの後でおこなわれた変更は回復することはできません. バックアップテープにライトプロテクトをしてください.

ステップ 4では, フロッピー (boot.flp と fixit.flp あるいは ステップ 2で作った2枚のカスタムブートフロッピーディスクです) と バックアップテープのテストをします. 手順のノートを作りましょう. このノートはブートフロッピーディスク, バックアップテープに入れておきプリントアウトしておきます. あなたが リストアをおこなうような時はおそらく錯乱状態でしょうからこのノートは バックアップを破壊してしまうようなことを防ぐのに役立つでしょう (どのようにして破壊するって? tar xvf /dev/rst0とする替りに偶然 tar cvf /dev/rst0 とタイプしてバックアップテープに上書きしてしまうかもしれません). 訳注: 上書きはライトプロテクトをしておけば防げますが, なんらかの原因で プロテクトがはずれているかもしれません. ちなみに訳者の経験から言えば上のようなミスタイプは結構起きます.

安全性を増すために, 毎回ブートフロッピーディスクを作り, 2巻のバックアップテープを取ります. 一方を離れた場所に保管します. 離れた場所は同じ建物の地下室ではいけません. 世界貿易センタービルに あった数多くの会社は苦い経験よりこの教訓を得ました. 離れた場所とはコンピュータやディスクドライブからかなり離れていて 物理的に分離されていなければなりません.

ブートフロッピーディスクを作るスクリプトの一例 #!/bin/sh # # create a restore floppy リストアフロッピーの作成 # # format the floppy フロッピーのフォーマット # PATH=/bin:/sbin:/usr/sbin:/usr/bin fdformat -q fd0 if [ $? -ne 0 ] then echo "Bad floppy, please use a new one" exit 1 fi # place boot blocks on the floppy フロッピーにブートブロックを書く # disklabel -w -B -b /usr/mdec/fdboot -s /usr/mdec/bootfd /dev/rfd0c fd1440 # # newfs the one and only partition ただ1つのパーティションを newfs # newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/rfd0a # # mount the new floppy 新しいフロッピーをマウント # mount /dev/fd0a /mnt # # create required directories 必要なディレクトリの作成 # mkdir /mnt/dev mkdir /mnt/bin mkdir /mnt/sbin mkdir /mnt/etc mkdir /mnt/root mkdir /mnt/mnt # for the root partition mkdir /mnt/tmp mkdir /mnt/var # # populate the directories # # MINIカーネルがない場合は作ります if [ ! -x /sys/compile/MINI/kernel ] then cat << EOM The MINI kernel does not exist, please create one. Here is an example config file: # MINIカーネルの config fileの例 # MINI -- A kernel to get FreeBSD on onto a disk. # machine "i386" cpu "I486_CPU" ident MINI maxusers 5 options INET # needed for _tcp _icmpstat _ip stat # _udpstat _tcpstat _udb options FFS #Berkeley Fast File System options FAT_CURSOR #block cursor in syscons or pcc ons options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device options NCONS=2 #1 virtual consoles options USERCONFIG #Allow user configuration with -c XXX config kernel root on sd0 swap on sd0 and sd1 dumps on sd0 controller isa0 controller pci0 controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr disk fd0 at fdc0 drive 0 controller ncr0 controller scbus0 device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr device npx0 at isa? port "IO_NPX" irq 13 vector npxintr device sd0 device sd1 device sd2 device st0 pseudo-device loop # required by INET pseudo-device gzip # Exec gzipped a.out's EOM exit 1 fi cp -f /sys/compile/MINI/kernel /mnt gzip -c -best /sbin/init > /mnt/sbin/init gzip -c -best /sbin/fsck > /mnt/sbin/fsck gzip -c -best /sbin/mount > /mnt/sbin/mount gzip -c -best /sbin/halt > /mnt/sbin/halt gzip -c -best /sbin/restore > /mnt/sbin/restore gzip -c -best /bin/sh > /mnt/bin/sh gzip -c -best /bin/sync > /mnt/bin/sync cp /root/.profile /mnt/root cp -f /dev/MAKEDEV /mnt/dev chmod 755 /mnt/dev/MAKEDEV chmod 500 /mnt/sbin/init chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt chmod 555 /mnt/bin/sh /mnt/bin/sync chmod 6555 /mnt/sbin/restore # # create the devices nodes デバイスノードを作る # cd /mnt/dev ./MAKEDEV std ./MAKEDEV sd0 ./MAKEDEV sd1 ./MAKEDEV sd2 ./MAKEDEV st0 ./MAKEDEV pty0 cd / # # create minimum filesystem table 最小限のファイルシステムテーブル # cat > /mnt/etc/fstab < /mnt/etc/passwd < /mnt/etc/master.passwd < 災難の後に

重要な問題は, ハードウェアが生き残ったかどうかです. 定期的なバックアップを取っていればソフトウェアについて心配する必要はあ りません.

ハードウェアがダメージを受けていたら, 最初にそのダメージを 受けた部品を交換してください.

ハードウェアに問題がなければ, フロッピーをチェックしてくださ い.カスタムブートフロッピーディスクを使っているのであればシングルユーザ ("boot:"プロンプトの出た時に "-s" とタイプしてください) でブートしてくださ い. それから次の「ファイルシステムを1つずつ回復する」を読んでください.

boot.flp と fixit.flp を使っているのであればこのまま読み続けてくださ い. boot.flp を入れてブートしてください. 本来のインストールメニューが表 示されるはずです. (ここで) "fixit XXX"オプションを選びます. 指示の通り fixit.flp を入れてください. restoreとその他の必要なプログラムは /mnt2/standに置かれています.

ファイルシステムを一つずつ回復する

最初のディスクのrootパーティションをmount(8) (例えば mount /dev/sd0a /mntのように) マウントして見てください. ディスクラベルが 破壊されている場合は disklabel(8)を使ってあらかじめプリントし ておいた通りにパーティションを作り直しラベルをつけてセーブしてください. newfs(8)を使いファイルシステムを作り直します. ルー トパーティションを読み書き可能にマウント ("mount -u -o rw /mnt") しなおします. バックアッププログラムとバックアップテープを 使ってこのファイルシステムのデータを回復します (例えば restore vrf /dev/st0とします). ファイルシステムをアンマウント (umount /mntなど) して, 障害を受けたファイルシステムそれぞれについて繰り返 してください.

システムが動き出したら, 新しいテープにデータをバックアップ してください. どのような理由で再び事故が起きたりデータが失われるかはわか りません. これに時間を費す事で, 後々の災難から救われる事になります. * 災難対策をしていませんでした. どうしたらいいでしょう? diff --git a/ja/handbook/kernelconfig.sgml b/ja/handbook/kernelconfig.sgml index 80ed22e5de..c72911d291 100644 --- a/ja/handbook/kernelconfig.sgml +++ b/ja/handbook/kernelconfig.sgml @@ -1,1258 +1,1254 @@ - + - + FreeBSDカーネルのコンフィグレーション

原作: &a.jehamby;. 6 October 1995.

訳: &a.tomo;, &a.yoshiaki;. 2 November 1996. この章はシステムに合わせたカーネルの再構築の基礎について 述べたものです. この章は, システム管理の初心者から Unixシステム管理に十分な経験を積んだ人までを対象としています. なぜカスタムカーネルを作るか?

システムに合わせたカーネルの構築はすべての Unixシステム管理者が 避けて通ることのできない最も重要な通過儀礼の1つです. この作業は, 多くの時間を必要としますが, あなたの FreeBSD システムに多くの利益をもたらします. GENERICカーネルは, めったに使われることのないハードウェアをサポートするとともに, 考えられるすべての SCSIカードやネットワークカードをサポート しなければなりませんが, システムに合わせたカーネルは あなたの PC のハードウェアのみをサポートします. これは, 次にあげるような利益をもたらします. あなたが持っていないハードウェアについては検出をおこなわな いので, ブートにかかる時間が短くなります. システムに合わせたカーネルは多くの場合メモリ使用量が 減ります. カーネルはいつもメモリ上に存在するので, 不必要なコードがあると本来プログラムが利用できるはずの RAM (実メモリ) を占めてしまいますのでこれは重要なことだ といえます. したがって, メモリが少ないシステムでは, カーネルの再構築は大変重要です. 必要に応じていくつかのカーネルオプションは調整すること ができ, またサウンドカードのような GENERICカーネルには ないデバイスドライバをカーネルに含めることが できます.

カスタムカーネルの構築とインストール

まず, カーネル再構築に必要なディレクトリをざっと見てみましょう. ここではディレクトリはすべて /usr/src/sys以下の相対位 置で示します. また, /sysからもアクセス可能です. ここには, カーネルの各部分を構成するサブディレクトリが いくつもあります. しかし, 私たちの目的では 最も重要なのは i386/confです. ここで, あなたの システムに合わせてカーネル コンフィグレーションを編集します. それから compileディレクトリ, ここはカーネルが作られる 場所です. サポートされているデバイスやファイルシステムのディレ クトリツリーがオプション毎にサブディレクトリに分かれている論理 的構成に注意してください. また, i386のディレクトリは PCのハードウェアのみを扱い, i386以外のディレクトリは FreeBSDが他のプラットフォームに移植される際には共有されるコー ドです. /usr/src/sys 以下のディレクトリがなければ, カーネルのソースが インストールされていません. パッケージのインストール手順にしたがっ て, システムにインストールしてください. つぎに, i386/confに移動して, GENERIC コンフィグレーションファイルをカーネルに与えたい名前に コピーしてください. たとえば: # cd /usr/src/sys/i386/conf # cp GENERIC MYKERNEL 慣習として, この名前はすべて大文字でつづられます. もし, いくつかの異なるハードウェアの FreeBSDマシンを扱うなら, この名前にホスト名を含めるとよいでしょう. ここでは, 例として MYKERNEL と呼ぶことにします. では, MYKERNELをあなたの好きなエディタで編集してください. もし, システムをインストールしたばかりならば, 利用できる エディタは viだけかもしれません. ここでは使い方 の説明はしませんが, にあるような多くの本で詳しく説明 されていますので, そちらを参照してください. まずファイルの最初の方のコメント行を編集し, あなたのコンフィグ レーションに合せて変更した点などを記述して GENERICと区別がつく ようにしておきましょう. もし SunOSや他の BSDオペレーティングシステムでカーネルの 再構築をしたことがあれば, このファイルはとても親しみ やすいでしょう. しかし, DOSのようなその他の オペレーティングシステムしか知らない人から見れば, GENERICコンフィグレーションファイルはとても なじみにくいものかもしれません. そのような場合は, の節をゆっくりと注意深く読んでください. config(8)を取ってくる必要があるかもしれません. これは /usr/src/usr.sbinにあります. したがってこれらのソースをダ ウンロードする必要があります. 次のコマンドを実行する前に (configを)作りインストールをしておいてください. 編集し終ったら, 次のコマンドによってコンパイル, インストール を行ってください. # /usr/sbin/config MYKERNEL # cd ../../compile/MYKERNEL # make depend # make # make install 新しいカーネルはルートディレクトリに /kernelという 名前でコピーされ, 今までのカーネルは /kernel.old という名前へ変更されます. では, システムをシャットダウン, リブー トして新しいカーネルを使ってください. うまく行かない場合は, この章の終りの を参照してください. この章の新しい 場合のリカバリの方法を注意深く読んでおいてください. /devディレクトリで デバイスノードを追加しなければならないかもしれません. 詳しくは, を読んでください. コンフィグレーション ファイル

コンフィグレーション ファイルの一般的なフォーマット はとてもシンプルです. 各行は1つのキーワードと1つ以上の 引数を含んでいます. 見やすくするために, ほとんどのキーワードは 引数を1つしか書いてありません. #に続くものはすべてコメントとして扱われ, 無視されます. ここでは, それぞれのキーワードについて だいたい GENERICに出てくる順番で説明します. しかし, お互いに関係のあるキーワードは, 実際には GENERICファイル上に バラバラに現れていても, (ネットワーキングのように)1つにまとめ てあります.

カーネルは現在, オプションを扱う方法をよりよい機構に移行しよ うとしています. 従来は, 各々のオプションは単純にカーネルの Makefile中の CFLAGS行の -Dスイッチに変換されて いました. 自然とオプションは際限なく増えて行きます. だれも実際に はどのオプションがどのファイルで参照されているかは知りません.

新しい方法では、すべてのオプション依存の #ifdefは当該オプショ ンを opt_foo.h (これらのファイルはconfigによって compileディレ クトリに作られます) から読み込むように変わりました. config の有効なオプションのリストは2つのファイルにお かれます. アーキテクチャに依存しないオプションは /sys/conf/optionsに置かれ, アーキテクチャ依存のオプショ ンは/sys/arch/conf/optionsに置かれま す. archの部分は例えば i386となります. 必須キーワード

ここにあるキーワードはカーネルの構築に必要不可欠です. machine ``i386''

最初のキーワードは machineです. FreeBSDは Intelの 386とその互換チップ上でしか 動かないので, i386を指定します. 注: 数字を含むキーワードはすべて クォーテーションマークで囲む必要があります. そうしないと, configは混乱し, 386を実際の数値として扱ってしまいます. cpu ``cpu_type''

次のキーワードは cpuです. FreeBSDでサポートしている CPUの中から記述します. cpu_typeとして指定可能な値は 次の通りです. I386_CPU I486_CPU I586_CPU I686_CPU GENERICカーネルのように cpuの行の cpu_typeが異なった値を持つものが 複数あってもかまいません. カスタムカーネルでは, あなたが持っている cpuを1つだけ指定するのが 一番です. 例えば, もし Intelの Pentiumを持っていれば, cpu_typeには, I586_CPU を使ってください. ident machine_name

次は, カーネルの識別名となるidentです. GENERICからあなたがカーネルに与えたい名前に 変えてください. ここでは, MYKERNELとします. identに与えた名前はカーネルの ブート時に表示されるので, 普段のカーネルとは別に カーネルに違う名前を与えたいとき(例えば, 実験用のカーネルを作りたい時など), 便利でしょう. 数字を含む名前にしたい場合は machinecpuの時と同じようにクォーテーションマークで 囲む必要があります. Cコンパイラに -Dスイッチで渡されるので, DEBUGのような名前にしたり, vax といった他のCPUの名前など紛らわしい名前にしないで ください. maxusers number

これは, 重要なシステムテーブルのサイズを決めます. ここ で与えられる数字はマシンに同時にログインすると考えられ るおよそのユーザ数です. しかし, 通常の使用環境であれば, 特に X Window System を立ち上げたり, ソフトウェアを コンパイルするような使用であれば maxusersには少 なくとも4以上を指定したほうがいいでしょう. その理由は, maxusersで決るテーブルで最も重要なものはプロセス の最大数であるからです. プロセス最大数は 20 + 16 * maxusersで与えられ, maxusersを1 にすると36プロセスしか同時には持てません. この中にはブー ト時にシステムによって起動する18個ぐらいのプロセス, Xを 起動する時の15程度のプロセスも含みます. manページを読むという1つのタスクでさえ, フィ ルタやファイル伸長や表示のために9つのプロセスを起動し ます. maxusersを4にすれば, 同時に84個のプロセ スを持つことができるのでどんな人でも十分な数だといえる でしょう. それでも他のプログラムを起動した場合に, あるいは, (Walnut Creek CDROMのFTPサイトのように) 同時に多くの ユーザを抱えるサーバを走らせた場合に ``proc table full''というおぞましいエラーが起きる場合はこの値を増や し, カーネルを再構築してください. maxuserはあなたのマシン にログインできるユーザの数を制限するものでは ありません. 単に, あなたのシステムに ログインするユーザ数の最大値と各々のユーザが いくつのプロセスを走らせるかを考慮することに よってさまざまなテーブルの値を適切な値に設定 するだけです. これに対し, remote loginsというキーワードは 同時にリモートログインできるユーザ数を制限 します. config kernel_name root on root_device

これはカーネルの位置と名前を特定します. 伝統的にカーネルは vmunixと呼ばれますが, FreeBSDでは kernelとふさわしい名前になりました. kernel_nameにはいつも kernelを 使ってください. 名前を変えると多くのシステム ユーティリティが使えなくなります. 2番目の部分は ルートファイルシステムとカーネルのあるディスクと パーティションを指定してください. SCSIドライブでなければ, wd0を, SCSIドライブならば sd0です. 一般的なオプション

以下はカーネルのサポートするさまざまなファイルシステムおよ びその他のオプションです.

これは, 数値演算コプロセッサがない コンピュータ (386や486SX) で数値演算コプロセッサ のエミュレーションを可能にします. もし, Pentiumや 486DX, あるいは387や487があれば, コメントアウト できます. 注: FreeBSD付属の数値演算 コプロセッサエミュレータはあまり正確では ありません. 非常に正確な計算をおこないたい ならば, より優れた GNUのエミュレータである GPL_MATH_EMULATEに変えることを おすすめします. これはライセンスの関係でデフォルトでは 含まれていません. options ``COMPAT_43''

4.3BSDとの互換性のためのオプションです. そのままにしておいてください. コメントアウトすると, いくつかのプログラムで動作がおかしくなります. options BOUNCE_BUFFERS

ISAデバイスやISA互換モードで動作する EISAデバイス では DMA (Direct Memory Access) は16MB以下のメモリに対し てのみ動作します. このオプションによりメモリが16MB以上 のシステムでDMAを使うデバイスを動作させることができます. options UCONSOLE

ユーザがコンソールを横取り (grab) できるようにします. これは X Window System 上で便利です. 例えば, コ ンソール xtermを xterm -Cとタイプして作ると, そこに `write', `talk'などのメッセージがカーネルからコ ンソールへ送られるメッセージと同じように表示されます. options SYSVSHM

このオプションは System V の共有メモリを提供します. X Window System の XSHM拡張での利用がもっとも一般に見 られる例で, 多くのグラフィックを多用したプログラム (movie player の Xanimや Linux DOOMなど) ではこれを 利用することで速度が増加するというメリットがあります. X Window System を利用するのであればこれは間違いな く含めたくなるでしょう. options SYSVSEM

System V のセマフォをサポートします. 一般的に利用される ことは少ないですがカーネルサイズの増加は数百バイトだ けです. options SYSVMSG

System V のメッセージをサポートします. これを指定した場 合もカーネルサイズの増加は数百バイトだけです. ipcs(1) コマンドは これらの System V の機構を利用しているプロセスを表示し ます. 訳注: 共有メモリ, セマフォ, メッセージ(メッ セージキュー) は System V系 で一般的なプロセス間通信の機 構です. くわしくは System Vのプロセス間通信に関する文 献, 「詳解 UNIXプログラミング」 (ソフトバンク) , 「UNIXネッ トワークプログラミング」 (トッパン) などを参照してくださ い. ファイルシステムオプション

これらのオプションはさまざまなファイルシステムへのサポート を追加します. 少なくともブートするためのデバイスのサポートを含 める必要があります. 標準的にはハードディスクからブートするので あれば FFS , ディスクレスワークステーションとしてイー サネットからブートするのであれば NFSです. 一般的に利用される他のファイルシステムをカーネルに含め, あまり 利用しないファイルシステム (多分 MS-DOSファイルシステム?) のサポー トをコメントアウトすることができます. これは Loadable Kernel Module ディレクトリ /lkm から, 最初にそのタイプのファイ ルシステムがマウントされる時に動的にドライバがロードされるからです. options FFS

基本的なハードドライブ ファイルシステムです. ハードディ スクからブートする場合は残しておいてください. options NFS

ネットワーク ファイルシステムです. Ethernet経由で Unixファ イルサーバからパーティションをマウントする予定がない場 合はコメントアウトすることができます. options MSDOSFS

MS-DOS ファイルシステムです. ブート時に DOSフォーマット のハード ドライブをマウントする予定のない場合はコメン トアウトしても安全です. 先に示したように, DOSパーティ ションをマウントする時に自動的にロードされます. また (ports コレクションにある) mtools という素晴 らしいソフトウェアにより mount , unmountなしで DOSフロッ ピーにアクセスすることができます (これは MSDOSFSも必要 ありません). options ``CD9660''

CD-ROMのための ISO 9660 ファイルシステムです. CD-ROMを 持っていないか, 時々 データ CDをマウントするだけならコ メントアウトしましょう (データ CDを最初にマウントする 時に動的にロードされます). オーディオ CDはこのファイル システムは必要ありません. options PROCFS

プロセス ファイルシステムです. これは疑似的なファイルシ ステムで /procにマウントされ, ps(1)などのプロ グラムがプロセスに関してより詳しい情報を与えてくれるよ うになります. options MFS

メモリマップド ファイルシステムです. これは基本的に一時 ファイルを記憶するための高速な RAMディスクで, 大きな swap領域がある場合に有効です. MFSパーティションをマウ ントするに適した場所は多くのプログラムが一時ファイルを 置く /tmpです. MFS RAMディスクを /tmp にマウントするには以下の内容を /etc/fstabに追 加してリブートするか mount /tmpとタイプします. /dev/wd1s2b /tmp mfs rw 0 0 /dev/wd1s2bをあなたが使用して いるswap パーティションに置き換えてください. これは以 下のように /etc/fstabに書かれているでしょう. /dev/wd1s2b none swap sw 0 0 /tmpデ バイスにアクセスすることはできません). そのためいまの ところは使わない方が無難です. --> また, MFSファ イルシステムは動的にロードすることはできません . したがって使いたい場合はコンパイル時に カーネルに含める必要があります. options "EXT2FS"

Linux のファイルシステム. ext2fs のサポートにより, Linux パーティションを読み書きすることができます. これは, FreeBSD と Linux のデュアルブートシステムにおいて両者でデータを共有したい場合に有用です. options QUOTA

ディスククォータを有効にします. アクセスが公開されてい るシステムで (一人のユーザが) /homeパーティショ ン (全体) をあふれさせることができないようにそれぞれのユーザ にディスククォータを発行することができます. ディスククォータについての詳しい内容はの章を見てください. 基本的なコントローラとデバイス

この節では FreeBSDでサポートされているディスク, テー プ, CD-ROMコントローラについて示します. コントローラと カードについ ては別の節になっています. controller isa0

FreeBSDのサポートするすべての PCで必要です. IBM PS/2 (マイ クロチャネルアーキテクチャ) では現時点では FreeBSDは動 きません. controller pci0

PCIバスを持つマザーボードの場合は含めます. これにより PCIカードの自動認識と PCIから ISAバスへのゲートウェイが 可能になります. controller fdc0

フロッピードライブコントローラです. fd0 は ``A:'' ドライブで fd1 は ``B:'' ドライブです. ft0 は フロッピーコントローラに接続する QIC-80 テープドライブで す. 対応するデバイスがない場合はそれぞれの行をコメント アウトしてください. ft(8)というフィルタプログラムが必要です. くわしくはマニュアルページを見てください. controller wdc0

プライマリIDEコントローラです. wd0wd1はそれぞれマスタ, スレーブドライブで す. wdc1 は セカンダリの IDEコントローラで3台 目, 4台目のハードディスクまたは IDE CD-ROMのある場合に 使います. 利用しない行はコメントアウトしてください (例え ば, SCSIハードディスクのみを使う場合は6行全部をコメント アウトしてもよいかもしれません). device wcd0

このデバイスは IDE CD-ROMのサポートをします. wdc0を有効にしておく必要があり, もし 2つ以上の IDE コントローラがあり, そのうちの 2つ目のカードに CD-ROMを接 続する場合 options ATAPIを書いておく必要もあります. device npx0 at isa? port ``IO_NPX'' irq 13 vector npxintr

npx0はFreeBSDハードウェアコプロセッサとソフト ウェアエミュレータ両方の浮動小数点演算ユニットへのインタ フェースです. これは device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr

Wangtek と Archive の QIC-02/QIC-36 テープドライブのサポートです. Proprietary CD-ROM support

以下のようなドライブを proprietary(独自の) CD-ROMドライブと呼ぶことにします. これらのドライブは専 用のコントローラを持つか, サウンドブラスタ16などのサウ ンドカードに接続します. これらは IDEでも SCSIでもあ りません. 多くの標準速や2倍速の古い CD-ROMはこれら のインタフェースを持っていますが, より新しい四倍速の ものは でしょう. device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr

ミツミ製 CD-ROM (LU002, LU005, FX001D)です. device scd0 at isa? port 0x230 bio

ソニー製 CD-ROM (CDU31,CDU33A)です. controller matcd0 at isa? port ? bio

松下/パナソニック製 CD-ROM (サウンドブラスタ用 クリエィティブ ラボ製として販売されていました) です. SCSI デバイスのサポート

この節では FreeBSDのサポートするいろいろな SCSIコント ローラとデバイスのサポートについて書きます. SCSI コントローラ

以下の十数行は異る種類の SCSIコントローラのサポートです. 使用しているもの以外の部分はコメントアウトしてください. controller bt0 at isa? port ``IO_BT0'' bio irq ? vector btintr

ほとんどの Buslogic社のコントローラです. controller uha0 at isa? port ``IO_UHA0'' bio irq ? drq 5 vector uhaintr

UltraStor 14F と 34F です. controller ahc0

Adaptec 274x/284x/294x です. controller ahb0 at isa? bio irq ? vector ahbintr

Adaptec 174x です. controller aha0 at isa? port ``IO_AHA0'' bio irq ? drq 5 vector ahaintr

Adaptec 154x です. controller aic0 at isa? port 0x340 bio irq 11 vector aicintr

Adaptec 152x や サウンドカードなどに使われている Adaptec AIC-6360 チップです. (slow!) controller nca0 at isa? port 0x1f88 bio irq 10 vector ncaintr

NCR 5380を使っている ProAudioSpectrum や Trantor T130 で す. controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr

Seagate ST01/02 8 ビットコントローラです. (slow!) controller wds0 at isa? port 0x350 bio irq 15 drq 6 vector wdsintr

Western Digital WD7000コントローラです. controller ncr0

NCR 53C810, 53C815, 53C825, 53C860, 53C875 チップを使った PCI SCSI コントローラです. options ``SCSI_DELAY=15''

このオプションによりカーネルはそれぞれの SCSIデバイスを プローブする前に 15秒間待ちます. IDEドライブのみを使用 している場合は無視して構いません. ブートを速くするため にこの数値を 5秒ぐらいまで小さくしたいでしょう. そうし た場合, FreeBSDが SCSIデバイスを認識しにくくなるかもし れません. その時は、もちろんこのオプションの値は元に戻 さないといけません. controller scbus0

SCSIコントローラがある場合, この行で SCSI全般のサポー トを与えます. SCSIのない場合, この行と以下の3つの行をコメ ントにすることができます. device sd0

SCSIハードディスクのサポートです. device st0

SCSIテープドライブのサポートです. device cd0

SCSI CD-ROM のサポートです.

上のエントリについている 0はいくらか誤解を招き やすいかもしれません. これらのデバイスはすべてカーネルが 見つけた時に割り当てがおこなわれ, SCSIバスに何台つながってい るか, ターゲット IDが何番であるかはここの記述とは関係あ りません. 明示的に「固定的な」ターゲット IDの特定のデバイスへの 割り当てをおこないたい場合は LINT カーネルコンフィグレーションファイルの 該当する部分の説明を参照してください. コンソール, バスマウス, Xサーバのサポート

2つのタイプのコンソールからどちらか1つを選ぶ必要があります. 標準ではない方の vt220 コンソールを選んだ場合, X Window System を利用するには XSERVER オプションを有効にする必要があります (訳注: sc0 には XSERVER オプション相当の機能が始めから入っています). またバスマウスとPS/2マウスのオプションもあります. device sc0 at isa? port ``IO_KBD' tty irq 1 vector scintr

sc0 はデフォルトのコンソールドライバで SCOコン ソールに似ています. このデバイス, あるいは VT220コンパ チブルドライバの vt0いずれを使う場合もほとんど のフルスクリーンプログラムは termcapなどのターミ ナルデータベースライブラリを通してアクセスしますので, あまり違いはないでしょう. このコンソールを使う場合でフルスクリーンプログラムでト ラブルが起きる場合にはログインした時に TERM変数の値を ``scoansi''にしてください. device vt0 at isa? port ``IO_KBD'' tty irq 1 vector pcrint

これはVT-220コンパチブルコンソールドライバで VT100/102の 上位互換です. これは sc0の使えない種類のラッ プトップ機でもうまく動きます. ログイン時に TERM変数の値 を``vt100'' か ``vt220''にしてください. また, このドラ イバはネットワークを介して多くの異るマシンから接続する 場合も便利です. sc0デバイスのための termcapterminfoエントリは必ずしも 利用できるわけではありませんが -- ``vt100''はいずれの プラットフォームでも利用可能でしょう. options ``PCVT_FREEBSD=210''

vt0 コンソールドライバを使う場合に必要で す. options XSERVER

vt0 コンソールドライバを使う時のみ有効です. これは vt0 コンソールドライバのもとで XFree86 X サーバを動かすのに必要なコードを含めます. device mse0 at isa? port 0x23c tty irq 5 vector ms

Logitech や ATIのバスマウス入力カードを利用する場合のデ バイスです. ポート(おそらくはCOM1)を有効にしてくだ さい. device psm0 at isa? port ``IO_KBD'' conflicts tty irq 12 vector psmintr

このデバイスは PS/2マウスポートにマウスを接続する場合に 使います. シリアル, パラレルポート

ほとんどすべてのシステムにこれらはあります. プリンタを接続す る場合は の章が非常 に役に立つでしょう. モデムを使う場合は に非常に詳しいシリアルポートの設定とデ バイスの使い方があります. device sio0 at isa? port ``IO_COM1'' tty irq 4 vector siointr

sio0からsio3は MS-DOSにおける COM1から COM4に相当する4本のシリアルポートです. COM4に内蔵モデムがあり COM2を使う場合, FreeBSDからアク セスするためにはモデムのIRQを2へ変更する必要があるとい うことを注意しておきます (技術的な理由より IRQ 2 = IRQ 9となります). マルチポートシリアルカードを使う場合にマニュアルページ のsio(4)にはこのオプションで使う値などのよ り多くの情報があります. ビデオカードの中には (特に S3 チップベースのものには) IOアドレスの 0x*2e8から を利用するものがあり, また多くの安価なシリアルカードは IOアドレス空間を16-bitフルデコードしていませんので, こ れらのカードは衝突します. この場合 COM4ポートは実質上 利用できません. それぞれのシリアルポートは (割込みの共有をサポートした マルチポートカードを利用していないのであれば) 別々の IRQ を割り当てる必要がありますので COM3と COM4のデフォルトの IRQは利用できません. device lpt0 at isa? port? tty irq 7 vector lptintr

lpt0 から lpt2は利用可能な3本のプリン タポートです. 多くの場合は1本のみですので他の2本はない のであればコメントアウトして構いません. ネットワーク

FreeBSDでは他の一般的な Unixと同様にネットワークが 非常に 重視されています. イーサネットカードが なくても必須のオプションとダイヤルアップ ネットワークのサポー トに注意してください. options INET ネットワーキングのサポートです. ネットワークに接続する予定がな くても残しておいてください. 多くのプログラムは少なくともループ バックネットワーキングが必要です(つまり, PCの中でネットワーク コネクションをおこないます). したがってこのオプションは本質的 に不可欠です. Ethernet cards

以下にさまざまなイーサネットカードを有効にするオプショ ンを示します. ネットワークカードがなければこれらすべてを コメントアウトすることができます. そうでなければ利用す る特定のイーサネットカードをサポートするオプションを残 しておきます. device de0

DECの DC21040, DC21041, DC21140チップを使った PCIイー サネットアダプタです. device fxp0

Intel EtherExpress Pro/100B 高速イーサネットカード です. device vx0

3Com の 3C590, 3C595です (いくらか bugがあります). device cx0 at isa? port 0x240 net irq 15 drq 7 vector cxintr

Cronyx/Sigma の マルチポート同期/非同期カードです. (with Cisco or PPP framing) device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 vector edintr

Western Digital と SMC の 80xx, 8216 Elite Ultra ; ノベル NE1000, NE2000; 3Com の 3C503; HPの PC Lan Plus (HP27247B とHP27252A) です. device el0 at isa? port 0x300 net irq 9 vector elintr

3Com の 3C501 です. (slow!) device eg0 at isa? port 0x310 net irq 5 vector egintr

3Com の 3C505です. device ep0 at isa? port 0x300 net irq 10 vector epintr

3Com の 3C509 です(バグがあります). device fe0 at isa? port 0x240 net irq ? vector feintr

富士通 MB86960A/MB86965A ベースのイーサネットカード です. device fea0 at isa? net irq ? vector feaintr

DEC DEFEA EISA FDDI アダプタです. device ie0 at isa? port 0x360 net irq 7 iomem 0xd0000 vector ieintr

AT&T StarLAN 10 と EN100; 3Com の 3C507; - NI5210 です. - - device ix0 at isa? port 0x300 net irq 10 iomem 0xd0000 iosiz 32768 vector ixintr - -

Intel の EtherExpress 16です. + NI5210; Intel EtherExpress 16 です. device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr

DEC の EtherWorks 2 and EtherWorks 3 (DEPCA, DE100, DE101, DE200, DE201, DE202, DE203, DE204, DE205, DE422)です. device lnc0 at isa? port 0x300 net irq 10 drq 0 vector lncintr

Lance/PCnet カード (Isolan, Novell NE2100, NE32-VL)です. device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr

IBM/ナショナルセミコンダクタの PCMCIA イーサネット コントローラです. device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr

3Com の PCMCIA Etherlink III です. pseudo-device loop

loop は TCP/IPの一般的なループバックデバイスで す. telnet や FTPを localhost (127.0.0.1) に対して行なうとこの疑似デバイスを通して帰ってきます. 不可欠です. pseudo-device ether

etherはイーサネットカードがある場合のみ必要で 一般的なイーサネットプロトコルを含めます. pseudo-device sl number

sl は SLIP (Serial Line Internet Protocol) をサポー トします. これはほとんど完全に, より簡単に設定ができ, モ デム to モデム接続に適した, よりパワフルな PPPに取って代 わられています. slの後の number は同 時にいくつの SLIPセッションをサポートするかを示します. SLIPの設定のより詳しい情報はこのハンドブックの 「PPPとSLIP」の章の について書かれた節にあります。 pseudo-device ppp number

pppはダイヤルアップ インターネット接続のための カーネルモード PPP (Point-to-Point Protocol) をサポート します. ユーザアプリケーションとして tun を 利用する PPPの実装もあり, こちらはより柔軟性がありデマ ンドダイアリング(プログラムが接続要求を出した時に自動 的にダイヤルをおこなう)などの機能もあります. それでもこ の PPPドライバを利用したい場合は の節を読んでください. slデバイスと同じように numberは同時 に PPP接続できる数を示します. pseudo-device tun number

tun はユーザモード PPPソフトウェアが利用しま す. このプログラムは設定が簡単で非常に高速です. また自動ダイヤル オン デマンドなどの機能を持ちます. tunの後のnumber は同時におこなうことのできる PPPセッションの数を示します. の節により多くの情報があ ります. pseudo-device bpfilter number

バークレイ パケットフィルタです. この疑似デバイスはネッ トワークインタフェースを無差別 (promiscuous) モードにし てネットワーク (例えば単一のイーサネット) にブロードキャス トされるすべてのパケットを取り入れることを可能にします. こ れらのパケットはディスクに取り入れられたり tcpdump(1) によって検査されます. この機能の実現 はネットワーク全体のセキュリティとの微妙な妥協点であるこ とに注意してください. bpffilter の後の numberは同時に検査することの できるインタフェースの数を示します. 危険の可能性について十分解っている場合を除いてこのオプ ションは奨めません. すべてのネットワークカードでこの機能 をサポートをしてはいません. サウンドカード

ここは GENERICカーネルに含まれていない最初のセクションです. サウンドカードのサポートをするためには LINTコンフィグレーショ ンファイル(これにはすべてのデバイスが含まれています)か ら以下のような適切な行をコピーする必要があります. controller snd0

サウンドドライバ一般のコードです. pcaを除く以下のすべてのサウンドカードで必要で す. device pas0 at isa? port 0x388 irq 10 drq 6 vector pasintr

ProAudioSpectrum のオーディオ と MIDI です. device sb0 at isa? port 0x220 irq 7 conflicts drq 1 vector sbintr

SoundBlaster です. irq 7をirq 5に書き換え, キーワード conflictsを削除し てください. さらに options ``SBC_IRQ=5''の行を 加える必要があります. device sbxvi0 at isa? drq 5

SoundBlaster 16 の 16-bit オーディオです. drq 5を適切な値に書き直 して, (DMA 6の場合) options "SB16_DMA=6"を付け 加えてください. device sbmidi0 at isa? port 0x330

SoundBlaster 16 の MIDI インタフェースです. SoundBlaster 16を使う場合必ずこの行を含めてコンパイル してください. device gus0 at isa? port 0x220 irq 10 drq 1 vector gusintr

Gravis Ultrasound です. device mss0 at isa? port 0x530 irq 10 drq 1 vector adintr

Microsoft Sound System です. device opl0 at isa? port 0x388 conflicts

AdLib FMシンセサイザオーディオです. AdLib, SoundBlaster, ProAudioSpectrum を使い playmidi (ports にあります) などのプログラムで MIDIの演奏をしたい場合にこの行を含めます. device mpu0 at isa? port 0x330 irq 6 drq 0

Roland MPU-401 カードです. device uart0 at isa? port 0x330 irq 5 vector ``m6850intr''

MIDIインタフェースの 6850 UART です. device pca0 at isa? port ``IO_TIMER1'' tty

PC のスピーカーを使ったオーディオです. これは非常に品質 が悪く, CPUの性能, 負荷に強く依存します, と言っておき ます (サウンドカードは必要ありませんが). /usr/src/sys/i386/isa/sound/sound.docにあります. また, これらのデバイスを追加する場合は, サウンドを作る必要があり ます. 疑似デバイス

疑似デバイスドライバはデバイスドライバと同様に働きますがマ シン上に対応する実際のハードウェアがないカーネルの部分です. 関連の 疑似デバイスはそちらのセクションに示しました. ここでは残りにつ いて示します. pseudo-device gzip

gzipgzipによって圧縮された FreeBSDの プログラムを実行できるようにします. /standにあるプログ ラムは圧縮されているのでカーネルにこのオプションをつけ ておくのはいい考えでしょう. pseudo-device log

log はカーネルエラーのログを取るのに使います. 不可欠です. pseudo-device pty number

pty は「仮想ターミナル」や仮想ログインポート です. 外部からの telnetrloginセッ ション, xterm, emacsなどのアプリケーションが使います. numberは作ることのできる ptyの数を示 します. GENERICのデフォルトは16で, 同時の xtermウィンドウやリモー トログインのために増やす場合は最大で 64までです. pseudo-device snp number

スヌープデバイスです. この疑似デバイスはあるターミナル セッションが watch(8) commandによって他のター ミナルを監視することを可能にします. この機能の実現はセ キュリティとプライバシに対して極めて微妙な関係があり ます. snpの後の numberは同時におこなうことのでき るスヌープセッションの総数です. 選択可能です. pseudo-device vn

Vノードドライバです. ファイルを vnconfig(8)コマ ンドによってデバイスとして取り扱うことを可能にします. このドライバによりフロッピーディスクイメージを操作したりファ イルをスワップデバイスとして (MS Windowsのスワッ プファイルなどを)用いることができます. 選択可能です. pseudo-device ccd number

ccd (concatenated disk)デバイスはいくつかのディスクパーティ ションを融合して大きなディスクのように見せることができます. ccdの後の numberは同時に作ることのできる疑似ディスクの数です. (詳しいことは ccd(4)ccdconfig(8)のマニュ アルを参照してください.) 選択可能です. ジョイスティック, スピーカー, その他

この節は FreeBSDのここまでに示した以外のハードウェア デバイスへのサポートについて示します. これらは GENERICカーネル には含まれませんのでこのハンドブックや LINT (このファイルには すべてのデバイスのサポートが含まれます) からコピーする必 要があります. device joy0 at isa? port ``IO_GAME''

PC のジョイスティックです. pseudo-device speaker

IBM BASIC スタイルの PC内蔵スピーカーのサポートです. シェルスクリプトで簡単な演奏をする /usr/sbin/spkrtest やキーボードを使って単純なピ アノのように演奏することができる /usr/games/piano (gamesパッケージをイ ンストールした場合にはあります) のようないくつかのプロ グラムで使われます. また素晴らしいテキストロールプレイ ングゲームである NetHack (ports コレクションにあります) はゲーム中の楽器の演奏でこのデバイスを使うように設定を することができます (訳注:日本語化されたJNetHackもportsに あります).

デバイスの 項も参照してください. デバイスノードを作る

カーネル内のほとんどすべてのデバイスは対応する ``node'' エント リが /dev ディレクトリにあります. これらのノードは普 通のファイルのように見えますが, 実際にはプログラムがデバイスに アクセスするのに用いるカーネル内への特別なエントリです. シェルスクリプトである /dev/MAKEDEVはオペレーティング システムを最初にインストールする時に実行され, サポートされてい る大部分のデバイスのノードを作ります. しかし, すべてのノードが作られるわけではありませんので 新しいデバイスのサポートを加える時は対応するエントリがこのディ レクトリにあるかどうか確認してもしなければ, 作ってください. 以下に例を示します. IDE CD-ROMのサポートをカーネルに加えるとします. 次の行 を加えます. controller wcd0 これにしたがって, /devディレクトリに wcd0で始ま るエントリを捜してください. 1文字が後ろにつくかもしれません. 後 ろについた文字が `c'であるか先に `r'のつくエントリは `raw'デバ イスを示します. それらのファイルがないことが明らかになったとします. そこで /dev ディレクトリに移動して次のようにタイプします. # sh MAKEDEV wcd0 スクリプトの実行が終ったら /devwcd0crwcd0c エントリがあることを確認してください. これによ り正しく実行されたことがわかります. サウンドカードの場合のコマンドは次の通りです. # sh MAKEDEV snd0 これにより対応するエントリが作られます. 注: サウンドカードのようなデバイスのノードを作る場合で, もし他 の人がマシンにアクセスするようであれば, そのデバイスを /etc/fbtabファイルに追加して外部からのアクセスから 保護するのが望ましいでしょう. このファイルの詳細については man fbtab を参照してください. GENERICに含まれていないデバイスはエントリがありませんから,以上 の簡単な手順をおこなうことになります. /devの エントリを使用しますのでノードを作る必要はありません. またネッ トワークカードと SLIP/PPP疑似デバイスは /devにはエント リがありませんのでこれらについても作る必要がありません. 問題が起きた場合には

カスタムカーネルを作る場合に起きるトラブルは4種類に分けられま す. Config コマンドの失敗

カーネルにあなたの設定をおこなった場合で configコ マンドが失敗したのであれば, 多分どこかで単純な間違いを やっているのでしょう. さいわい, configはトラ ブルの起きた行番号を出力しますので viで素早く 見つけることができます. 例えばもし次のように出力されれ ば, config: line 17: syntax error viのコマンドモードで ``17G''とタイプすればあな たは問題のところへ飛ぶことができます. GENERIC カーネル のファイルや他のリファレンスと比較して注意深く修正して ください. Make コマンドの失敗

make コマンドが失敗した場合には, カーネル設定で configがとらえられなかったような間違いをして いることが多いようです. ふたたびコン フィグレーションを見直してください. それでも問題を解決 することができなければ &a.questions へあなたのカーネルのコンフィグレーションをつけてメー ルしてください. 誰かが素早く間違いを見つけてくれるで しょう. カーネルがブートしない

新しいカーネルがブートしなかったり, デバイスの認識をしな い場合でもあわてないでください! さいわい, BSDは利用で きないカーネルから復帰する優れたメカニズムがあります. FreeBSDの bootプロンプトでリターンキーを押すかわりに 単にブートさせたいカーネルの名前 (例えば ``kernel.old'') をタイプするだけです. カーネルの再設定 をおこなう場合に現在のカーネルを利用できるように取ってお くのはよい考えです. 問題のないカーネルでブートした後にあなたのコンフィグレー ションファイルを調べ, 再び構築を試みてください. /var/log/messages ファイルにはすべての成功した ブートのカーネルのメッセージやその他の記録があり, これ は助けになる情報の一つでしょう. また, dmesg(8)コマンドは現在のブート時のカーネルメッ セージを出力します. kernel. oldは新しいカーネルをインストールする 時に, その一つ前にインストールしたうまく動かないかもしれ ないカーネルで上書きされてしまいますので当てにできませ ん. またできる限り早く動作しているカーネルを本来の ``kernel''の位置に移動させてください. そうしないと ps(1)のようなコマンドが正しく動きません. make でインストールされたカーネルのファイルを (別のカーネルに戻すために) 「アンロック」するための特別 のコマンドは # chflags noschg /kernel です. また, 新しい置き換えたカーネルあるいは重要ファイ ルを動かしたり変更されないように「ロック」するには 次のようにします. # chflags schg /kernel カーネルは動くが ps は動かない!

システムユーティリティと異るバージョンのカーネルをインス トールした場合, 例えば 実験的に ``2.2.0''のカーネルを 2.1.0-RELEASEシステム上にインストールするような場合, ps(1)vmstat(8)のような多くのシ ステムステータスコマンドは動かなくなります. libkvm を 再コンパイルしてこれらのユーティリティを作りなおす必要がありま す. これは, オペレーティングシステムのそれ以外の部分と異るバージョ ンのカーネルを使うことが普通はあまりよくない理由の一つです.