表題に「FreeBSD/pc98 の活用」と書きましたが,ここでは PC-98 特有のかつ基本的な動作の話題を述べます.
目次
mount
表題に「FreeBSD/pc98 の活用」と書きましたが,ここでは PC-98 特有のかつ基本的な動作の話題を述べます.
APM (Advanced Power Management) は Rv20, Ra20, La13 で使えますが,Ap では使えません. Desktop PC では zzz で suspend したら resume する手段がないので,現在は
# shutdown -p now
で power off するという使い方しかしておりません. なお,PC-98 La13 では FreeBSD 2.2.8 までは蓋の開閉により suspend/resume を行なうことができましたが FreeBSD 3 系以降はできなくなっています.
ACPI (Advanced Configuration and Power Management) は PC-98 では利用できません.
使用法ですが,/boot/loader.conf に次のように記述します. (kernel を再構築する方法もあります.)
apm_load="YES"
また,/etc/rc.conf に次のように記述します.
apm_enable="YES" # Set to YES to enable APM BIOS functions (or NO). apmd_enable="YES" # Run apmd to handle APM event from userland. apmd_flags="" # Flags to apmd (if enabled).
OS を再起動させれば,log に次の二行が現われるはずです.
apm0: <APM BIOS> on motherboard apm0: found APM BIOS v1.12, connected at v1.0
module としての load の状況は kldstat にて確認することができます.
% kldstat Id Refs Address Size Name 1 7 0xc0400000 5cdb18 kernel 2 1 0xc0a39000 72e4 apm.ko
Sound は Rv20, Ra20, La13 で使えます.
Ap は,最近の FreeBSD では試しておりませんが,過去には動作しておりました.
(driver は Rv20, Ra20, La13 とは別.)
音声の入出力としては,ほぼ標準で次のようなものが備わっております. この解説における呼称も列記します.
使用法ですが,/boot/loader.conf に次のように記述します.
sound_load="YES" snd_mss_load="YES"
OS を再起動させれば,log に次の四行が現われるはずです.
pcm0: <CS4231A> at port 0xf40-0xf47 irq 12 drq 1 flags 0x10000 on isa0 drq/irq conf 22 pcm0: [GIANT-LOCKED] pcm0: [ITHREAD]
Rv20 では /dev/sndstat の内容は次のようになります.
% cat /dev/sndstat FreeBSD Audio Driver (newpcm: 32bit 2007061600/i386) Installed devices: pcm0: <CS4231A> at io 0xf40 irq 12 drq 1 bufsz 4096 [GIANT] (1p:1v/1r:1v channels default)
kldstat では次のようになります.
% kldstat Id Refs Address Size Name 1 7 0xc0400000 5cdb18 kernel 2 5 0xc09ce000 4a64c sound.ko 3 1 0xc0a19000 c89c snd_mss.ko
種々の device に対する mixer の初期値は次のようになっていました.
% mixer Mixer synth is currently set to 75:75 Mixer pcm is currently set to 56:56 Mixer speaker is currently set to 75:75 Mixer line is currently set to 75:75 Mixer mic is currently set to 0:0 Mixer cd is currently set to 75:75 Mixer mix is currently set to 0:0 Mixer igain is currently set to 0:0 Recording source: mic
各々が何を指すのか,私が分かっているのは以下のものだけです. (「出力」「入力」は Sound Card から見て.)
この初期値だと pcm の値が小さいので,内蔵スピーカーの音が聞き取れません. 次のようにして値を変えます. (root, su でなくても変えられます.)
% mixer pcm 85 左右を同じ値にするなら,こう指定すれば良い.
この頃の mixer の仕様では,変更した結果は PC の電源を落しても保持されます. 「初期値に戻す」という機能がないので,値を変える前に記録しておいた方が良いでしょう.
Sound の機能は,少なくとも xmcd, mpg123, pcmplay (tosha), timidity から利用できております.
mplayer は動作しております.
% gmplayer -vo x11 sample.mpg ← 動画のファイルを再生する場合.
% gmplayer -vo x11 dvd:// ← DVD を再生する場合.
mplayer が「これの再生は無理」と判断すると,以下のような警告が出ます.
************************************************ **** Your system is too SLOW to play this! **** ************************************************
この後に出力される指示に従って種々のパラメーターを適切に操作すればなんとかなるかもしれません.
-vo xv を指定することができるか否かは,xvinfo で分かります. mga2064w においては以下のように出力されます.
% xvinfo X-Video Extension version 2.2 screen #0 no adaptors present
一方,savage4 においては以下のように出力されます. (三行のみ提示.)
% xvinfo X-Video Extension version 2.2 screen #0 Adaptor #0: "Savage Streams Engine"
種々のビデオボードに関しては PC-98 における X.Org 7 系 (driver) を参照して下さい.
現在 (2011.9.24) でも購入できる PCI 接続の USB I/F が PC-98 でも使えるかどうか試してみました. 対象は IFC-PCI5U2V (USB 2.0, Buffalo 製) です. 試したデバイスは,現時点ではマウス,HDD, DVD-ROM drive, USB Memory のみです.
/boot/loader.conf に次のように記述します.
usb_load="YES" ehci_load="YES" ← これは USB 2.0 のため. uhci_load="YES" ums_load="YES" ← これはマウスのため. umass_load="YES" ← これは storage device のため.
例として,マウスを繋げてから boot した場合の log を提示します.
uhci0: <VIA 83C572 USB controller> port 0x6020-0x603f irq 6 at device 12.0 on pci0 uhci0: [ITHREAD] usbus0: <VIA 83C572 USB controller> on uhci0 uhci1: <VIA 83C572 USB controller> port 0x6040-0x605f irq 10 at device 12.1 on pci0 uhci1: [ITHREAD] usbus1: <VIA 83C572 USB controller> on uhci1 ehci0: <VIA VT6202 USB 2.0 controller> mem 0x20002000-0x200020ff irq 6 at device 12.2 on pci0 ehci0: [ITHREAD] ehci0: VIA-quirk applied usbus2: EHCI version 1.0 usbus2: <VIA VT6202 USB 2.0 controller> on ehci0 (中略) usbus0: 12Mbps Full Speed USB v1.0 usbus1: 12Mbps Full Speed USB v1.0 usbus2: 480Mbps High Speed USB v2.0 ugen0.1: <VIA> at usbus0 uhub0: <VIA UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0 ugen1.1: <VIA> at usbus1 uhub1: <VIA UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus1 ugen2.1: <VIA> at usbus2 uhub2: <VIA EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus2 (中略) uhub0: 2 ports with 2 removable, self powered uhub1: 2 ports with 2 removable, self powered uhub2: 4 ports with 4 removable, self powered ugen1.2: <Microsoft> at usbus1 ums0: <Microsoft Microsoft 3-Button Mouse with IntelliEye(TM), class 0/0, rev 1.10/3.00, addr 2> on usbus1 ums0: 3 buttons and [XYZ] coordinates ID=0
/usr/X11R6/lib/X11/xorg.conf を次の要領で変更すれば,X Window System にて USB Mouse が使えます.
# Option "Protocol" "BusMouse" ← この 2 行はバスマウス用の設定. # Option "Device" "/dev/mse0" Option "Protocol" "auto" ← この 2 行は USB マウス用の設定. Option "Device" "/dev/ums0"
今後,種々の USB 機器を接続して試してみます. とはいえ,そう珍しい物は所有しておりませんが.
これは AT 互換機とも共通の話ですが,いつからか OS 起動時に次のような "(probe0:" で始まるメッセージが出るようになりました.[1] 少なくとも FreeBSD 7.2 以後のことです. これで 2 年半使っていて動作に支障は生じていないのですが,気味が悪いです.
Waiting 5 seconds for SCSI devices to settle (probe0:ahc0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0 (probe0:ahc0:0:0:0): CAM Status: SCSI Status Error (probe0:ahc0:0:0:0): SCSI Status: Check Condition (probe0:ahc0:0:0:0): UNIT ATTENTION asc:29,0 (probe0:ahc0:0:0:0): Power on, reset, or bus device reset occurred (probe0:ahc0:0:0:0): Retrying Command (per Sense Data) da0 at ahc0 bus 0 target 0 lun 0 ← これ以降は「いつも通り」. da0: <I-O DATA HDXG-S40-2 111S> Fixed Direct Access SCSI-2 device da0: 20.000MB/s transfers (20.000MHz, offset 15) da0: 19102MB (39121488 512 byte sectors: 8H 128S/T 38203C)
私が試した範囲内で傾向を概観しますと次のようになります.[2]
AT 互換機では,/boot/loader.conf に以下の内容を加えればこのメッセージが出なくなる機器もあります. (各々の数値はあくまで目安とお考え下さい.)
kern.cam.boot_delay=15000 # 何も指定しなければ 0 kern.cam.scsi_delay=30000 # 何も指定しなければ 5000
ところが,PC-98 においてはこの対策では改善されません.
検索すると,動作報告に同様の log を多数見かけます. けれど,「エラーっぽいメッセージが出ているけど動いた」ではなくて時間不足なのか,そもそも TEST UNIT READY 命令をサポートしていない機器なのかを区別するような試行をして欲しいです.
FreeBSD の方も,"Error" という文字列に鈍感になってしまわないように,log の出し方や文面を再考して欲しいものです.
[1] OS の boot の際に "Boot FreeBSD with verbose logging" を選べばさらに複雑なメッセージが出ますが,言及しません.
[2] 当然ですが,正常に動作している機器に限定しています.
[3] USB 機器の場合は quirk として UQ_MSC_NO_TEST_UNIT_READY を設定するという手段もありますが,その対象はあくまで TEST UNIT READY 命令を使うと不具合が生じる機器に限定すべきです.
FreeBSD 4.9 では,以下のようにすれば MS-DOS format の FD の mount ができます.
# mount -t msdos /dev/fd0.1232 /mnt ← 2HC # mount -t msdos /dev/fd0.1440 /mnt ← 2HD
一方,FreeBSD 7.2, 8.2, 8.4 では以下のようにうまく行きません. (2HD でも 2HC でも.)
# mount_msdosfs /dev/fd0 /mnt
mount_msdosfs: /dev/fd0: No such file or directory ← /dev/fd0 は存在するのに.
fdcontrol で見てみると,drive の形式は
# fdcontrol -v /dev/fd0 /dev/fd0: 1.44M drive (3.5" high-density)
となっています. (これは AT 互換機でも同じでした.)
一方 AT 互換機では,2HD だけでなく PC-98 用の 2HC に対しても mount_msdosfs は正常に動作します.
PC や プリンターの機種にも依るのでしょうが,うちの PC-98 では FreeBSD 5 以降は割り込みでプリンターを使うことができません. この点に関しては 1. ppc0 の安定性 を参照して下さい.