NetBSD/pc98(based on NetBSD 1.3.1) その他のガイド 最終更新 1997年 3月 19日 このドキュメントでは、その他のドキュメントでは触れていない事に関して の説明です。 1. APMについて 1-1. apmの使用方法 NetBSD/pc98 では、APM(Advanced Power Management) をサポートしています。 apmが使用可能な機種において、 pisa0 at mainbus0 apm0 at systm? という行をコンフィグファイルに記述して作成したカーネルを用いて ブートすると、 apm0 at systm0 dvcfg 0x0: waiting for the connection. と表示されます。その後、/sbin/vm86biosd を実行し、さらに/sbin/apmconfig コマンドを実行する事により、APMが使用可能な機種は、 apm0: version 0x111 funcs 0x07 apm0: code 0xfd80:0x209 data 0xd800:0 apm0: [A/C] on [1st pack] available [2nd pack] none のように、APMのバージョンとバッテリーの残量が表示され、APMを 利用する事が出来るようになります。バッテリーの状態はapmctrl コマンドでも取得することができます。 表示の意味は次のようになります。 battery 未続時 [A/C] on [1st pack] none [2nd pack] none battery 異常 [A/C] on [1st pack] abnormal [2nd pack] none battery 充電 [A/C] on [1st pack] charge [2nd pack] none battery 残量0 [A/C] on [1st pack] empty [2nd pack] none ただし、battery 充電の状態を取得できるかどうかは不明です。 core teamの所有しているマシンでは、chargre 表示の出るマ シンはありませんでした。 バッテリー残量が取得可能な機種では、 battery 接続時 [A/C] on [1st pack] xxx/100 [2nd pack] none battery 計量不能(だだし残量あり)かつ利用可能 [A/C] on [1st pack] avaliable [2nd pack] none と表示されます。計量不能というのは、途中でバッテリーを抜いてまた 入れた場合などが該当します。マニュアルにもちゃんと書いてあります が、このような状態の時はバッテリーを充電してFULLになるまで、バッ テリーの残量を取得する事が出来ません。 バッテリー残量が取得不可能な機種(NetBSD/pc98 core teamで確認 した範囲では、PC9821Nd2/Ne3などが該当します)では、 battery 接続時かつ残量あり [A/C] on [1st pack] available [2nd pack] none と表示されます。 また、apmは可能であるが、バッテリー残量という概念がない機種 (ソフトウェアでパワーオフが出来るデスクトップ機種が該当します) では、 apm0: :can not get power status と表示されます。 3-2. apm指定時のhalt() の動作に関して NetBSD/pc98では、apmを使用できるようにしたカーネルでhalt() が実行されると、自動的に電源が落ちるようになっています。もし 電源が落ちると困るような場合は、 /usr/src.skel/sys/arch/i386/i386/machdep.c にある、apm_pow_off() をコメントアウトして下さい。 また、apmでのpower offが出来ずに、 apm ctrl code 96 と帰って来る時があります。これは、apmによるpower offが出来ない と言うコードです。 APM power controlは、 function 番号 : 7 device 番号 : 機能 : 0 ready 1 standby 2 suspend 3 pow off という指定をするのですが、device番号が機種によってまちまちで す。現在動作が確認できているのは、最近のPC98NOTEだけなので、 旧機種などで動作するかどうかは不明です。 このような現象が発生した時は、次のような方法で調査した後、 NetBSD/pc98 core teamまで連絡をお願い致します。 (1) カーネルを、DDB付きで構築する (2) single user modeに移行し、/ 以外の全てのファイルシステムを umountして下さい。 (3) sync を何度か実行した後、DDBに移行してください。DDBへの移行 方法は、(hook key) + CTRL + STOP(大抵は、CTRL + GRPH + STOP) です。 (4) call_apm_call_direct(0x07, device number, 0x03) を実行する ことにより、APM コマンドを直接実行できます。device numberの 部分を、0x100, 0x0, 0xff, 0x1ff などに変えて、実行してみて 下さい。 運良く実行されたら、そのdevice numberをNetBSD/pc98 core team まで連絡して下さい。 1-3. apmdについて apmdは、apm関連のイベントを検知して所定のプログラムを動作したり、 カーネルにイベントの実行を通知したりするためのdaemonです。 apmdを起動している場合、power offのイベントが発生する事により、 カーネルからapmdにpower offのイベントが発生した事が通知されます。 apmdは/etc/exec.suspendを実行した後にカーネルにサスペンドモード へ移行する事を許可する通知を送り、その通知を元にカーネルはサスペ ンドモードに移行します。 つまり、apmdを実行する事にサスペンド前に任意のプログラムを起動 する事が出来るようになります。 apmdが起動していない場合、サスペンドモード移行許可の通知が発生 しないため、5秒間のtimeoutののちにサスペンド状態に移行します。 したがって、apmdを/etc/rc.localで起動するように指定しておく事を お勧めします。 1-4. apmctrl コマンドについて apmctrl コマンドを実行する事により、APMのさまざまな機能を実行す る事が出来ます。現状では、 "apmctrl suspend" で、サスペンドモードに移行 "apmctrl standby" で、スタンバイモードに移行 "apmctrl cpulow" で、CPUをパワーダウンモードに移行 "apmctrl cpuhigh" で、CPUを通常モードに移行 となっています。 なお、引数を省略した場合は、バッテリーの状態を表示します。 表示形式はapmconfigが実行された時と似たような形式です。 1-5. apmdを使用する時に注意する点について (1) apmは機種によってかなり動作が違うため、team内で確認でき ない機種において問題が発生する可能性があります。このような場 合は、NetBSD/pc98 core teamまで連絡をお願いします。 (2) apmはsuper userの権限で動作するべきプログラムです。setuid bitを立てるとセキュリティー上危険ですので、やめてください。 2. PCI-bus 表示について NetBSD/pc98 では、NetBSD/i386 などと同様に、PCI-busを持って いる機種の場合、 pci0 at mainbus0 bus 0: configuration mode 1 vendor NEC, unknown product 0xc (class bridge, subclass host, revision 0x00) at pci0 dev 0 function 0 not configured NEC PC98 graphic devices (class display, subclass miscellaneous, revision 0x01) at pci0 dev 2 function 0 not configured Trident Microsystems Cyber 9320 (class display, subclass VGA, revision 0xe3) at pci0 dev 3 function 0 not configured NEC PCI-CBus Bridge (class bridge, subclass miscellaneous, revision 0x02) at pci0 dev 5 function 0 not configured のように、PCI-busに接続されている機器の表示をする事が出来ます。 しかし、一部の9821NOTE(core teamの確認した範囲では、PC-9821Nd2 およびLt2が該当します)では、接続していないdeviceも表示してしまう (具体的にはdevice 0から31まで表示してしまう)という不具合が生じる 場合があります。このような場合は、 options PCI_BUGGY_SUBCLASS=0xe1 を定義してカーネルをコンパイルしなおして下さい。 もし、options PCI_BUGGY_SUBCLASS=0xe1 を定義してもうまくいかな い場合は、次の手順でカーネルを再構築して下さい。 (1) ブート時に表示される、接続していないデバイスに関するsubclass の値を読み取ってください。 (2) 自分の使用しているconfigファイルを開き、 options PCI_BUGGY_SUBCLASS=0xe1 ^^^^ この部分を、先程表示されたsubclassの値に書き換えて下さい。 また、メッセージではnot supported という表示が出ていますが、動作に は全く関係ありませんので、無視して構いません。 3. Plug And Play(PnP)ボードについて NetBSD/pc98では、PnPをサポートしたボードにおいて、PnPモードで 動作させる事が出来ます。カーネルのこのフィギュレーションファイル に ippi0 at systm? と書いてカーネルを再構築する事により、PnPをサポートするコードが 組み込まれます。 4. Network関連でのFreeBSD(98) とNetBSD/pc98の違い NetBSD/pc98は、FreeBSD(98) とネットワーク関連の指定の方法が 違っています。FreeBSD(98) から移行する場合、次のような点に注意 すると良いでしょう。 (1) /etc/myname ファイルがマシンのホスト名を決めます。 FreeBSD(98) 2.1.5 などでは、/etc/sysconfig ファイルを書き換え る事によってホスト名を変更する事が出来ますが、NetBSD/pc98では、 /etc/myname ファイルを書き換える事によってホスト名を変更します。 (2) /etc/hostname.??? ファイルにネットワークインターフェイスの 設定が書き込まれます。ここで???はネットワークインターフェイ ス名です。例えばed0を使用していれば、/etc/hostname.ed0に、 ネットワークインターフェイスの設定を書き込みます。 例えば、IP addressを192.168.1.1、netmaskを255.255.255.0と する場合は、/etc/hostname.ed0に inet 192.168.1.1 255.255.255.0 と書いて下さい。 (3) /etc/resolv.conf に、リゾルバの動作方法を書き込みます。 例えば、FreeBSD(98) 2.1.5の/etc/host.conf に bind hosts nis と書いた時と同様の動作をNetBSD/pc98でさせたい場合は、 /etc/resolv.conf に lookup bind file yp と書いて下さい。 NetBSD/pc98 core team 連絡先 E-Mail:netbsd-98@njk.co.jp