訳: &a.iwasaki;. 現在, FreeBSD の
リリースを構築するには三つのことが必要です:
まず, 次に, CVS リポジトリ全体を手元においておく必要があります.
これを入手するには
そして 最後に, ビルド用にかなりの空き領域を用意する必要があります.
そのディレクトリを /some/big/filesystem として,
上の例で CVS リポジトリを /home/ncvs に置いたものとすると,
以下のようにしてリリースを構築します:
処理が終了すると, リリース全体が /some/big/filesystem/release
に構築され, 完全な FTP インストール用の配布物が
/some/big/filesystem/release/R/ftp に作成されます.
-current 以外の開発ブランチの SNAP を自分で構築したい場合は,
/usr/src/release/Makefile のいろいろなターゲットとして
インストールディスク, ソース, バイナリアーカイブを作る完全な処理を
自動的におこなうようになっています. Makefile に十分な情報があります.
しかし, 実行には ``make world'' が必要で,
多くの時間とディスクの容量が必要です.
ええ, それが一般的な考え方です. 名前が示しているように
``make world'' はすべてのシステムのバイナリを一から作り直しますので,
結果としてクリーンで一貫性のある環境を得ることができます
(これがそれだけ長い時間がかかる理由です).
環境変数 ${DESTDIR}を root とみなした
ディレクトリツリーにインストールされます.
あるでたらめな共有ライブラリの変更やプログラムの再構築によって
``
アダプテックの 1542 SCSI ホストアダプタはユーザがソフトウェア的に
バスアクセス速度の設定をおこなうことができます. 以前のバージョンの
1542 ドライバは使用可能な最大の速度を求めてアダプタを
その設定にしようとしました. これは特定のユーザのシステムでは
問題がある事がわかり, 現在ではカーネルコンフィグオプションに
``
はい, 比較的新しい BSDベースのシステムでは split に任意のバイト境界で
分割する ``以下は /usr/src/Makefile からの例です.
あなたのアイディアに感謝します!
要点は, ホストが認識されていないボードを探す時に, すべての
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/AXP (ALPHA) はこれらの成果としては
とても成功したものの一つです. FreeBSD/AXP は 3.0 スナップショット
リリースが現在 これは, 開発したドライバを公開するかどうかに依存します.
公開するのであれば, ドライバのソースコード, files.i386 の変更,
コンフィグファイルのサンプル, デバイスが使うスペシャルファイルを作成する
現在使われているディレクトリの配置ポリシーは, 私が 1983 年に書い
たものから全く変更されていません. 私は当初の配置ポリシーを, オリ
ジナルの fast filesystem のために書き, まったく改定していません.
このポリシーはシリンダグループを使い尽くすのを防ぐにはうまくいき
ましたが,お気づきの方もいる通り find の動作には不適切です. ほと
んどのファイルシステムの内容は, 深さ優先検索 (ftw とも呼ばれます)
によって作られたアーカイブからレストアして作成されます. この際,
ディレクトリは,シリンダグループにまたがって配置され, 以降の深さ
優先検索を行うには考え得る限り最悪の状態になります. もし作成する
ディレクトリの総数がわかっていれば, 解決方法はあります. (総数 /
シリンダグループ数)個のディレクトリをシリンダグループごとにまと
めて作成すれば良いのです. もちろん最適なディレクトリ配置になるよ
うに, 総数を予測する方法を考えなければなりません. しかし仮にシリ
ンダグループあたりのディレクトリ数を 10 くらいの小さな数に固定し
てしまったとしても, 大幅な改善が望めるでしょう. このポリシーを用
いるべきリストア作業を, 通常の作業(おそらく既存のポリシーを使用
したほうが良いでしょう)を区別するには, 10 秒間の間に作成されたディ
レクトリを最大 10 個までまとめて単一のシリンダグループに書き込む
という手順が使えるでしょう. とにかく私の結論は, そろそろ実験
を始めて見る時期だろうということです.
[この節は, freebsd-current に
[<ben@rosengart.com> が以下のパニックメッセージを
投稿しました.]
このようなメッセージが表示された場合, 問題が起きる状況を確認し
て, 情報を送るだけでは十分ではありません. 下線をつけた命令ポインタ
値は重要な値ですが, 残念ながらこの値は構成に依存します. つまり, こ
の値は使っているカーネルのイメージに依存するのです. もしスナップショッ
トなどの GENERIC カーネルを使っているのであれば, 他の人間が問題の
ある関数について追試をすることができますが, カスタマイズされたカー
ネルの場合は, 使っている本人にしか問題の起こった場所は特定できない
のです.
何をすれば良いのでしょう?
このようなパニックメッセージを投稿している人はよく見掛けますが,
このように, 命令ポインタ値を, カーネルシンボルテーブルの中の関数
とつき合わせて調べている人はまれです.
パニックの原因を突き止める最良の方法は, クラッシュダンプをとり,
どっちにしろ, 私は普通以下のようにします.
[注: 現在 FreeBSD 3.x kernel はデフォルトで ELF 形式となっており,
全てのデバッグシンボルを含んだカーネルを, 実際にブートする必要は
ありません. 確実にクラッシュダンプをとるには, /etc/rc.conf を編
集して /etc/rc.conf で設定されていれ ば, /var/crash に保存します.
注: FreeBSD のクラッシュダンプのサイズは, ふつう物理メモリサ
イズと同じです. つまり 64MB のメモリを積んでいれば, 64MB のクラッ
シュ ダンプが生成されることになります. /var/crash に十
分な空き 容量があることを確認してください. 手動で
クラッシュダンプを取り出せたら, 以下のように
必要な情報が 1 画面に収まらないことも多いので, できれば
もしあなたがデバッグ狂で, 同時に別のコンピュータを利用できる
環境にあれば, [Bill による注: DDB を有効にしていてカーネルがデバッガに
落ちたら, ddb のプロンプトで 'panic' と入力すれば, 強制的にパニッ
クを 起こしクラッシュダンプさせることができます. パニックの途中
で, 再び デバッガに落ちるかもしれませんが, 'continue' と入力すれ
ば, クラッシュダンプを最後まで実行させられます.]
ELF のツール類は, デフォルトでは実行形式の中に定義されている
シンボルをダイナミックリンカから見えるようにはしません.
このため, dlopen(NULL, flags) を呼び出して得られた
ハンドルに対して dlsym() で探索を行っても, こういった
シンボルを見つけられません.
もし, あなたがプロセスの中心にあたる実行形式の中にある
シンボルを探索したければ,
カーネルアドレス空間は, 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 のセクションの始めの方にある
ロケーションカウンタにも同じ値を入れて下さい.
それが完了したら, config し直してカーネルを再構築して下さい.
おそらく, /usr/include/vm/
にコピーした後に,
注意: カーネルアドレス空間の大きさは, 4 メガバイトの倍数である必要があります.
[
訳: &a.nishika;. FreeBSD は, EIDE と SCSI ハードディスクドライブをサポート
しています (互換コントローラも含みます: 次の節参照). また
オリジナルの "Western Digital" インタフェースを使用している
すべてのドライブも (MFM, RLL, ESDI, もちろん IDE も)
サポートしています. 独自仕様のインタフェースを使用する
ESDI コントローラでは動作しないものがあり, WD1002/3/6/7
とその互換インタフェースと衝突します.
サポートされている SCSI コントローラに接続できる SCSI
ドライブすべてをサポートしています.
また, 以下の専用 CD-ROM インタフェースもサポートしています.
SCSI でないカードはすべて, SCSI ドライブよりも極めて動作速度が
遅いことが知られており, ATAPI CD-ROM には動作しないものもあるようです.
Walnut Creek の FreeBSD 2.2 CD-ROM からは CD からの直接ブートが
サポートされています.
もちろん, 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 コンフィグレーションファイル中のサンプルを参照して下さい.
それから および
についても
確認しておいてください.
FreeBSD では, IDE バージョンの EZ ドライブを除くすべての SCSI デバイスは,
SCSI のディスクと同等に扱われます. また IDE EZ は IDE ドライブと同等となります.
訳: &a.iwasaki; 通常は floppies/boot.flp というファイルの
フロッピーディスクイメージが一つだけ必要になります. 1.44MB の
フロッピーディスクに書き込み, そこからブートしてその他のファイル群を
ダウンロードします (インストールプログラムが TCP/IP 接続, テープ, CD-ROM,
フロッピーディスク, DOS パーティションなど, インストールに必要なもの
すべてに関する処理を担当します).
自分で配布ファイルをダウンロードする必要がある場合 (たとえば DOS
ファイルシステムからのインストールなど), おすすめの配布ファイル構成は
以下の通りです.
この手続きの完全な説明と, 一般的なインストール時の問題については
3.5 インチ (1.44MB) のフロッピーディスクには 1474560 バイトのデータを
格納できます. ブートイメージはちょうど 1474560 バイトの大きさです.
ブートフロッピーディスクを準備する際のよくある間違いには
以下のものがあります.
FTP クライアントの中には転送モードのデフォルトを ascii
モードにしてクライアント側システムの慣習にあうようにすべての行末の
文字を変更するものがあります. この場合は常にブートイメージが
壊れたものになります. ダウンロードしたブートイメージのサイズを
チェックしてください. サーバ上のものと 正確に 同じでない場合,
ダウンロードの処理を疑いましょう.
これを回避するには, サーバに接続してイメージのダウンロードを
開始する前に, FTP のコマンドプロンプトで binary とタイプします.
copy のようなプログラムは, 直接起動するように作成された
ブートイメージに関してはうまく処理できません.
イメージにはフロッピーディスクの完全な中身がトラック単位で
格納されており, フロッピーディスク上に通常のファイルとして
格納されるようには想定されていません.
インストールの説明書は次のところにあります.
386 以上の PC, 5MB 以上の RAM, そして最低 60MB の
ハードディスク容量が必要となります. ローエンドの MDA カード
でも動作しますが, X11R6 を使うには VGA かそれ以上のビデオカード
が必要となります.
の節も併せてご覧ください.
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 環境をつくるには
の指示にしたがってください.
まず Windows 95 をインストールして, そのあとで FreeBSD を
インストールしてください. FreeBSD のブートマネージャが Win95
と FreeBSD のブート管理をしてくれるようになります.
Windows 95 を後にインストールした場合はひどいことに,
問い合わせることもなくブートマネージャを上書きしてしまいます.
そうなってしまった場合は次の節をご覧ください.
ブートマネージャの再インストールの方法として, FreeBSD では
以下に示す二通りの方法が用意されています:
ブートマネージャが再インストールされます.
FreeBSD の不良ブロックの扱い ( 不良ブロックのある SCSI ドライブの場合は,
を参照してください.
インストーラからブートしようとしたときに, マシンが固まってし
まうとか自然とリブートしてしまうといった現象であれば,
次の三つの項目を確認してください:-
また, Netscape でブートイメージをダウンロードする場合も問題
があることが報告されていますので, できれば別の FTP クライアント
を使うのがよいでしょう.
2.1.7R をテープからインストールする場合, tar ブロックサイズ
を 10 (5120 バイト) にしたテープを作る必要があります.
デフォルト の tar ブロックサイズは 20 (10240 バイト) で,
このデフォルトサイズで作られたテープでは 2.1.7R を
インストールすることはできません. もしこうしたテープを使うと,
レコードサイズが大き過ぎるというエラーが起きることになります.
Laplink パラレルケーブルを用意してください. 両方の PC の kernel に
lpt ドライバが組み込まれていることを確認してください.
パラレルインタフェースに Laplink パラレルケーブルを接続します.
root になって両方で lp0 のネットワークインタフェースパラメータを設定します.
例えば, ホスト max と moritz を接続したい場合,
以上です! lp(4) と lpt(4) のマニュアルページも参照してください.
+ 以上です!
+ また, /etc/hosts にホストの追加もしましょう.
動作確認は次のようにします:
max 側:
次のようにして二つのコンピュータを Laplink パラレルケーブル
を通して接続してください:
また, 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 や DOS, そのほかの OS がディスク領域
のとらえ方で衝突
しあっていることから起こる典型的な例です. こうなったら
FreeBSD をインストールし直す以外にはありませんが,
他のところで説明した手順にしたがってやれば,
ほぼ間違いなくうまくいくはずです.
これはすでに前に質問されている問題のもう一つの症状です. BIOS
のジオメトリと FreeBSD のジオメトリ設定が一致していないのです!
コントローラや BIOS がシリンダの変換 (``>1GB ドライブの
サポート'' とも呼ばれます) をサポートしていたら,
その設定を無効化して FreeBSD をインストールし直してみてください.
性能問題以外は無しです. FreeBSD 2.X は bounce-buffer をサポートしており,
バスマスタリングコントローラは 16MB より上のメモリ領域に
アクセスできます. (ISA デバイスを使用している場合のみ必要
となりますが, 一部の EISA と VLB デバイスでも必要な場合
があります.)
訳: &a.iwasaki;. 現在, FreeBSD の
リリースを構築するには三つのことが必要です:
まず, 次に, CVS リポジトリ全体を手元においておく必要があります.
これを入手するには
そして 最後に, ビルド用にかなりの空き領域を用意する必要があります.
そのディレクトリを /some/big/filesystem として,
上の例で CVS リポジトリを /home/ncvs に置いたものとすると,
以下のようにしてリリースを構築します:
処理が終了すると, リリース全体が /some/big/filesystem/release
に構築され, 完全な FTP インストール用の配布物が
/some/big/filesystem/release/R/ftp に作成されます.
-current 以外の開発ブランチの SNAP を自分で構築したい場合は,
/usr/src/release/Makefile のいろいろなターゲットとして
インストールディスク, ソース, バイナリアーカイブを作る完全な処理を
自動的におこなうようになっています. Makefile に十分な情報があります.
しかし, 実行には ``make world'' が必要で,
多くの時間とディスクの容量が必要です.
ええ, それが一般的な考え方です. 名前が示しているように
``make world'' はすべてのシステムのバイナリを一から作り直しますので,
結果としてクリーンで一貫性のある環境を得ることができます
(これがそれだけ長い時間がかかる理由です).
環境変数 ${DESTDIR}を root とみなした
ディレクトリツリーにインストールされます.
あるでたらめな共有ライブラリの変更やプログラムの再構築によって
``
アダプテックの 1542 SCSI ホストアダプタはユーザがソフトウェア的に
バスアクセス速度の設定をおこなうことができます. 以前のバージョンの
1542 ドライバは使用可能な最大の速度を求めてアダプタを
その設定にしようとしました. これは特定のユーザのシステムでは
問題がある事がわかり, 現在ではカーネルコンフィグオプションに
``
はい, 比較的新しい BSDベースのシステムでは split に任意のバイト境界で
分割する ``以下は /usr/src/Makefile からの例です.
あなたのアイディアに感謝します!
要点は, ホストが認識されていないボードを探す時に, すべての
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/AXP (ALPHA) はこれらの成果としては
とても成功したものの一つです. FreeBSD/AXP は 3.0 スナップショット
リリースが現在 これは, 開発したドライバを公開するかどうかに依存します.
公開するのであれば, ドライバのソースコード, files.i386 の変更,
コンフィグファイルのサンプル, デバイスが使うスペシャルファイルを作成する
現在使われているディレクトリの配置ポリシーは, 私が 1983 年に書い
たものから全く変更されていません. 私は当初の配置ポリシーを, オリ
ジナルの fast filesystem のために書き, まったく改定していません.
このポリシーはシリンダグループを使い尽くすのを防ぐにはうまくいき
ましたが,お気づきの方もいる通り find の動作には不適切です. ほと
んどのファイルシステムの内容は, 深さ優先検索 (ftw とも呼ばれます)
によって作られたアーカイブからレストアして作成されます. この際,
ディレクトリは,シリンダグループにまたがって配置され, 以降の深さ
優先検索を行うには考え得る限り最悪の状態になります. もし作成する
ディレクトリの総数がわかっていれば, 解決方法はあります. (総数 /
シリンダグループ数)個のディレクトリをシリンダグループごとにまと
めて作成すれば良いのです. もちろん最適なディレクトリ配置になるよ
うに, 総数を予測する方法を考えなければなりません. しかし仮にシリ
ンダグループあたりのディレクトリ数を 10 くらいの小さな数に固定し
てしまったとしても, 大幅な改善が望めるでしょう. このポリシーを用
いるべきリストア作業を, 通常の作業(おそらく既存のポリシーを使用
したほうが良いでしょう)を区別するには, 10 秒間の間に作成されたディ
レクトリを最大 10 個までまとめて単一のシリンダグループに書き込む
という手順が使えるでしょう. とにかく私の結論は, そろそろ実験
を始めて見る時期だろうということです.
[この節は, freebsd-current に
[<ben@rosengart.com> が以下のパニックメッセージを
投稿しました.]
このようなメッセージが表示された場合, 問題が起きる状況を確認し
て, 情報を送るだけでは十分ではありません. 下線をつけた命令ポインタ
値は重要な値ですが, 残念ながらこの値は構成に依存します. つまり, こ
の値は使っているカーネルのイメージに依存するのです. もしスナップショッ
トなどの GENERIC カーネルを使っているのであれば, 他の人間が問題の
ある関数について追試をすることができますが, カスタマイズされたカー
ネルの場合は, 使っている本人にしか問題の起こった場所は特定できない
のです.
何をすれば良いのでしょう?
このようなパニックメッセージを投稿している人はよく見掛けますが,
このように, 命令ポインタ値を, カーネルシンボルテーブルの中の関数
とつき合わせて調べている人はまれです.
パニックの原因を突き止める最良の方法は, クラッシュダンプをとり,
どっちにしろ, 私は普通以下のようにします.
[注: 現在 FreeBSD 3.x kernel はデフォルトで ELF 形式となっており,
全てのデバッグシンボルを含んだカーネルを, 実際にブートする必要は
ありません. 確実にクラッシュダンプをとるには, /etc/rc.conf を編
集して /etc/rc.conf で設定されていれ ば, /var/crash に保存します.
注: FreeBSD のクラッシュダンプのサイズは, ふつう物理メモリサ
イズと同じです. つまり 64MB のメモリを積んでいれば, 64MB のクラッ
シュ ダンプが生成されることになります. /var/crash に十
分な空き 容量があることを確認してください. 手動で
クラッシュダンプを取り出せたら, 以下のように
必要な情報が 1 画面に収まらないことも多いので, できれば
もしあなたがデバッグ狂で, 同時に別のコンピュータを利用できる
環境にあれば, [Bill による注: DDB を有効にしていてカーネルがデバッガに
落ちたら, ddb のプロンプトで 'panic' と入力すれば, 強制的にパニッ
クを 起こしクラッシュダンプさせることができます. パニックの途中
で, 再び デバッガに落ちるかもしれませんが, 'continue' と入力すれ
ば, クラッシュダンプを最後まで実行させられます.]
ELF のツール類は, デフォルトでは実行形式の中に定義されている
シンボルをダイナミックリンカから見えるようにはしません.
このため, dlopen(NULL, flags) を呼び出して得られた
ハンドルに対して dlsym() で探索を行っても, こういった
シンボルを見つけられません.
もし, あなたがプロセスの中心にあたる実行形式の中にある
シンボルを探索したければ,
カーネルアドレス空間は, 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 のセクションの始めの方にある
ロケーションカウンタにも同じ値を入れて下さい.
それが完了したら, config し直してカーネルを再構築して下さい.
おそらく, /usr/include/vm/
にコピーした後に,
注意: カーネルアドレス空間の大きさは, 4 メガバイトの倍数である必要があります.
[
訳: &a.nishika;. FreeBSD は, EIDE と SCSI ハードディスクドライブをサポート
しています (互換コントローラも含みます: 次の節参照). また
オリジナルの "Western Digital" インタフェースを使用している
すべてのドライブも (MFM, RLL, ESDI, もちろん IDE も)
サポートしています. 独自仕様のインタフェースを使用する
ESDI コントローラでは動作しないものがあり, WD1002/3/6/7
とその互換インタフェースと衝突します.
サポートされている SCSI コントローラに接続できる SCSI
ドライブすべてをサポートしています.
また, 以下の専用 CD-ROM インタフェースもサポートしています.
SCSI でないカードはすべて, SCSI ドライブよりも極めて動作速度が
遅いことが知られており, ATAPI CD-ROM には動作しないものもあるようです.
Walnut Creek の FreeBSD 2.2 CD-ROM からは CD からの直接ブートが
サポートされています.
もちろん, 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 コンフィグレーションファイル中のサンプルを参照して下さい.
それから および
についても
確認しておいてください.
FreeBSD では, IDE バージョンの EZ ドライブを除くすべての SCSI デバイスは,
SCSI のディスクと同等に扱われます. また IDE EZ は IDE ドライブと同等となります.
も参照.
一覧は
- 無名のカードにもうまく動くものがあり,
特に AST 互換といわれているものに多く見られます.
カード設定の詳細な情報は,
FreeBSD は Microsoft, Logitech, ATI 等のメーカーから出ているバスマウス
と InPort バスマウスをサポートしています. バスマウスのデバイスドライバ
は GENERIC カーネルに標準で含まれています. もしバスマウスのデバイス
ドライバを含むカーネルを自分で構築する場合には,
カーネルコンフィグレーションファイルに以下の行を忘れずに加えて下さい.
通常バスマウスには専用のインタフェースカードが附属しています.
インタフェースカードによってはポートアドレスや割り込み番号を上記の
設定以外に変更できるかもしれません. 詳しくはバスマウスのマニュアルと
あなたが 2.2.5 以降のバージョン FreeBSD を使っているのなら,
必要なドライバの psm はカーネルに含まれていて有効になっています.
カーネルはブート時に PS/2 マウスを検出するでしょう.
あなたの使っている FreeBSD が比較的新しいけれど前のバージョン
(2.1.x 以降) のものなら,
インストールの時に, 単にカーネルのコンフィグレーションのメニュー上で
PS/2 マウスを有効化するだけです, あるいは後で boot: プロンプト上で
-c を指定することでもメニューは現れます.
デフォルトでは無効に設定されていますので, 明示的に
有効化してあげないといけません.
あなたの使っている FreeBSD が比較的古いものなら,
カーネルコンフィグレーションファイルに以下の行を加えて
カーネルを再コンパイルする必要があります.
カーネルの再構築についてよく知らないのであれば,
ブート時にカーネルが psm0 を検出したら, psm0 のエントリが /dev
の中にあることを確認してください. 以下のようにします.
これは root でログインしているときにおこなってください.
もしデフォルトのコンソールドライバである syscons を使っているので
あれば, テキストコンソール上でマウスを使ってテキストのカットアンド
ペーストができます. マウスデーモンである moused を起動し, 仮想コンソール
でマウスポインタを有効にして下さい.
ここで xxxx はマウスのデバイス名, yyyy はマウスの
プロトコルタイプです. サポートされているプロトコルタイプについては
システムを起動する時に自動的に moused を起動したい場合には, FreeBSD
2.2.1 では以下の変数を /etc/sysconfig で設定して下さい.
FreeBSD 2.2.6 以降では, マウスデーモンは比較的古いシリアルマウス
でない限りマウスのプロトコルタイプを自動判別できます. プロトコルタイプ
として ``auto'' を指定すると自動判別を行なおうとします.
マウスデーモンを実行中は, マウスデーモンと他のプログラム, 例えば
X Window System, の間でマウスへのアクセスを調整しなければなりません. この問題に
ついては を御覧下さい.
マウスデーモンを起動したあと
( を参照して下さい),
ボタン1 (左ボタン)を押しながらマウスを動かして範囲を指定して下さい.
ボタン2 (中ボタン)またはボタン3 (右ボタン)をクリックするとテキスト
カーソルの位置に選択した範囲のテキストがペーストされます.
FreeBSD 2.2.6 以降ではボタン2 をクリックするとペーストされ, ボタン3
をクリックした場合には既存の選択範囲が現在のマウスポインタの位置まで
延長または短縮されます. もしマウスに中ボタンがないなら, moused の
オプションを使って中ボタンのエミュレーションをするか, 他のボタンを
中ボタンとして使う事ができます. 詳しくは
答えは残念ながら「場合によります」です. こうしたマウスの付加的な機能は
大抵の場合特殊なドライバを必要とします. マウスのデバイスドライバや
ユーザのプログラムがそのマウスに対する固有のサポートをしていない場合には
標準的な 2ボタンまたは 3ボタンマウスのように振舞います.
を参照してください.
加えて, にあるモーバイルコンピューティングの
ページもご覧ください.
FreeBSD は SCSI, QIC-36 (QIC-02 インタフェース付き) および
QIC-40/80 (フロッピーベース) テープドライブをサポートしています.
これらには 8-mm (Exabyte と呼ばれています) や DAT ドライブも含まれています.
QIC-40/80 ドライブは遅いことが知られています.
初期の 8-mm ドライブの中には SCSI-2 とまったく互換性を持たないものがあります.
これらは FreeBSD 上では動作しません.
FreeBSD 2.2 は 使用している製品が, FreeBSD は SoundBlaster, SoundBlaster Pro, SoundBlaster 16,
Pro Audio Spectrum 16, AdLib それから Gravis UltraSound サウンドカードを
サポートしています. MPU-401 やその互換カードも機能に制限はあるものの
サポートされています. マイクロソフトサウンドシステムのスペックに準拠
したカードも, pcm ドライバでサポートされています.
訳: &a.iwasaki; 通常は floppies/boot.flp というファイルの
フロッピーディスクイメージが一つだけ必要になります. 1.44MB の
フロッピーディスクに書き込み, そこからブートしてその他のファイル群を
ダウンロードします (インストールプログラムが TCP/IP 接続, テープ, CD-ROM,
フロッピーディスク, DOS パーティションなど, インストールに必要なもの
すべてに関する処理を担当します).
自分で配布ファイルをダウンロードする必要がある場合 (たとえば DOS
ファイルシステムからのインストールなど), おすすめの配布ファイル構成は
以下の通りです.
この手続きの完全な説明と, 一般的なインストール時の問題については
3.5 インチ (1.44MB) のフロッピーディスクには 1474560 バイトのデータを
格納できます. ブートイメージはちょうど 1474560 バイトの大きさです.
ブートフロッピーディスクを準備する際のよくある間違いには
以下のものがあります.
FTP クライアントの中には転送モードのデフォルトを ascii
モードにしてクライアント側システムの慣習にあうようにすべての行末の
文字を変更するものがあります. この場合は常にブートイメージが
壊れたものになります. ダウンロードしたブートイメージのサイズを
チェックしてください. サーバ上のものと 正確に 同じでない場合,
ダウンロードの処理を疑いましょう.
これを回避するには, サーバに接続してイメージのダウンロードを
開始する前に, FTP のコマンドプロンプトで binary とタイプします.
copy のようなプログラムは, 直接起動するように作成された
ブートイメージに関してはうまく処理できません.
イメージにはフロッピーディスクの完全な中身がトラック単位で
格納されており, フロッピーディスク上に通常のファイルとして
格納されるようには想定されていません.
インストールの説明書は次のところにあります.
386 以上の PC, 5MB 以上の RAM, そして最低 60MB の
ハードディスク容量が必要となります. ローエンドの MDA カード
でも動作しますが, X11R6 を使うには VGA かそれ以上のビデオカード
が必要となります.
の節も併せてご覧ください.
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 環境をつくるには
の指示にしたがってください.
まず Windows 95 をインストールして, そのあとで FreeBSD を
インストールしてください. FreeBSD のブートマネージャが Win95
と FreeBSD のブート管理をしてくれるようになります.
Windows 95 を後にインストールした場合はひどいことに,
問い合わせることもなくブートマネージャを上書きしてしまいます.
そうなってしまった場合は次の節をご覧ください.
ブートマネージャの再インストールの方法として, FreeBSD では
以下に示す二通りの方法が用意されています:
ブートマネージャが再インストールされます.
FreeBSD の不良ブロックの扱い ( 不良ブロックのある SCSI ドライブの場合は,
を参照してください.
インストーラからブートしようとしたときに, マシンが固まってし
まうとか自然とリブートしてしまうといった現象であれば,
次の三つの項目を確認してください:-
また, Netscape でブートイメージをダウンロードする場合も問題
があることが報告されていますので, できれば別の FTP クライアント
を使うのがよいでしょう.
2.1.7R をテープからインストールする場合, tar ブロックサイズ
を 10 (5120 バイト) にしたテープを作る必要があります.
デフォルト の tar ブロックサイズは 20 (10240 バイト) で,
このデフォルトサイズで作られたテープでは 2.1.7R を
インストールすることはできません. もしこうしたテープを使うと,
レコードサイズが大き過ぎるというエラーが起きることになります.
Laplink パラレルケーブルを用意してください. 両方の PC の kernel に
lpt ドライバが組み込まれていることを確認してください.
パラレルインタフェースに Laplink パラレルケーブルを接続します.
root になって両方で lp0 のネットワークインタフェースパラメータを設定します.
例えば, ホスト max と moritz を接続したい場合,
以上です! lp(4) と lpt(4) のマニュアルページも参照してください.
+ 以上です!
+ また, /etc/hosts にホストの追加もしましょう.
動作確認は次のようにします:
max 側:
次のようにして二つのコンピュータを Laplink パラレルケーブル
を通して接続してください:
また, 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 や DOS, そのほかの OS がディスク領域
のとらえ方で衝突
しあっていることから起こる典型的な例です. こうなったら
FreeBSD をインストールし直す以外にはありませんが,
他のところで説明した手順にしたがってやれば,
ほぼ間違いなくうまくいくはずです.
これはすでに前に質問されている問題のもう一つの症状です. BIOS
のジオメトリと FreeBSD のジオメトリ設定が一致していないのです!
コントローラや BIOS がシリンダの変換 (``>1GB ドライブの
サポート'' とも呼ばれます) をサポートしていたら,
その設定を無効化して FreeBSD をインストールし直してみてください.
性能問題以外は無しです. FreeBSD 2.X は bounce-buffer をサポートしており,
バスマスタリングコントローラは 16MB より上のメモリ領域に
アクセスできます. (ISA デバイスを使用している場合のみ必要
となりますが, 一部の EISA と VLB デバイスでも必要な場合
があります.)