NetBSD/i386 FAQ (よくある質問と回答集)
ディスクの分割/ブート
- ブートフロッピー(イメージ)が大き過ぎるのですが。
- 540MB BIOS limit があるマシンで大きなドライブを使用するには
- "正しい" ディスクジオメトリーの決定法
- マイクロソフトパーティションへのアクセス
- NetBSD や DOS/Windows/その他の OS のメニューからの起動
- Windows NT/2000/2003/XP のブートメニューに NetBSD を加える方法
- 全体が Dos/Windows で使用されているディスクに NetBSD をインストールする
- 'old NetBSD or FreeBSD' からパーティション sysid を変更する
- インストールした後、リブートすると LI しかでません
- dosboot.com がカーネルのロード後にマシンをリセットしてしまいます
- WinME マシンでブートフロッピーがなく Win98 CD しかない場合の、 DOS プロンプトへの入り方
- フロッピー 1 枚の NetBSD システムの作り方
特定のハードウェアの問題
- IRQ 2 と IRQ 9
- 'ne1: device time out' という問題
- USB の問題 'uhci0: couldn't map interrupt'
- 'WARNING: CYRIX 486DLC CACHE UNCHANGED' とは何ですか?
- "setting tty flags" の直後にモニターが DPMS modeに落ちてしまうのですが
- PCMCIA モデムが動かない
- VIA EPIA ハードウェアへのインストール
X Window System の実行
- X が INSECURE なカーネルか、シングルユーザーモードでしか起動しない
- X が実行できず "Fatal server error: xf86MapVidMem: Could not map /dev/vga (Invalid argument)" とのメッセージが出ます
- X が PS/2 mouse を認識しない
- ホイールマウスを有効にする方法は?
その他の NetBSD/i386 FAQs
- NetBSD/i386 で Netscape や Mozilla は使えますか
- NetBSD 上での GNU/LINUX 用の Quake II の実行
- Windows を使わないのですが、払い戻しが受けられますか
- シリアルラインを用いた NetBSD のカーネルのデバッグ法
ディスクの分割/ブート
ブートフロッピー(イメージ)が大き過ぎるのですが。 (top)
もし boot.fs イメージを 'ascii' モード( Windows の FTP client や Netscape のデフォルトになっています)でダウンロードした場合、newlines は 改行/newline に変更されてしまい boot.fs イメージは壊れてしまいます (さらにフロッピーディスクにおさまらない大きさになります)。
もし Windows の FTP client を使っているのならば、ブートイメージをダウンロードする前に 'bin' とタイプして binary モードにする必要があります。
もし、その他の方法を使用している場合は、boot.fs.gz ファイルをダウンロードし winzip を使って伸長したほうが簡単かも知れません。
540MB BIOS limit があるマシンで大きなドライブを使用するには (top)
BIOS でジオメトリーとして 1024/16/63 を入力し、ブートパーティションが 先頭の 540M に含まれていることを確認して下さい (これは、カーネルが BIOS から読み込まれるために必要です)。 そうすれば、NetBSD から ディスク全体を使用することが可能です。
"正しい" ディスクジオメトリーの決定法 (top)
NetBSD はブートプログラムをロードするのに PC BIOS を用いています。 これが正しく働くためには NetBSD と BIOS の両方でディスクジオメトリーが 共通である(少なくともブートパーティションを含んでいる部分に関しては)ことが必要です。
PCに搭載されている BIOS が扱えるディスクのシリンダー数、ヘッド数、セクター数には 上限があります(表参照)。(これは SCSIカード上の BIOS も含みます)。
多くのディスクの本当のジオメトリーはこれらの制限値におさまらなくなってきたので、 新しい BIOS はジオメトリーを制限内におさまり、かつ、全体の大きさが 同じ(か少し小さく)なるように解釈しなおします。
もし、ディスクに(DOS, Windows, pfdisk 等によって作成された)有効な DOS MBR パーティションがあれば、それは "正しい" BIOS ジオメトリー を含んでいます。 NetBSD は sysinst 中でこれを BIOS ジオメトリーとして用います。 しかしながら、新しいディスクや MBR のセットアップが正しく行なわれていない ディスクでは、NetBSD は間違った BIOS ジオメトリーを使用してしまいます。 理想としては、この情報はブートプログラムから渡されるべきでしょう。しかしながら BIOS ディスクを NetBSD ディスクにマッピングする確実な方法がありません。 もっとも、現在の全然使えない状態を改善することは可能だとは思われます。
"正しい"解釈され直したジオメトリーを決定する方法の一つは 'pfdisk' を 用いることです。
- pfdisk を ftp.NetBSD.org (またはそのミラーサイト)からダウンロードします。/pub/NetBSD/NetBSD-1.6.1/i386/installation/misc/pfdisk.exe.
- '
pfdisk 0' を実行します。 (0 は最初のディスクを 1 は二番目のディスクを意味します)。 - '
list' と入力し、 - ジオメトリーを記録した後、リブートをかけ、 NetBSD に用います。
| パラメーター | ビット数 | 最大値 |
|---|---|---|
| シリンダー数 | 10 | 1023 |
| ヘッド数 | 8 | 255 |
| 1トラック当りのセクター数 | 6 | 63 |
(これにより、少なくとも BIOS が扱える最大の容量は 8Gbytes に制限されます。)
マイクロソフトパーティションへのアクセス (top)
NetBSD は Microsoft の FAT, FAT32, NTFS4, NTFS5 を含む様々な異なる ファイルシステムをサポートしています(完全なリストは fstab(5) を参照して下さい)。 現在のところ、 NTFS ファイルシステムのサポートは、読み出し動作のみ信頼性のあるものです。 Long filename は FAT と NTFS の両方でサポートされています。
他のファイルシステムにアクセスするためには、正しい "disklabel" を
セットアップする必要があります。"disklabel" はシステムに対して
どこにディスク上のデータを探しにいけば良いか教えます。
正しい"disklabel"を用いれば、NetBSD で使用するために
"mount" することができます。
ディスクラベルの設定
- ファイルシステムが含まれているディスクを決定する
もし、一つの IDE/ST506 または SCSI ディスクしか持っていないのならば、 これは wd0 または sd0 となります。複数のディスクを お持ちならば、"dmesg | more" の出力から該当するディスク名を 決定して下さい。 - パーティションのサイズとオフセットの決定
"fdisk" と入力すると、各パーティションのサイズとオフセットを 見ることができます。出力は次のようになるでしょう:NetBSD disklabel disk geometry: cylinders: 16938 heads: 15 sectors/track: 63 (945 sectors/cylinder) BIOS disk geometry: cylinders: 1023 heads: 240 sectors/track: 63 (15120 sectors/cylinder) Partition table: 0: sysid 7 (OS/2 HPFS or NTFS or QNX2 or Advanced UNIX) start 63, size 3190257 (1557 MB), flag 0x80 beg: cylinder 0, head 1, sector 1 end: cylinder 210, head 239, sector 63 1: sysid 169 (NetBSD) start 3193155, size 4096575 (2000 MB), flag 0x0 beg: cylinder 211, head 45, sector 1 end: cylinder 482, head 29, sector 63 2: sysid 6 (Primary 'big' DOS, 16-bit FAT (> 32MB)) start 7302960, size 4596480 (2244 MB), flag 0x0 beg: cylinder 483, head 0, sector 1 end: cylinder 786, head 239, sector 63 3: sysid 15 (Ext. partition - LBA) start 11899440, size 4097520 (2000 MB), flag 0x0 beg: cylinder 787, head 0, sector 1 end: cylinder 1023, head 239, sector 63この例ではディスクは次の4つのパーティションからなります:
0. Windows NT 4.0 NTFS4 パーティション
1. NetBSD ffs パーティション
2. MS-DOS FAT パーティション
3. "extended" パーティション中の Windows 2000 NTFS5 - "
disklabel <DISKNAME>"と入力する
もしディスクが MS-DOS パーティションしか含んでいない場合、 NetBSD は自動的に先頭の MS-DOS パーティションを含む '仮想'ディスクラベルを 生成します。
出力は次のようになるでしょう:# disklabel wd0
physical disk information8 partitions: # size offset fstype [fsize bsize cpg] a: 410130 3193155 4.2BSD 1024 8192 16 # (Cyl. 3379 - 3812) b: 409185 3603285 swap # (Cyl. 3813 - 4245) c: 4096575 3193155 unused 0 0 # (Cyl. 3379 - 7713) d: 16006410 0 unused 0 0 # (Cyl. 0 - 16937) e: 3274425 4012470 4.2BSD 2048 16384 32 # (Cyl. 4246 - 7710)
もし、必要な fstype がすでに定義されていれば(すなわち MSDOS)、 パーティションのマウント まで進んで下さい。
もし、NetBSD のインストールが完了していないのならば、 mbrlabel(8)コマンドを 用いて、ディスクのfdiskパーティション情報とコア中の disklabel を 同期させることができます。そうすれば、この情報を使うことにより BSD と 他の OS のパーティション情報を含んだ新しい disklabel を生成することができます。
- ディスクラベル編集の準備
vi以外のエディターを用いたい場合は、 "setenv EDITOR <YOUR_EDITOR>" 例えば "setenv EDITOR pico" と入力します。 - "
disklabel -e <DISKNAME>" と入力して disklabel を編集します
disklabel の最下部まで進めば label の編集準備は完了です。必要なのは次の2点です:
- 使用されていない最初のアルファベット (この例では 'f')。
- fdisk で得られた 'start/size' の値 (例えば '63')。
一番下に NTFS のために次の行を加えます:
<PARTITION>: <SIZE> <OFFSET> NTFS
上の例題の場合、適切な入力は次のようになります(fsize, bsize と cpg は ブランクのままです):
f: 3190257 63 NTFS
MSDOS のためには次のような行を加えます:
<PARTITION>: <SIZE> <OFFSET> MSDOS
例題では次のようになります:
g: 4596480 7302960 MSDOS
パーティションについての注意: NetBSD/i386 は現在のところ、一つのディスク当たり 8個のパーティション('a' - 'h') しかサポートしていません。また、パーティション テーブルの直前にある 'number of partitions' 行には、存在するパーティションの 数以上の数字を指定する必要があります。
- 変更を保存し、ディスクラベルをチェックする
エディターを終了し、 "disklabel <DISKNAME>" と入力して、 新しいパーティションが存在するか確認して下さい。
各々のディスクパーティションは '/dev' にデバイスエントリーを持っています。 デバイスエントリーの形式は '/dev/'、ディスク名、パーティション文字 となっています。 上記の例題では NTFS と MSDOS パーティションに対するデバイスエントリーはそれぞれ '/dev/wd0f' と '/dev/wd0g' となります。
- それぞれのパーティションに対してマウントポイントを作成する
"mkdir <MOUNTPOINT>", 例えば "mkdir /msdos" と "mkdir /nt4". - ファイルシステムをマウントする
"mount -t <TYPE> <DEVICE> <MOUNTPOINT>", 例えば "mount -t msdos /dev/wd0g /msdos" と "mount -t ntfs /dev/wd0f /nt4". - うまくいっていることを確認する
"ls <MOUNTPOINT>", 例えば "ls /msdos" と "ls /nt4". - ブート時に自動的にファイルシステムがマウントされるようにする
もし、NetBSD の起動時に自動的にマウントされるようにしたいならば、 /etc/fstab を編集し、次の形式の行を加えて下さい。<DEVICE> <MOUNTPOINT> msdos rw <DEVICE> <MOUNTPOINT> ntfs rw上の例題の場合は
/dev/wd0g /msdos msdos rw /dev/wd0f /nt4 ntfs rwとなります。
NetBSD や DOS/Windows/その他の OS のメニューからの起動 (top)
この部分は、すでにディスクのパーティションを切っていて、NetBSD と その他のあなたが使用するつもりの OS をインストールし終っていることを仮定しています。 ここでは、OSBS ブートセレクターを用います。
8GB より大きいディスクやパーティションを使う、あるいは NetBSD をディスクの先頭から 2GB より後の部分にインストールする場合は、 NetBSD ブートメニューを直接使ってもよいかも しれません。
- OSBS ブートセレクター をダウンロードします。 これは ftp.NetBSD.org の /pub/NetBSD/NetBSD-1.5.2/i386/installation/misc/osbsbeta.exe にあります。
- OSBS を取り出します。 osbsbeta.exe を DOS ディスクに保存し、実行します。 実行により 'OS-BS\OSBS20B8.EXE' が取り出されます。
- '
OS-BS\OSBS20B8.EXE' を実行します。 - '
Install' -> 'Boot menu' を選びます。 - ブートメニューに加えたいそれぞれのパーティションに対して '
INSERT'を押します。 - 終れば、'
ESCAPE' を押します。続いて、デフォルトでブートする OS の選択、 ブート開始までの待機時間(10秒くらいが適当でしょう)、ブート時の start id の 変更(通常は必要ありません) についての設定を行います。 - ブートメニューを保存し、終了します。
- フロッピーディスクからブートしていた場合は、それを取り除きます。
これで、マシンのブート時にブートメニューが出てくるようになったはずです。
NetBSD 1.4 以降では、もう一つの方法として新しい NetBSD のブートメニューも使用できます。
- ブートメニューをインストールするために 'fdisk -i -c /usr/mdec/mbr_bootsel' を実行します。
- その後、対話的にブートメニューを設定するために 'fdisk -B' を実行します。 (これはオプションではありません。)
fdisk(8) のマニュアルも参照して下さい。
Windows NT/2000/2003/XP のブートメニューに NetBSD を加える方法 (top)
方法その 1) NetBSD の mbr コードを使う
NetBSD の mbr コードは、必要に応じてブート時にオプションを変えられます。 この方法を使う場合、動作してブート可能な状態にインストールした NetBSD が必要です。 NetBSD の mbr コードは、NetBSD の fdisk コマンドを使って、 空のファイルにインストールできます。
以下の例では、Windows Server 2003 が disk 0 に、NetBSD 4.0 が disk 1 にインストールされているものとします。
devel# rm -f nbmbr devel# touch nbmbr devel# fdisk -BF -c mbr_ext ./nbmbr fdisk: primary partition table invalid, no magic in sector 0 fdisk: Cannot determine the number of heads Update the bootcode from /usr/mdec/mbr_ext? [n] y Boot selector configuration: Timeout value (0 to 3600 seconds, -1 => never): [-1..3600 default: 10] Select the default boot option. Options are: 0: The first active partition 1: Harddisk 0 2: Harddisk 1 3: Harddisk 2 4: Harddisk 3 5: Harddisk 4 6: Harddisk 5 7: Harddisk 6 8: Harddisk 7 Default boot option: [0..8 default: 0] 2 We haven't written the MBR back to disk yet. This is your last chance. Should we write new partition table? [n] y
nbmbr を C: ドライブにコピーし、以下の行を C:\boot.ini の最後に追加します。
c:\nbmbr="NetBSD disk 1"
標準状態では、boot.ini は不可視になっています。boot.ini を編集するには、 My Computer から C: ドライブを開き、Tools メニューから "Folder Options..." を選びます。 しかるのちに、View タブをクリックし、"Hide protected operating system files (Recommended)" のチェックボックスのチェックを外します。 最後に OK をクリックします。これで、boot.ini が見えるようになり、 ダブルクリックすれば編集できるようになります。
方法その 2) bootpart を使って、 既存のコードをブートブロックにコピーする
Windows を使って、bootpart を http://www.winimage.com/bootpart.htm から入手し、zip アーカイブからファイルをハードディスクに展開します。 コマンドプロンプトを使い、bootpart.exe のあるディレクトリーに移動します。 一連の操作手順を以下に示します。 以下の例では、Windows Server 2003 が disk 0 に、NetBSD 4.0 が disk 1 にインストールされているものとします。
最初に、bootpart を実行して、パーティション番号 (ディスク番号をまたがった通し番号になります) を決めます。 NetBSD のパーティションタイプは (十六進数で) a9 であることにご注意ください。
C:\bootpa26>bootpart Boot Partition 2.60 for WinNT/2K/XP (c)1995-2005 G. Vollant (info@winimage.com) WEB : http://www.winimage.com and http://www.winimage.com/bootpart.htm Add partition in the Windows NT/2000/XP Multi-boot loader Run "bootpart /?" for more information Physical number of disk 0 : b4dab4da 0 : C:* type=7 (HPFS/NTFS), size= 19580368 KB, Lba Pos=63 Physical number of disk 1 : 7f4c256b 1 : D:* type=a9 , size= 39121456 KB, Lba Pos=63
ここではパーティション 1 をブートしたいので、以下のようにします。
C:\bootpa26>bootpart 1 \nbboot "NetBSD disk 1"
Boot Partition 2.60 for WinNT/2K/XP (c)1995-2005 G. Vollant (info@winimage.com)
WEB : http://www.winimage.com and http://www.winimage.com/bootpart.htm
Add partition in the Windows NT/2000/XP Multi-boot loader
Run "bootpart /?" for more information
Physical number of disk 0 : b4dab4da
0 : C:* type=7 (HPFS/NTFS), size= 19580368 KB, Lba Pos=63
Physical number of disk 1 : 7f4c256b
1 : D:* type=a9 , size= 39121456 KB, Lba Pos=63
C:\nbboot written
C:\BOOT.INI updated
これで、nbboot というブートブロックが C: ドライブのルートディレクトリーに作成され、 boot.ini に "NetBSD disk 1" という項目が追加されました。
方法その 3) grub4dos を使う
この方法の利点は、広範囲にわたる grub のオプションが使えることです。 さらに、カーネルを NTFS からロードできるという利点もあります (必要があればですが。通常は、インストールされた NetBSD のルートディレクトリーからロードするだけでしょう)。 たとえば、問題解決のために、 NetBSD がインストールされていないマシンであっても、 便利に使えるリカバリー用あるいはインストール用の NetBSD カーネルを使いたいということがあるかもしれません。
最新版の grub4dos を http://sourceforge.net/projects/grub4dos からダウンロードし、zip アーカイブからファイルを展開します。 grldr を Windows の C:\ にコピーし、以下のようにして c:\menu.lst を作成します (Windows と NetBSD のどちらで作成してもかまいません - 改行はどちらの流儀であっても OK です)。
timeout=5
console terminal
Title NetBSD on disk 1 (chainloader)
root(hd1,0)
chainloader +1
Title NetBSD install kernel
kernel --type=netbsd /NETBSD_INSTALL_LARGE.gz
MULTIBOOT 以外のカーネル (インストールカーネルなど) では、--type=netbsd が必要です。 MULTIBOOT カーネルでは、このオプションはつけてはいけません。
最後に、方法その 1) の説明と同様に、 たとえば以下のような NetBSD 用の行を C:\boot.ini に追加します。
C:\gtldr="NetBSD GRUB"
全体が Dos/Windows で使用されているディスクに NetBSD をインストールする (top)
DOS/Windows によって全てのディスク領域が占有されているハードディスクでも、 ディスクに空き容量がある場合ならば、DOS/Windows のパーティションを 小さくし、2番目のパーティションを作成することで NetBSD をインストールすることが できます。
これを行なうためには
- DOS パーティションの全てのデータを defrag を用いて パーティションの先頭に移動する。
- DOS パーティションの大きさを FIPS を用いて変更する。 Fips は 次の場所から手に入れることができます。FIPS WWW サイト. 全ての付属ドキュメントを読む事を忘れないで下さい。
- 上で述べられている方法でブートローダーをインストールします。
- NetBSD をインストールします。
'old NetBSD or FreeBSD' からパーティション sysid を変更する (top)
1.3.3 以降の NetBSD はデフォルトの パーティション sysid が 165 から 169 に 変更されています。これは FreeBSD との衝突を避けるために行なわれました。 1.3.3 (とそれ以降) のシステムは sysid が 165 のパーティションからもブートしますが、 パーティションをオープンする度に警告を発します。 ディスクパーティションを 165 から 169 に変更するためには 次の手順に従って下さい。
-
1.3.3 (かそれ以降) のブートフロッピーがあることを確認する
これは何かがうまくいかなかった時に備えるためです。インストール済みのシステムを フロッピーディスクからブートするには、フロッピーから起動して、 カウントダウンが行なわれている間にスペースキーを押し、 'boot hd0:' と入力します。 -
新しい ID を理解するブートブロックを使用していることの確認
もし、システムが 1.3.3 以降の sysinst を用いてインストールされているならば、 問題ないはずです。そうでないならば、次のコマンドを実行して下さい。もしカーネルが '- '
/usr/mdec/installboot biosboot.sym /dev/r{DISK}a'.
options INSECURE' 無しで作られている場合は シングルユーザーモードにするためにシャットダウンする必要があります。ここで {DISK} は 最初の ATA (IDE) ディスクに対しては- '
shutdown now' - shell の入力を求められたら ENTER を押します。
- '
fsck -p' - '
mount -vat ffs' - '
cd /usr/mdec ; ./installboot biosboot.sym /dev/r{DISK}a'
wd0, 最初の SCSI ディスクに対してはsd0などを意味します。 - '
-
パーティション ID の変更
'fdisk {DISK}' を実行して下さい。 一つのパーティションは次のようになっているはずです。X: sysid 165 (FreeBSD or 386BSD or old NetBSD)
ここで、X は 0, 1, 2, あるいはもっとも多そうな 3 です。 'fdisk -u -X {DISK}' を実行します。-
Do you want to change our idea of what BIOS thinks? [n]に対してENTERと入力。 -
Do you want to change it? [n]に対してy ENTERと入力。 -
Supply a decimal value for "sysid" [165]に対して169 ENTERと入力。 -
Supply a decimal value for "start" [......]に対してENTERと入力。 -
Supply a decimal value for "size" [.......]に対してENTERと入力。 -
Explicitly specify beg/end address? [n]に対してENTERと入力。 -
Is this entry okay? [n]に対してy ENTERと入力。 -
Should we write new partition table? [n]に対してy ENTERと入力。
-
-
全てが成功したか確認するためにリブートします
何か問題が起きた場合はブートフロッピーの fdisk を使って やり直すことが可能です。 -
NetBSD のパーティション ID を再度変更する必要はないはずですので、
ご安心ください。
インストールした後、リブートすると LI しかでません (top)
古い LILO によって起こされる問題です。次のようにすれば対処できます:
- sysinst フロッピーからブートします
- Utility メニューから '
Run /bin/sh' を選んで インストーラーから抜けます。 - '
fdisk -if' と入力します - Reboot
dosboot.com がカーネルのロード後にマシンをリセットしてしまいます (top)
dosboot.com がカーネルのロード直後にマシンをリセットしている場合は、 "himem.sys" がロードされていないことを確認してください。 "config.sys" をよく確かめてください!
WinME マシンでブートフロッピーがなく Win98 CD しかない場合の、 DOS プロンプトへの入り方 (top)
Windows Millennium Edition (Windows ME) がインストールされたマシンで、 最近のラップトップにありがちなようにフロッピーブートができない場合、 Windows 98 CD は (*本物の*) MS-DOS プロンプトに入るための立派な手段です。 起動して CD-ROM サポートの要否を尋ねられたときに、 shift+F5 を押して、 "highmem.sys" (上記参照) などのドライバーを一切ロードしないように することができます。 これで、あらかじめ "dosboot.com" (ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-1.5.2/i386/installation/misc/dosboot.com から入手可能) などのツールやカーネルを置いておいた C: ドライブにアクセスすることができます。
フロッピー 1 枚の NetBSD システムの作り方 (top)
最近、 Lex Wennmacher が sysutils/fdgw パッケージを
pkgsrc に追加しました。このパッケージは、フロッピー 1 枚の
NetBSD システムを構築するためのツールです。これの応用例としては、
PC をハードディスクを使わずに安価なルーターにすることが挙げられます。
メイン NetBSD ftp サイトからは 2 種類のイメージがダウンロードできます。 ADSL ルーターイメージを使うと、基本的な ADSL ルーターシステムが作れます。 NAT ルーターイメージは、簡単な NAT ルーターを作れるよう設計されています。
これらのイメージは dd コマンドを使ってフロッピーに書き込めます。
たとえば次のようにします。
dd if=adslrouter.img of=/dev/rfd0a bs=18k
これらフロッピー 1 枚の NetBSD システムはいずれも、適切な動作のために 必要なファイルをすべて含んでいますが、若干のカスタマイズは必要です (たとえば、 IP アドレスと ipf フィルタールールの定義) 。詳細は、 深町賢一氏による fdgw ホームページを参照してください。
特定のハードウェアの問題
IRQ 2 と IRQ 9 (top)
IBM AT とその後継機 (全ての NetBSD が作動する PC を含みます) では さまざまなハードウェア上の理由のために IRQ 2 は IRQ 9 にマップされています。 そのため、"IRQ 2" と設定されているカードを使うためには NetBSD のカーネルコンフィギュレーションファイルでは IRQ 9 を 選択する必要があります。
'ne1: device time out' という問題 (top)
古いタイプの ISA カードは特定のアドレスと IRQ に設定されます。 NetBSD は自動的にアドレスを検出することができますが、IRQ を決定する 方法は不確実であり、自動設定テーブル(autoconfiguration table)には 広く使われている値が決め打ちされています。もし、アドレスは正しく、 IRQ が違っていた場合、デバイスは使用されたときに timeout を起こします。 これは他の PCI, EISA や ISA-PnP バスに対しては影響しません。
もし、この問題に遭遇した場合の解決方法は次の 3つです。
- カーネルの設定 (src/sys/arch/i386/conf/GENERIC) と 一致するようにカードの設定を変更する。変更には、ジャンパー スイッチや、DOS プログラムを使用します。通常 DOS プログラムは カード購入時に付属しています。
- カード設定に合わせた新しいカーネルをコンパイルする。
- 別のカードを購入する - 最新の PCI ベースの PC において、 ISA ネットワークカードは他のデバイスのパフォーマンスに かなりの影響を与えます。- fxp(4) (インテル社の etherexpress-pro) や tlp(4) (Tulip やその互換カード)などの PCI カードがおすすめです。
-
ddb(4)を用いたカーネル設定の手動変更
- カーネルを '
-d' オプションをつけてブートします。 (カウントダウンが 0 になる前に、スペースバーを押し、 'boot netbsd -d' と入力します。) -
x/xla loc,100と入力します。 出力の中の0x280を含む欄の offset を記録します。 GENERIC カーネルにはこのアドレスを持つ 3種類の ISA ネットワーク カードが存在します。 - 使用するカードの正しいアドレスを設定する
w/l loc+<offset> <address>. - 使用するカードに合うように IRQ を設定する
w/l loc+<offset>+0x10 <irq>. - ブートを続行する。
- カーネルを '
USB の問題 'uhci0: couldn't map interrupt' (top)
この問題は BIOS で (おそらく "PNP & PCI Setup" というメニュー中の) "Allocate interrupt for USB" オプションが無効になっている場合に 起こり得ます。有効にすると、多くの場合 NetBSD が起動する直前に BIOS は、IRQ の設定を含んだ 'Serial Controller'リストを表示します。
'WARNING: CYRIX 486DLC CACHE UNCHANGED' とは何ですか? (top)
このメッセージはカーネルが Cyrix 486DLC を検出したが、Cyrix の特別な キャッシュの設定が使用可能か判断できないために、キャッシュ設定を 行わなかったことを意味します。これは 386 マザーボード用の Cyrix '386/486 hybrid' アップグレードの場合にのみ該当し、 Cyrix を含む全てのベンダーの 486(以降の cpu を含む)プロセッサーの場合には 該当しないはずです。
多くの 386 マザーボードは CPU のキャッシュ一貫性を保つ機能を備えていないため、 バスに接続されたデバイスから bus hold 信号がアサートされた時 (これはバスマスタ トランザクションが進行中である可能性を示す) は常に、DLC のキャッシュを フラッシュしなければなりません。これはキャッシュ一貫性を完全に維持できる反面、 速度低下の大きな要因になります。
Cyrix 用キャッシュ設定のために次の2つのカーネルオプションが存在します:
-
options CYRIX_CACHE_WORKS
このオプションは CPU キャッシュを有効にしますが、 外部バスの hold リクエスト時にはフラッシュするように指示します。 486 よりは遅くなりますが、386(on-chip キャッシュがありません)よりは 高速になります。このオプションはほとんどのマザーボードで 動作するはずです。 -
options CYRIX_CACHE_REALLY_WORKS
このオプションは特別に 486DLC/486DRX 用にデザインされたマザーボードで のみ使用可能です。これらのマザーボードでは正しく完全にバスマスタリングが 実装されており、キャッシュ一貫性を保つ機能がサポートされています。 (あまり出回っていません。)このオプションは本物の 486 と同様に、 バスの hold リクエスト時にフラッシュすることなく、キャッシュを 完全に利用します。
これら 2つが両方とも指定されていない場合、chip は BIOS の設定のまま 動作します。ほとんどの BIOS はキャッシュオプションを指定しません。 これは確実に動作する安全策ではありますが、パフォーマンスは最低となります。 もし、486DLC/486DRX マザーボードや DLC/DRX タイプの BIOS ならば、 自動的にパフォーマンスが良くなるような設定になっているはずです。
これらのオプションは試してみる価値はあります。もしマザーボードが指定されたオプションを サポートしていない場合、ブート後すぐにシステムは動作しなくなります。 そうなった場合は、カーネルの最適化を弱めればいいだけです。 (もちろん、最適化していないカーネルを上書きしてはいけません。 新しいカーネルがブートしなかったときに必要になります!)
"setting tty flags" の直後にモニターが DPMS modeに落ちてしまうのですが (top)
少なくとも一人の人が、カーネルによってビデオカードが正しくプローブされないと 報告しています。具体的には "setting tty flags" が表示された後、スクリーンが 暗くなり、モニターがパワーセーブモードになってしまうという現象です。 報告された原因はいくつかのビデオカードが DOS でいうところの COM4 と 同じ I/O メモリーを使用していることでした。この理由により、 NetBSD の com3 (これは DOS の COM4 にあたります) は GENERIC カーネルで 有効になっていません。
PCMCIA モデムが動かない (top)
もし、あなたのお持ちの PCMCIA モデムが動かないようでしたら、 com(4) デバイスをハードウェアフローコントロールモードで使用しているか どうかを確認して下さい。 多くの PCMCIA モデムはハードウェアフローコントロールを用いている時だけ動きます。
VIA EPIA ハードウェアへのインストール (top)
NetBSD のブートローダーは、現在、VIA C3 CPU を使ったある種のシステム、 特に VIA EPIA シリーズの ITX ボードに対しては、壊れています。 ブートの初期段階において、画面の同期が外れて、システムが固まります。 この問題は、 1.6.2 より新しい NetBSD システムで発生します。 このことは、PR/26007 に記録されています。
回避策は、PR/26007 が解決するまでは 1.6.2 のブートローダーを使うことです。
これには二通りの方法があります。
-
予備のシステムがある場合:
-
ハードディスクドライブを、別のマザーボードにつなぎ変えます
NetBSD 3.x をインストールします
リブートします
-
1.6.2 版の installboot を実行します。 ide ドライブの場合は
installboot > /usr/mdec1.6/biosboot.sym /dev/rwd0a
でよいはずです。
-
ハードディスクドライブを Epia マザーボードに戻します
-
-
予備のシステムがない場合は、 まず 1.6.2 をインストールする必要があります:
最小限の 1.6.2 (Kernel + Base + etc) をインストールします
-
root でログインして、3.0.1 の CD を挿入します
# mkdir /cdrom # mount /dev/cd0a /cdrom # mv /netbsd /netbsd.1.6.2 # cp /cdrom/i386/binary/kernel/netbsd-INSTALL.gz /netbsd # shutdown -r now
これで、3.0.1 のインストールカーネルが、 ハードディスクから (CD からブートし直したのではないことを確認してください) ブートしたはずです
インストーラーが “Do you want to update the bootcode in the Master Boot Record to the latest version of the NetBSD bootcode?” と質問したら、 “NO” と答えます
インストーラーが “Would you like to install the normal set of bootblocks or serial bootblock?” と質問したら、“g: Use existing bootblocks” と答えます
年代ものの 1.6.2 は、ftp://ftp.NetBSD.org/pub/NetBSD-archive/NetBSD-1.6.2/i386/ にあります。
X Window System の実行
X が INSECURE なカーネルか、シングルユーザーモードでしか起動しない (top)
'options INSECURE' が指定されていない場合、NetBSD は /dev/mem への
直接アクセスを禁止します。もしもあなたのビデオカードが linear memory access が
必要であったり、恩恵を受けることが出来るのならば、aperture ドライバーを
NetBSD パッケージ
コレクション (sysutils/aperture で
"make install" します) からインストールするべきでしょう。
これは、たとえ kernel の secure レベルが 0 より大きくても、X サーバーが
VGA のフレームバッファーに直接アクセスすることを可能にします。
X が実行できず "Fatal server error: xf86MapVidMem: Could not map /dev/vga (Invalid argument)" とのメッセージが出ます (top)
これは、上で説明した問題 の症状です。
X が PS/2 mouse を認識しない (top)
1.3.3 までのデフォルトの NetBSD/i386 GENERIC カーネルには PS/2 マウスのサポートが 含まれていません。PS/2 サポートを有効にするためには カーネルの 再コンパイルが必要となります。 上記の説明にしたがってステージ 4 の <MYCONF>編集の際に次の行を探し 先頭の '#' を取り除いてカーネルを作成して下さい。
'#pms0 at pckbd? irq 12'
これにより、ブート時にブートメッセージ中に 'pms0 at pc0' または 'pms0 at vt0' という表示が含まれるようになります。
XFree86 のセットアップを行なう時には、マウスデバイスとして 'wsmouse' を プロトコルとして 'wsmouse' を選択して下さい。
ホイールマウスを有効にする方法は? (top)
ホイールマウス操作を使えるようにするには、 /etc/XF86Config
設定ファイルを編集し、このファイルの
Section "InputDevice"
Identifier "Mouse1"
セクションに、
Option "Buttons" "5" Option "ZAxisMapping" "4 5"
を追加します。
その他の NetBSD/i386 FAQs
NetBSD/i386 で Netscape や Mozilla は使えますか (top)
はい。 Netscape ブラウザーは、バイナリーエミュレーションを使って NetBSD/i386 上で動作できます。
Mozilla はソースコードが公開されており、 NetBSD でネイティブに動作するよう
移植されています。また、 Mozilla のバイナリーパッケージが、 NetBSD パッケージコレクション
(www/mozilla 参照) から利用可能です。
Netscape Navigator (スタンドアローンなブラウザー) や Netscape Communicator
を NetBSD/i386 で動かす最も簡単な方法は、 BSDi バイナリーエミュレーション
または Linux バイナリーエミュレーションを使うことです。
BSDi 版を動作させるために必要なことは、 BSDi エミュレーション用の
カーネルオプションをカーネル設定ファイルに加えるだけです
(標準でインストールされる GENERIC カーネルには、すでに含まれています) 。
NetBSD/i386 での Linux エミュレーションでは、 /emul/linux 以下に
Linux のライブラリーが必要です (compat_linux(8) 参照) 。
Linux 版は NetBSD パッケージ
コレクション から利用可能です; www/navigator または
www/communicator をインストールすると、このパッケージの依存関係によって
/emul/linux が用意されます (または emulators/suse_linux
で "make install" することでもできます) 。
Macromedia Flash のようなバイナリーのみによるプラグインを使いたい場合は、 Linux 版の navigator / communicator を使う必要があります。
NetBSD 上での GNU/LINUX 用の Quake II の実行 (top)
すでに、NetBSD i386が動いていることを仮定します。
また、
カーネルの再構築 の知識も必要です。
この方法は NetBSD 1.4 (以降) ファミリー、
Quake II
バージョン 3.20 と NetBSD の パッケージセット中の
suse_* v6.4 emulators を基にしています。
他の (より新しい) バージョンでもおそらく同じように動くことでしょう。
始める前の注意点:
- エミュレーション用のバイナリーと Quake II ゲーム本体のために かなりのディスク容量が必要です。
- おそらく全てを root としてインストールする必要があります。 これは、あなたのシステム全体とセキュリティーを suse_* と ゲームの 作者に委ねることを意味します。多くの個人で使用している場合には それほどの問題にならないかも知れませんが、全てはあなたの判断に 委ねられます。 私個人としては、これらの作者を信じない理由はありませんが、 あなたのシステムが複雑であればあるほど、またコンポーネントを 無条件で信じれば信じるほど、危険は大きくなることに注意してください。
- 私が 8-bit モードの X サーバーで試したところ、Quake II がきちんと 動作したグラフィックモードは ``ref_softx'' だけでした。 OpenGL は``glide'' なしではうまくいかないみたいですが、 私が持っているカード(STB Nitro 3D)では glide はサポートされていません。 Direct video は動作するようですが、必要なライブラリーを 私は持っていません。 (これは結局、まずは X Window System の設定が必要と いうことになります。) ゲーム自体は 24-bit X でも動作しますが、グラフィックがおかしくなります。 Quake II は標準サイズのウインドウを使用しますが、水平方向に 1/2 に 押し縮められた状態にグラフィックがなってしまいます。この時、 画面の右半分は真っ黒になってしまいます。
- ドキュメントによれば、Quake II を任意のユーザーが実行できるように 設定できることになっています。 しかしながら私はゲームを root でしか 実行できませんでした。
- 多くの人は Quake II サーバーを NetBSD で実行することに成功しています。 しかし、私はネットワークモードでしか実行できていません。 何が問題なのかは不明です。
以上で全てです。あとは Quake II 付属の使用説明書を良く読んで下さい。
- もしも、NetBSD 1.4 か 1.5 の GENERIC カーネルを使用していない ならば、カーネルコンフィギュレーションファイル中で COMPAT_LINUX オプションを 有効にして、カーネルを作り直し、リブートする必要があるかもしれません。
- あらかじめ、GNU/LINUX-compatibility package をインストールしておく必要があります。 注意: linux_* というパッケージは、必要なものを含んでいるわけでは ありません。でも、GNU/LINUX 版の BASH を パッケージから入れておきたいと思うはずです。 (エミュレーションの動作形態として、エミュレーション中に動作する いくつかの shell を用意しておくことは 便利なときがあります。でも、かならず用意しておく必要が あるわけではありません)
- 配布 CD を mount(8) します。
- CD の ルートディレクトリーに移動します。
-
sh(1) を用いて
/bin/sh setupを実行します。 - setup の途中で、``rpm'' についてたずねられる場面があります。 rpm とは Red-Hat Package Manager の事で、これは NetBSD パッケージとして 利用可能です。(rpm はもともと GNU/LINUX 用のコマンドです。) ところが、私がそれを使用するように指定したところ、setup スクリプトは 利用しようとしませんでした。 でもあわてないでください。 私は単にデフォルトを選びました。 こうすると、setup は cpio(1) を用います。 rpm を使わないならば、setup は cpio の存在する場所を尋ねてきます。 NetBSD 1.4 ファミリーでは cpio は ``/usr/bin/cpio'' にあります。
- その他の点ではすべてがスムーズに進むはずです。 CD は setup の最中に何度もスタートストップを繰り返すかもしれません。(私はそうでした) でも、これは問題ではありません。 CD を見てみると、CD-ROM にはトラックが分断されて記録されているようなので マスター CD-ROM の作成に何らかの細工がされているのだと考えています。
助言と問題解決のヒント
- ``ウィンドウの飾り'' (境界線その他もろもろ) の表示はお嫌いですか? ../quake2/config.cfg ファイルを見てください。 horizontal offset(デフォルト値は 3) と vertical offset (22) という 2つのオプションがあるはずです。 これらを 0 に設定するとタイトルバーと境界線はなくなります。 スクリーンの解像度と同じ解像度でゲームを実行する場合には、 こうしておくと良いでしょう。
- このゲームは GNU/LINUX 用のものなので、Quake II を GNU/LINUX ディレクトリーに移動したくなるかもしれません。 (もし、setup スクリプトを GNU/LINUX BASH で実行していれば 自動的にこうなりますが、NetBSD の sh を用いていれば、 Quake II は /usr/local/games にインストールされます。)
- Quake II が ``pics/colormap.pcx'' ファイルがないというような エラーで実行できない場合、おそらく root で 実行していないのでしょう。 root 以外が実行できるようにできるかもしれませんが、 一番単純なのは ``su root'' をしてから、ゲームを実行してみることです。
Windows を使わないのですが、払い戻しが受けられますか (top)
いくつかの PC システムは Microsoft Windows がプレインストールされた 状態でしか手に入れることが出来ません。このようなシステムの価格には Windows ライセンスの値段が含まれています。もし、あなたが Windows を 使用したくないのならば、Microsoft から払い戻しを受ける権利があるかも 知れません。ただし、これは複雑で長い時間のかかるものとなるでしょう。
もっとも良い方法は Windows を完全に含まない PC の再販ができる業者を探し、 支援する事でしょう。
シリアルラインを用いた NetBSD のカーネルのデバッグ法 (top)
KGDB HOWTO を見てください。
- XFree86 ドキュメンテーション - X のインストールや設定に関する問題。
- NetBSD 1.5.2 インストールノート - サポートされているハードウェアおよびインストールの方法。
- The NetBSD ELF FAQ. NetBSD 1.5以降 i386 port は a.out ではなく、ELF 実行形式を使用します。
- wscons ドキュメンテーション. NetBSDの機種非依存のワークステーションコンソールドライバー。
- port-i386 メーリングリスト - さらなる疑問がある場合は参加して下さい。
- Netbooting NetBSD/i386 - フロッピーまたは DOS パーティションからのブート。
- ラップトップの パワーマネジメント
- General NetBSD Documentation - NetBSD/i386 に限らない質問
- Luke Mewburn による *BSD のための i386 ハードウェアの選び方ガイド
- 東芝による、 NetBSD を含む マシン/OS 互換性データベース
- Reed Media による、 ラップトップと NetBSD のリスト
