NetBSD/i386 FAQ (よくある質問と回答集)
他のオペレーティングシステムとの共存
- マイクロソフトパーティションへのアクセス
- NetBSD や DOS/Windows/その他の OS のメニューからの起動
- Windows NT/2000/2003/XP のブートメニューに NetBSD を加える方法
- 全体が DOS/Windows で使用されているディスクに NetBSD をインストールする
- dosboot.com がカーネルのロード後にマシンをリセットしてしまいます
- WinME マシンでブートフロッピーがなく Win98 CD しかない場合の、 DOS プロンプトへの入り方
特定のハードウェアの問題
- IRQ 2 と IRQ 9
- 'ne1: device time out' という問題
- USB の問題 'uhci0: couldn't map interrupt'
- "setting tty flags" の直後にモニターが DPMS modeに落ちてしまうのですが
- PCMCIA モデムが動かない
- VIA EPIA ハードウェアへのインストール
古いマシンのディスクの問題
他のオペレーティングシステムとの共存
マイクロソフトパーティションへのアクセス (トップ)
NetBSD は Microsoft の FAT, FAT32, NTFS4, NTFS5 を含む様々な異なる ファイルシステムをサポートしています(完全なリストは fstab(5) を参照して下さい)。 現在のところ、 NTFS ファイルシステムのサポートは、読み出し動作のみ信頼性のあるものです。 Long filename は FAT と NTFS の両方でサポートされています。
他のファイルシステムにアクセスするためには、disklabel
を
セットアップする必要があります。disklabel
はシステムに対して
どこにディスク上のデータを探しにいけば良いか教えます。
正しい disklabel
を用いれば、NetBSD で使用するために
mount
することができます。
ディスクラベルの設定
- ファイルシステムが含まれているディスクを決定する
もし、一つのディスクしか持っていないのならば、 それが IDE か 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 ro
上の例題の場合は
/dev/wd0g /msdos msdos rw /dev/wd0f /nt4 ntfs ro
となります。
NetBSD や DOS/Windows/その他の OS のメニューからの起動 (トップ)
この部分は、すでにディスクのパーティションを切っていて、NetBSD と その他のあなたが使用するつもりの OS をインストールし終っていることを仮定しています。
- ブートメニューをインストールするために 'fdisk -i -c /usr/mdec/mbr_bootsel' を実行します。
- その後、対話的にブートメニューを設定するために 'fdisk -B' を実行します。 (これはオプションではありません。)
fdisk(8) のマニュアルも参照して下さい。
Windows NT/2000/2003/XP のブートメニューに NetBSD を加える方法 (トップ)
方法その 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:\grldr="NetBSD GRUB"
全体が DOS/Windows で使用されているディスクに NetBSD をインストールする (トップ)
註: この方法は、FAT ファイルシステムにのみ適用できます。
DOS/Windows によって全てのディスク領域が占有されているハードディスクでも、 ディスクに空き容量がある場合ならば、DOS/Windows のパーティションを 小さくし、2番目のパーティションを作成することで NetBSD をインストールすることが できます。
これを行なうためには
- DOS パーティションの全てのデータを defrag を用いて パーティションの先頭に移動する。
- DOS パーティションの大きさを FIPS を用いて変更する。 FIPS は 次の場所から手に入れることができます。FIPS web サイト. 全ての付属ドキュメントを読む事を忘れないで下さい。
- 上で述べられている方法でブートローダーをインストールします。
- NetBSD をインストールします。
dosboot.com がカーネルのロード後にマシンをリセットしてしまいます (トップ)
dosboot.com がカーネルのロード直後にマシンをリセットしている場合は、 "himem.sys" がロードされていないことを確認してください。 "config.sys" をよく確かめてください!
WinME マシンでブートフロッピーがなく Win98 CD しかない場合の、 DOS プロンプトへの入り方 (トップ)
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-5.0/i386/installation/misc/dosboot.com から入手可能) などのツールやカーネルを置いておいた C: ドライブにアクセスすることができます。
特定のハードウェアの問題
IRQ 2 と IRQ 9 (トップ)
IBM AT とその後継機 (全ての NetBSD が作動する PC を含みます) では さまざまなハードウェア上の理由のために IRQ 2 は IRQ 9 にマップされています。 そのため、"IRQ 2" と設定されているカードを使うためには NetBSD のカーネルコンフィギュレーションファイルでは IRQ 9 を 選択する必要があります。
'ne1: device time out
' という問題 (トップ)
古いタイプの 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
' (トップ)
この問題は BIOS で (おそらく "PNP & PCI Setup" というメニュー中の) "Allocate interrupt for USB" オプションが無効になっている場合に 起こり得ます。有効にすると、多くの場合 NetBSD が起動する直前に BIOS は、IRQ の設定を含んだ 'Serial Controller'リストを表示します。
"setting tty flags" の直後にモニターが DPMS modeに落ちてしまうのですが (トップ)
少なくとも一人の人が、カーネルによってビデオカードが正しくプローブされないと 報告しています。具体的には "setting tty flags" が表示された後、スクリーンが 暗くなり、モニターがパワーセーブモードになってしまうという現象です。 報告された原因はいくつかのビデオカードが DOS でいうところの COM4 と 同じ I/O メモリーを使用していることでした。この理由により、 NetBSD の com3 (これは DOS の COM4 にあたります) は GENERIC カーネルで 有効になっていません。
PCMCIA モデムが動かない (トップ)
もし、あなたのお持ちの PCMCIA モデムが動かないようでしたら、 com(4) デバイスをハードウェアフローコントロールモードで使用しているか どうかを確認して下さい。 多くの PCMCIA モデムはハードウェアフローコントロールを用いている時だけ動きます。
VIA EPIA ハードウェアへのインストール (トップ)
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/ にあります。
古いマシンのディスクの問題
540MB BIOS limit があるマシンで大きなドライブを使用するには (トップ)
BIOS でジオメトリーとして 1024/16/63 を入力し、ブートパーティションが 先頭の 540M に含まれていることを確認して下さい (これは、カーネルが BIOS から読み込まれるために必要です)。 そうすれば、NetBSD から ディスク全体を使用することが可能です。
"正しい" ディスクジオメトリーの決定法 (トップ)
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-5.0/i386/installation/misc/pfdisk.exe.
- '
pfdisk 0
' を実行します。 (0 は最初のディスクを 1 は二番目のディスクを意味します)。 - '
list
' と入力し、 - ジオメトリーを記録した後、リブートをかけ、 NetBSD に用います。
パラメーター | ビット数 | 最大値 |
---|---|---|
シリンダー数 | 10 | 1023 |
ヘッド数 | 8 | 255 |
1トラック当りのセクター数 | 6 | 63 |
(これにより、少なくとも BIOS が扱える最大の容量は 8Gbytes に制限されます。)
- wscons ドキュメンテーション. NetBSD の機種非依存のワークステーションコンソールドライバー。
- port-i386 メーリングリスト
- Netbooting NetBSD/i386 - フロッピーまたは DOS パーティションからのブート。
- ラップトップの パワーマネジメント
- General NetBSD Documentation - NetBSD/i386 に限らない質問
- Reed Media による、 ラップトップと NetBSD のリスト