Skip to main content.
Google custom search

NetBSD/i386 FAQ (よくある質問と回答集)

他のオペレーティングシステムとの共存

特定のハードウェアの問題

古いマシンのディスクの問題


他のオペレーティングシステムとの共存

マイクロソフトパーティションへのアクセス (トップ)

NetBSD は Microsoft の FAT, FAT32, NTFS4, NTFS5 を含む様々な異なる ファイルシステムをサポートしています(完全なリストは fstab(5) を参照して下さい)。 現在のところ、 NTFS ファイルシステムのサポートは、読み出し動作のみ信頼性のあるものです。 Long filename は FAT と NTFS の両方でサポートされています。

他のファイルシステムにアクセスするためには、disklabel を セットアップする必要があります。disklabel はシステムに対して どこにディスク上のデータを探しにいけば良いか教えます。 正しい disklabel を用いれば、NetBSD で使用するために mount することができます。

ディスクラベルの設定

  1. ファイルシステムが含まれているディスクを決定する
    もし、一つのディスクしか持っていないのならば、 それが IDE か SCSI かによって、それぞれ wd0 または sd0 となります。複数のディスクを お持ちならば、dmesg | more の出力から設定の対象となるディスク名を 決定して下さい。
  2. パーティションのサイズとオフセットの決定
    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

  3. disklabel <DISKNAME> と入力する
    もしディスクが MS-DOS パーティションしか含んでいない場合、 NetBSD は自動的に先頭の MS-DOS パーティションを含む '仮想'ディスクラベルを 生成します。
    出力は次のようになるでしょう:
    # disklabel wd0
    
    physical disk information
    8 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 を生成することができます。

  4. ディスクラベル編集の準備
    vi以外のエディターを用いたい場合は、 setenv EDITOR <YOUR_EDITOR> 例えば setenv EDITOR pico と入力します。
  5. disklabel -e <DISKNAME> と入力して disklabel を編集します
    disklabel の最下部まで進めば label の編集準備は完了です。

    必要なのは次の2点です:

    1. 使用されていない最初のアルファベット (この例では 'f')。
    2. 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' 行には、存在するパーティションの 数以上の数字を指定する必要があります。

  6. 変更を保存し、ディスクラベルをチェックする
    エディターを終了し、 disklabel <DISKNAME> と入力して、 新しいパーティションが存在するか確認して下さい。

ファイルシステムのマウント

各々のディスクパーティションは /dev にデバイスエントリーを持っています。 デバイスエントリーの形式は /dev、ディスク名、パーティション文字 となっています。 上記の例題では NTFS と MSDOS パーティションに対するデバイスエントリーはそれぞれ /dev/wd0f/dev/wd0g となります。

  1. それぞれのパーティションに対してマウントポイントを作成する
    mkdir <MOUNTPOINT>, 例えば mkdir /msdosmkdir /nt4
  2. ファイルシステムをマウントする
    mount -t <TYPE> <DEVICE> <MOUNTPOINT>, 例えば mount -t msdos /dev/wd0g /msdosmount -t ntfs /dev/wd0f /nt4
  3. うまくいっていることを確認する
    ls <MOUNTPOINT>, 例えば ls /msdosls /nt4
  4. ブート時に自動的にファイルシステムがマウントされるようにする
    もし、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 をインストールし終っていることを仮定しています。

  1. ブートメニューをインストールするために 'fdisk -i -c /usr/mdec/mbr_bootsel' を実行します。
  2. その後、対話的にブートメニューを設定するために '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)を用いたカーネル設定の手動変更
    1. カーネルを '-d' オプションをつけてブートします。 (カウントダウンが 0 になる前に、スペースバーを押し、 'boot netbsd -d' と入力します。)
    2. x/xla loc,100 と入力します。 出力の中の 0x280 を含む欄の offset を記録します。 GENERIC カーネルにはこのアドレスを持つ 3種類の ISA ネットワーク カードが存在します。
    3. 使用するカードの正しいアドレスを設定する w/l loc+<offset> <address>.
    4. 使用するカードに合うように IRQ を設定する w/l loc+<offset>+0x10 <irq>.
    5. ブートを続行する。

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 のブートローダーを使うことです。

これには二通りの方法があります。

  1. 予備のシステムがある場合:

    • ハードディスクドライブを、別のマザーボードにつなぎ変えます

    • NetBSD 3.x をインストールします

    • リブートします

    • 1.6.2 版の installboot を実行します。 ide ドライブの場合は

      installboot > /usr/mdec1.6/biosboot.sym /dev/rwd0a

      でよいはずです。

    • ハードディスクドライブを Epia マザーボードに戻します

  2. 予備のシステムがない場合は、 まず 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' を 用いることです。

  1. pfdisk を ftp.NetBSD.org (またはそのミラーサイト)からダウンロードします。/pub/NetBSD/NetBSD-5.0/i386/installation/misc/pfdisk.exe.
  2. 'pfdisk 0' を実行します。 (0 は最初のディスクを 1 は二番目のディスクを意味します)。
  3. 'list' と入力し、
  4. ジオメトリーを記録した後、リブートをかけ、 NetBSD に用います。

BIOS disk parameter limits

パラメーター ビット数 最大値
シリンダー数 10 1023
ヘッド数 8 255
1トラック当りのセクター数 6 63

(これにより、少なくとも BIOS が扱える最大の容量は 8Gbytes に制限されます。)

その他の情報