            30分でわかるシステムの再構築

                                        平成16年(2004年)02月11日 (水)

もくじ
------
1. カーネルの再構築
2. config ファイルの中身
2.1. 必須のキーワード
2.2. 機種に依存しないオプション
2.3. ファイルシステムに関連するオプション
2.4. 基本的なコントローラとデバイスに関連するオプション
2.5. SCSI デバイス
2.6. コンソール、マウス、X サーバに関連するオプション
2.7. シリアルポートに関連するオプション
2.8. パラレルポートに関連するオプション
2.9. ネットワーク
2.10. サウンドカードに関連するオプション
2.11. 疑似デバイス
2.12. EPSON 機に特有のオプション
2.13. 互換 CPU に関するオプション
2.14. USB サポート
2.15. その他のオプション
3. SCSI サブシステムと ct ドライバについて
3.1. 指定方法
3.2. 運用時の注意事項
4. 補足
4.1. 割り込みレベルと割り込み番号
4.2. ネットワークボード別の注意事項
5. ブートブロックの変更


1. カーネルの再構築
-------------------
    まず、カーネルの再構築の方法を説明します。

    まず、/sys/pc98/conf にカーネルの設定内容を書いたファイル (ここでは、
    SARU としておきます) を作成します。とりあえずは、GENERIC をコピーし、
    後で述べる内容に従って書き換えます。(ゼロから書くとよく間違えることが
    ありますので、GENERIC をコピーして使用することをお勧めします。)

        # cd /sys/pc98/conf
        # cp GENERIC SARU
        # vi SARU

    つぎに、config(8) を使用します。

        # config SARU<CR>
        Don't forget to do a ``make depend''
        Kernel build directory is ../compile/SARU

    つぎにカーネルを作るディレクトリに移動します。

        # cd ../compile/SARU

    または

        # cd /sys/pc98/compile/SARU

    ここで、compile の次のディレクトリ名は config ファイルの名前になります。

    次にファイルの依存性を設定します。

        # make depend

    いよいよコンパイル。

        # make

    エラーがなければ成功です。エラーがあった場合はとりあえず config ファイ
    ルの中身を疑ってみて下さい。

    最後に恐怖のインストールです。

        # make install

    古いカーネルは kernel.old として保存されます。これで、リブートすれば新
    しいカーネルが動きます。

        # shutdown -r now

    不幸にも動かない場合はリブートできればリブートし、ハングアップした時は
    リセットして下さい。そして、ブート時の

        Hit [Enter] to boot immediately, or any other key for command prompt.

    と表示されている時に、リターンキー以外 (例えばスペースキー) を押すとプ
    ロンプトが表示されます。

        ok

    新しいカーネルをアンロードした後、古いカーネルをロードしてブートさせま
    す。

        unload<CR>
        ok
        load kernel.old<CR>
        ok
        boot<CR>

    これで古いカーネルでブートします。

    注意!
        使用する make は FreeBSD に付属の ucb make です。GNU make ではコン
        パイルできないので注意して下さい。


2. config ファイルの中身
------------------------

    config ファイルにはカーネルの動作を決める重要な記述がつまっています。
    この中には絶対に消してはいけないものや自分の環境に応じて書き換える必要
    があるものそして、あると嬉しいものなどいろいろなものがあります。それら
    を一つ一つ見ていきます。config(8) は、'#' 以降をコメントとして扱います。
    ソースを展開している場合、/usr/src/sys/pc98/conf/NOTES というファイルが
    存在する可能性があります。このファイルには、さまざまなオプションの説明
    があるので、必要に応じて参考にして下さい。ただし、NOTES に書かれている
    のは、IBM-PC 用の説明であり、PC98 では使用できないものも含まれているの
    で注意して下さい。さらに、NOTES には、システムや、ネットワークに対して
    重大な障害を与える可能性のある "危険な" オプションも記載されているので、
    十分注意して下さい。NOTES を参考にする場合は、必ずすみからすみまで読ん
    で下さい。

    `hint' から始まる行はデバイスのヒント情報です。これらは主にISAデバイス
    のために利用されていて、ドライバが適切なデバイスをプローブするのにどこ
    を見るかや、どのリソースを使うのかを指定するのに使われています。
    ヒント情報は config ファイル内にも書けますが、/boot/device.hints とし
    て、システムの起動時に動的に読み込まれるようにすることもできます。

2.1. 必須のキーワード

    以下のキーワードは必須です。

    machine         pc98
        config(8) に PC98 アーキテクチャのカーネルを作成することを指示しま
        す。書き換えないで下さい。

    cpu             cpu_type
        使用するCPUを指定します。

        cpu_type の部分には以下のいずれかが指定できます。

        I386_CPU
            i386DX/SXおよびそれらの互換プロセッサを使用する場合に指定します。
            このオプションを排他なので、他の CPU と同時には指定できません。
            数値演算コプロセッサ(387)が必須です。

        I486_CPU
            i486DX/SX/DX2/DX4/ODP およびそれらの互換プロセッサを使用する場
            合に指定します。

        I586_CPU
            Pentium プロセッサおよびその互換プロセッサを使用する場合に指定
            します。

        I686_CPU
            Pentium Pro プロセッサおよびその互換プロセッサを使用する場合に
            指定します。

        I386_CPU 以外は複数の CPU を指定することも可能です。

    ident           SARU
        config ファイルの名前と同じものを記述します。

    maxusers        10
        カーネル内のいくつかのテーブルの大きさを決定するために使用されます。
        "最大ユーザ" となっていますが、この数を越えるユーザがログインして
        も使用できます。この値が小さいとファイルが作成できなくなったり、新
        たなプロセスが起動できなくなる可能性があります。
        特別な値 `0' を指定すると、物理メモリ量に比例して自動決定されます。

    options        PC98
        機種依存のソースコードに対し、PC98 アーキテクチャのコードを使用す
        るように指示します。必ず指定して下さい。これがないと動きません。

    device         npx
        コプロセッサデバイスです。消さないで下さい。


2.2. 機種に依存しないオプション

    以下はカーネルの提供する機能を選択するオプションです。

    options        COMPAT_43
        4.3BSD のシステムコールをサポートします。必ず指定して下さい。

    options        COMPAT_FREEBSD4
        FreeBSD 4.x のシステムコールをサポートします。指定しておいたほう
        が安全です。

    options        SYSVSHM
        SysV 形式の共有メモリをサポートします。X を使う場合は指定しておく
        と効果があります。

    options        SYSVSEM
        SysV 形式のセマフォをサポートします。

    options        SYSVMSG
        SysV 形式のメッセージをサポートします。


2.3. ファイルシステムに関連するオプション

    サポートするファイルシステムを選択するオプションです。ローカルディスク
    からブートするなら FFS、ネットワークディスクからブートするディスクレ
    スとするなら NFS となります。

    options         FFS
        バークレーのファーストファイルシステムをサポートします。

    options         NFSCLIENT
    options         NFSSERVER
    options         NFS_ROOT
        このオプションを指定すると NFS が使えるようになります。NFS を使わ
        ない時はコメントアウトしてもかまいません。(外せばカーネルがだいぶ
        小さくなります。)

    options         MSDOSFS
        MSDOS のファイルシステム (FAT) をサポートします。省略しない方が便
        利です。

    options         QUOTA
        quota チェックを有効にしたいときは指定して下さい。

    options         PSEUDOFS
        仮想的なファイルシステム用のフレームワークを提供します。

    options         PROCFS
        "プロセスファイルシステム" をサポートします。オプション "PSEUDOFS"
        が必要です。

    options         CD9660
        ISO-9660 形式の CD-ROM をサポートします。CD-ROM を使用しない時は省
        略してもかまいません。

    options         SOFTUPDATES
        FFS でのソフトアップデートサポートを有効にします。このオプションを
        指定したカーネルでファイルシステムにソフトアップデートフラグを付け
        ると、書込性能が大幅に向上しかつ不慮の電源断時にもファイルシステム
        の整合性が保たれるようになるかもしれません。

    options         UFS_DIRHASH
        いくらか余分にメモリを消費しますが、巨大なディレクトリでのパフォー
        マンスを向上させます。


2.4.  基本的なコントローラとデバイスに関連するオプション

    基本的なディスクに関するオプションです。「SCSI デバイス」、「ネットワ
    ーク」についてはそれぞれの節を参照して下さい。

    device         isa
        PC-98 標準バス (C-BUS) を使うことを宣言します。変更しないで下さい。

    device         pci
        PCI バスを使うことを宣言します。PCI バス搭載機種では指定しておくと
        幸せになれます。

    device         fdc
    hint.fdc.0.at="isa"
    hint.fdc.0.port="0x090"
    hint.fdc.0.irq="11"
    hint.fdc.0.drq="2"
        `fdc' ドライバーは内蔵フロッピーディスクコントローラをサポートしま
        す。

        hint.fd.0.at="fdc0"
        hint.fd.0.drive="0"
        hint.fd.1.at="fdc0"
        hint.fd.1.drive="1"
        hint.fd.2.at="fdc0"
        hint.fd.2.drive="2"
        hint.fd.3.at="fdc0"
        hint.fd.3.drive="3"

        `fd' サブドライバーはフロッピーディスクをサポートします。フロッピ
        ーディスクを使用する場合は必ず指定して下さい。(普通は省略しません。)

    device         ata
    hint.atacbus.0.at="isa"
    hint.atacbus.0.port="0x640"
    hint.atacbus.0.irq="9"
        `ata' ドライバーは IDE インターフェースをサポートします。内蔵 IDE 
        インターフェースを使用する場合には `atacbus' ドライバと併用します。

        device         atadisk
        `atadisk' サブドライバーは、IDE ハードディスクをサポートします。IDE 
        ハードディスクを使用する場合は必ず指定して下さい。

        device         atapicd
        ATAPI CD-ROM をサポートします。

        device         atapifd
        ATAPI ZIP/MO をサポートします。

        device         atapist
        ATAPI テープデバイスをサポートします。


2.5. SCSI デバイス

    サポートしている SCSI インターフェース、デバイスについて説明します。

    SCSI コントローラ
        以下の SCSI コントローラがサポートされています。

        device         ct
        hint.ct.0.at="isa"
        hint.ct.0.flags="0x00000"
            `ct' ドライバは、WD33C93 用 (PC-9801-55 ボード互換用) のSCSI
            ドライバーです。このデバイスドライバーは、NetBSD/pc98 core
            team によって作成されたものを FreeBSD(98) に移植したものです。
            PnP モードで使用する際には hint 情報は無視されます。(指定する
            必要はありません)

            flags には使用するボードの種類を表す以下の数字のいずれか一つを
            記述します。

        flags    ボードの種類
        0x00000  NEC PC-9801-92 互換ボード (DMA 転送)
        0x10000  IO DATA SC98II (バスマスタ転送)
        0x20000  TEXA HA-55-BS2 以降 (バスマスタ転送)
        0x30000  ELECOM バスマスタタイプのボード (バスマスタ転送)
        0x40000  各社 SMIT 転送のボード (SMIT 転送)
        0x50000  Logitec LHA-20x シリーズ

            SMIT 転送を用いる場合は maddr に BIOS ROM ベースアドレス(通常
            は 0xdc000) を指定して下さい。他のボードでは maddr を書く必要
            はありません。

            ct ドライバ関連の詳しい設定については「SCSI サブシステムと ct
            ドライバについて」を参照して下さい。

        device         ahc
            `ahc' ドライバーは PC-9821X-B02L/B09, SV-98/2-B03 等をサポー
            トします。

        device         sym
            `sym' ドライバーは NCR/Symbios
            53C810A/53C825A/53C860/53C87x/53C885/53C895 を用いた SCSI ボー
            ドをサポートします。

        device         adv
            `adv' ドライバーは AdvanSys コントローラーを用いた Narrow SCSI
            ボードをサポートします。

        device         amd
            `amd' ドライバーは AMD 53C974 を用いた SCSI ボードをサポートと
            します。

        device         isp
            `isp' ドライバーは Qlogic ISP ファミリの SCSI ボードをサポート
            します。

    device         scbus
        `scbus' ドライバーは、SCSI サブシステムの中核部分を形成します。
        SCSI デバイスを使用する時は必ず指定して下さい。

    device         da
        `da' サブドライバーは SCSI インターフェースに接続されたハードディ
        スクドライブおよび MO ドライブをサポートします。SCSI ハードディス
        クを使用する時は必ず指定して下さい。

    device         sa
        `sa' サブドライバーは SCSI インターフェイスに接続されたテープデバ
        イス (DAT を含む) をサポートします。SCSI テープデバイスを使用する
        時は指定して下さい。

    device         cd
        `cd' サブドライバーは SCSI インターフェイスに接続された CD-ROM ド
        ライブをサポートします。SCSI CD-ROM を使用する時は指定して下さい。

    device         pass
        `pass' サブドライバーは SCSI インターフェイスに接続された装置を直
        接取り扱う時に使用します。

    device         ch
        `ch' サブドライバーは SCSI メディアチェンジャをサポートします。

    device         pt
        `pt' サブドライバーは SCSI プロセッサデバイスをサポートします。

    device         ses
        `ses' サブドライバーは SCSI Environmental Services(SES) と SAF-TE 
        をサポートします。

2.6. コンソール、マウス、X サーバに関連するオプション

    コンソールデバイスの指定です。X Window System を使うのであればマウスに
    ついても指定して下さい。

    device         sc
    hint.sc.0.at="isa"
        コンソールデバイスです。消さないで下さい。

    device         gdc
    hint.gdc.0.at="isa"
        ビデオカードインターフェイスです。消さないで下さい。

    device         pckbd
    hint.pckbd.0.at="isa"
    hint.pckbd.0.port="0x041"
    hint.pckbd.0.irq="1"
        キーボードデバイスです。消さないで下さい。

    options         LINE30
        FreeBSD(98) で 30 行モード (DOS の 30 行 BIOS のようなこと) を使用
        する場合は、このオプションを指定して下さい。30 行モードについては
        「FreeBSD(98) 30 行モード」を参照して下さい。

    device         splash
      起動時に画像を表示する場合に必要です。

    device         mse
    hint.mse.0.at="isa"
    hint.mse.0.port="0x7FD9"
    hint.mse.0.irq="13"
      バスマウスを使用する時は指定して下さい。


2.7. シリアルポートに関連するオプション

    シリアルポートに関連するオプションです。

    device         sio
      共通のシリアルドライバーです。シリアルデバイスを使用する際には指定し
      てください。

    hint.sio.0.at="isa"
    hint.sio.0.port="0x030"
    hint.sio.0.irq="4"
        内蔵 RS-232C ポート(COM1)を使用する場合はこのように指定して下さい。

    hint.sio.1.at="isa"
    hint.sio.1.port="0xd2"
    hint.sio.1.irq="5"
    hint.sio.1.flags="0x14000101"
        マイクロコアの MC16550/MC16550II/MC-RS98 を使用する場合は、このよ
        うに指定してして下さい。``flags''の後の数字によってボードの種類を
        指定します。

        ``flags''に指定する値は以下の通りです。
          0x00000000 内蔵 RS-232C インターフェース
          0x02000000 NEC PC-9861K, PC-9801-101, 緑電子 MDC-926Rs
          0x10000000 I-O DATA RSA-98II (NS16550 互換モード)
          0x11000000 NEC PC-9801-120, 125
          0x12000000 内蔵 COM2 (2nd CCU)
          0x14000000 マイクロコア MC-16550II, MC-RS98
          0x15000000 Media Intelligent RSB-2000, RSB-3000, AIWA B98-02
          0x16000000 Media Intelligent RSB-384
          0x18000000 I-O DATA RSA-98III
          0x19000000 MidoriHayes ESP98

      2つ目のチャンネルは以下のように指定します。

          hint.sio.2.at="isa"
          hint.sio.2.port="0x8d2"
          hint.sio.2.flags="0x14000101"

      このとき、後述の options COM_MULTIPORT を指定しておいて下さい。port
      および irq はボードで設定した値を記述して下さい。MC-RS98 では、d? の
      部分を b? や e? に変更することにより I/O アドレスを変更することが可
      能ですが、/sys/pc98/pc98/sio.c を変更する必要があります。flags は、
      上位バイトがマスター sio 番号で、下位バイトの b0 がマルチポートデバ
      イスのフラグです。内蔵 RS-232C インターフェースを使用せず、sio0 から
      MC16550 を使用する場合は、

          hint.sio.0.at="isa"
          hint.sio.0.port="0xd?"
          hint.sio.0.irq="5"
          hint.sio.0.flags="0x14000001"
          hint.sio.1.at="isa"
          hint.sio.1.port="0x8d?"
          hint.sio.1.flags="0x14000001"

      のように flags を変更して下さい。また、AIWA の B98-01 を使用する場合
      は、

          hint.sio.1.at="isa"
          hint.sio.1.port="0xd1"
          hint.sio.1.flags="0x15000101"
          hint.sio.2.at="isa"
          hint.sio.2.port="0xd5"
          hint.sio.2.flags="0x15000101"

      としてください。port はボードで設定した値を記述して下さい。irq は自
      動的に設定されます。

    options COM_MULTIPORT

      マイクロコアのMC16550/MC16550II/MC-RS-98を使用する場合は指定して下さい。

2.8. パラレルポートに関連するオプション

    パラレルポートに関連するオプションです。

    device         ppc
    hint.ppc.0.at="isa"
    hint.ppc.0.irq="14"
        内蔵のパラレルポートを双方向バスインターフェイスとして使用する時は
        指定して下さい。``device ppbus'' を指定しておいて下さい。

    device         ppbus
        パラレルポートバスの中核部分を形成します。パラレルポートバスを利用
        する場合は必ず指定して下さい。

    device         lpt
        パラレルポートバス上のプリンタを使用する時は指定して下さい。

    device         plip
        TCP/IP over parallel を使用する時は指定して下さい。

    device         olpt
    hint.olpt.0.at="isa"
    hint.olpt.0.port="0x040"
        内蔵のパラレルポートが双方向バスインターフェイスとして利用できない
        (ppc デバイスが利用できない) 機種でプリンタを使用する時は指定して
        下さい。


2.9. ネットワーク

    多くの Unix 同様 FreeBSD もネットワーク機能を強力にサポートしています。

    options         INET
        インターネットプロトコルをサポートします。必ず指定して下さい。

    options         MROUTING
        マルチキャストルーティングをサポートします。

    options         IPFIREWALL
        ファイアウォールとして動作させる場合は指定して下さい。

    options         DEVICE_POLLING
        一部のネットワークデバイスドライバで割り込み/ポーリング混在モード
        をサポートします。このモードでは、カーネルのネットワーク処理と他処
        理間で正確な CPU 時間の割り当てが可能になるとともに、負荷耐性や応
        答性でも有利になります。

        sysctl 変数 "kern.polling.enable" により、ポーリングモードの有効/
        無効を動的に切り替えることが出来ます(デフォルトでは無効)。なお、ス
        ムーズな動作のために HZ=1000 もしくは 2000 での利用を強くお勧めし
        ます。

        現時点では、一部のデバイスドライバでのみサポートされています。
        詳細は polling(4) を参照して下さい。

    イーサネットカード
        以下のイーサネットカードをサポートしています。なお、ボード固有
        の注意事項は「4.2. ネットワークボード別の注意事項」を参照して
        下さい。

        device         ed
        hint.ed.0.at="isa"
        hint.ed.0.port="0x00d0"
        hint.ed.0.irq="6"
            `ed' ドライバーはナショナルセミコンダクター社の DS8390 お
            よびその互換チップを用いたネットワークボードをサポートしま
            す。

            C-BUS 以外に PCI バス及び PCMCIA に対応していますが、PCI
            バス及び PCMCIA については自動的に設定されますので、特に気
            に する必要はありません。 以下の説明は、C-BUS のボードにの
            み適応されます。

            portとirq の後の数字は I/O ポートアドレスと割り込み番号で
            す。maddrとmsize は，シェアードメモリのアドレスとサイズで
            す。いずれもボードの設定と同じになるようにして下さい。

            ``flags'' の後の数字によって特定のボードのみサポートする機
            能が提供されています。``flags'' には使用するボードの種類を
            表す以下の数字のいずれか一つを記述します。個別のボードの型
            番と flags との対応の完全なリストは「サポートしているハー
            ドウェア」を参照してください。

        0x000000    IBM-PC 用のネットワークカードと同じ I/O ポートアドレス
                    構成のボード(Allied Telesis LA-98-T など) を使用する場
                    合はこの値にする必要があります。
		    □ IO-DATA PCLA/T,LA/T-98
		    □ MELCO LPC-TJ/TS
		    □ PLANET SMART COM CREDITCARD/2000
		    □ Allied Telesis LA-98-T
		    □ Corega Ether 98-T
        0x100000    PLANET SMART COM CREDITCARD/2000 MELCO LPC-TJ/LPC-TS
                    や IO-DATA PCLA/T をサポートします。
        0x200000    PLANET SMART COM 98 EN-2298 や ELECOM LANEED
                    LD-BDN[123]A をサポートします。
        0x300000    MELCO EGY-98 や Contec C-NET(98)E-A/L-A、CONTEC
		    C-NET(98)P(E/L-A互換モード)をサポートします。
        0x400000    MELCO LGY-98、LGH-98、IND-SP、IND-SS や MACNICA NE2098
		    をサポートします。
        0x500000    ICM DT-ET-25/DT-ET-T5/IF-2766ET/IF-2771ET や D-Link
                    DE-298P{T,CAT}/DE-298{T,TP,CAT}、ELECOM LANEED
                    LD-98P{T}、PLANEX EN-2298-T, EN-2298P-Tをサポートしま
                    す。
        0x600000    Allied Telesis SIC-98/SIU-98(SIC モード) をサポートし
                    ます。
        0x610000    Allied Telesis SIU-98-D をサポートします。
        0x800000    NEC PC-9801-107、108 をサポートします。
        0x900000    IO-DATA LA-98 シリーズや MACNICA ME98、Kansai
		    KLA-98C/Tをサポートします。
        0x910000    NEC PC-9801-77, 78 をサポートします。
        0xa00000    Contec C-NET(98) 無印、RT-1007(98)、C-NET(9N) をサポー
		    トします。
        0xb00000    Contec C-NET(98)E/L(初期化レジスタアドレス 0xAAED)、
                    C-NET(9N)L(指定した値で初期化時に自動設定します。)、
                    Logitec LAN-98T をサポートします。
        0xb10000    Contec C-NET(98)E/L(初期化レジスタアドレス 0x55ED)
        0xd00000    Accton EN1644(旧モデル), EN1646(旧モデル), EN2203(旧モ
		    デル)、Networld 98X3 をサポートします。
        0xd10000    Networld EC/EP-98X をサポートします。
        0xf00000    NextCom NC5098 をサポートします。

            実際に使用するボードに合わせて値を変更して下さい。

            共有メモリを用いる SIC-98、C-NET(98) 無印、EtherEZ98 の 場
            合は maddr に 共有メモリのベースアドレスを指定し msize は
            共有メモリのサイズを指定して下さい。他のボードでは maddr
            および msize を書く必要はありません。

        device         fe
        hint.fe.0.at="isa"
        hint.fe.0.port="0x00d0"
        hint.fe.0.irq="3"
            `fe' ドライバーは富士通のMB86960A/MB86965Aおよび互換チップ
	    を利用したLANボードをサポートします。port には、LAN ボード
	    が使用する I/O アドレスを指定して下さい。C-BUS の場合はボー
	    ドの設定と同じになるようにして下さい。 PCMCIA の場合は自動
	    的に設定されますので、特に気にする必要はありません。

            以下のボードでの動作が確認されています。
	    □ Allied Telesis RE1000, RE1000Plus, ME1500 (110pin)
	    □ Contec C-NET(98)P2, C-NET(9N)E (110pin), C-NET(9N)C(ExtCard)
	    □ Ungermann-Bass Access/PC N98C+(PC85152), Access/NOTE,
	       N98(PC86132) (110pin)
            □ TDK LAC-98012, LAC-98013, LAC-98025, LAC-9N011 (110pin)

        device          ep
            `ep' ドライバーは 3COM 社の 3C569 / 3C589 をサポートします。
            C-BUS 及び PCMCIA に対応しており、port や irq は自動的に設
            定されますので、何も書かないでください(port や irq を書く
            と誤認識してしまいます)。

        device         de
            `de' ドライバは DEC DC21x4x を用いたネットワークボードをサポー
            トします。

        device         fxp
            `fxp' ドライバーは Intel EtherExpress Pro/100B をサポートしま
            す。

        device         em
            `em' ドライバーは Intel PRO/1000 をサポートします。

        device         lnc
        hint.lnc.0.at="isa"
        hint.lnc.0.port="0x03d0"
        hint.lnc.0.irq="6"
            `lnc'ドライバはAMD 社の AM7990(LANCE) 及びその互換チップを
            用いたネットワークボードをサポートします。

            port とirq の後の数字は I/O ポートアドレスと割り込み番号で
            す。 C-BUS の場合はボードの設定と同じになるようにして下さ
            い。 PCI バスの場合は自動的に設定されますので、特に気にす
            る必要はありません。

            なお、AT 互換機では drq を指定する必要がありますが、PC-98
            では不要です。

        device         rl
            `rl'ドライバはRealTek 8129/8139, Accton MPX 5030/5038ベースの
            LAN ボードをサポートします。

        device         vr
            `vr'ドライバはVIA VT3043/VT86C100A(Rhine I/II) ベースの LAN ボー
            ドをサポートします。

        device         vx
            `vx' ドライバーは 3Com 3C590/3C595 をサポートします。

        device         sis
            `sis' ドライバーは SiS 900/SiS 7016, NatSemi DP83815 を用いた
            ボードをサポートします。例えば @Nifty FNECHARD IFC-USUP-TX,
            MELCO LGY-PCI-TXC 等があります。

        device         snc
        hint.snc.0.at="isa"
        hint.snc.0.port="0x888"
        hint.snc.0.irq="6"
        hint.snc.0.maddr="0xc0000"
            `snc' ドライバはナショナルセミコンダクター社の DP83932
            (SONIC-T) を用いたネットワークボード、例えば、
            PC-9801-83,84,103,104 と PC-9801N-25,J02,J02R をサポートし
            ます。

            port とirq の後の数字は I/O ポートアドレスと割り込み番号で
            す。また maddr の後の数字は 共有メモリのベースアドレスです。
            C-BUS の場合はボードの設定と同じになるようにして下さい。
            PCMCIA の場合は自動的に設定されますので、特に気にする必要
            はありません。

    device          loop
        localhost (127.0.0.1) 用の仮想デバイスです。消さないで下さい。

    device          ether
        イーサネットをサポートします。消さないで下さい。

    device          sl
        SLIP を使用する時は指定して下さい。

    device          ppp
        PPP を使用できるようにします。カーネル PPP を使用する場合は必ず指
        定して下さい。ユーザランド PPP のみを使用する場合は不要です。

    device          tun
        ユーザプロセスからカーネルのネットワーク層にアクセスするためのトン
        ネルデバイスです。ユーザランド PPP を使用する時は必ず指定して下さ
        い。

    device          bpf
        バークレイパケットフィルタの機能を有効にします。ドライバが未対応な
        ために使用できないイーサネットカードがあります。

    device          gre
        `gre' 仮想デバイスは、GRE や MOBILE 用の IPv4 トンネリングをサポー
        トします。これは、Cisco の GRE トンネリングと互換性があり、GRE ト
        ンネリングをサポートしたルータとして使用することができるようになり
        ます。

    IPv6 サポート
        IPv6 を使用するためには、以下のオプションも必要です。

        options         INET6
            インターネットプロトコル バージョン 6 をサポートします。

        device          gif
            `gif' 仮想デバイスは、バージョンの違う IP 間でのトンネリング
            をサポートします。以下の 4 通りが実装されています。
                IPv6 パケットを IPv4 上でトンネリング
                IPv4 パケットを IPv6 上でトンネリング
                IPv4 パケットを IPv4 上でトンネリング
                IPv6 パケットを IPv6 上でトンネリング

        device          faith   1
            `faith' 仮想デバイスは、IPv6/IPv4 の変換をサポートします。

        device          stf
            `stf' 仮想デバイスは、6to4 のカプセル化をサポートします。


2.10. サウンドカードに関連するオプション

    これ以降のオプションは GENERIC カーネルに含まれていません。必要に応じ
    て各自で加えて下さい。

    device          pcm
    hint.pcm.0.at="isa"
    hint.pcm.0.port="0xf40"
    hint.pcm.0.irq="12"
    hint.pcm.0.drq="1"
    hint.pcm.0.flags="0x10000"
        サウンドカードを使用する場合は指定して下さい。mss 互換音源およびサ
        ウンドブラスタに対応しています。

        サウンドブラスタを使用する場合には、下記に示すように `sbc' ブリッ
        ジドライバを併用して下さい。

        device          pcm
        hint.pcm.0.at="isa"
        hint.pcm.0.port="0xf40"
        hint.pcm.0.irq="12"
        hint.pcm.0.drq="1"
        hint.pcm.0.flags="0x10000"
        device          sbc
        hint.sbc.0.at="isa"
        hint.sbc.0.port="0x20d2"
        hint.sbc.0.irq="10"
        hint.sbc.0.drq="3"

2.11. 疑似デバイス

    疑似デバイスはデバイスドライバのように動作しますが、対応するデバイスが
    存在するわけではありません。「ネットワーク」でもいくつかの疑似デバイス
    が出て来ましたが、残りをここで説明します。

    device          gzip
        gzip で圧縮された a.out 形式ファイルを実行できるようにします。
        `COMPAT_AOUT' オプションが必要です。

    device          pty
        仮想端末デバイスです。消さないで下さい。

    device          md
        ファイルをデバイスとして扱うことを可能にする Memory disks ドライバ
        をサポートします。


2.12. EPSON 機に特有のオプション

    一部の EPSON 機で必須となるオプションです。
    これらは現在メンテナンスされていないため、使用できない可能性があります。

    options         EPSON_MEMWIN
        このオプションを指定すると、15-16MB にあたる領域を使用しません。ま
        た、I/O ポート 0x43b にアクセスし、メモリウィンドウを使用できるよ
        うにします。

    options         EPSON_BOUNCEDMA
        0xf00000 以上の領域に対し、バウンスバッファを使用します。このオプ
        ションを指定する場合は、BOUNCE_BUFFERS も一緒に指定して下さい。
        EPSON PC-486GR Super は、このオプションを指定しないと、15MB を越え
        るメモリーを使用することができません。

    options         WB_CACHE
        一部の EPSON 機では、セカンドキャッシュがライトバック方式の場合、
        CPU スイッチを High にすると正常に動作しなくなります。既に判明して
        いる PC-486HX などについてはカーネルが自動認識して対応しますが、そ
        れ以外の機種で動作しない場合に指定してみてください。


2.13. 互換 CPU に関するオプション

    CPU アクセラレータなどを使用している場合は適切に指定することでその性能
    が発揮されます。

    options         CPU_BLUELIGHTNING_FPU_OP_CACHE
        IBM Blue Lighting を使用している場合、このオプションを指定すると
        FPU のデータをキャッシュするようになります。Cyrix 製の FPU でのみ
        有効です。Intel 製の FPU を利用している場合は指定しないで下さい。

    options         CPU_BLUELIGHTNING_3X
        IBM Blue Lighting を使用している場合、このオプションを指定すると 3
        倍速動作になります。指定しない場合は 2 倍速になります。

    options         CPU_DIRECT_MAPPED_CACHE
        Cyrix486DLC を利用している場合、このオプションを指定すると 1 次キ
        ャッシュをダイレクトマップ方式にします。指定しない場合は、2 ウェイ
        アソシエティブ方式です。

    options         CPU_DISABLE_5X86_LSSER
        Cyrix の 5x86 を使用している場合、このオプションを指定すると、パイ
        プラインの効率を上げるためにメモリアクセスの順番を変更する機能が有
        効になります。この場合、メモリマップド I/O を使用するデバイス (例
        えば XFree86 で mmio を指定する場合) は正しく動作しない可能性があ
        るので注意して下さい。

    options         CPU_FASTER_5X86_FPU
        Cyrix の 5x86 を使用している場合、このオプションを指定すると、FPU
        例外の取り扱いが速くなります。

    options         CPU_I486_ON_386
        i486 のキャッシュを有効にします。元々 i386 のマシンに i486 を付け
        た時に、BIOS がキャッシュを有効しない場合指定して下さい。

    options         CPU_WT_ALLOC
        write allocation を有効にします。Cyrix 6x86/6x86MX と AMD K5/K6 の
        み有効です。

    options         CPU_SUSP_HLT
        HLT 命令が実行された時にサスペンドモードに移行して消費電力を軽減さ
        せます。いまのところ Cyrix の 486DX/5x86/6x86 のみ有効です。他の
        CPU では無効です。

        警告! この機能のテストは不十分です。

    options         CYRIX_CACHE_WORKS
        Cyrix 486 を使用している場合、hold 信号でキャッシュをフラッシュす
        るようにります。

    options         FPU_ERROR_BROKEN
        一部の 286 マシン用 CPU アクセラレータボードでは、数値演算コプロセ
        ッサのエラー信号を認識できません。そのような機種で数値演算コプロセ
        ッサを使用する場合は、このオプションを指定して下さい。

        注意!
            このオプションを指定してもエラー信号を正しく処理できるようには
            なりません。一部のアプリケーションの演算時のエラーを使用する機
            能は使用できません。


2.14. USB/Firewire サポート

    USB を使用する際には以下のドライバが必要です。

    device         ohci
        OHCI(Open Host Controller Interface)対応の USB コントローラ用
        ドライバです。NEC PC-9821 V200 等内蔵 USB コントローラや
        @Nifty FNECHARD IFC-USUP-TX (PCI)をサポートします。
        これらのコントローラで USB を使用する際は指定してください。

    device         uhci
        UHCI(Universal Host Controller Interface)対応の USB コントロー
        ラ用ドライバです。TRY CORPORATION JUS-02 等をサポートします。
        これらのコントローラで USB を使用する際は指定してください。

    device         usb
        USB 関連の共通モジュールです。USB を使用する際は必ず指定して
        ください。

    device         udbp
        ホスト 対 ホストの USB ケーブル接続をサポートします。NETGRAPH 
        オプションが必要です。

    device         ufm
        USB 接続の FM Radio をサポートします。

    device         uhid
        USB 接続のヒューマンインタフェイスデバイス(ボタンやダイアル付)
        をサポートします。

    device         ukbd
        USB 接続のキーボードをサポートします。

    device         ulpt
        USB 接続のプリンタをサポートします。

    device         umass
        USB 接続のストレージデバイス(Zip 等)をサポートします。
        scbus ドライバと da サブドライバが必要です。

    device         umodem
        USB 接続のモデムをサポートします。

    device         ums
        USB 接続のマウスをサポートします。

    device         urio
        USB 接続の Rio(MP3 Player) をサポートします。

    device         uscanner
        USB 接続のスキャナをサポートします。

    device         ubsa
    device         uftdi
    device         uplcom
    device         uvscom
    device         uvisor
        USB 接続のシリアルポート/デバイスをサポートします。後述の `ucom'
        が必要です。

    device         ucom
        USB デバイスを tty のように見せかけるためのアタッチメントです。
        USB のモデムやシリアルデバイスと共に指定してください。

    device         aue
        ADMtek チップを使用した USB イーサネット用のドライバです。
        LinkSys USB100TX, Billionton USB100, Melco LU-ATX,
        D-Link DSB-650TX, SMC 2202USB をサポートします。
        ADMtek AN986 Pegasus でも動くかもしれません。
        MII バスドライバが必要です。

    device         axe
        ASIX Electronics AX88172 を使用した USB 2.0イーサネットドライバ
        です。LinkSys USB200M をサポートします。
        MII バスドライバが必要です。

    device         cue
        CATC USB-EL1201A 用の USB イーサネットドライバです。
        CATC Netmate や Netmate II, Belkin F5U111 をサポートします。
        MII バスドライバが必要です。

    device         kue
        Kawasaki LSI 用の USB イーサネットドライバです。
        LinkSys USB10T, Entrega USB-NET-E45, Peracom Ethernet Adapter,
        3Com 3c19250, ADS Technologies USB-10BT, the ATen UC10T,
        Netgear EA101, D-Link DSB-650, SMC 2102USB, 2104USB,
        Corega USB-T をサポートします。
        MII バスドライバが必要です。

    device         rue
        RealTek RTL8150 用の USB イーサネットドライバです。
        Melco LUA-KTX, GREEN HOUSE GH-USB100B をサポートします。
        MII バスドライバが必要です。

    device         ugen
        上記以外の USB 接続機器をサポートします。USB を使用する際は指定
        しておくと良いでしょう。

    Firewire を使用する際には以下のドライバが必要です。

    device         firewire
        Firewire バスドライバです。

    device         sbp
        Firewire 上で SBP2/SCSI をサポートします。`scbus' と `da' SCSI サ
        ブドライバが必要です。

    device         fwe
        Firewire 上での Ethernet エミュレーションをサポートします。この機
        能は標準仕様ではありません。

2.15. その他のオプション

    その他のオプション、デバイスについて説明します。

    device         speaker
    hint.speaker.0.at="isa"
    hint.speaker.0.port="0x35"
        /dev/speaker を使用する時は指定して下さい。

    device         apm
    hint.apm.0.flags="0x20"
        APM を使用する時は指定して下さい。

    device         pmc
    hint.pmc.0.at="isa"
    hint.pmc.0.port="0x8f0"
        APM が使えない古い 98NOTE で "shutdown -p" による電源断を行いたい
        時は指定して下さい。

    device         card
    device         pcic
    hint.pcic.0.at="isa"
    hint.pcic.0.port="0x3e0"
        98NOTE で PC カード (PCMCIA) を使用する時は指定してください。デフォ
        ルトでは割り込みを使用しないポーリングモードですが、コントローラに 
        irq を割り当てることもできます。以下のように指定してください。

        hint.pcic.0.irq="6"


3. SCSI サブシステムと ct ドライバについて
------------------------------------------

3.1. 指定方法

    FreeBSD(98) では 2.0.5 以降、複数の同種 SCSI デバイスに対して自動的に
    ユニット番号を割り付ける機能があります。よって一般的には以下のように指
    定しておけば起動時に SCSI バスに接続されたハードディスク、光磁気ディス
    ク、テープ、CD-ROM のそれぞれの数がいくつであっても自動的に番号が振ら
    れて使用可能な状態になります。インテリジェントな SCSI I/F が主流となっ
    ている AT 互換機では、SCSI 機器の構成を変更したりした場合にも自動的に
    対応できるこの指定方式が推奨されています。

    device          scbus

    device          da
    device          sa
    device          cd

    一方、従来との互換性のために以下のように割り付けを指定して固定する事も
    できます。そして ct ドライバでは、各 SCSI 機器に対応した転送レートを管
    理するなどの、インテリジェントな SCSI I/F ではカード上の CPU がやって
    くれることを FreeBSD カーネルが行わなければならないために、以下のよう
    に個々のデバイスを指定して記述することを推奨します。(指定しなくても動
    作に支障のない場合がほとんどですが SCSI 機器の性能を引き出すためには
    flags の指定が重要になるからです。)

    device          scbus0 at ct0 bus0

    device          da0     at scbus0 target 0 unit 0 flags 0x320c000b
    device          da1     at scbus0 target 2 unit 0 flags 0x320c000b
    device          da2     at scbus0 target 3 unit 0 flags 0x320c000b
    device          sa0     at scbus0 target 5 unit 0 flags 0x00000107
    device          cd0     at scbus0 target 6 unit 0 flags 0x00000106

    `at scbus0' の部分は どの SCSI サブシステムにぶら下がるか(すなわち ど
    の SCSI ボードを使用するか) を指定します。

    `target 0' の部分は SCSI ID を指定して下さい。

    `unit 0' の部分は LUN (論理ユニット番号) を指定します。たいていの場合は
    0 です。

    `flags' の部分は それぞれの機器に対してどのようなアクセス方法をとるか
    を指定します。この値は使用するデバイスごとに最適値が異なっています。

    flags では 32bit を以下のように いくつかのフィールドに区切って転送速度
    などのパラメータを指定します。

     MSB                                                           LSB
     +---------------+---------------+-+---------+-+-+-----+-+-+-+-+-+
     |3 3 2 2 2 2 2 2|2 2 2 2 1 1 1 1|1|1 1 1 1 1| | |     | | | | | |
     |1 0 9 8 7 6 5 4|3 2 1 0 9 8 7 6|5|4 3 2 1 0|9|8|7 6 5|4|3|2|1|0|
     +---------------+---------------+-+---------+-+-+-----+-+-+-+-+-+
     |      s        |      F        |n|    r    |n|n|  r  |q|l|w|d|s|
     |      y        |      I        |o|    s    |o|o|  s  |t|i|a|i|y|
     |      n        |      F        | |    v    | | |  v  |a|n|i|s|n|
     |      c        |      O        |S|    d    |p|s|  d  |g|k|t|c|c|
     |               |               |M|    2    |a|a|  1  | | | | | |
     |      r        |      s        |I|         |r|t|     | | | | | |
     |      a        |      i        |T|         |i| |     | | | | | |
     |      t        |      z        | |         |t| |     | | | | | |
     |      e        |      e        | |         |y| |     | | | | | |
     +---------------+---------------+-+---------+-+-+-----+-+-+-+-+-+

    + sync        1 で同期転送、0 で非同期転送
    + disc        1 で disconect/reselect をサポート、0 で使用しない
    - wait        1 で他のターゲットと競合するバス調停を禁止、0 で許可
    + link        1 でコマンドリンクを使用、0 なら使用しない
      qtag        タグ付きキューのため予約
      rsvd1       予約
    - no sat      1 で WD33C93 のコンビネーションコマンドを使用しない、0
                  なら使用
    + no parity   1 でパリティラインを監視しない、0 なら監視する
      rsvd2       予約
    - no SMIT     1 で SMIT 転送を禁止、0 で許可 (ボードがサポートしてい
                  れば)
      FIFO size   同期転送時のバッファサイズ
      sync rate   同期転送速度 (転送速度を 0.1MB 単位で表す)

    `+' をつけたオプションは 1 にすると効率向上の効果があり、
    `-' をつけたオプションは 1 にすると効率が下がります。

    sync rate については転送速度を 0.1MB 単位で表した数字になります。例え
    ば 5MB/sec の場合は 5MB/sec = 50 * 0.1MB/sec なので 0x32 になります。

    flags を省略した場合はデフォルト値として 0xffff0301 が使用されます。こ
    れは以下の指定になります。
        * 同期転送 (offset と period はネゴシエーションによって決定)
        * disconnect は用いない
        * コマンドリンク不使用
        * コンビネーションコマンドを使用しない
        * パリティラインを監視しない

    ハードディスクについては 0x320c0003 をとりあえず用いると良いでしょう。
    また CD-ROM や MO などは 0x020c0304 あたりを指定して、そこからチューニ
    ングしていくと良いと思います。

3.2. 運用時の注意事項

    ct ドライバは SCSI バスがハングアップした場合に SCSI バスのリセットを
    試みます。もしハードディスクのアクセスランプが点灯したままカーネルがお
    亡くなりになったように見えても、しばらくはそのままにしておいてください。
    ハングアップの原因が SCSI バス側にあるのであれば復旧する可能性がありま
    す。

    信頼性を求めるのであればパリティラインの監視を有効にしてください。読み
    込み時にパリティエラーが発生した場合は完全に復旧されます。書き込時はデ
    バイスに依存します。

4. 補足
-------

4.1. 割り込みレベルと割り込み番号

    INT # の値と irq # の間には次の関係があります。

        INT  |  irq
       ------+------
         0   |   3
         1   |   5
         2   |   6
         3   |   9
         41  |   10
         5   |   12
         6   |   13

4.2. ネットワークボード別の注意事項

     EtherEZ98
     * Addressing Mode は "I/O Mapped" にする必要があります。

     SIU-98
     * SIU-98 無印はボードを SIC モードにする必要があります。 具体的には
       2 枚重ねになっている上のボードを外して下さい。
     * SIU-98-D は flags 0x610000 を指定してください。

     C-NET(98)無印
     C-NET(98)E/L
     * 使用する port および irq は、ともにカーネル conf での値を元にボード
       初期化 時にソフトウェア設定します。
     * 標準では初期化アドレスレジスタとして "AAED" が使用されますが、
       flags の bit 0x10000 をセットすることにより "55ED" を使用します。
       これにより同じボードを 2 枚まで使うことができます。
     * 初期化アドレスレジスタの都合により、複数の ed ドライバユニット間で
       flags 値が以下の組み合わせの場合はプローブ時に暴走することがありま
       す。これらの組み合わせは避けてください。
          + 同一値(ともに 0xb00000 など)
          + 0xa00000 と 0xb00000 の組み合わせ
          + 0xa10000 と 0xb10000 の組み合わせ

     C-NET(98)E-A
     C-NET(98)L-A
     * C-NET(98) 無印および E/L とは別構造のボードであり EGY-98 として認識
       され ます。

     LGY-98
     * EGY-98 のプローブが実行されるとフリーズするため、EGY-98 のドライバ
       を無効化 する必要があります。

     C-NET(98)P
     * "C-NET(98)E/L-A互換モード" に設定することにより EGY-98 として認識さ
       れます。

     C-NET(98)P2
     * C-NET(98)P とは別構造のボードであり fe ドライバで使用できます。

     NEC PC-9801-77
     Networld EC/EP-98X
     * 使用する irq はカーネル conf での値を元にボード初期化時にソフトウェ
       ア設定 します。
     * flags の bit 0x10000 をセットするのを忘れないで下さい。 セットしな
       くても認識されてしまいますが、irq のソフトウェア設定が行われない た
       め使用できません。

     SB-9801
     * 使用する port および irq は、ともにカーネル conf での値を元にボード
       初期化 時にソフトウェア設定します。
     * port をソフトウェア設定するためにシステムポート 0x40 を使用します。
       これは プリンタポートと同じアドレスであるため、ppcやolptとの干渉が
       あるかもしれま せん。
     * SB-9801 を初期化する前に SB-9801 で使用する port(0xd0 など)にアクセ
       スする とハングアップするため、他の ed や fe など 0x??d0 をアクセス
       するデバイスは 全て無効化する必要があります。
     * flags の bit 0x01 を設定することにより AUI と BNC/UTP の切り替えが
       できます。 ただし SN-9801-2 の場合は無条件に flags 0xe00001 を指定
       してください。

     NC5098
     * port にはボードでの設定値 +0x2000 を指定する必要があります(ボード設
       定が 0xd0 なら 0x20d0)。
     * NC5098 を初期化する前に NC5098 で使用する port(0x20d0 など)にアクセ
       スすると ハングアップするため、他の ed や fe など 0x??d0 をアクセス
       するデバイスは全て 無効化する必要があります。
     * 共有メモリモードには対応していませんので、共有メモリアドレス設定の
       JP は 外す必要があります。
     * NC5098N は別構造のボードなので対応していません。
     * port の干渉の問題から EC/EP-98X とは併用できません。

     Allied-Telesis RE1000
     Ungermann-Bass Access/PC N98C+
     Ratoc REX-9880
     * irq は、カーネル conf での値を元にボード初期化時にソフトウェア設定
       します。

     Contec C-NET(9N)E
     * port は 0x73d0 のみ、irq は 5 のみが使用できます。

     Contec C-NET(98)P2
     * irq の値は初期化時に自動的に取得するので、カーネル conf ではどのよ
       うな値でもかまいません。本体が PnP 対応の場合は port 値も自動的に取
       得します。

     TDK LAC-98012
     * カーネル conf ファイルに options "FE_8BIT_SUPPORT" が必要です。
     * irq は、カーネル conf での値を元にボード初期化時にソフトウェア設定
       します。

5. ブートブロックの変更
-----------------------

    boot1 と boot2 は /boot の下にコピーされます。これらの内容をブートブロ
    ックに書き込むには、

    da# の場合:
        bsdlabel -B -b boot1 -s boot2 da#

    ad# の場合:
        bsdlabel -B -b boot1 -s boot2 ad#

    fd# の場合:
        bsdlabel -B -b boot1 -s boot2 fd#

    として下さい (# は装置番号) 。なお、-b boot1 を省略した場合
    /boot/boot1、-s boot2 を省略した場合 /boot/boot2 が使われます。例えば、

        bsdlabel -B ad0

    とした時は、ad0 に /boot/boot1, /boot/boot2 が書き込まれます。また、
    自分でブートブロックを作成した場合も同様な手順で書き込んで下さい。

    (注意)
        この操作は通常行なうことはないはずです。失敗すればディスクから起動
        できなくなるばかりか大切なデータを失うことになるので注意して下さい。

----
FreeBSD(98) 移植チーム
