[1999/08/10] NetBSD/pc98 バージョンアップ(1.2→1.3/1.3.1→1.4.1)の手引 NetBSD/pc98 core team NetBSD/pc98を1.2〜1.3.3ベースのバージョンからへ1.4.1ベースへ移行 する為の手順を2通りの方法に関して紹介します。 ※ 説明不足な点などあるかと思いますので、分かりにくい部分は netbsd98-user ML へお願いします。 ※ ドキュメント/インストーラを整備して頂ける方大募集(^^;; +-----------------------------------------------------------+ |1.3 移行後は1.2へ戻る事はできません。1.3のバイナリは1.2では| | 動作しませんし、1.2のバイナリを1.3で動作させた場合に問題が| | 発生する事もあります(大抵はリコンパイルすれば解消します)。| | | |1.3.x→1.4.1の移行では特に問題は発生しないと思われます。 | +-----------------------------------------------------------+ [新規インストール] 既存の1.2〜1.3.3環境を残して別のディスクへインストール 特徴: 古いバイナリを持たない clean な 1.4.1 環境を構築 出来る。 既存環境をmountするなどして、徐々に環境を移行できる。 いざという時には従来の環境を使用できる。 FreeBSD(98)環境等からのインストールも可能。 欠点: 既存環境とは別途ディスクが必要 [上書きインストール] 既存の環境に上書きしてインストール 特徴: それまで構築した環境を引続き使用可能。 既存の環境+α程度のディスク容量で移行可能。 特にNote系の場合はこの方法しか選択出来ないかもしれない。 欠点: 1.2のバイナリはうまく動作しない事がある(再makeする)。 移行手順 これより移行手順を 新規にインストールする際に必要な手順 と 上書きインストールする際に必要な手順 に分けて書きます。 [---- 新規インストールの場合 ----] 1. 以下のものを事前に用意します NetBSD/i386 関連 NetBSD/i386 1.4.1 のバイナリ(base.tgz, comp.tgz, ....) NetBSD/i386 1.4.1 のソース(syssrc.tgz, src.tgz, ....) → syssrc.tgzは必須。src.tgzも必要となるケースがあります。 → xsrc.tgzはXウインドウのソースですので必要ないでしょう。 NetBSD/pc98 関連 NetBSD/pc98 1.4.1 カーネルファイル(netbsd.GENERIC98) NetBSD/pc98 1.4.1 98版依存バイナリ(bin98.tgz) NetBSD/pc98 1.4.1 ソース差分(src.skel.tgz, patch-0001.gz,....) NetBSD/i386 関連は以下のところ等から入手できます。 ftp://ftp.iij.ad.jp/pub/NetBSD 等 (NetWork環境が良い場合) UnixUser等の付録CD-ROM (CD-ROMが欲しい場合) NetBSD/pc98 関連は以下のところ等から入手できます。 ftp://egg.math.sci.hokudai.ac.jp/pub/NetBSD-pc98 ftp://ftp.spec-j.co.jp/pub/os/NetBSD-pc98 # ftp://ftp.lb.u-tokai.ac.jp/pub/personal/nork/NetBSD-pc98-13 ※ egg.math.sci.hokudai.ac.jp でのディレクトリ構成を後の補足事項に 付けておきます。 注意:locale化された環境にする場合は、上記のバイナリーのlocale版を      用意します。locale化されたバイナリは上記サイトのlocale化が      明示されたdirectoryから入手出来ます。 重要な注意: 既に従来環境ででlocale化している場合は、必ずlocale化バイナリを 使用します。  2. 1.4.1バイナリ等を必要に応じてNetBSD/pc98領域やDOS領域等に 置く。(CD-ROMがある場合はこの処置は不要かも) 3. インストール先のディスクを初期化しておきます。 幾つかの方法がありますが、手軽な方法を書いておきます。環境に 応じて適宜読み変えてください。 1. FORMAT.EXE,HDFORMAT.EXEを含むDOSのブート可能FDを用意。 2. FDから起動し、対象ディスクを初期化&パーティション設定。 3. NetBSD/pc98を起動し、dospartを実行して先程確保した領域を NetBSD/pc98用とする。 4. 必要に応じてdisklabelを編集する。bootブロックの書き込みも 忘れずに。 5. newfsしてファイルシステムを構築。 FreeBSD(98)環境からのインストールも可能です。詳細は補足事項の3. を参照してください。 4. NetBSD/pc98 1.4.1 カーネルのインストール インストール先ディスクの /(root) に netbsd.GENRIC98 を netbsd としてコピーする。 注意:1.2から1.4.1へ移行する場合は、必ずカーネルを先に置き換え ます。1.2カーネルでは1.3以降のバイナリは動作しない為です。        5. インストール先ディスクをマウント 先程用意したファイルシステムを適当な位置にマウントする。 6. NetBSD/i386 バイナリのインストール 7. NetBSD/pc98 バイナリのインストール 8. NetBSD/i386 ソースのインストール 9. NetBSD/pc98 ソースのインストール zcat base.tgz | (cd マウントポイント;tar --unlink -xvpf -) 等として、各ファイルをインストールする。etc.tgzに関しても同様に インストールします。 注: インストールは必ず i386 -> pc98 の順に行います。 この作業を行う為のシェルを[upgrade1.sh]として用意してみたので、必要 に応じて修正して利用する事もできます。 pc98ソースをインストールする際には、最新版までのパッチの適用も行って おきましょう。 /etc 配下のファイルに関しては、一部は98版固有の変更が行われている ものもあります。それらの反映を行う為 union mount後に /usr/src/etc 及び /usr/src/etc/etc.i386を参照して適切にコピーしてください。 10. /etc 配下のファイルの修正 1.2からの変更がかなり行われています。必要な設定は主にrc.confに集中 していますが、他のファイルも一通りチェックして下さい。 特に rc.conf に関しては、rc_configure=YES を設定しておかないと、 マルチユーザーモードに移行できません。 一般に設定変更を行うと思われるファイルとしては、 rc.conf rc.local ld.so.conf hosts 等が挙げられるでしょう(環境によっては他のファイルも変更が必要です)。 1.3では起動時にswapが自動的に接続されなくなっています。fstabに swapデバイスの記述がなければ、追加して下さい。 PCカードやPnPデバイスを使用している場合は、それぞれの設定ファイル /etc/pcmcia.conf 及び /etc/ipp.confも1.2時代からは大幅に変更、追加 されています。 これらのファイルは自動的にはインストールされませんので、 src.skel/sys/arch/i386/util/sbin/pcsd/pcmcia.conf src.skel/sys/arch/i386/util/sbin/ippctrl/ipp.conf を参照もしくはコピーして適切に処理してください。 11. リブートして、NetBSD/pc98 1.4.1 環境で起動。 12. カーネルを再構築(必要に応じて) 手順は従来のNetBSD/pc98と同様です。i386版のソースとpc98版ソースの 両方が必要です。一般にはunionマウントされていない状態で、以下の様 に行います。 i386用の 1.4.1 ソースと pc98用の 1.4.1 ソースの展開が完了した後の 作業 mount -t union /usr/src.skel /usr/src cd /usr/src/include make includes cd /usr/src/sys make includes make depend make make install cd /usr/src/sys/arch/i386/conf cp GENERIC98 適当な名前のファイル(CONFIG) vi CONFIG config CONFIG cd ../compile/CONFIG make depend make mv /netbsd /netbsd.old cp -p netbsd / shutdown -r now [---- 新規インストールの場合(終り) ----] [---- 上書きインストールの場合 ----] 1. 以下のものを事前に用意します NetBSD/i386 関連 NetBSD/i386 1.4.1 のバイナリ(base.tgz, comp.tgz, ....) NetBSD/i386 1.4.1 のソース(syssrc.tgz, src.tgz, ....) → syssrc.tgzは必須。src.tgzも必要となるケースがあります。 → xsrc.tgzはXウインドウのソースですので必要ないでしょう。 NetBSD/pc98 関連 NetBSD/pc98 1.4.1 カーネルファイル(netbsd.GENERIC98) NetBSD/pc98 1.4.1 98版依存バイナリ(bin98.tgz) NetBSD/pc98 1.4.1 ソース差分(src.skel.tgz, patch-0001.gz,....) NetBSD/i386 関連は以下のところ等から入手できます。 ftp://ftp.iij.ad.jp/pub/NetBSD 等 (NetWork環境が良い場合) UnixUser等の付録CD-ROM (CD-ROMが欲しい場合) NetBSD/pc98 関連は以下のところ等から入手できます。 ftp://egg.math.sci.hokudai.ac.jp/pub/NetBSD-pc98 ftp://ftp.spec-j.co.jp/pub/os/NetBSD-pc98 # ftp://ftp.lb.u-tokai.ac.jp/pub/personal/nork/NetBSD-pc98-13 ※ egg.math.sci.hokudai.ac.jp でのディレクトリ構成を後の補足事項に 付けておきます。 注意:locale化された環境にする場合は、上記のバイナリーのlocale版を      用意します。locale化されたバイナリは上記サイトのlocale化が      明示されたdirectoryから入手出来ます。 重要な注意: 既にlocale化している場合は、必ずlocale化バイナリを使用します。  2. 1.4.1バイナリ等を必要に応じてNetBSD/pc98領域やDOS領域等に置いて おきます。(CD-ROMがある場合はこの処置は不要かも) 3. NetBSD/pc98 1.4.1 カーネルのインストール まず最初に既存のカーネルを netbsd.old 等と保存した上 で、netbsd.GENRIC98 を /netbsd としてコピーする。 注意:1.2から1.4.1へ移行する場合は、必ずカーネルを先に1.4.1に置き 換えます。1.2カーネルで1.3以降のバイナリは動作しません。        4. NetBSD/pc98 1.4.1 カーネルでブート(リブート) シングルユーザモードで起動する。 5. インストール先ディスクをマウント ファイルシステムをマウント(mount -a)する。 6. NetBSD/i386 バイナリのインストール 7. NetBSD/pc98 バイナリのインストール 8. NetBSD/i386 ソースのインストール 9. NetBSD/pc98 ソースのインストール zcat base.tgz | (cd /;tar --unlink -xvpf -) 等として、各ファイルをインストールします。etc.tgzに関しては、 /etc を保存してインストールするか、最初はインストールせずに後で 既存環境の設定内容を反映させて新しい環境へ移行するようにします。 注: インストールは必ず i386 -> pc98 の順に行います。 この作業を行う為のシェルを[upgrade1.sh]として用意してみたので、必要 に応じて修正して利用する事もできます。 pc98ソースをインストールする際には、最新のパッチまでの適用も行って おきましょう。 重要な注意: 既存環境への上書きの場合には、インストールの際(だけではありませんが) には、union mountされていない状態である事を確認しておいてください。 以前の古いソースツリーは無用の問題が起こるのを避ける為にも、 事前に必ず削除するようにしてください。 また、/usr/includeも削除する事が望ましいのですが、プライベートな   変更や追加の可能性もありますので、各自の判断で対処してください。 10. /etc 配下のファイルの修正 1.2からは変更がかなり行われています。上書きインストールの際の最大 の難関は /etc の更新作業でしょう。場合によっては、既存環境を保存 した上で、etc.tgz を展開した方がいいかもしれません。1.4.1 では必要な 設定は主にrc.confに集中していますが、/etc の 1.4.1 化を行う際には 他のファイルも一通りチェックして下さい。 /etc 配下のファイルに関しては、一部は98版固有の変更が行われている ものもあります。それらの反映を行う為 union mount後に /usr/src/etc 及び /usr/src/etc/etc.i386を参照して適切にコピーしてください。 特に rc.conf に関しては、rc_configure=YES を設定しておかないと、 マルチユーザーモードに移行できません。 一般に設定変更を行うと思われるファイルとしては、 rc.conf rc.local ld.so.conf hosts 等が挙げられるでしょう(環境によっては他のファイルも変更が必要です)。 1.3以降では起動時にswapが自動的に接続されなくなっています。fstabに swapデバイスの記述がなければ、追加して下さい。 PCカードやPnPデバイスを使用している場合は、それぞれの設定ファイル /etc/pcmcia.conf 及び /etc/ipp.confも大幅に変更、追加されています。 これらのファイルは自動的にはインストールされませんので、 src.skel/sys/arch/i386/util/sbin/pcsd/pcmcia.conf src.skel/sys/arch/i386/util/sbin/ippctrl/ipp.conf を参照もしくはコピーして適切に処理してください。 11. 一部ファイルの削除 1.2の時とファイルの位置 /sbin から /usr/sbin へ変わったものが あります。以下のが挙げられます。 dumpfs dumplfs mountd nfsd nfsiod quotacheck これらを残しておくと、PATHの関係上 1.2 のバイナリを使用して しまう事になりますので、事前に削除しておく必要があります。 /usr/sbin にこれらのファイルが存在する事を確認してから cd /sbin rm dumpfs dumplfs mountd nfsd nfsiod quotacheck としておきましょう。これも[upgrade2.sh]としてシェルを用意して みました。 12. デバイスファイルの再作成 対応するデバイスの増加やOSの機能拡張によって 1.2/1.3.1 の頃と比較する とデバイスファイルがかなり変わっています(殆どが追加)。 cp src.skel/etc/etc.i386/MAKEDEV /dev を実行してMAKEDEVファイルを更新してください。 また、デバイスファイルの更新を忘れないでください。 cd /dev ./MAKEDEV all 13. リブートして、NetBSD/pc98 1.4.1 環境で起動。 14. カーネルを再構築(必要に応じて) 手順は1.2の時と同様です。1.4.1化する場合は、i386版ソースと pc98版ソースの両方を1.4.1化する必要があります。一般には、 unionマウントされていない状態で、以下のように行います。 i386用の 1.4.1 ソースと pc98用の 1.4.1 ソースの展開が完了した 後の作業 mount -t union /usr/src.skel /usr/src cd /usr/src/include make includes cd /usr/src/sys make includes make depend make make install cd /usr/src/sys/arch/i386/conf cp GENERIC98 適当な名前のファイル(CONFIG) vi CONFIG config CONFIG cd ../compile/CONFIG make depend make mv /netbsd /netbsd.old cp -p netbsd / shutdown -r now [---- 上書きインストールの場合(終り) ----] [補足事項] その1. egg.math.sci.hokudai.ac.jp での NetBSD/pc98 1.4.1 関連ディレクトリ その2. 1.2 〜 1.4.1 で追加された 98版固有の機能(コマンド)について その3. PnPデバイスサポートについて その4. FreeBSD(98)環境からのインストールする際の準備 その5. その他。重要な注意。必ず読んで下さい。 1. egg.math.sci.hokudai.ac.jp での NetBSD/pc98 1.4.1 関連ディレクトリ [ファイルの内容] pub/NetBSD-pc98/1.4.1/README [locale化されたバイナリ(NetBSD/i386部分を含む)] ※ 分量が大きいので注意(ただしNetBSD/i386のバイナリを別途用意する 必要はない) pub/NetBSD-pc98/1.4.1/bin/localed-binary/CKSUMS pub/NetBSD-pc98/1.4.1/bin/localed-binary/GENERIC98.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/GENOLD98.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/INSTALL98.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/bin.tar.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/dev.tar.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/etc.tar.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/sbin.tar.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/usr.bin.tar.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/usr.games.tar.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/usr.include.tar.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/usr.lib.tar.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/usr.libexec.tar.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/usr.misc.tar.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/usr.sbin.tar.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/usr.share.tar.gz pub/NetBSD-pc98/1.4.1/bin/localed-binary/var.tar.gz [最小限の98版依存バイナリ(NetBSD/i386部分は含まない)] ※ ダイヤルアップ等、線が細い場合に推奨。別途i386のバイナリ等を用意 する必要がある。 pub/NetBSD-pc98/1.4.1/bin/minimal-non_localed-binary/bin98.tgz pub/NetBSD-pc98/1.4.1/bin/minimal-non_localed-binary/kernel.tgz [locale化されていないバイナリ(NetBSD/i386部分を含む)] ※ 分量が大きいので注意(ただしNetBSD/i386のバイナリを別途用意する 必要はない) pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/CKSUMS pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/GENERIC98.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/GENOLD98.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/INSTALL98.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/bin.tar.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/dev.tar.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/etc.tar.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/sbin.tar.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/usr.bin.tar.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/usr.games.tar.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/usr.include.tar.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/usr.lib.tar.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/usr.libexec.tar.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/usr.misc.tar.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/usr.sbin.tar.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/usr.share.tar.gz pub/NetBSD-pc98/1.4.1/bin/non_localed-binary/var.tar.gz [NetBSD/pc98 1.3のカーネルソースと最新のPatchLevel40への差分] pub/NetBSD-pc98/1.4.1/src/src.skel-141-0009.tar.gz 2. 1.2 〜 1.4.1 で追加された 98版固有の機能(コマンド)について /sbin/apmconfig (1.2でも存在) 98のAPM(Advanced Power Management) BIOS と接続します。 接続後apmの機能が使用可能になります。 vm86モードを使用しますので、必ずvm86biosd 実行後に起動します。 また、apmconfig後apm管理デーモンapmdも起動すると良いでしょう。 つまり起動の手順はvm86biosd => apmconfig => apmdです。    デスクトップ機種で自動電源切断可能な機種は、vm86biosdと apmconfigを実行する事で、自動電源切断が可能になります。 /sbin/comctrl シリアルの設定変更を行う。各種RS232Cのパラメータの設定が可能。 /etc/comstart, /etc/com.conf も参照 /sbin/diskgen ディスクのパーティション設定を簡易的に行う。NetBSDスライスの 各パーティションのサイズ等を対話的に設定できる。 diskgen {wd?, sd?, fd?, vnd?, etc} NetBSD partitionの修正 diskgen -s {wd?, sd?, fd?, vnd?, etc} DOS partitionの修正 /sbin/idectrl IDEディスクの制御を行う。 idectrl wd? cmd [argument] cmd: status 状態表示 ron READキャッシュON roff READキャッシュOFF won WRITEキャッシュON woff WRITEキャッシュOFF pow n n分後にPOWER DOWNする /sbin/ippctrl (1.2でも存在) PnPデバイスの制御を行う。 ippctrl csn? ldn? [up|down] csn? PnPデバイスの指定を行う。 ldn? PnPデバイスの指定を行う。 up 指定されたデバイスを認識させる。 down 指定されたデバイスを切り離す。 csn?とldn?の番号はippctrlコマンドもしくは起動時のメッセージで 確認出来ます。 % ippctrl ld(1:0):ATIf428(0x28f48986) serial:0x0000a007 stat(device connected) dev(ne0) ld(2:0):WBT0111(0x110154dc) serial:0x00000001 stat(device connected) dev(bs0) ld(2:0)とは csn2 (Card Selection Number) ldn0 (Logical Device Number) という意味です。 /sbin/pcsd (1.2でも存在) PCカードサービスデーモン /sbin/vm86biosd (1.2でも存在) 仮想86モード対応デーモン(APM関連使用時には必須) /sbin/vpdconfig DOSスライスを仮想的な独立したデバイスとして認識させる。NetBSDの パーティションを h まで全て割り当てている場合は、DOS領域として 認識するパーティションを割り当てる事が出来ない為にマウントする ことが出来なくなってしまう。このような際にディスク上のDOS領域を 別デバイスとして認識する事でマウント可能とする。 割当の状況はdisklabel vpd? で確認出来ます。 使用例: vpdconfig -c /dev/vpd0d /dev/wd0d → wd0 のDOS領域を /dev/vpd0? でアクセス可能にする。 mount -t msdos /dev/vpd0a /msdos/a mount -t msdos /dev/vpd0b /msdos/b mount -t msdos /dev/vpd0e /msdos/c → DOS領域は a, b, e, f の順で割り当てられる。 vpdconfig -u /dev/vpd0d → /dev/vpd0d を解放する /usr/sbin/fdc (1.2でも存在) FDD制御を行う。FDに関してはNetBSD/pc98では/dev/fd0[a-h]で自動 認識を行うが、明示的に制御する事もできる。FDのフォーマットも 可能。 fdc [-vhf][-ae ON|OFF][-i interleave][-d density] [device] -v 冗長表示 -h HELP表示 -f FDのフォーマットを行う -a フォーマット自動認識のON/OFF -e 強制1.44MBモードのON/OFF -i インタリーブ数(1〜15を指定) -d FDフォーマットの明示指定 1:1.44MB hd:2HD(1.25M) hc:2HC(1.21M) 7:720KB 6:640KB device 指定ない時は/dev/rfd0aを使用 /usr/sbin/slotctrl (1.2でも存在) PC-Cardスロット制御 使用例: slotctrl slot0 slot.spkr=down(up) # スピーカーOFF(ON) slotctrl slot1 slot.pow=down(up) # 電源供給OFF(ON) ※ スピーカーはデフォルトOFFです。 /usr/sbin/ippinfo (1.2でも存在) PnPデバイスの情報表示 /usr/sbin/iopinfo カーネルで認識しているIOポート情報の表示 /usr/sbin/dumpcis (1.2でも存在) /usr/sbin/devid (1.2でも存在) /usr/sbin/cardinfo (1.2でも存在) PC-Cardの情報表示。 /usr/sbin/apmd (1.2でも存在) APM管理デーモン。 /usr/sbin/apmctrl (1.2でも存在) APM制御。バッテリ残量の取得やCPU速度の制御等が出来る。 3. PnPデバイスサポートについて 基本的に、PnPデバイスは出来る限りPnPモードで使用してください。 PnPモードで使用する事によって幾つかのメリットが生まれます。 [PnPモードサポート時のメリット] a. 面倒なボード設定が不要となる。 ・使用するボードの変更などでリソースの変更が必要な場合でも自動的 に認識できる。 b. 起動後にリソースの解放等を行う事ができる。 ・起動後にボードを(ソフト的に)切り離したり、リセットしたりする事 も可能となります(ippctrlコマンドを使用)。ソフト的に切り離す事 でボードが使用するリソースも解放する事が可能となります。 例1. 普段使用していないMOやHDDの電源は落しているが、ディスク不足 が発生した為、マウントして使用したい。 → PnP対応SCSIカードを使用しているなら、対象デバイスの電源 を入れた後に、一旦SCSIボードを切り離して再接続する事で 接続デバイス再度認識しなおす為、本体の電源を落さなくても 対象デバイス(この場合MOやHDD)を使用可能となる。 例2. PnPモデムが内蔵されているNoteを使用している場合に、モデムが 割込みを一つ使用している。あるPCカードを使用したいが、モデム と要求リソースが競合するらしくて認識できない。 モデムを使用することもあるので内蔵モデムを無効にしたくはない。 → PnPモデムをソフト的に切り離して、割込み解放後にPCカードを 挿す事が可能。モデムを使用する際に再度認識させる事も可能。 98本体がCバスのPnPをサポートしている機種でなくても、NetBSD/pc98ではPnP モードで使用する事が可能になっています。 PnPデバイス(PCカードやCバス用PnPボード)と従来型の非PnP Cbusボートを 混在使用する場合は、以下に述べる事に注意してください。 [非PnPデバイスの設定のポイント] 割り込み番号はirq 6もしくは出来るだけ高い番号を使用するようにして下さい。 ※ 割り込み番号の高低は、割り込み優先度とは関係ありませんので 心配しないで下さい ボード設定は出来るだけNetBSD/pc98のカーネル内の設定に記述しておくよう にしてください。非PnPボードに関してはボードが使用する資源をカーネルに 知らせる必要がありますが、その為にはカーネルのconfigファイルに記述する 他に方法がありません。カーネルで認識した資源を除いた範囲でPnPデバイス への資源割り当てが行われます。 もしNetBSD/pc98で対応していない非PnPボードを使用していて、そのボードと PnPボードが競合している様な場合には、nulldv というリソース予約ドライバ をconfig内に記述することで対応できるようになります。 PnPボードと非PnPボード共存時に考えられる問題と対策例です。 [Q] 私は、某社のNon PnP Cbus boardをC Busにさしています。このボード はirq 5を使います。ボードは特殊ですから NetBSD/pc98では認識され ません。この為、NetBSD/pc98 の kernel はirq 5を他のPnPボードや やPCカードに自動的に割り当てようとしている様ですが、irq 5が重複 してしまう様で正常に動作しません。ボードが割込みを取得できない 為のようですが、どうすると良いでしょう。 [A] 1) install時。 kernel起動時にpush space keyという所でspace keyを押してconfig mode に入ります。 ここで、interrupt cmdを入力すると、登録する割り込み番号を聞いてき ますから、5を入力します。これで割り込み5は予約され、PnP に割り当て られる事はありません。 2) kernel config ファイルにNon PnP Cbusボードのリソースを登録。 nulldvというリソース予約ドライバーがありますので、これでリソース を予約します。この場合、 nulldv* at isa? irq 5 とします。 この他に例えばボードがmemory address 0xc0000 から 0x2000, irq 3を 使っている場合は nulldv* at isa? irq 3 maddr 0xc0000 msize 0x2000 のように登録します。こうして作られたカーネルでは、PnPデバイスは 登録されたリソースを回避するようになります。 注意:これはあくまでNon PnP Cbusボードかつそれに対応するデバイス ドライバが存在しない場合です。PnPボードの場合はこの記述は 不要ですし、対応するデバイスドライバが存在する場合にはその デバイス用の記述を使用して下さい。 4. FreeBSD(98)環境からのインストールする際の準備 NetBSDとFreeBSDではディスクの扱いに関して若干差があります(古いバージョン を除く)。このため、FreeBSD(98)上でNetBSD/pc98領域を確保する場合にはいくつ かの注意が必要です。 1. 同じディスクに共存する事は出来ない。 ごく最近のFreeBSDの場合は別として、共にディスク上に最初に見付かった BSDスライスのaパーティションを/(root)としようとする為に、競合が発生 します。別のディスクへ環境を分ける必要があります。 2. NetBSD/pc98では各パーティションを/dev/wd0a,/dev/sd0hのように表現する。 /dev/[r]{w,s,f,c,wc}d?[a-h] r ... raw デバイスの場合に付ける w ... IDE系HDDデバイス wc .. IDE系CD-ROMデバイス s ... SCSI系HDDデバイス c ... SCSI系CD-ROMデバイス f ... FDDデバイス ? ... 同種のデバイスのユニットを区別する数字 [a-h] パーティション /dev/wd0s1e 等のスライスを意識した指定は使えません。また/dev/od0a 等のodドライバを使用したMOデバイスの指定もできません。MOに関しては SCSIデバイスとして/dev/sd0a等で指定します。 3. NetBSDではdパーティションを使用する事ができない。 以前のFreeBSDでもそうだったのですが、NetBSDではdパーティションに関し てはディスク全体を表す特別なパーティションとして使用します。 以上の注意点を考慮して、ディスクを準備します。FreeBSD領域のないディスクの スライスを一つ用意して、dパーティションをディスク全体としたdisklabelを書き 込んでおきます。bootブロックはNetBSD/pc98のものを使用しますので、明示的に bootブロックのファイルを指定して書き込んで下さい。この後newfsも行っておき ましょう。 この準備以外は 新規インストール と同じ手順で作業できる筈です。 5. その他。重要な注意 *) Kernel configファイルは1.2とかなり異なります。 1.2のconfigファイル は使用する事は出来ません。 GENERIC98やその他のサンプルを参照して変更してください。    *) Locale化された環境の場合、src.skelもlocale化パッチを当てます。 カーネルを再makeする場合や、ユーザバイナリを再構成する時に必要です。 cd /usr patch -p < ./src.skel/contrib/Ext-patches/locale/locale.13.dif 2度このパッチを当てたりしないように注意してください。 パッチを当てる際には、union mount されていない事を確認してください。 ^^^^^^^^^^^^ *) /etcにある各種設定ファイルも大幅に更新されています。 union mount後に/usr/src/etc 及び /usr/src/etc/etc.i386を参照して    適切にコピーしてください。 特にrc.confの設定を忘れないようにしてください。rc.confの編集において rc_configure=YESを忘れないようにしないと、マルチユーザーモードに移行 できません。 *) スワップは1.2と事なり、起動時に接続されません。必ず、/etc/fstabに スワップの対象を記述してください。スワップの記述を忘れてマシンが 正常に動作しないという事が良く見られます。 ※NetBSD/pc98 1.4.1 では仮想記憶が不足した際にメモリ消費の大きい プロセスを殺す事で致命的な状況に陥らないような対策がされてい ます。しかしながらX起動中にXサーバが殺される等の状況が起こる とカーネルは生きているものの、ハングアップしている様に見えて しまいます。 [swapに関する記述例] /dev/wd0b none swap sw 0 0 *) ネットワークインターフェースに関して、従来の ed ドライバで動作 しているものの多くが、ne ドライバへ移行しました。ifconfig の際 の指定を変更する必要があるかもしれません。 #---------------------------------------------------------------------# # 以下はおまけのシェル(バグってたらごめんなさい) # #---------------------------------------------------------------------# #-------------------------[upgrade1.sh]-------------------------------- #!/bin/sh # # Install new binaries # echo -n "Where are the binaries of 1.3 ? [Default:/] > " read DIR13 TARGET=${DIR13:-/} echo -n "Where is the TARGET directory ? [Default:/] > " read TARGET TARGET=${TARGET:-/} export DIR13 TARGET echo "Change directory ${DIR13}." cd ${DIR13} # mount | awk '{print $5}' | grep union > /dev/null # if [ $? -eq 0 ] # then # umount `mount | grep union | awk '{print $1}' | sed 's/://'` # fi # if [ -d ${TARGET}/usr/include ] # then # rm -rf ${TARGET}/usr/include # fi # if [ -d ${TARGET}/usr/src.skel ] # then # rm -rf ${TARGET}/usr/src.skel # fi # if [ -d ${TARGET}/usr/src # then # rm -rf ${TARGET}/usr/src # fi echo "zcat base.tgz | (cd ${TARGET}; tar --unlink -xvpf -)" echo "zcat comp.tgz | (cd ${TARGET}; tar --unlink -xvpf -)" echo "zcat misc.tgz | (cd ${TARGET}; tar --unlink -xvpf -)" echo "zcat text.tgz | (cd ${TARGET}; tar --unlink -xvpf -)" echo -n "Would you like install /etc ? [Y/N(Defeult:N)] > " read YorN YorN=${YorN:-N} if [ ${YorN} = "Y" ] || [ ${YorN} = "y" ] then echo "zcat etc.tgz | (cd ${TARGET}; tar --unlink -xvpf -)" fi echo "OK." #-------------------------[upgrade2.sh]-------------------------------- #!/bin/sh # # Delete old binaries # for OLD in dumpfs dumplfs mountd nfsd nfsiod quotacheck do if [ -x /sbin/${OLD} ] && [ -x /usr/sbin/${OLD} ] then rm /sbin/${OLD} fi done