diff --git a/ja/FAQ/hackers.sgml b/ja/FAQ/hackers.sgml index a68e93ce20..a1d061645e 100644 --- a/ja/FAQ/hackers.sgml +++ b/ja/FAQ/hackers.sgml @@ -1,584 +1,584 @@ - + - + まじめな FreeBSD ハッカーだけの話題

訳: &a.iwasaki;.8 November 1997. SNAP とか RELEASE とかは何?

現在, FreeBSD の には, 三つのアクティブ/準アクティブなブランチがあります.

現在, 自分用のカスタムリリースを構築するには?

リリースを構築するには三つのことが必要です: まず, ドライバが組み込まれたカーネルを実行させている必要があります. 以下をカーネルコンフィグレーションファイルに追加し, カーネルを作り直してください: pseudo-device vn #Vnode driver (turns a file into a device)

次に, CVS リポジトリ全体を手元においておく必要があります. これを入手するには が使用できますが, supfile で release の名称を cvs にして 他のタグや date フィールドを削除する必要があります: *default prefix=/home/ncvs *default base=/a *default host=cvsup.FreeBSD.org *default release=cvs *default delete compress use-rel-suffix ## Main Source Tree src-all src-eBones src-secure # Other stuff ports-all www doc-all

そして 最後に, ビルド用にかなりの空き領域を用意する必要があります. そのディレクトリを /some/big/filesystem として, 上の例で CVS リポジトリを /home/ncvs に置いたものとすると, 以下のようにしてリリースを構築します: setenv CVSROOT /home/ncvs # or export CVSROOT=/home/ncvs cd /usr/src/release make release BUILDNAME=3.0-MY-SNAP CHROOTDIR=/some/big/filesystem/release

処理が終了すると, リリース全体が /some/big/filesystem/release に構築され, 完全な FTP インストール用の配布物が /some/big/filesystem/release/R/ftp に作成されます. -current 以外の開発ブランチの SNAP を自分で構築したい場合は, カスタムのインストールディスクを作るにはどうすればいいのですか?

/usr/src/release/Makefile のいろいろなターゲットとして インストールディスク, ソース, バイナリアーカイブを作る完全な処理を 自動的におこなうようになっています. Makefile に十分な情報があります. しかし, 実行には ``make world'' が必要で, 多くの時間とディスクの容量が必要です. ``make world'' をおこなうと既存のバイナリを上書きしてしまうのですが.

ええ, それが一般的な考え方です. 名前が示しているように ``make world'' はすべてのシステムのバイナリを一から作り直しますので, 結果としてクリーンで一貫性のある環境を得ることができます (これがそれだけ長い時間がかかる理由です).

環境変数 ${DESTDIR}を root とみなした ディレクトリツリーにインストールされます. あるでたらめな共有ライブラリの変更やプログラムの再構築によって `` システムブート時に ``(bus speed defaulted)'' とメッセージが出ます.

アダプテックの 1542 SCSI ホストアダプタはユーザがソフトウェア的に バスアクセス速度の設定をおこなうことができます. 以前のバージョンの 1542 ドライバは使用可能な最大の速度を求めてアダプタを その設定にしようとしました. これは特定のユーザのシステムでは 問題がある事がわかり, 現在ではカーネルコンフィグオプションに `` インターネットアクセスに制限があっても current を追いかけられますか?

はい, を 使って ソースツリー全体のダウンロードを どのようにして配布ファイルを 240kバイトに分割しているのですか?

比較的新しい BSDベースのシステムでは split に任意のバイト境界で 分割する ``以下は /usr/src/Makefile からの例です. bin-tarball: (cd ${DISTDIR}; \ tar cf - . \ gzip --no-name -9 -c | \ split -b 240640 - \ ${RELEASEDIR}/tarballs/bindist/bin_tgz.) 私はカーネルに拡張をおこないました. 誰に送ればいいですか?

を参照してください.

あなたのアイディアに感謝します! PnP ISA カードの検出と初期化はどのようにおこなうのですか?

氏より:

要点は, ホストが認識されていないボードを探す時に, すべての PnP ボードが応答することのできる少数の I/O ポートがあるという ことです. それにより, PnP プローブルーチンが開始したとき, PnP ボードが存在するなら, すべての PnP ボードは自分のモデル番号を 返します. そのポートを I/O read するとプローブルーチンは 問いに対するワイアード-OR された ``yes'' を得ます. この場合は 少なくとも 1ビットが ON になります. そして, プローブルーチンは モデル ID (Microsoft/Intel によって割り当てられています) が X より小さいボードを ``オフライン'' にすることができます. この操作をおこない, 問い合わせに応答しているボードがまだ 残っているかどうかを調べます. もし ``ID は二つの 32-bit (つまり 64bit) フィールド + 8 bit チェックサムからなります. 最初の 32 bits はベンダの識別子です. これは公表されてはいませんが, 同一のベンダから供給されている 異なるタイプのボードでは異なる 32-bit ベンダ ID を持つことが できるように考えられます. 製造元を特定するだけのために 32 bits はいくらか過剰です.

下位の 32 bits はシリアル番号, イーサネットアドレスなどの ボードを特定するものです. ベンダは上位 32 bits が異なっていない のであれば下位 32 bits が同一である 2枚目のボードを製造することは ありません. したがって, 同じタイプの複数のボードをマシンに いれることができ, この場合でも 64 bits 全体ではユニークです.

32 bit のフィールドはすべてを 0 にすることはできません. これは初期化のバイナリサーチの間ワイアード-OR によって 0 ではない ビットを参照するからです.

システムがすべてのボードの与えられた ID を認識すると, それぞれのボードに対応した処理を一つずつ (同一の I/O ポートを通して) おこないます. そして, 利用できる割り込みの選択などのボードが必要 とするリソースを検出します. すべてのボードについてこの情報を集めます.

この情報はハードディスク上の ECU ファイルなどの情報とまとめられ, マザーボードの BIOS にも結合されます. マザーボード上のハードウェア への ECU と BIOS PnP のサポートは通常は統合されていますが, 周辺機器については真の PnPであるとはいえません. しかし, BIOS の情報に ECU の情報を加えて調査することで, プローブルーチンは PnP デバイスが再配置できなくなることを 避けることができます.

それから, 再度 PnP デバイスにアクセスし, I/O, DMA, IRQ, メモリマップアドレスの設定をします. デバイスはこのアドレスに 見えるようになり, 次にリブートするまでこの位置を占めます. しかし, あなたの望む時に移動させることが不可能であるといっている わけではありません.

以上の話では大きく単純化をしてありますが, 基本的な考え方は得 られたでしょう.

マイクロソフトはボードのロジックが 対立するI/O サイクルでは デコードしていない (訳注: おそらく read 時しかデコードされていず write 時はポートが空いているという意味でしょう) プライマリプリンタのステータスポートのいくつかを PnP のために 占有しました. 私は初期の PnP の提案レビュー時に IBM 純正の プリンタボードでステータスポートの write のデコードがされている ということに気がつきましたが, MS は ``tough (頑固, 不運, 無法な)'' と言っています. そしてプリンタのステータスポートへ アドレスの設定のために write をおこなっています. また, そのアドレス + FreeBSD は, 他のアーキテクチャをサポートしないんですか?

いくつかのグループの人々が, FreeBSD の他のアーキテクチャへの 移植に関心を示しており, FreeBSD/AXP (ALPHA) はこれらの成果としては とても成功したものの一つです. FreeBSD/AXP は 3.0 スナップショット リリースが現在 から入手できます. ALPHA への移植版が現在動く機種は増えつつあり, その中には AlphaStation, AXPpci, PC164, Miata そして Multia といったモデルが含まれています. この ALPHA への移植版はまだ完全なリリースとはみなされていません. システムインストールツール一式や CDROM のインストールメディアの 配布が提供され, 適度な数の ports や packages が動くようになって からになるでしょう. 現在のところ FreeBSD/AXP はベータクオリティのソフトウェアと みなすべきです. 現状についての情報を得るには <freebsd-alpha@FreeBSD.ORG> に参加してください. その他に FreeBSD の SPARC アーキテクチャへの移植があります. プロジェクトへの参加に興味がある方は <freebsd-sparc@FreeBSD.ORG> に参加してください. 新しいアーキテクチャに関する一般的な議論については <freebsd-platforms@FreeBSD.ORG> へ参加してください. デバイスドライバを開発したので, メジャー番号が必要です.

これは, 開発したドライバを公開するかどうかに依存します. 公開するのであれば, ドライバのソースコード, files.i386 の変更, コンフィグファイルのサンプル, デバイスが使うスペシャルファイルを作成する のコードを私たちに送ってください. 公開するつもりがない場合, ライセンスの 問題により公開できない場合は, キャラクタメジャー番号 32 もしくは ブロックメジャー番号 8 が, このような目的のために予約されています. これらの番号を使用してください. どちらの場合であれ, ドライバに関する情報を <freebsd-hackers@FreeBSD.ORG> に流して頂けると助かります. 代替のディレクトリ配置ポリシー

現在使われているディレクトリの配置ポリシーは, 私が 1983 年に書い たものから全く変更されていません. 私は当初の配置ポリシーを, オリ ジナルの fast filesystem のために書き, まったく改定していません. このポリシーはシリンダグループを使い尽くすのを防ぐにはうまくいき ましたが,お気づきの方もいる通り find の動作には不適切です. ほと んどのファイルシステムの内容は, 深さ優先検索 (ftw とも呼ばれます) によって作られたアーカイブからレストアして作成されます. この際, ディレクトリは,シリンダグループにまたがって配置され, 以降の深さ 優先検索を行うには考え得る限り最悪の状態になります. もし作成する ディレクトリの総数がわかっていれば, 解決方法はあります. (総数 / シリンダグループ数)個のディレクトリをシリンダグループごとにまと めて作成すれば良いのです. もちろん最適なディレクトリ配置になるよ うに, 総数を予測する方法を考えなければなりません. しかし仮にシリ ンダグループあたりのディレクトリ数を 10 くらいの小さな数に固定し てしまったとしても, 大幅な改善が望めるでしょう. このポリシーを用 いるべきリストア作業を, 通常の作業(おそらく既存のポリシーを使用 したほうが良いでしょう)を区別するには, 10 秒間の間に作成されたディ レクトリを最大 10 個までまとめて単一のシリンダグループに書き込む という手順が使えるでしょう. とにかく私の結論は, そろそろ実験 を始めて見る時期だろうということです. カーネルパニックを最大限に利用する

[この節は, freebsd-current が投稿したメールを, が校正し,括弧内のコ メントを追加して引用したものです. ]

From: Bill Paul Subject: Re: the fs fun never stops To: ben@rosengart.com Date: Sun, 20 Sep 1998 15:22:50 -0400 (EDT) Cc: current@FreeBSD.ORG

[<ben@rosengart.com> が以下のパニックメッセージを 投稿しました.] > Fatal trap 12: page fault while in kernel mode > fault virtual address = 0x40 > fault code = supervisor read, page not present > instruction pointer = 0x8:0xf014a7e5 ^^^^^^^^^^ > stack pointer = 0x10:0xf4ed6f24 > frame pointer = 0x10:0xf4ed6f28 > code segment = base 0x0, limit 0xfffff, type 0x1b > = DPL 0, pres 1, def32 1, gran 1 > processor eflags = interrupt enabled, resume, IOPL = 0 > current process = 80 (mount) > interrupt mask = > trap number = 12 > panic: page fault

このようなメッセージが表示された場合, 問題が起きる状況を確認し て, 情報を送るだけでは十分ではありません. 下線をつけた命令ポインタ 値は重要な値ですが, 残念ながらこの値は構成に依存します. つまり, こ の値は使っているカーネルのイメージに依存するのです. もしスナップショッ トなどの GENERIC カーネルを使っているのであれば, 他の人間が問題の ある関数について追試をすることができますが, カスタマイズされたカー ネルの場合は, 使っている本人にしか問題の起こった場所は特定できない のです.

何をすれば良いのでしょう? 命令ポインタ値をメモします. システムがリブートしたら, 以下の操作を行います: % nm /kernel.that.caused.the.panic | grep f0xxxxxx ここで, % nm /kernel.that.caused.the.panic | grep f0xxxxx これでも一致しない場合は, 桁を減らしながら何らかの出力があるま で繰り返してください. 何か出力されたら, それがカーネルパニック を引き起こした可能性のある関数のリストです. これは, 問題点を見付ける 正確な方法ではありませんが, 何もないよりましです.

このようなパニックメッセージを投稿している人はよく見掛けますが, このように, 命令ポインタ値を, カーネルシンボルテーブルの中の関数 とつき合わせて調べている人はまれです.

パニックの原因を突き止める最良の方法は, クラッシュダンプをとり, どっちにしろ, 私は普通以下のようにします. カーネルコンフィグファイルを作ります. カーネルデバッガが 必要そうであれば options 'DDB' を加えても良いです(私は永久ルー プが起こっていそうな場合に, ブレークポイントを設定するのに使って います). cd /sys/compile/KERNELCONFIG; make カーネルのコンパイルが終了するのを待ちます. cp kernel / reboot

[注: 現在 FreeBSD 3.x kernel はデフォルトで ELF 形式となっており,

全てのデバッグシンボルを含んだカーネルを, 実際にブートする必要は ありません. 確実にクラッシュダンプをとるには, /etc/rc.conf を編 集して /etc/rc.conf で設定されていれ ば, /var/crash に保存します.

注: FreeBSD のクラッシュダンプのサイズは, ふつう物理メモリサ イズと同じです. つまり 64MB のメモリを積んでいれば, 64MB のクラッ シュ ダンプが生成されることになります. /var/crash に十 分な空き 容量があることを確認してください. 手動で クラッシュダンプを取り出せたら, 以下のように % gdb -k /sys/compile/KERNELCONFIG/kernel.debug /var/crash/vmcore.0 (gdb) where

必要な情報が 1 画面に収まらないことも多いので, できれば もしあなたがデバッグ狂で, 同時に別のコンピュータを利用できる 環境にあれば, [Bill による注: DDB を有効にしていてカーネルがデバッガに 落ちたら, ddb のプロンプトで 'panic' と入力すれば, 強制的にパニッ クを 起こしクラッシュダンプさせることができます. パニックの途中 で, 再び デバッガに落ちるかもしれませんが, 'continue' と入力すれ ば, クラッシュダンプを最後まで実行させられます.] dlsym() が ELF 実行形式では動作しなくなります!

ELF のツール類は, デフォルトでは実行形式の中に定義されている シンボルをダイナミックリンカから見えるようにはしません. このため, dlopen(NULL, flags) を呼び出して得られた ハンドルに対して dlsym() で探索を行っても, こういった シンボルを見つけられません.

もし, あなたがプロセスの中心にあたる実行形式の中にある シンボルを探索したければ, -export-dynamic オプションを 付けて実行形式をリンクする必要があります. カーネルアドレス空間を大きくしたり、小さくするにはどうしたら良いのですか?

カーネルアドレス空間は, FreeBSD 3.x 上で 256MB, FreeBSD 4.x 上で 1GB がデフォルトになっています. 負荷の高いネットワークサーバ(例えば大きな FTP, HTTP サーバ)を運用する場合は, 256MB では足りないことに気付くかも知れません.

では, アドレス空間を大きくするにはどうしたら良いのでしょうか? それには, 二つの段階を踏みます. まず, より大きいアドレス空間を割り当てることをカーネルに知らせる必要があります. 次に, カーネルはアドレス空間の先頭にロードされるため, アドレスの先頭が天井(訳注:カーネルアドレス空間の最下端アドレスのこと)と ぶつかることのないように, ロードアドレスを今までより低位に設定する必要があります.

最初の段階は, src/sys/i386/include/pmap.h にある #ifndef NKPDE #ifdef SMP #define NKPDE 254 /* addressable number of page tables/pde's */ #else #define NKPDE 255 /* addressable number of page tables/pde's */ #endif /* SMP */ #endif

正確な 次の段階を行なうには, ロードアドレスを正確に計算することが必要です. 単純に, アドレス空間の大きさ(バイト単位)を 0x100100000 から引き算して下さい. 1GB アドレス空間の場合, その結果は 0xc0100000 になります. そして, src/sys/i386/conf/Makefile.i386 にある src/sys/i386/conf/kernel.script のセクションの始めの方にある ロケーションカウンタにも同じ値を入れて下さい. OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(btext) SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/obj/elf/home/src/tmp/usr/i386-unknown-freebsdelf/lib); SECTIONS { /* Read-only sections, merged into text segment: */ . = 0xc0100000 + SIZEOF_HEADERS; .interp : { *(.interp) }

それが完了したら, config し直してカーネルを再構築して下さい. おそらく, /usr/include/vm/ にコピーした後に, 注意: カーネルアドレス空間の大きさは, 4 メガバイトの倍数である必要があります.

[ による補足: カーネルアドレス空間は 2 の乗数である必要があると思いますが, それが確かなことかどうかははっきりしていません. 昔の起動コードには, 良く高位アドレスビットのトリックが使われていたため, 少なくとも 256MB の粒度であることが想定されていたと思います.] diff --git a/ja/FAQ/hardware.sgml b/ja/FAQ/hardware.sgml index af0024e4d8..c40a6d2bf3 100644 --- a/ja/FAQ/hardware.sgml +++ b/ja/FAQ/hardware.sgml @@ -1,436 +1,436 @@ - + - + ハードウェアコンパチビリティ

訳: &a.nishika;.12 November 1997. FreeBSD は, どんなハードディスクドライブをサポートしているのですか?

FreeBSD は, EIDE と SCSI ハードディスクドライブをサポート しています (互換コントローラも含みます: 次の節参照). また オリジナルの "Western Digital" インタフェースを使用している すべてのドライブも (MFM, RLL, ESDI, もちろん IDE も) サポートしています. 独自仕様のインタフェースを使用する ESDI コントローラでは動作しないものがあり, WD1002/3/6/7 とその互換インタフェースと衝突します. どの SCSI コントローラをサポートしているのですか? -

に記されている完全なリストを参照 してください. どんな CD-ROM ドライブをサポートしているのですか?

サポートされている SCSI コントローラに接続できる SCSI ドライブすべてをサポートしています.

また, 以下の専用 CD-ROM インタフェースもサポートしています. ミツミ LU002 (8bit), LU005 (16bit) および FX001D (16bit 2倍速). ソニー CDU 31/33A Sound Blaster 非 SCSI タイプの CD-ROM 松下 / Panasonic CD-ROM ATAPI 互換の IDE CD-ROM

SCSI でないカードはすべて, SCSI ドライブよりも極めて動作速度が 遅いことが知られており, ATAPI CD-ROM には動作しないものもあるようです.

Walnut Creek の FreeBSD 2.2 CD-ROM からは CD からの直接ブートが サポートされています. ZIP ドライブをサポートしていますか?

もちろん, FreeBSD は SCSI ZIP ドライブ (外付け) をサポートしています. ZIP ドライブは SCSI ID を 5 か 6 に設定した状態でなら使用できますが, もし SCSI ホストアダプタの BIOS がサポートしてさえいれば ZIP ドライブからブートさせることもできます. 私はどのホストアダプタが SCSI ID を 0 や 1 以外に設定したデバイスからブートできるのか知りませんが... ドキュメントを参照してください (うまくいった場合は教えてください).

ATAPI (IDE) ZIP ドライブが, FreeBSD 2.2.6 以降のバージョンでは サポートされています.

FreeBSD 3.0-STABLE では, パラレル ZIP ドライブをサポートする ようになりました. とはいえ, この ZIP を使うには, ppbus (パラレル ポートバス) のサポートのために新しいカーネルを構築する必要があります. LINT コンフィグレーションファイル中のサンプルを参照して下さい.

それから および についても 確認しておいてください. では, JAZ や EZ, それからその他のリムーバブルドライブはサポートしていますか?

FreeBSD では, IDE バージョンの EZ ドライブを除くすべての SCSI デバイスは, SCSI のディスクと同等に扱われます. また IDE EZ は IDE ドライブと同等となります.

も参照. どのマルチポートシリアルカードをサポートしていますか?

一覧は - の節にあります.

無名のカードにもうまく動くものがあり, 特に AST 互換といわれているものに多く見られます.

カード設定の詳細な情報は, オンラインマニュアルを参照してください. 珍しいバスマウスを持っているのですが, どのように設定すればいいのですか?

FreeBSD は Microsoft, Logitech, ATI 等のメーカーから出ているバスマウス と InPort バスマウスをサポートしています. バスマウスのデバイスドライバ は GENERIC カーネルに標準で含まれています. もしバスマウスのデバイス ドライバを含むカーネルを自分で構築する場合には, カーネルコンフィグレーションファイルに以下の行を忘れずに加えて下さい. device mse0 at isa? port 0x23c tty irq5 vector mseintr

通常バスマウスには専用のインタフェースカードが附属しています. インタフェースカードによってはポートアドレスや割り込み番号を上記の 設定以外に変更できるかもしれません. 詳しくはバスマウスのマニュアルと オンラインマニュアルを参照してください. PS/2 マウス(マウスポートマウス, キーボードマウス) を使うには, どのように設定すればいいのですか?

あなたが 2.2.5 以降のバージョン FreeBSD を使っているのなら, 必要なドライバの psm はカーネルに含まれていて有効になっています. カーネルはブート時に PS/2 マウスを検出するでしょう.

あなたの使っている FreeBSD が比較的新しいけれど前のバージョン (2.1.x 以降) のものなら, インストールの時に, 単にカーネルのコンフィグレーションのメニュー上で PS/2 マウスを有効化するだけです, あるいは後で boot: プロンプト上で -c を指定することでもメニューは現れます. デフォルトでは無効に設定されていますので, 明示的に 有効化してあげないといけません.

あなたの使っている FreeBSD が比較的古いものなら, カーネルコンフィグレーションファイルに以下の行を加えて カーネルを再コンパイルする必要があります. device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr

カーネルの再構築についてよく知らないのであれば, を参照してください.

ブート時にカーネルが psm0 を検出したら, psm0 のエントリが /dev の中にあることを確認してください. 以下のようにします. cd /dev; sh MAKEDEV psm0

これは root でログインしているときにおこなってください. X Window System 以外の環境でマウスを使うことは可能ですか?

もしデフォルトのコンソールドライバである syscons を使っているので あれば, テキストコンソール上でマウスを使ってテキストのカットアンド ペーストができます. マウスデーモンである moused を起動し, 仮想コンソール でマウスポインタを有効にして下さい. moused -p /dev/xxxx -t yyyy vidcontrol -m on

ここで xxxx はマウスのデバイス名, yyyy はマウスの プロトコルタイプです. サポートされているプロトコルタイプについては オンラインマニュアルを参照してください.

システムを起動する時に自動的に moused を起動したい場合には, FreeBSD 2.2.1 では以下の変数を /etc/sysconfig で設定して下さい. mousedtype="yyyy" mousedport="xxxx" mousedflags="" FreeBSD 2.2.2 以降のバージョンでは /etc/rc.conf で以下のように 設定して下さい. moused_type="yyyy" moused_port="xxxx" moused_flags=""

FreeBSD 2.2.6 以降では, マウスデーモンは比較的古いシリアルマウス でない限りマウスのプロトコルタイプを自動判別できます. プロトコルタイプ として ``auto'' を指定すると自動判別を行なおうとします.

マウスデーモンを実行中は, マウスデーモンと他のプログラム, 例えば X Window System, の間でマウスへのアクセスを調整しなければなりません. この問題に ついては を御覧下さい. テキストコンソールでマウスを使ってテキストのカットアンドペーストをするにはどうしたらよいのですか?

マウスデーモンを起動したあと ( を参照して下さい), ボタン1 (左ボタン)を押しながらマウスを動かして範囲を指定して下さい. ボタン2 (中ボタン)またはボタン3 (右ボタン)をクリックするとテキスト カーソルの位置に選択した範囲のテキストがペーストされます.

FreeBSD 2.2.6 以降ではボタン2 をクリックするとペーストされ, ボタン3 をクリックした場合には既存の選択範囲が現在のマウスポインタの位置まで 延長または短縮されます. もしマウスに中ボタンがないなら, moused の オプションを使って中ボタンのエミュレーションをするか, 他のボタンを 中ボタンとして使う事ができます. 詳しくは オンラインマニュアルを参照してください. 私のマウスには可愛いホイールやボタンがついているのですが, これは FreeBSD では使えるのですか?

答えは残念ながら「場合によります」です. こうしたマウスの付加的な機能は 大抵の場合特殊なドライバを必要とします. マウスのデバイスドライバや ユーザのプログラムがそのマウスに対する固有のサポートをしていない場合には 標準的な 2ボタンまたは 3ボタンマウスのように振舞います. ラップトップ PC のマウス/トラックボール/タッチパッドは使えますか?

を参照してください. 加えて, にあるモーバイルコンピューティングの ページもご覧ください. どんなテープドライブをサポートしていますか?

FreeBSD は SCSI, QIC-36 (QIC-02 インタフェース付き) および QIC-40/80 (フロッピーベース) テープドライブをサポートしています. これらには 8-mm (Exabyte と呼ばれています) や DAT ドライブも含まれています. QIC-40/80 ドライブは遅いことが知られています.

初期の 8-mm ドライブの中には SCSI-2 とまったく互換性を持たないものがあります. これらは FreeBSD 上では動作しません. どんなテープチェンジャーをサポートしていますか?

FreeBSD 2.2 は デバイスと コマンドを使用した SCSI チェンジャーをサポートしています. 実際のチェンジャーの制御方法の詳細は, のマニュアルページにあります.

使用している製品が, などのようにチェンジャーに対応済みのものでない場合は, 次のことについて留意してください. それらの製品は任意のポイント間のテープの移動を制御するだけなので, テープがどのスロットに入っているか, 現在ドライブにあるテープが どのスロットに戻るべきかを把握しておく必要があります. どんなサウンドカードをサポートしていますか?

FreeBSD は SoundBlaster, SoundBlaster Pro, SoundBlaster 16, Pro Audio Spectrum 16, AdLib それから Gravis UltraSound サウンドカードを サポートしています. MPU-401 やその互換カードも機能に制限はあるものの サポートされています. マイクロソフトサウンドシステムのスペックに準拠 したカードも, pcm ドライバでサポートされています.

どんなネットワークカードをサポートしていますか? -

より完全な一覧については より完全な一覧については の節を参照してください. 数値演算コプロセッサを持っていません - 何かまずいでしょうか?

一般にこれらは問題とはなりません. しかし, 数値演算エミュレーションコードの パフォーマンスか正確さのいずれかを選択する状況があります. ( についての節をご覧ください). とくに, X 上で弧を描く際にとても遅くなることでしょう. 数値演算コプロセッサを購入されることを強くおすすめします. とても役立つことでしょう.

2.x で, 他にどのドライバがサポートされていますか? -

+

に記されている, サポートされている他のデバイスの一覧を参照して下さい. パワーマネージメント機能付きのラップトップ PC を持っています.

FreeBSD は一部のマシンの APM をサポートしています. の部分をご覧ください. 特定のハードウェアに関する問題の回避について.

この節には, ユーザが見つけた特定のハードウェアに関する問題の 回避について記されています. Micron システムがブート時に固まってしまいます.

特定の Micron 製のマザーボードの中には, PCI BIOS が規格通りに 実装されていないために FreeBSD の起動に失敗するものがあります. その BIOS は, PCI デバイスをあるアドレスで設定したと報告するにも 関わらず, 実際にはそうしていないのです.

この問題を回避するには, BIOS の ``Plug and Play Operating System'' を無効に設定して下さい. より詳しい情報は を御覧下さい. 新しい Adaptec コントローラを持っているのですが, FreeBSD が検出できないようです.

新しい AIC789x シリーズの Adaptec チップは, 3.0 でデビューした CAM SCSI フレームワークでサポートされています. 2.2-STABLE のパッチは にあります. CAM システムが 入っている高機能ブートフロッピーは にあります. どちらの場合に しても, 作業を始める前に README をお読み下さい.

内蔵の Plug & Play モデムを持っているのですが, FreeBSD が検出できないようです.

モデムの PnP ID を シリアルドライバの PnP ID リストに追加する必要が あるでしょう. Plug & Play サポートを有効にするには, /sys/i386/isa/sio.c の 1200 行目くらいにあるテーブルに書き入れて下さい. テーブルを見つけるには, 構造体 ``siopnp_ids[]'' の文字列 ``SUP1310'' を探すようにして下さい. カーネルを作り直したら, インストールし, リブートして下さい. モデムが検出 されるはずです.

起動時のコンフィグレーションの際に, `pnp' コマンドを使用して PnP の 設定をマニュアルで行なわなければならないかもしれません. その場合, モデムを 検出させるためのコマンドは pnp 1 0 enable os irq0 3 drq0 0 port0 0x2f8 のようになります.

シリアルコンソールで boot: プロンプトを表示するにはどうすればいい?

そして /boot.config を作成して その後, キーボードをシステムから抜いて下さい.

/usr/src/sys/i386/boot/biosboot/README.serial にこの情報が 記されています.

なぜ Micron コンピュータで 3Com PCI ネットワークカードが動かないのでしょう?

特定の Micron 製のマザーボードの中には, PCI BIOS が規格通りに 実装されていないために FreeBSD の起動に失敗するものがあります. その BIOS は, PCI デバイスをあるアドレスで設定したと報告するにも 関わらず, 実際にはそうしていないのです.

この問題を回避するには, BIOS の ``Plug and Play Operating System'' を無効に設定して下さい.

この問題についてのより詳しい情報は を御覧下さい. 対称型マルチプロセッシング (SMP) をサポートしていますか?

SMP は 3.0-STABLE と以後のリリースでしかサポートされていません. diff --git a/ja/FAQ/install.sgml b/ja/FAQ/install.sgml index 2d466def94..aa4f7c140d 100644 --- a/ja/FAQ/install.sgml +++ b/ja/FAQ/install.sgml @@ -1,735 +1,738 @@ - + - + インストール

訳: &a.iwasaki; &a.murata; .8 November 1997. FreeBSD を入手するにはどのファイルをダウンロードすればいいですか?

通常は floppies/boot.flp というファイルの フロッピーディスクイメージが一つだけ必要になります. 1.44MB の フロッピーディスクに書き込み, そこからブートしてその他のファイル群を ダウンロードします (インストールプログラムが TCP/IP 接続, テープ, CD-ROM, フロッピーディスク, DOS パーティションなど, インストールに必要なもの すべてに関する処理を担当します).

自分で配布ファイルをダウンロードする必要がある場合 (たとえば DOS ファイルシステムからのインストールなど), おすすめの配布ファイル構成は 以下の通りです. bin/ manpages/ compat*/ doc/ src/ssys.*

この手続きの完全な説明と, 一般的なインストール時の問題については を参照してください. ブートフロッピーイメージが一枚のフロッピーディスクに納まらないみたい!

3.5 インチ (1.44MB) のフロッピーディスクには 1474560 バイトのデータを 格納できます. ブートイメージはちょうど 1474560 バイトの大きさです.

ブートフロッピーディスクを準備する際のよくある間違いには 以下のものがあります. FTP によってフロッピーイメージをダウンロードする際に, binary モードにしていなかった.

FTP クライアントの中には転送モードのデフォルトを ascii モードにしてクライアント側システムの慣習にあうようにすべての行末の 文字を変更するものがあります. この場合は常にブートイメージが 壊れたものになります. ダウンロードしたブートイメージのサイズを チェックしてください. サーバ上のものと 正確に 同じでない場合, ダウンロードの処理を疑いましょう.

これを回避するには, サーバに接続してイメージのダウンロードを 開始する前に, FTP のコマンドプロンプトで binary とタイプします. ブートイメージを DOS の copy コマンド (または GUI の同等のツール) でフロッピーディスクへ転送した.

copy のようなプログラムは, 直接起動するように作成された ブートイメージに関してはうまく処理できません. イメージにはフロッピーディスクの完全な中身がトラック単位で 格納されており, フロッピーディスク上に通常のファイルとして 格納されるようには想定されていません. に記述されているように, ローレベルのツール (例 fdimage または rawrite) を使用して ``raw'' の状態でフロッピーディスクに 転送する必要があります. FreeBSD のインストールについての説明書はどこにありますか?

インストールの説明書は次のところにあります. FreeBSD を動作させるには何が必要ですか?

386 以上の PC, 5MB 以上の RAM, そして最低 60MB の ハードディスク容量が必要となります. ローエンドの MDA カード でも動作しますが, X11R6 を使うには VGA かそれ以上のビデオカード が必要となります.

の節も併せてご覧ください. 4 MB しかメモリがないのですが, インストールできますか?

4MB のシステムにインストールできた FreeBSD の最新版は FreeBSD 2.1.7 でした. 2.2 のように, 2.2 などのより新しいバージョンの FreeBSD は新規のインストールに最低 5MB は必要になります.

インストールプログラムが 4MB では動作しないだけで, 3.0 を含む FreeBSD のすべてのバージョンは 4MB の RAM で動作可能です. インストールする時だけさらに 4MB 追加しておき, システムが セットアップされて動作するようになった後に, また 4MBを取り出して もとに戻すこともできます. あるいは 4MB より多くメモリを搭載 したシステムにディスクを持っていき, そのマシンでインストール した後にディスクを戻すこともできます.

また, FreeBSD 2.1.7 でも 4MB ではインストールできない場合も あります. 正確には, 640KB のベースメモリ + 3MB の拡張メモリ ではインストールはできません. もしマシンのマザーボードが 640KB から 1MB の領域で「失われた」メモリを再マップできる 場合は, FreeBSD 2.1.7 をインストールできるかもしれません.

BIOS のセットアップ画面で, `remap' のオプションを探して 有効 (Enable) にしてみてください. また, ROM shadowing を無効 (Disable) にしておかなくてはなりません.

簡単なやり方としては, インストールする時だけあと 4MB 追加 しておく方法があります. 必要なオプションだけを選択して カスタムカーネルを構築し, また 4MB を取り出してもとに戻せば いいのです.

また, 2.0.5 をインストールして, それから 2.1.7 のインストーラ の ``upgrade'' オプションでシステムを 2.1.7 へアップグレード するというやり方もあります.

インストールしたあとでカスタムカーネルの構築をした場合, 4MB でも動作します. 2MBでブートに成功した人もいます. (でもその システムはほとんど使いものになりませんでした :-)) 自分用のインストールフロッピーを作るには?

現在はカスタムインストールフロッピーディスク「だけ」を作る方法はありません. カスタムインストールフロッピーディスクイメージを含む, release 環境全体を 新たに作る必要があります. /usr/src/release/floppies/Makefile にあるコードでフロッピーディスクイメージ「だけ」を作れるはずですが, まだ完全なものにはなっていません.

カスタムの release 環境をつくるには の指示にしたがってください. 自分の PC に複数のオペレーティングシステムを入れるには?

をご覧ください. 同じマシンで Windows 95 と共存できますか?

まず Windows 95 をインストールして, そのあとで FreeBSD を インストールしてください. FreeBSD のブートマネージャが Win95 と FreeBSD のブート管理をしてくれるようになります. Windows 95 を後にインストールした場合はひどいことに, 問い合わせることもなくブートマネージャを上書きしてしまいます. そうなってしまった場合は次の節をご覧ください. Windows 95 がブートマネージャを潰しちゃった! どうやって戻すの?

ブートマネージャの再インストールの方法として, FreeBSD では 以下に示す二通りの方法が用意されています: DOS を起動し, FreeBSD の配布物の中にある tools/ ディレクトリ へ移動し, bootinst.exe を探してみてください. そして次のように実行してください:

bootinst.exe boot.bin

ブートマネージャが再インストールされます. FreeBSD のブートフロッピーディスクから起動し, 「カスタム」 インストールメニューを選択し, 続いて「パーティション」を 選択します. ブートマネージャがインストールされていたドライブ (多分最初のもの) を選択し, パーティションエディタにたどり着いたら, (何も変更せず) そのまま (W)rite を指定します. 確認のメッセージ が出ますので「はい」と答え, ブートマネージャ選択の画面で確実に "Boot Manager" を選択します. これでブートマネージャがディスクに再び書き込まれます. インストールメニューから抜けてリブートするとハードディスクは 元通りになります. 不良ブロックのあるディスクにインストールできますか?

FreeBSD の不良ブロックの扱い ( コマンド) は, (ひいき目に見ても) 100% 完全ではなく, 残念ながら 多数の不良ブロックのある IDE や ESDI ドライブは FreeBSD では使用できないと言わざるをえません! でも, 非常に多くの IDE ベースのシステムで動作しているようですので, 簡単にあきらめて しまう前にとりあえず試してみましょう.

不良ブロックのある SCSI ドライブの場合は, を参照してください. インストーラからブートしたら変なことになりました!

インストーラからブートしようとしたときに, マシンが固まってし まうとか自然とリブートしてしまうといった現象であれば, 次の三つの項目を確認してください:- 新品の, フォーマットしたての, エラーフリーの フロッピーディスクを使っていますか? (三年間もベッドの下に 放置されていた雑誌の付録みたいなやつではなくて, 買ってきたばかりの新品が好ましいですね) フロッピーイメージをバイナリモードでダウンロード しましたか? (困った顔をしないでください. 私たちの中 で一番優秀な人でさえ, 少なくとも一回はバイナリファイルを ASCII モードで思いがけずダウンロードしたことがあるのです!) Windows95 や Windows NT のような最近ご流行の オペレーティングシステムを使用している場合, システムを シャットダウンしてありのままの本物の DOS を再起動 しましたか? これらの OS は, ディスク作成プログラム のようなハードウェアに直接書き込みをおこなうプログラムに 干渉できます: GUI の中の DOS シェル内部で動作している 場合でも, この問題は発生します.

また, Netscape でブートイメージをダウンロードする場合も問題 があることが報告されていますので, できれば別の FTP クライアント を使うのがよいでしょう. あれ! テープからインストールできません!

2.1.7R をテープからインストールする場合, tar ブロックサイズ を 10 (5120 バイト) にしたテープを作る必要があります. デフォルト の tar ブロックサイズは 20 (10240 バイト) で, このデフォルトサイズで作られたテープでは 2.1.7R を インストールすることはできません. もしこうしたテープを使うと, レコードサイズが大き過ぎるというエラーが起きることになります. パラレルライン (PLIP) 経由でふたつの FreeBSD box を接続したい

Laplink パラレルケーブルを用意してください. 両方の PC の kernel に lpt ドライバが組み込まれていることを確認してください. $ dmesg | grep lp lpt0 at 0x378-0x37f irq 7 on isa lpt0: Interrupt-driven port lp0: TCP/IP capable interface

パラレルインタフェースに Laplink パラレルケーブルを接続します.

root になって両方で lp0 のネットワークインタフェースパラメータを設定します. 例えば, ホスト max と moritz を接続したい場合, max <-----> moritz IP Address 10.0.0.1 10.0.0.2 max 側で次のようにして # ifconfig lp0 10.0.0.1 10.0.0.2 moritz 側でも # ifconfig lp0 10.0.0.2 10.0.0.1 のようにします. -

以上です! lp(4) と lpt(4) のマニュアルページも参照してください. +

以上です! + と + + のマニュアルページも参照してください.

また, /etc/hosts にホストの追加もしましょう. 127.0.0.1 localhost.my.domain localhost 10.0.0.1 max.my.domain max 10.0.0.2 moritz.my.domain moritz

動作確認は次のようにします: max 側: $ ifconfig lp0 lp0: flags=8851 mtu 1500 inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000 $ netstat -r Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire moritz max UH 4 127592 lp0 $ ping -c 4 moritz PING moritz (10.0.0.2): 56 data bytes 64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms 64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms 64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms 64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms --- moritz ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms ラップトップ PC に PLIP (パラレルライン IP) 経由でインストールできますか?

次のようにして二つのコンピュータを Laplink パラレルケーブル を通して接続してください: +----------------------------------------+ |A-name A-End B-End Descr. Port/Bit | +----------------------------------------+ |DATA0 2 15 Data 0/0x01 | |-ERROR 15 2 1/0x08 | +----------------------------------------+ |DATA1 3 13 Data 0/0x02 | |+SLCT 13 3 1/0x10 | +----------------------------------------+ |DATA2 4 12 Data 0/0x04 | |+PE 12 4 1/0x20 | +----------------------------------------+ |DATA3 5 10 Strobe 0/0x08 | |-ACK 10 5 1/0x40 | +----------------------------------------+ |DATA4 6 11 Data 0/0x10 | |BUSY 11 6 1/0x80 | +----------------------------------------+ |GND 18-25 18-25 GND - | +----------------------------------------+

また, Mobile Computing についての ページもご覧ください. ハードディスクドライブには, どのジオメトリを使うべきでしょうか?

(ここでディスクの「ジオメトリ」とは, ディスクのシリンダ, ヘッダ, トラック当りのセクタの数を意味しています - 便宜上, C/H/S とすることにします. これはディスクのどの領域で読み書きを おこなうかを PC の BIOS が決定する手段となります.)

これについてはある理由のために, 誤解されている点が多いようです. まず最初に, FreeBSD はディスクブロックで動作しているため, SCSI ドライブのすべての問題はSCSI ディスクでは, 使用するジオメトリはコントローラの拡張 BIOS トランスレーションが有効になっているかどうかによります (``>1GB の DOS ディスクドライブのサポート'' とも呼ばれます). 無効になっている場合, N シリンダ, 64 ヘッド, 32 セクタ/トラック を使用しますが, ここで `N' は MB 単位のディスク容量です. 例えば, 2GB ディスクは見かけ上 2048 シリンダ, 64 ヘッド, 32 セクタ/トラックとなります.

それが「有効」になっており (MS-DOS ではこの方法で, ある制限 を回避する場合もあります), ディスク容量が 1GB を越える場合は, M シリンダ, 63 セクタ/トラック (64 「ではなく」), 255 ヘッド を使用します. `M' は MB 単位のディスク容量を 7.844238 (!) で割った値となります. ということで, 2GB ディスクの例では, 261 シリンダ, 63 セクタ/トラック, 255 ヘッドとなります. (訳注: 以上は Adaptec 社と NCR 社製の SCSI アダプタの場合です. SCSI アダプタによって変換の数値が変わってくるのでマニュアルを 参照してください.)

これについてよく分からない場合や FreeBSD がインストール中に 正しくジオメトリを取得できない場合, これを回避するもっとも 簡単な方法はディスクに小さな DOS パーティションを作ることです. そうすると正しいジオメトリが取得されるはずです (そして, 残しておきたくないとかネットワークカードのプログラミング用に 使いたい場合などには, いつでもパーティションエディタで DOS パーティションを削除することができます).

もう一つの方法として, FreeBSDと一緒にに配布されているフリー で使えるユーティリティに ``toolsディレクトリかいろいろな FTP サイトにあります) と呼ばれるものがあり, ディスク上の他のオペレーティングシステム が使用しているジオメトリを調べるのに役立ちます. そして, この ジオメトリ情報をパーティションエディタに入力することができます. ディスクの分割の仕方で何か制限はありますか?

はい. BIOS がカーネルをブートできるようにルートパーティションが 1024 シリンダ以内にあることを確認する必要があります (これは FreeBSD ではなく PC の BIOS の制限です).

SCSI ドライブでは, 通常はルートパーティションが最初の 1024MB に収まっていることが前提となります (または拡張 BIOS トランスレーション が有効になっている場合は最初の 4096MB - 他の質問をご覧ください). IDE でそれに相当する値は 504MB となります. (訳注: E-IDE 対応の BIOS 搭載マシンの場合は IDE の 504MB という 制限はありません.) 大容量ディスクを持っていますが, ディスクマネージャは使えますか?

FreeBSD は Ontrack Disk Manager を認識し, これを考慮にいれます. 他のディスクマネージャはサポートしません.

ディスク全体を FreeBSD で使いたい場合は, ディスクマネージャ は必要ありません. BIOS が扱える容量いっぱいで (通常は 504MB) ディスクの設定をおこなうと, FreeBSD は実際の容量を算出する はずです. MFM コントローラ付きの古いディスクを使っている場合は, FreeBSD に使用するシリンダ数を詳細に指定する必要があります.

FreeBSD と他のオペレーティングシステムが入っているディスクを 使用したい場合は, ディスクマネージャなしでもできるでしょう: FreeBSD のブートパーティションと他のオペレーティングシステム 用のスライスが最初の 1024 シリンダ内に収まっている事を確認 するだけです. 気になる方は, ブートパーティションを 20 メガバイト ぐらいにして大きめにするととよいでしょう. FreeBSD のブート時に ``Missing Operationg System'' と表示されます

これは FreeBSD や DOS, そのほかの OS がディスク領域 のとらえ方で衝突 しあっていることから起こる典型的な例です. こうなったら FreeBSD をインストールし直す以外にはありませんが, 他のところで説明した手順にしたがってやれば, ほぼ間違いなくうまくいくはずです. ブートマネージャの `F?' プロンプトが表示されません.

これはすでに前に質問されている問題のもう一つの症状です. BIOS のジオメトリと FreeBSD のジオメトリ設定が一致していないのです! コントローラや BIOS がシリンダの変換 (``>1GB ドライブの サポート'' とも呼ばれます) をサポートしていたら, その設定を無効化して FreeBSD をインストールし直してみてください. 16MB を越えるメモリを搭載していますが, 何か問題が起こりますか?

性能問題以外は無しです. FreeBSD 2.X は bounce-buffer をサポートしており, バスマスタリングコントローラは 16MB より上のメモリ領域に アクセスできます. (ISA デバイスを使用している場合のみ必要 となりますが, 一部の EISA と VLB デバイスでも必要な場合 があります.)

また, もっと多くのメモリを搭載している場合, Compaq や利用可能な メモリサイズを正しく報告しない他の BIOS を使用している場合は, の節をご覧ください. ソースを全部インストールする必要はありますか?

一般的には「いいえ」です. しかし最低でも, `` を実行する時は例外です. カーネルのソースをインストールしなくてもよい例として, どこか 別の場所からカーネルのソースを読み込み専用で NFS マウントする 事ができ, またそこから新しいバイナリを作成できるようになって います. (カーネルソースの制限があるので, 直接 /usr/src を マウントする事はおすすめできません. それよりもどこか別の ディレクトリにマウントして, ソースツリーの複製ができるように 適切にシンボリックリンクを張ってください.)

ソースをネットワーク上に持ち, そこからシステムをビルド するようにしておけば, FreeBSD の将来のリリースへのアップグレード がずっと簡単になります.

実際にソースのサブセットを選択するには, システムインストール ツールの「配布ファイル」メニューにある「カスタム」メニュー を使用します. また, src/install.sh スクリプトでも 与える引数によってソース配布ファイルの一部分をインストールできます. カーネルは作り直さなくちゃならないんですか?

カーネルを新しく作り直すのは元々 FreeBSD のインストール時に どうしても必要なことでした. でも最近のリリースでは, とても ユーザフレンドリなカーネル設定ツールの恩恵を受けています. FreeBSD のブートプロンプト (boot:) で "-c" と打てば ビジュアルな設定画面になり, ほとんどの一般的な ISA カードに ついてのカーネルの設定をすることができるのです.

今でも, 必要なデバイスドライバだけを組み込んだカーネルを 作ることはよい事とされています. ほんのちょっとだけメモリを 節約できますからね. でもほとんどのシステムでは, もはや どうしてもやらなくちゃならないことではないのです. アメリカ合衆国国外に住んでいますが, DES 暗号化ソフトウェアは使えますか?

DES スタイルの暗号化コードの使用が絶対避けられないものでない 場合は, DES 暗号化アルゴリズムを合法的に合衆国国外に持ち出す事 ができないため, 合衆国国外のユーザは合衆国の FTP サイト から該当するソフトウェア (しかし, これに代わる libcrypt が, オーストラリアの David Burren によって書かれたソースをベースに作られています. これは合衆国国外のいくつかの FTP ミラーサイトで公開されています. この制限の課せられていない libcrypt のソースと, それを 使ったプログラムのバイナリは, 以下の FTP サイトから入手する 事ができます: ftp://ftp.internat.freebsd.org/pub/FreeBSD ftp://storm.sea.uct.ac.za/pub/FreeBSD ftp://ftp.iqm.unicamp.br/pub/FreeBSD ftp://nic.funet.fi/pub/unix/FreeBSD/eurocrypt 訳注: 日本国内では以下のサイトにあります. ftp://jaz.jp.freebsd.org/pub/FreeBSD-internat

この合衆国国外向けの 合衆国国外のユーザは, お願いですからいかなる暗号化ソフトウェア も合衆国内からダウンロードしないでください. ダウンロードされた サイトの管理者は, 法律的にとても難しく困難な立場に立たされる 事になります.

合衆国以外向けの Kerberos も開発されつつあります. 現在の バージョンは anonymous FTP で braae.ru.ac.za から 入手できます.

また, 合衆国国外向けの暗号化ソフトウェアに関する議論のための もあります. より詳しい情報については, メールの本文に ``<majordomo@braae.ru.ac.za> まで送ってください. ブートフロッピーで起動すると, ``Probing Devices...'' の画面でハングアップします.

IDE Zip か Jaz ドライブが接続されていたら, それを取り外して もう一度試してみましょう. ブートフロッピーはこの種のドライブを誤認して しまうのです. システムがインストールされた後は, そのドライブを再度接続することができます. うまくいけばこの問題は将来のリリースで解決されるでしょう. インストール終了後にシステムをリブートすると, ``panic: cant mount root'' のエラーとなります.

このエラーはディスクデバイスについてブートブロックとカーネルの 認識が混乱しているために起こります. このエラーは通常 2 台の IDE ディスクがそれぞれ別の IDE コントローラのマスターかシングルデバイス として接続されているシステムにおいて, FreeBSD がセカンダリ IDE コントローラに接続されたディスクにインストールされている場合に発生します. ブートブロックは FreeBSD が wd1 (2 台目の BIOS ディスク) にインストール されていると認識するのに対し, カーネルは セカンダリ IDE の 1 台目の ハードディスクである wd2 にインストールされていると認識するのです. デバイスプローブの後で, カーネルはブートブロックがブートディスクだと 認識したディスクである wd1 を mount しようとします. 実際には ブートディスクは wd2 なので失敗してしまうのです.

この問題を解決するには, 以下のどれか一つを行ってください: Boot: プロンプトで, 1:wd(2,a)kernel と入力してエンターキーを押します. システムが起動したら, echo "1:wd(2,a)kernel" > /boot.config というコマンドを実行してこれをデフォルトのブート文字列とします. FreeBSD のディスクをプライマリ IDE コントローラに接続して, ハードディスクが連続したドライブ番号で認識されるようにします. カーネルのコンフィグレーションファイルで wd の行を以下のように 変更してから を行い, 新しいカーネルをインストールします. controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr disk wd0 at wdc0 drive 0 # disk wd1 at wdc0 drive 1 # この行をコメントアウト controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr disk wd1 at wdc1 drive 0 # wd2 から wd1 へ変更 disk wd2 at wdc1 drive 1 # wd3 から wd2 へ変更 ディスクの接続を変更して元の設定に戻したい場合は, ディスクを お望みの設定の通りの接続に戻してからリブートします. システムは正常に起動するはずです. メモリの大きさの制限は?

メモリは, (論理的な) 限界は 4 ギガバイトです. 1 ギガバイトのものは すでにテストがされています. 普通は i386 の PC ではそれ以上のメモリを サポートしているものを買うことはできません. ffs ファイルシステムの大きさの制限は?

ffs ファイルシステムは, 論理的な最大の上限は 8 テラバイト (2G ブロック) か, デフォルトのブロックサイズを 8K とすると 16 テラバイトとなります. 実際問題として, 1 テラバイトのソフトウェアの限界がありますが, 修正すれば 4 テラバイトのファイルシステムが可能です (実際に存在します).

一つの ffs のファイルの最大のサイズは, ブロックサイズが 4K の場合で 約 1 ギガブロック (4 テラバイト) です. maxfilesize ---------------------------------- 2.2.7 3.0 fs block size -stable -current works should-work ------------- ------- -------- ----- ----------- 4K 4T-1 4T-1 4T-1 4+T 8K 32+G 8T-1 32+G 16T-1 16K 128+G 16T-1 128+G 32T-1 32K 512+G 32T-1 512+G 64T-1 64K 2048+G 64T-1 2048+G 128T-1

fs ブロックサイズが 4K の場合は三重間接ブロックが使用され, いづれの場合でも三重間接ブロックを使用して表現できる最大の fs ブロック番号 (およそ 1K^3 + 1K^2 + 1K) に制限されるはずなのですが, 実際は fs ブロック番号の (間違った) 上限 1G-1 で制限されます. fs ブロック番号の制限は 2G-1 となるはずです. 2G-1 付近に fs ブロック番号のバグが多少ありますが, fs ブロックサイズが 4K の場合は, ここまでのブロック番号には到達しません.

ブロックサイズが 8K 以上の場合, いづれの場合も fs ブロック番号の 上限 2G-1 で制限されるはずですが, 実際は fs ブロック番号の上限 1G-1 で制限されます. 例外的に -stable では三重間接ブロックまでは 到達しないため, 制限は二重間接ブロックで表現できる最大の fs ブロック番号 (およそ (blocksize/4)^2 + (blocksize/4)) となります. -current ではこの制限を超えると問題を引き起こすかもしれません. 正しい制限値である 2G-1 ブロックを使用すると明らかに問題が出ます. フロッピーに 1 テラバイトのファイルを格納するには?

わたしのところではフロッピーにいくつかの実際のファイルを保存しています :-). 最大のファイルサイズは最大のディスクサイズとはあまり関係はありません. 最大のディスクサイズは 1TB です. ファイルサイズがディスクサイズより 大きくなりうるというのは仕様です.

以下の例は, 32K のディスク容量 (3 つの間接ブロックと 1 つのデータブロック) を使って, 小さなルートパーティションに 8T-1 の大きさのファイルを作成します. ここでの dd コマンドは 大きなファイルが扱えるものが必要です. ttyv0:bde@alphplex:/tmp/q> cat foo df . dd if=/dev/zero of=z bs=1 seek=`echo 2^43 - 2 | bc` count=1 ls -l z du z df . ttyv0:bde@alphplex:/tmp/q> sh foo Filesystem 1024-blocks Used Avail Capacity Mounted on /dev/sd0a 64479 27702 31619 47% / 1+0 records in 1+0 records out 1 bytes transferred in 0.000187 secs (5346 bytes/sec) -rw-r--r-- 1 bde bin 8796093022207 Sep 7 16:04 z 32 z Filesystem 1024-blocks Used Avail Capacity Mounted on /dev/sd0a 64479 27734 31587 47% / ttyv0:bde@alphplex:/tmp/q> exit

Bruce Evans, September 1998 diff --git a/ja_JP.eucJP/FAQ/hackers.sgml b/ja_JP.eucJP/FAQ/hackers.sgml index a68e93ce20..a1d061645e 100644 --- a/ja_JP.eucJP/FAQ/hackers.sgml +++ b/ja_JP.eucJP/FAQ/hackers.sgml @@ -1,584 +1,584 @@ - + - + まじめな FreeBSD ハッカーだけの話題

訳: &a.iwasaki;.8 November 1997. SNAP とか RELEASE とかは何?

現在, FreeBSD の には, 三つのアクティブ/準アクティブなブランチがあります.

現在, 自分用のカスタムリリースを構築するには?

リリースを構築するには三つのことが必要です: まず, ドライバが組み込まれたカーネルを実行させている必要があります. 以下をカーネルコンフィグレーションファイルに追加し, カーネルを作り直してください: pseudo-device vn #Vnode driver (turns a file into a device)

次に, CVS リポジトリ全体を手元においておく必要があります. これを入手するには が使用できますが, supfile で release の名称を cvs にして 他のタグや date フィールドを削除する必要があります: *default prefix=/home/ncvs *default base=/a *default host=cvsup.FreeBSD.org *default release=cvs *default delete compress use-rel-suffix ## Main Source Tree src-all src-eBones src-secure # Other stuff ports-all www doc-all

そして 最後に, ビルド用にかなりの空き領域を用意する必要があります. そのディレクトリを /some/big/filesystem として, 上の例で CVS リポジトリを /home/ncvs に置いたものとすると, 以下のようにしてリリースを構築します: setenv CVSROOT /home/ncvs # or export CVSROOT=/home/ncvs cd /usr/src/release make release BUILDNAME=3.0-MY-SNAP CHROOTDIR=/some/big/filesystem/release

処理が終了すると, リリース全体が /some/big/filesystem/release に構築され, 完全な FTP インストール用の配布物が /some/big/filesystem/release/R/ftp に作成されます. -current 以外の開発ブランチの SNAP を自分で構築したい場合は, カスタムのインストールディスクを作るにはどうすればいいのですか?

/usr/src/release/Makefile のいろいろなターゲットとして インストールディスク, ソース, バイナリアーカイブを作る完全な処理を 自動的におこなうようになっています. Makefile に十分な情報があります. しかし, 実行には ``make world'' が必要で, 多くの時間とディスクの容量が必要です. ``make world'' をおこなうと既存のバイナリを上書きしてしまうのですが.

ええ, それが一般的な考え方です. 名前が示しているように ``make world'' はすべてのシステムのバイナリを一から作り直しますので, 結果としてクリーンで一貫性のある環境を得ることができます (これがそれだけ長い時間がかかる理由です).

環境変数 ${DESTDIR}を root とみなした ディレクトリツリーにインストールされます. あるでたらめな共有ライブラリの変更やプログラムの再構築によって `` システムブート時に ``(bus speed defaulted)'' とメッセージが出ます.

アダプテックの 1542 SCSI ホストアダプタはユーザがソフトウェア的に バスアクセス速度の設定をおこなうことができます. 以前のバージョンの 1542 ドライバは使用可能な最大の速度を求めてアダプタを その設定にしようとしました. これは特定のユーザのシステムでは 問題がある事がわかり, 現在ではカーネルコンフィグオプションに `` インターネットアクセスに制限があっても current を追いかけられますか?

はい, を 使って ソースツリー全体のダウンロードを どのようにして配布ファイルを 240kバイトに分割しているのですか?

比較的新しい BSDベースのシステムでは split に任意のバイト境界で 分割する ``以下は /usr/src/Makefile からの例です. bin-tarball: (cd ${DISTDIR}; \ tar cf - . \ gzip --no-name -9 -c | \ split -b 240640 - \ ${RELEASEDIR}/tarballs/bindist/bin_tgz.) 私はカーネルに拡張をおこないました. 誰に送ればいいですか?

を参照してください.

あなたのアイディアに感謝します! PnP ISA カードの検出と初期化はどのようにおこなうのですか?

氏より:

要点は, ホストが認識されていないボードを探す時に, すべての PnP ボードが応答することのできる少数の I/O ポートがあるという ことです. それにより, PnP プローブルーチンが開始したとき, PnP ボードが存在するなら, すべての PnP ボードは自分のモデル番号を 返します. そのポートを I/O read するとプローブルーチンは 問いに対するワイアード-OR された ``yes'' を得ます. この場合は 少なくとも 1ビットが ON になります. そして, プローブルーチンは モデル ID (Microsoft/Intel によって割り当てられています) が X より小さいボードを ``オフライン'' にすることができます. この操作をおこない, 問い合わせに応答しているボードがまだ 残っているかどうかを調べます. もし ``ID は二つの 32-bit (つまり 64bit) フィールド + 8 bit チェックサムからなります. 最初の 32 bits はベンダの識別子です. これは公表されてはいませんが, 同一のベンダから供給されている 異なるタイプのボードでは異なる 32-bit ベンダ ID を持つことが できるように考えられます. 製造元を特定するだけのために 32 bits はいくらか過剰です.

下位の 32 bits はシリアル番号, イーサネットアドレスなどの ボードを特定するものです. ベンダは上位 32 bits が異なっていない のであれば下位 32 bits が同一である 2枚目のボードを製造することは ありません. したがって, 同じタイプの複数のボードをマシンに いれることができ, この場合でも 64 bits 全体ではユニークです.

32 bit のフィールドはすべてを 0 にすることはできません. これは初期化のバイナリサーチの間ワイアード-OR によって 0 ではない ビットを参照するからです.

システムがすべてのボードの与えられた ID を認識すると, それぞれのボードに対応した処理を一つずつ (同一の I/O ポートを通して) おこないます. そして, 利用できる割り込みの選択などのボードが必要 とするリソースを検出します. すべてのボードについてこの情報を集めます.

この情報はハードディスク上の ECU ファイルなどの情報とまとめられ, マザーボードの BIOS にも結合されます. マザーボード上のハードウェア への ECU と BIOS PnP のサポートは通常は統合されていますが, 周辺機器については真の PnPであるとはいえません. しかし, BIOS の情報に ECU の情報を加えて調査することで, プローブルーチンは PnP デバイスが再配置できなくなることを 避けることができます.

それから, 再度 PnP デバイスにアクセスし, I/O, DMA, IRQ, メモリマップアドレスの設定をします. デバイスはこのアドレスに 見えるようになり, 次にリブートするまでこの位置を占めます. しかし, あなたの望む時に移動させることが不可能であるといっている わけではありません.

以上の話では大きく単純化をしてありますが, 基本的な考え方は得 られたでしょう.

マイクロソフトはボードのロジックが 対立するI/O サイクルでは デコードしていない (訳注: おそらく read 時しかデコードされていず write 時はポートが空いているという意味でしょう) プライマリプリンタのステータスポートのいくつかを PnP のために 占有しました. 私は初期の PnP の提案レビュー時に IBM 純正の プリンタボードでステータスポートの write のデコードがされている ということに気がつきましたが, MS は ``tough (頑固, 不運, 無法な)'' と言っています. そしてプリンタのステータスポートへ アドレスの設定のために write をおこなっています. また, そのアドレス + FreeBSD は, 他のアーキテクチャをサポートしないんですか?

いくつかのグループの人々が, FreeBSD の他のアーキテクチャへの 移植に関心を示しており, FreeBSD/AXP (ALPHA) はこれらの成果としては とても成功したものの一つです. FreeBSD/AXP は 3.0 スナップショット リリースが現在 から入手できます. ALPHA への移植版が現在動く機種は増えつつあり, その中には AlphaStation, AXPpci, PC164, Miata そして Multia といったモデルが含まれています. この ALPHA への移植版はまだ完全なリリースとはみなされていません. システムインストールツール一式や CDROM のインストールメディアの 配布が提供され, 適度な数の ports や packages が動くようになって からになるでしょう. 現在のところ FreeBSD/AXP はベータクオリティのソフトウェアと みなすべきです. 現状についての情報を得るには <freebsd-alpha@FreeBSD.ORG> に参加してください. その他に FreeBSD の SPARC アーキテクチャへの移植があります. プロジェクトへの参加に興味がある方は <freebsd-sparc@FreeBSD.ORG> に参加してください. 新しいアーキテクチャに関する一般的な議論については <freebsd-platforms@FreeBSD.ORG> へ参加してください. デバイスドライバを開発したので, メジャー番号が必要です.

これは, 開発したドライバを公開するかどうかに依存します. 公開するのであれば, ドライバのソースコード, files.i386 の変更, コンフィグファイルのサンプル, デバイスが使うスペシャルファイルを作成する のコードを私たちに送ってください. 公開するつもりがない場合, ライセンスの 問題により公開できない場合は, キャラクタメジャー番号 32 もしくは ブロックメジャー番号 8 が, このような目的のために予約されています. これらの番号を使用してください. どちらの場合であれ, ドライバに関する情報を <freebsd-hackers@FreeBSD.ORG> に流して頂けると助かります. 代替のディレクトリ配置ポリシー

現在使われているディレクトリの配置ポリシーは, 私が 1983 年に書い たものから全く変更されていません. 私は当初の配置ポリシーを, オリ ジナルの fast filesystem のために書き, まったく改定していません. このポリシーはシリンダグループを使い尽くすのを防ぐにはうまくいき ましたが,お気づきの方もいる通り find の動作には不適切です. ほと んどのファイルシステムの内容は, 深さ優先検索 (ftw とも呼ばれます) によって作られたアーカイブからレストアして作成されます. この際, ディレクトリは,シリンダグループにまたがって配置され, 以降の深さ 優先検索を行うには考え得る限り最悪の状態になります. もし作成する ディレクトリの総数がわかっていれば, 解決方法はあります. (総数 / シリンダグループ数)個のディレクトリをシリンダグループごとにまと めて作成すれば良いのです. もちろん最適なディレクトリ配置になるよ うに, 総数を予測する方法を考えなければなりません. しかし仮にシリ ンダグループあたりのディレクトリ数を 10 くらいの小さな数に固定し てしまったとしても, 大幅な改善が望めるでしょう. このポリシーを用 いるべきリストア作業を, 通常の作業(おそらく既存のポリシーを使用 したほうが良いでしょう)を区別するには, 10 秒間の間に作成されたディ レクトリを最大 10 個までまとめて単一のシリンダグループに書き込む という手順が使えるでしょう. とにかく私の結論は, そろそろ実験 を始めて見る時期だろうということです. カーネルパニックを最大限に利用する

[この節は, freebsd-current が投稿したメールを, が校正し,括弧内のコ メントを追加して引用したものです. ]

From: Bill Paul Subject: Re: the fs fun never stops To: ben@rosengart.com Date: Sun, 20 Sep 1998 15:22:50 -0400 (EDT) Cc: current@FreeBSD.ORG

[<ben@rosengart.com> が以下のパニックメッセージを 投稿しました.] > Fatal trap 12: page fault while in kernel mode > fault virtual address = 0x40 > fault code = supervisor read, page not present > instruction pointer = 0x8:0xf014a7e5 ^^^^^^^^^^ > stack pointer = 0x10:0xf4ed6f24 > frame pointer = 0x10:0xf4ed6f28 > code segment = base 0x0, limit 0xfffff, type 0x1b > = DPL 0, pres 1, def32 1, gran 1 > processor eflags = interrupt enabled, resume, IOPL = 0 > current process = 80 (mount) > interrupt mask = > trap number = 12 > panic: page fault

このようなメッセージが表示された場合, 問題が起きる状況を確認し て, 情報を送るだけでは十分ではありません. 下線をつけた命令ポインタ 値は重要な値ですが, 残念ながらこの値は構成に依存します. つまり, こ の値は使っているカーネルのイメージに依存するのです. もしスナップショッ トなどの GENERIC カーネルを使っているのであれば, 他の人間が問題の ある関数について追試をすることができますが, カスタマイズされたカー ネルの場合は, 使っている本人にしか問題の起こった場所は特定できない のです.

何をすれば良いのでしょう? 命令ポインタ値をメモします. システムがリブートしたら, 以下の操作を行います: % nm /kernel.that.caused.the.panic | grep f0xxxxxx ここで, % nm /kernel.that.caused.the.panic | grep f0xxxxx これでも一致しない場合は, 桁を減らしながら何らかの出力があるま で繰り返してください. 何か出力されたら, それがカーネルパニック を引き起こした可能性のある関数のリストです. これは, 問題点を見付ける 正確な方法ではありませんが, 何もないよりましです.

このようなパニックメッセージを投稿している人はよく見掛けますが, このように, 命令ポインタ値を, カーネルシンボルテーブルの中の関数 とつき合わせて調べている人はまれです.

パニックの原因を突き止める最良の方法は, クラッシュダンプをとり, どっちにしろ, 私は普通以下のようにします. カーネルコンフィグファイルを作ります. カーネルデバッガが 必要そうであれば options 'DDB' を加えても良いです(私は永久ルー プが起こっていそうな場合に, ブレークポイントを設定するのに使って います). cd /sys/compile/KERNELCONFIG; make カーネルのコンパイルが終了するのを待ちます. cp kernel / reboot

[注: 現在 FreeBSD 3.x kernel はデフォルトで ELF 形式となっており,

全てのデバッグシンボルを含んだカーネルを, 実際にブートする必要は ありません. 確実にクラッシュダンプをとるには, /etc/rc.conf を編 集して /etc/rc.conf で設定されていれ ば, /var/crash に保存します.

注: FreeBSD のクラッシュダンプのサイズは, ふつう物理メモリサ イズと同じです. つまり 64MB のメモリを積んでいれば, 64MB のクラッ シュ ダンプが生成されることになります. /var/crash に十 分な空き 容量があることを確認してください. 手動で クラッシュダンプを取り出せたら, 以下のように % gdb -k /sys/compile/KERNELCONFIG/kernel.debug /var/crash/vmcore.0 (gdb) where

必要な情報が 1 画面に収まらないことも多いので, できれば もしあなたがデバッグ狂で, 同時に別のコンピュータを利用できる 環境にあれば, [Bill による注: DDB を有効にしていてカーネルがデバッガに 落ちたら, ddb のプロンプトで 'panic' と入力すれば, 強制的にパニッ クを 起こしクラッシュダンプさせることができます. パニックの途中 で, 再び デバッガに落ちるかもしれませんが, 'continue' と入力すれ ば, クラッシュダンプを最後まで実行させられます.] dlsym() が ELF 実行形式では動作しなくなります!

ELF のツール類は, デフォルトでは実行形式の中に定義されている シンボルをダイナミックリンカから見えるようにはしません. このため, dlopen(NULL, flags) を呼び出して得られた ハンドルに対して dlsym() で探索を行っても, こういった シンボルを見つけられません.

もし, あなたがプロセスの中心にあたる実行形式の中にある シンボルを探索したければ, -export-dynamic オプションを 付けて実行形式をリンクする必要があります. カーネルアドレス空間を大きくしたり、小さくするにはどうしたら良いのですか?

カーネルアドレス空間は, FreeBSD 3.x 上で 256MB, FreeBSD 4.x 上で 1GB がデフォルトになっています. 負荷の高いネットワークサーバ(例えば大きな FTP, HTTP サーバ)を運用する場合は, 256MB では足りないことに気付くかも知れません.

では, アドレス空間を大きくするにはどうしたら良いのでしょうか? それには, 二つの段階を踏みます. まず, より大きいアドレス空間を割り当てることをカーネルに知らせる必要があります. 次に, カーネルはアドレス空間の先頭にロードされるため, アドレスの先頭が天井(訳注:カーネルアドレス空間の最下端アドレスのこと)と ぶつかることのないように, ロードアドレスを今までより低位に設定する必要があります.

最初の段階は, src/sys/i386/include/pmap.h にある #ifndef NKPDE #ifdef SMP #define NKPDE 254 /* addressable number of page tables/pde's */ #else #define NKPDE 255 /* addressable number of page tables/pde's */ #endif /* SMP */ #endif

正確な 次の段階を行なうには, ロードアドレスを正確に計算することが必要です. 単純に, アドレス空間の大きさ(バイト単位)を 0x100100000 から引き算して下さい. 1GB アドレス空間の場合, その結果は 0xc0100000 になります. そして, src/sys/i386/conf/Makefile.i386 にある src/sys/i386/conf/kernel.script のセクションの始めの方にある ロケーションカウンタにも同じ値を入れて下さい. OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(btext) SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/obj/elf/home/src/tmp/usr/i386-unknown-freebsdelf/lib); SECTIONS { /* Read-only sections, merged into text segment: */ . = 0xc0100000 + SIZEOF_HEADERS; .interp : { *(.interp) }

それが完了したら, config し直してカーネルを再構築して下さい. おそらく, /usr/include/vm/ にコピーした後に, 注意: カーネルアドレス空間の大きさは, 4 メガバイトの倍数である必要があります.

[ による補足: カーネルアドレス空間は 2 の乗数である必要があると思いますが, それが確かなことかどうかははっきりしていません. 昔の起動コードには, 良く高位アドレスビットのトリックが使われていたため, 少なくとも 256MB の粒度であることが想定されていたと思います.] diff --git a/ja_JP.eucJP/FAQ/hardware.sgml b/ja_JP.eucJP/FAQ/hardware.sgml index af0024e4d8..c40a6d2bf3 100644 --- a/ja_JP.eucJP/FAQ/hardware.sgml +++ b/ja_JP.eucJP/FAQ/hardware.sgml @@ -1,436 +1,436 @@ - + - + ハードウェアコンパチビリティ

訳: &a.nishika;.12 November 1997. FreeBSD は, どんなハードディスクドライブをサポートしているのですか?

FreeBSD は, EIDE と SCSI ハードディスクドライブをサポート しています (互換コントローラも含みます: 次の節参照). また オリジナルの "Western Digital" インタフェースを使用している すべてのドライブも (MFM, RLL, ESDI, もちろん IDE も) サポートしています. 独自仕様のインタフェースを使用する ESDI コントローラでは動作しないものがあり, WD1002/3/6/7 とその互換インタフェースと衝突します. どの SCSI コントローラをサポートしているのですか? -

に記されている完全なリストを参照 してください. どんな CD-ROM ドライブをサポートしているのですか?

サポートされている SCSI コントローラに接続できる SCSI ドライブすべてをサポートしています.

また, 以下の専用 CD-ROM インタフェースもサポートしています. ミツミ LU002 (8bit), LU005 (16bit) および FX001D (16bit 2倍速). ソニー CDU 31/33A Sound Blaster 非 SCSI タイプの CD-ROM 松下 / Panasonic CD-ROM ATAPI 互換の IDE CD-ROM

SCSI でないカードはすべて, SCSI ドライブよりも極めて動作速度が 遅いことが知られており, ATAPI CD-ROM には動作しないものもあるようです.

Walnut Creek の FreeBSD 2.2 CD-ROM からは CD からの直接ブートが サポートされています. ZIP ドライブをサポートしていますか?

もちろん, FreeBSD は SCSI ZIP ドライブ (外付け) をサポートしています. ZIP ドライブは SCSI ID を 5 か 6 に設定した状態でなら使用できますが, もし SCSI ホストアダプタの BIOS がサポートしてさえいれば ZIP ドライブからブートさせることもできます. 私はどのホストアダプタが SCSI ID を 0 や 1 以外に設定したデバイスからブートできるのか知りませんが... ドキュメントを参照してください (うまくいった場合は教えてください).

ATAPI (IDE) ZIP ドライブが, FreeBSD 2.2.6 以降のバージョンでは サポートされています.

FreeBSD 3.0-STABLE では, パラレル ZIP ドライブをサポートする ようになりました. とはいえ, この ZIP を使うには, ppbus (パラレル ポートバス) のサポートのために新しいカーネルを構築する必要があります. LINT コンフィグレーションファイル中のサンプルを参照して下さい.

それから および についても 確認しておいてください. では, JAZ や EZ, それからその他のリムーバブルドライブはサポートしていますか?

FreeBSD では, IDE バージョンの EZ ドライブを除くすべての SCSI デバイスは, SCSI のディスクと同等に扱われます. また IDE EZ は IDE ドライブと同等となります.

も参照. どのマルチポートシリアルカードをサポートしていますか?

一覧は - の節にあります.

無名のカードにもうまく動くものがあり, 特に AST 互換といわれているものに多く見られます.

カード設定の詳細な情報は, オンラインマニュアルを参照してください. 珍しいバスマウスを持っているのですが, どのように設定すればいいのですか?

FreeBSD は Microsoft, Logitech, ATI 等のメーカーから出ているバスマウス と InPort バスマウスをサポートしています. バスマウスのデバイスドライバ は GENERIC カーネルに標準で含まれています. もしバスマウスのデバイス ドライバを含むカーネルを自分で構築する場合には, カーネルコンフィグレーションファイルに以下の行を忘れずに加えて下さい. device mse0 at isa? port 0x23c tty irq5 vector mseintr

通常バスマウスには専用のインタフェースカードが附属しています. インタフェースカードによってはポートアドレスや割り込み番号を上記の 設定以外に変更できるかもしれません. 詳しくはバスマウスのマニュアルと オンラインマニュアルを参照してください. PS/2 マウス(マウスポートマウス, キーボードマウス) を使うには, どのように設定すればいいのですか?

あなたが 2.2.5 以降のバージョン FreeBSD を使っているのなら, 必要なドライバの psm はカーネルに含まれていて有効になっています. カーネルはブート時に PS/2 マウスを検出するでしょう.

あなたの使っている FreeBSD が比較的新しいけれど前のバージョン (2.1.x 以降) のものなら, インストールの時に, 単にカーネルのコンフィグレーションのメニュー上で PS/2 マウスを有効化するだけです, あるいは後で boot: プロンプト上で -c を指定することでもメニューは現れます. デフォルトでは無効に設定されていますので, 明示的に 有効化してあげないといけません.

あなたの使っている FreeBSD が比較的古いものなら, カーネルコンフィグレーションファイルに以下の行を加えて カーネルを再コンパイルする必要があります. device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr

カーネルの再構築についてよく知らないのであれば, を参照してください.

ブート時にカーネルが psm0 を検出したら, psm0 のエントリが /dev の中にあることを確認してください. 以下のようにします. cd /dev; sh MAKEDEV psm0

これは root でログインしているときにおこなってください. X Window System 以外の環境でマウスを使うことは可能ですか?

もしデフォルトのコンソールドライバである syscons を使っているので あれば, テキストコンソール上でマウスを使ってテキストのカットアンド ペーストができます. マウスデーモンである moused を起動し, 仮想コンソール でマウスポインタを有効にして下さい. moused -p /dev/xxxx -t yyyy vidcontrol -m on

ここで xxxx はマウスのデバイス名, yyyy はマウスの プロトコルタイプです. サポートされているプロトコルタイプについては オンラインマニュアルを参照してください.

システムを起動する時に自動的に moused を起動したい場合には, FreeBSD 2.2.1 では以下の変数を /etc/sysconfig で設定して下さい. mousedtype="yyyy" mousedport="xxxx" mousedflags="" FreeBSD 2.2.2 以降のバージョンでは /etc/rc.conf で以下のように 設定して下さい. moused_type="yyyy" moused_port="xxxx" moused_flags=""

FreeBSD 2.2.6 以降では, マウスデーモンは比較的古いシリアルマウス でない限りマウスのプロトコルタイプを自動判別できます. プロトコルタイプ として ``auto'' を指定すると自動判別を行なおうとします.

マウスデーモンを実行中は, マウスデーモンと他のプログラム, 例えば X Window System, の間でマウスへのアクセスを調整しなければなりません. この問題に ついては を御覧下さい. テキストコンソールでマウスを使ってテキストのカットアンドペーストをするにはどうしたらよいのですか?

マウスデーモンを起動したあと ( を参照して下さい), ボタン1 (左ボタン)を押しながらマウスを動かして範囲を指定して下さい. ボタン2 (中ボタン)またはボタン3 (右ボタン)をクリックするとテキスト カーソルの位置に選択した範囲のテキストがペーストされます.

FreeBSD 2.2.6 以降ではボタン2 をクリックするとペーストされ, ボタン3 をクリックした場合には既存の選択範囲が現在のマウスポインタの位置まで 延長または短縮されます. もしマウスに中ボタンがないなら, moused の オプションを使って中ボタンのエミュレーションをするか, 他のボタンを 中ボタンとして使う事ができます. 詳しくは オンラインマニュアルを参照してください. 私のマウスには可愛いホイールやボタンがついているのですが, これは FreeBSD では使えるのですか?

答えは残念ながら「場合によります」です. こうしたマウスの付加的な機能は 大抵の場合特殊なドライバを必要とします. マウスのデバイスドライバや ユーザのプログラムがそのマウスに対する固有のサポートをしていない場合には 標準的な 2ボタンまたは 3ボタンマウスのように振舞います. ラップトップ PC のマウス/トラックボール/タッチパッドは使えますか?

を参照してください. 加えて, にあるモーバイルコンピューティングの ページもご覧ください. どんなテープドライブをサポートしていますか?

FreeBSD は SCSI, QIC-36 (QIC-02 インタフェース付き) および QIC-40/80 (フロッピーベース) テープドライブをサポートしています. これらには 8-mm (Exabyte と呼ばれています) や DAT ドライブも含まれています. QIC-40/80 ドライブは遅いことが知られています.

初期の 8-mm ドライブの中には SCSI-2 とまったく互換性を持たないものがあります. これらは FreeBSD 上では動作しません. どんなテープチェンジャーをサポートしていますか?

FreeBSD 2.2 は デバイスと コマンドを使用した SCSI チェンジャーをサポートしています. 実際のチェンジャーの制御方法の詳細は, のマニュアルページにあります.

使用している製品が, などのようにチェンジャーに対応済みのものでない場合は, 次のことについて留意してください. それらの製品は任意のポイント間のテープの移動を制御するだけなので, テープがどのスロットに入っているか, 現在ドライブにあるテープが どのスロットに戻るべきかを把握しておく必要があります. どんなサウンドカードをサポートしていますか?

FreeBSD は SoundBlaster, SoundBlaster Pro, SoundBlaster 16, Pro Audio Spectrum 16, AdLib それから Gravis UltraSound サウンドカードを サポートしています. MPU-401 やその互換カードも機能に制限はあるものの サポートされています. マイクロソフトサウンドシステムのスペックに準拠 したカードも, pcm ドライバでサポートされています.

どんなネットワークカードをサポートしていますか? -

より完全な一覧については より完全な一覧については の節を参照してください. 数値演算コプロセッサを持っていません - 何かまずいでしょうか?

一般にこれらは問題とはなりません. しかし, 数値演算エミュレーションコードの パフォーマンスか正確さのいずれかを選択する状況があります. ( についての節をご覧ください). とくに, X 上で弧を描く際にとても遅くなることでしょう. 数値演算コプロセッサを購入されることを強くおすすめします. とても役立つことでしょう.

2.x で, 他にどのドライバがサポートされていますか? -

+

に記されている, サポートされている他のデバイスの一覧を参照して下さい. パワーマネージメント機能付きのラップトップ PC を持っています.

FreeBSD は一部のマシンの APM をサポートしています. の部分をご覧ください. 特定のハードウェアに関する問題の回避について.

この節には, ユーザが見つけた特定のハードウェアに関する問題の 回避について記されています. Micron システムがブート時に固まってしまいます.

特定の Micron 製のマザーボードの中には, PCI BIOS が規格通りに 実装されていないために FreeBSD の起動に失敗するものがあります. その BIOS は, PCI デバイスをあるアドレスで設定したと報告するにも 関わらず, 実際にはそうしていないのです.

この問題を回避するには, BIOS の ``Plug and Play Operating System'' を無効に設定して下さい. より詳しい情報は を御覧下さい. 新しい Adaptec コントローラを持っているのですが, FreeBSD が検出できないようです.

新しい AIC789x シリーズの Adaptec チップは, 3.0 でデビューした CAM SCSI フレームワークでサポートされています. 2.2-STABLE のパッチは にあります. CAM システムが 入っている高機能ブートフロッピーは にあります. どちらの場合に しても, 作業を始める前に README をお読み下さい.

内蔵の Plug & Play モデムを持っているのですが, FreeBSD が検出できないようです.

モデムの PnP ID を シリアルドライバの PnP ID リストに追加する必要が あるでしょう. Plug & Play サポートを有効にするには, /sys/i386/isa/sio.c の 1200 行目くらいにあるテーブルに書き入れて下さい. テーブルを見つけるには, 構造体 ``siopnp_ids[]'' の文字列 ``SUP1310'' を探すようにして下さい. カーネルを作り直したら, インストールし, リブートして下さい. モデムが検出 されるはずです.

起動時のコンフィグレーションの際に, `pnp' コマンドを使用して PnP の 設定をマニュアルで行なわなければならないかもしれません. その場合, モデムを 検出させるためのコマンドは pnp 1 0 enable os irq0 3 drq0 0 port0 0x2f8 のようになります.

シリアルコンソールで boot: プロンプトを表示するにはどうすればいい?

そして /boot.config を作成して その後, キーボードをシステムから抜いて下さい.

/usr/src/sys/i386/boot/biosboot/README.serial にこの情報が 記されています.

なぜ Micron コンピュータで 3Com PCI ネットワークカードが動かないのでしょう?

特定の Micron 製のマザーボードの中には, PCI BIOS が規格通りに 実装されていないために FreeBSD の起動に失敗するものがあります. その BIOS は, PCI デバイスをあるアドレスで設定したと報告するにも 関わらず, 実際にはそうしていないのです.

この問題を回避するには, BIOS の ``Plug and Play Operating System'' を無効に設定して下さい.

この問題についてのより詳しい情報は を御覧下さい. 対称型マルチプロセッシング (SMP) をサポートしていますか?

SMP は 3.0-STABLE と以後のリリースでしかサポートされていません. diff --git a/ja_JP.eucJP/FAQ/install.sgml b/ja_JP.eucJP/FAQ/install.sgml index 2d466def94..aa4f7c140d 100644 --- a/ja_JP.eucJP/FAQ/install.sgml +++ b/ja_JP.eucJP/FAQ/install.sgml @@ -1,735 +1,738 @@ - + - + インストール

訳: &a.iwasaki; &a.murata; .8 November 1997. FreeBSD を入手するにはどのファイルをダウンロードすればいいですか?

通常は floppies/boot.flp というファイルの フロッピーディスクイメージが一つだけ必要になります. 1.44MB の フロッピーディスクに書き込み, そこからブートしてその他のファイル群を ダウンロードします (インストールプログラムが TCP/IP 接続, テープ, CD-ROM, フロッピーディスク, DOS パーティションなど, インストールに必要なもの すべてに関する処理を担当します).

自分で配布ファイルをダウンロードする必要がある場合 (たとえば DOS ファイルシステムからのインストールなど), おすすめの配布ファイル構成は 以下の通りです. bin/ manpages/ compat*/ doc/ src/ssys.*

この手続きの完全な説明と, 一般的なインストール時の問題については を参照してください. ブートフロッピーイメージが一枚のフロッピーディスクに納まらないみたい!

3.5 インチ (1.44MB) のフロッピーディスクには 1474560 バイトのデータを 格納できます. ブートイメージはちょうど 1474560 バイトの大きさです.

ブートフロッピーディスクを準備する際のよくある間違いには 以下のものがあります. FTP によってフロッピーイメージをダウンロードする際に, binary モードにしていなかった.

FTP クライアントの中には転送モードのデフォルトを ascii モードにしてクライアント側システムの慣習にあうようにすべての行末の 文字を変更するものがあります. この場合は常にブートイメージが 壊れたものになります. ダウンロードしたブートイメージのサイズを チェックしてください. サーバ上のものと 正確に 同じでない場合, ダウンロードの処理を疑いましょう.

これを回避するには, サーバに接続してイメージのダウンロードを 開始する前に, FTP のコマンドプロンプトで binary とタイプします. ブートイメージを DOS の copy コマンド (または GUI の同等のツール) でフロッピーディスクへ転送した.

copy のようなプログラムは, 直接起動するように作成された ブートイメージに関してはうまく処理できません. イメージにはフロッピーディスクの完全な中身がトラック単位で 格納されており, フロッピーディスク上に通常のファイルとして 格納されるようには想定されていません. に記述されているように, ローレベルのツール (例 fdimage または rawrite) を使用して ``raw'' の状態でフロッピーディスクに 転送する必要があります. FreeBSD のインストールについての説明書はどこにありますか?

インストールの説明書は次のところにあります. FreeBSD を動作させるには何が必要ですか?

386 以上の PC, 5MB 以上の RAM, そして最低 60MB の ハードディスク容量が必要となります. ローエンドの MDA カード でも動作しますが, X11R6 を使うには VGA かそれ以上のビデオカード が必要となります.

の節も併せてご覧ください. 4 MB しかメモリがないのですが, インストールできますか?

4MB のシステムにインストールできた FreeBSD の最新版は FreeBSD 2.1.7 でした. 2.2 のように, 2.2 などのより新しいバージョンの FreeBSD は新規のインストールに最低 5MB は必要になります.

インストールプログラムが 4MB では動作しないだけで, 3.0 を含む FreeBSD のすべてのバージョンは 4MB の RAM で動作可能です. インストールする時だけさらに 4MB 追加しておき, システムが セットアップされて動作するようになった後に, また 4MBを取り出して もとに戻すこともできます. あるいは 4MB より多くメモリを搭載 したシステムにディスクを持っていき, そのマシンでインストール した後にディスクを戻すこともできます.

また, FreeBSD 2.1.7 でも 4MB ではインストールできない場合も あります. 正確には, 640KB のベースメモリ + 3MB の拡張メモリ ではインストールはできません. もしマシンのマザーボードが 640KB から 1MB の領域で「失われた」メモリを再マップできる 場合は, FreeBSD 2.1.7 をインストールできるかもしれません.

BIOS のセットアップ画面で, `remap' のオプションを探して 有効 (Enable) にしてみてください. また, ROM shadowing を無効 (Disable) にしておかなくてはなりません.

簡単なやり方としては, インストールする時だけあと 4MB 追加 しておく方法があります. 必要なオプションだけを選択して カスタムカーネルを構築し, また 4MB を取り出してもとに戻せば いいのです.

また, 2.0.5 をインストールして, それから 2.1.7 のインストーラ の ``upgrade'' オプションでシステムを 2.1.7 へアップグレード するというやり方もあります.

インストールしたあとでカスタムカーネルの構築をした場合, 4MB でも動作します. 2MBでブートに成功した人もいます. (でもその システムはほとんど使いものになりませんでした :-)) 自分用のインストールフロッピーを作るには?

現在はカスタムインストールフロッピーディスク「だけ」を作る方法はありません. カスタムインストールフロッピーディスクイメージを含む, release 環境全体を 新たに作る必要があります. /usr/src/release/floppies/Makefile にあるコードでフロッピーディスクイメージ「だけ」を作れるはずですが, まだ完全なものにはなっていません.

カスタムの release 環境をつくるには の指示にしたがってください. 自分の PC に複数のオペレーティングシステムを入れるには?

をご覧ください. 同じマシンで Windows 95 と共存できますか?

まず Windows 95 をインストールして, そのあとで FreeBSD を インストールしてください. FreeBSD のブートマネージャが Win95 と FreeBSD のブート管理をしてくれるようになります. Windows 95 を後にインストールした場合はひどいことに, 問い合わせることもなくブートマネージャを上書きしてしまいます. そうなってしまった場合は次の節をご覧ください. Windows 95 がブートマネージャを潰しちゃった! どうやって戻すの?

ブートマネージャの再インストールの方法として, FreeBSD では 以下に示す二通りの方法が用意されています: DOS を起動し, FreeBSD の配布物の中にある tools/ ディレクトリ へ移動し, bootinst.exe を探してみてください. そして次のように実行してください:

bootinst.exe boot.bin

ブートマネージャが再インストールされます. FreeBSD のブートフロッピーディスクから起動し, 「カスタム」 インストールメニューを選択し, 続いて「パーティション」を 選択します. ブートマネージャがインストールされていたドライブ (多分最初のもの) を選択し, パーティションエディタにたどり着いたら, (何も変更せず) そのまま (W)rite を指定します. 確認のメッセージ が出ますので「はい」と答え, ブートマネージャ選択の画面で確実に "Boot Manager" を選択します. これでブートマネージャがディスクに再び書き込まれます. インストールメニューから抜けてリブートするとハードディスクは 元通りになります. 不良ブロックのあるディスクにインストールできますか?

FreeBSD の不良ブロックの扱い ( コマンド) は, (ひいき目に見ても) 100% 完全ではなく, 残念ながら 多数の不良ブロックのある IDE や ESDI ドライブは FreeBSD では使用できないと言わざるをえません! でも, 非常に多くの IDE ベースのシステムで動作しているようですので, 簡単にあきらめて しまう前にとりあえず試してみましょう.

不良ブロックのある SCSI ドライブの場合は, を参照してください. インストーラからブートしたら変なことになりました!

インストーラからブートしようとしたときに, マシンが固まってし まうとか自然とリブートしてしまうといった現象であれば, 次の三つの項目を確認してください:- 新品の, フォーマットしたての, エラーフリーの フロッピーディスクを使っていますか? (三年間もベッドの下に 放置されていた雑誌の付録みたいなやつではなくて, 買ってきたばかりの新品が好ましいですね) フロッピーイメージをバイナリモードでダウンロード しましたか? (困った顔をしないでください. 私たちの中 で一番優秀な人でさえ, 少なくとも一回はバイナリファイルを ASCII モードで思いがけずダウンロードしたことがあるのです!) Windows95 や Windows NT のような最近ご流行の オペレーティングシステムを使用している場合, システムを シャットダウンしてありのままの本物の DOS を再起動 しましたか? これらの OS は, ディスク作成プログラム のようなハードウェアに直接書き込みをおこなうプログラムに 干渉できます: GUI の中の DOS シェル内部で動作している 場合でも, この問題は発生します.

また, Netscape でブートイメージをダウンロードする場合も問題 があることが報告されていますので, できれば別の FTP クライアント を使うのがよいでしょう. あれ! テープからインストールできません!

2.1.7R をテープからインストールする場合, tar ブロックサイズ を 10 (5120 バイト) にしたテープを作る必要があります. デフォルト の tar ブロックサイズは 20 (10240 バイト) で, このデフォルトサイズで作られたテープでは 2.1.7R を インストールすることはできません. もしこうしたテープを使うと, レコードサイズが大き過ぎるというエラーが起きることになります. パラレルライン (PLIP) 経由でふたつの FreeBSD box を接続したい

Laplink パラレルケーブルを用意してください. 両方の PC の kernel に lpt ドライバが組み込まれていることを確認してください. $ dmesg | grep lp lpt0 at 0x378-0x37f irq 7 on isa lpt0: Interrupt-driven port lp0: TCP/IP capable interface

パラレルインタフェースに Laplink パラレルケーブルを接続します.

root になって両方で lp0 のネットワークインタフェースパラメータを設定します. 例えば, ホスト max と moritz を接続したい場合, max <-----> moritz IP Address 10.0.0.1 10.0.0.2 max 側で次のようにして # ifconfig lp0 10.0.0.1 10.0.0.2 moritz 側でも # ifconfig lp0 10.0.0.2 10.0.0.1 のようにします. -

以上です! lp(4) と lpt(4) のマニュアルページも参照してください. +

以上です! + と + + のマニュアルページも参照してください.

また, /etc/hosts にホストの追加もしましょう. 127.0.0.1 localhost.my.domain localhost 10.0.0.1 max.my.domain max 10.0.0.2 moritz.my.domain moritz

動作確認は次のようにします: max 側: $ ifconfig lp0 lp0: flags=8851 mtu 1500 inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000 $ netstat -r Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire moritz max UH 4 127592 lp0 $ ping -c 4 moritz PING moritz (10.0.0.2): 56 data bytes 64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms 64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms 64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms 64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms --- moritz ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms ラップトップ PC に PLIP (パラレルライン IP) 経由でインストールできますか?

次のようにして二つのコンピュータを Laplink パラレルケーブル を通して接続してください: +----------------------------------------+ |A-name A-End B-End Descr. Port/Bit | +----------------------------------------+ |DATA0 2 15 Data 0/0x01 | |-ERROR 15 2 1/0x08 | +----------------------------------------+ |DATA1 3 13 Data 0/0x02 | |+SLCT 13 3 1/0x10 | +----------------------------------------+ |DATA2 4 12 Data 0/0x04 | |+PE 12 4 1/0x20 | +----------------------------------------+ |DATA3 5 10 Strobe 0/0x08 | |-ACK 10 5 1/0x40 | +----------------------------------------+ |DATA4 6 11 Data 0/0x10 | |BUSY 11 6 1/0x80 | +----------------------------------------+ |GND 18-25 18-25 GND - | +----------------------------------------+

また, Mobile Computing についての ページもご覧ください. ハードディスクドライブには, どのジオメトリを使うべきでしょうか?

(ここでディスクの「ジオメトリ」とは, ディスクのシリンダ, ヘッダ, トラック当りのセクタの数を意味しています - 便宜上, C/H/S とすることにします. これはディスクのどの領域で読み書きを おこなうかを PC の BIOS が決定する手段となります.)

これについてはある理由のために, 誤解されている点が多いようです. まず最初に, FreeBSD はディスクブロックで動作しているため, SCSI ドライブのすべての問題はSCSI ディスクでは, 使用するジオメトリはコントローラの拡張 BIOS トランスレーションが有効になっているかどうかによります (``>1GB の DOS ディスクドライブのサポート'' とも呼ばれます). 無効になっている場合, N シリンダ, 64 ヘッド, 32 セクタ/トラック を使用しますが, ここで `N' は MB 単位のディスク容量です. 例えば, 2GB ディスクは見かけ上 2048 シリンダ, 64 ヘッド, 32 セクタ/トラックとなります.

それが「有効」になっており (MS-DOS ではこの方法で, ある制限 を回避する場合もあります), ディスク容量が 1GB を越える場合は, M シリンダ, 63 セクタ/トラック (64 「ではなく」), 255 ヘッド を使用します. `M' は MB 単位のディスク容量を 7.844238 (!) で割った値となります. ということで, 2GB ディスクの例では, 261 シリンダ, 63 セクタ/トラック, 255 ヘッドとなります. (訳注: 以上は Adaptec 社と NCR 社製の SCSI アダプタの場合です. SCSI アダプタによって変換の数値が変わってくるのでマニュアルを 参照してください.)

これについてよく分からない場合や FreeBSD がインストール中に 正しくジオメトリを取得できない場合, これを回避するもっとも 簡単な方法はディスクに小さな DOS パーティションを作ることです. そうすると正しいジオメトリが取得されるはずです (そして, 残しておきたくないとかネットワークカードのプログラミング用に 使いたい場合などには, いつでもパーティションエディタで DOS パーティションを削除することができます).

もう一つの方法として, FreeBSDと一緒にに配布されているフリー で使えるユーティリティに ``toolsディレクトリかいろいろな FTP サイトにあります) と呼ばれるものがあり, ディスク上の他のオペレーティングシステム が使用しているジオメトリを調べるのに役立ちます. そして, この ジオメトリ情報をパーティションエディタに入力することができます. ディスクの分割の仕方で何か制限はありますか?

はい. BIOS がカーネルをブートできるようにルートパーティションが 1024 シリンダ以内にあることを確認する必要があります (これは FreeBSD ではなく PC の BIOS の制限です).

SCSI ドライブでは, 通常はルートパーティションが最初の 1024MB に収まっていることが前提となります (または拡張 BIOS トランスレーション が有効になっている場合は最初の 4096MB - 他の質問をご覧ください). IDE でそれに相当する値は 504MB となります. (訳注: E-IDE 対応の BIOS 搭載マシンの場合は IDE の 504MB という 制限はありません.) 大容量ディスクを持っていますが, ディスクマネージャは使えますか?

FreeBSD は Ontrack Disk Manager を認識し, これを考慮にいれます. 他のディスクマネージャはサポートしません.

ディスク全体を FreeBSD で使いたい場合は, ディスクマネージャ は必要ありません. BIOS が扱える容量いっぱいで (通常は 504MB) ディスクの設定をおこなうと, FreeBSD は実際の容量を算出する はずです. MFM コントローラ付きの古いディスクを使っている場合は, FreeBSD に使用するシリンダ数を詳細に指定する必要があります.

FreeBSD と他のオペレーティングシステムが入っているディスクを 使用したい場合は, ディスクマネージャなしでもできるでしょう: FreeBSD のブートパーティションと他のオペレーティングシステム 用のスライスが最初の 1024 シリンダ内に収まっている事を確認 するだけです. 気になる方は, ブートパーティションを 20 メガバイト ぐらいにして大きめにするととよいでしょう. FreeBSD のブート時に ``Missing Operationg System'' と表示されます

これは FreeBSD や DOS, そのほかの OS がディスク領域 のとらえ方で衝突 しあっていることから起こる典型的な例です. こうなったら FreeBSD をインストールし直す以外にはありませんが, 他のところで説明した手順にしたがってやれば, ほぼ間違いなくうまくいくはずです. ブートマネージャの `F?' プロンプトが表示されません.

これはすでに前に質問されている問題のもう一つの症状です. BIOS のジオメトリと FreeBSD のジオメトリ設定が一致していないのです! コントローラや BIOS がシリンダの変換 (``>1GB ドライブの サポート'' とも呼ばれます) をサポートしていたら, その設定を無効化して FreeBSD をインストールし直してみてください. 16MB を越えるメモリを搭載していますが, 何か問題が起こりますか?

性能問題以外は無しです. FreeBSD 2.X は bounce-buffer をサポートしており, バスマスタリングコントローラは 16MB より上のメモリ領域に アクセスできます. (ISA デバイスを使用している場合のみ必要 となりますが, 一部の EISA と VLB デバイスでも必要な場合 があります.)

また, もっと多くのメモリを搭載している場合, Compaq や利用可能な メモリサイズを正しく報告しない他の BIOS を使用している場合は, の節をご覧ください. ソースを全部インストールする必要はありますか?

一般的には「いいえ」です. しかし最低でも, `` を実行する時は例外です. カーネルのソースをインストールしなくてもよい例として, どこか 別の場所からカーネルのソースを読み込み専用で NFS マウントする 事ができ, またそこから新しいバイナリを作成できるようになって います. (カーネルソースの制限があるので, 直接 /usr/src を マウントする事はおすすめできません. それよりもどこか別の ディレクトリにマウントして, ソースツリーの複製ができるように 適切にシンボリックリンクを張ってください.)

ソースをネットワーク上に持ち, そこからシステムをビルド するようにしておけば, FreeBSD の将来のリリースへのアップグレード がずっと簡単になります.

実際にソースのサブセットを選択するには, システムインストール ツールの「配布ファイル」メニューにある「カスタム」メニュー を使用します. また, src/install.sh スクリプトでも 与える引数によってソース配布ファイルの一部分をインストールできます. カーネルは作り直さなくちゃならないんですか?

カーネルを新しく作り直すのは元々 FreeBSD のインストール時に どうしても必要なことでした. でも最近のリリースでは, とても ユーザフレンドリなカーネル設定ツールの恩恵を受けています. FreeBSD のブートプロンプト (boot:) で "-c" と打てば ビジュアルな設定画面になり, ほとんどの一般的な ISA カードに ついてのカーネルの設定をすることができるのです.

今でも, 必要なデバイスドライバだけを組み込んだカーネルを 作ることはよい事とされています. ほんのちょっとだけメモリを 節約できますからね. でもほとんどのシステムでは, もはや どうしてもやらなくちゃならないことではないのです. アメリカ合衆国国外に住んでいますが, DES 暗号化ソフトウェアは使えますか?

DES スタイルの暗号化コードの使用が絶対避けられないものでない 場合は, DES 暗号化アルゴリズムを合法的に合衆国国外に持ち出す事 ができないため, 合衆国国外のユーザは合衆国の FTP サイト から該当するソフトウェア (しかし, これに代わる libcrypt が, オーストラリアの David Burren によって書かれたソースをベースに作られています. これは合衆国国外のいくつかの FTP ミラーサイトで公開されています. この制限の課せられていない libcrypt のソースと, それを 使ったプログラムのバイナリは, 以下の FTP サイトから入手する 事ができます: ftp://ftp.internat.freebsd.org/pub/FreeBSD ftp://storm.sea.uct.ac.za/pub/FreeBSD ftp://ftp.iqm.unicamp.br/pub/FreeBSD ftp://nic.funet.fi/pub/unix/FreeBSD/eurocrypt 訳注: 日本国内では以下のサイトにあります. ftp://jaz.jp.freebsd.org/pub/FreeBSD-internat

この合衆国国外向けの 合衆国国外のユーザは, お願いですからいかなる暗号化ソフトウェア も合衆国内からダウンロードしないでください. ダウンロードされた サイトの管理者は, 法律的にとても難しく困難な立場に立たされる 事になります.

合衆国以外向けの Kerberos も開発されつつあります. 現在の バージョンは anonymous FTP で braae.ru.ac.za から 入手できます.

また, 合衆国国外向けの暗号化ソフトウェアに関する議論のための もあります. より詳しい情報については, メールの本文に ``<majordomo@braae.ru.ac.za> まで送ってください. ブートフロッピーで起動すると, ``Probing Devices...'' の画面でハングアップします.

IDE Zip か Jaz ドライブが接続されていたら, それを取り外して もう一度試してみましょう. ブートフロッピーはこの種のドライブを誤認して しまうのです. システムがインストールされた後は, そのドライブを再度接続することができます. うまくいけばこの問題は将来のリリースで解決されるでしょう. インストール終了後にシステムをリブートすると, ``panic: cant mount root'' のエラーとなります.

このエラーはディスクデバイスについてブートブロックとカーネルの 認識が混乱しているために起こります. このエラーは通常 2 台の IDE ディスクがそれぞれ別の IDE コントローラのマスターかシングルデバイス として接続されているシステムにおいて, FreeBSD がセカンダリ IDE コントローラに接続されたディスクにインストールされている場合に発生します. ブートブロックは FreeBSD が wd1 (2 台目の BIOS ディスク) にインストール されていると認識するのに対し, カーネルは セカンダリ IDE の 1 台目の ハードディスクである wd2 にインストールされていると認識するのです. デバイスプローブの後で, カーネルはブートブロックがブートディスクだと 認識したディスクである wd1 を mount しようとします. 実際には ブートディスクは wd2 なので失敗してしまうのです.

この問題を解決するには, 以下のどれか一つを行ってください: Boot: プロンプトで, 1:wd(2,a)kernel と入力してエンターキーを押します. システムが起動したら, echo "1:wd(2,a)kernel" > /boot.config というコマンドを実行してこれをデフォルトのブート文字列とします. FreeBSD のディスクをプライマリ IDE コントローラに接続して, ハードディスクが連続したドライブ番号で認識されるようにします. カーネルのコンフィグレーションファイルで wd の行を以下のように 変更してから を行い, 新しいカーネルをインストールします. controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr disk wd0 at wdc0 drive 0 # disk wd1 at wdc0 drive 1 # この行をコメントアウト controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr disk wd1 at wdc1 drive 0 # wd2 から wd1 へ変更 disk wd2 at wdc1 drive 1 # wd3 から wd2 へ変更 ディスクの接続を変更して元の設定に戻したい場合は, ディスクを お望みの設定の通りの接続に戻してからリブートします. システムは正常に起動するはずです. メモリの大きさの制限は?

メモリは, (論理的な) 限界は 4 ギガバイトです. 1 ギガバイトのものは すでにテストがされています. 普通は i386 の PC ではそれ以上のメモリを サポートしているものを買うことはできません. ffs ファイルシステムの大きさの制限は?

ffs ファイルシステムは, 論理的な最大の上限は 8 テラバイト (2G ブロック) か, デフォルトのブロックサイズを 8K とすると 16 テラバイトとなります. 実際問題として, 1 テラバイトのソフトウェアの限界がありますが, 修正すれば 4 テラバイトのファイルシステムが可能です (実際に存在します).

一つの ffs のファイルの最大のサイズは, ブロックサイズが 4K の場合で 約 1 ギガブロック (4 テラバイト) です. maxfilesize ---------------------------------- 2.2.7 3.0 fs block size -stable -current works should-work ------------- ------- -------- ----- ----------- 4K 4T-1 4T-1 4T-1 4+T 8K 32+G 8T-1 32+G 16T-1 16K 128+G 16T-1 128+G 32T-1 32K 512+G 32T-1 512+G 64T-1 64K 2048+G 64T-1 2048+G 128T-1

fs ブロックサイズが 4K の場合は三重間接ブロックが使用され, いづれの場合でも三重間接ブロックを使用して表現できる最大の fs ブロック番号 (およそ 1K^3 + 1K^2 + 1K) に制限されるはずなのですが, 実際は fs ブロック番号の (間違った) 上限 1G-1 で制限されます. fs ブロック番号の制限は 2G-1 となるはずです. 2G-1 付近に fs ブロック番号のバグが多少ありますが, fs ブロックサイズが 4K の場合は, ここまでのブロック番号には到達しません.

ブロックサイズが 8K 以上の場合, いづれの場合も fs ブロック番号の 上限 2G-1 で制限されるはずですが, 実際は fs ブロック番号の上限 1G-1 で制限されます. 例外的に -stable では三重間接ブロックまでは 到達しないため, 制限は二重間接ブロックで表現できる最大の fs ブロック番号 (およそ (blocksize/4)^2 + (blocksize/4)) となります. -current ではこの制限を超えると問題を引き起こすかもしれません. 正しい制限値である 2G-1 ブロックを使用すると明らかに問題が出ます. フロッピーに 1 テラバイトのファイルを格納するには?

わたしのところではフロッピーにいくつかの実際のファイルを保存しています :-). 最大のファイルサイズは最大のディスクサイズとはあまり関係はありません. 最大のディスクサイズは 1TB です. ファイルサイズがディスクサイズより 大きくなりうるというのは仕様です.

以下の例は, 32K のディスク容量 (3 つの間接ブロックと 1 つのデータブロック) を使って, 小さなルートパーティションに 8T-1 の大きさのファイルを作成します. ここでの dd コマンドは 大きなファイルが扱えるものが必要です. ttyv0:bde@alphplex:/tmp/q> cat foo df . dd if=/dev/zero of=z bs=1 seek=`echo 2^43 - 2 | bc` count=1 ls -l z du z df . ttyv0:bde@alphplex:/tmp/q> sh foo Filesystem 1024-blocks Used Avail Capacity Mounted on /dev/sd0a 64479 27702 31619 47% / 1+0 records in 1+0 records out 1 bytes transferred in 0.000187 secs (5346 bytes/sec) -rw-r--r-- 1 bde bin 8796093022207 Sep 7 16:04 z 32 z Filesystem 1024-blocks Used Avail Capacity Mounted on /dev/sd0a 64479 27734 31587 47% / ttyv0:bde@alphplex:/tmp/q> exit

Bruce Evans, September 1998