$last update: Wed Jul 16 00:24:05 2003 $
2001年G.W.の終りに i1124 を買った。 Crusoe FIVA や Vaio SR9 とも迷ったんだけど、結局 ThinkPad にした。 安かったからかな。もうちょい軽ければいいのに。 思いっきりガリガリ使っても2.5時間は持ちます。
Windows Me から見た設定情報
PCMCIAカードサービス メモリの範囲 0x04001000 - 0x04001FFFF Texas Instruments PCI-1211CardBus Controller 割り込み要求 11 メモリの範囲 0x04002000 - 0x04002FFFF Crystal SoundFusion CS4281 WDM Audio 割り込み要求 10 メモリの範囲 0xFC010000 - 0xFC010FFF メモリの範囲 0xFC000000 - 0xFC00FFFF Laneed LD-CDY PCMCIA Adapter I/Oの範囲 0x0220 - 0x023F 割り込み要求 07 Lucent WDM Communication Device 割り込み要求 11 メモリの範囲 0x04003000 - 0x040030FF I/Oの範囲 0x1438 - 0x143F I/Oの範囲 0x1800 - 0x18FF Lucent Win Modem Com3 で認識 パラレルポートLPT2 I/Oの範囲 0x0378 - 0x037F 割り込み要求 05 シリアルポートCOM1 I/Oの範囲 0x03F8 - 0x03FF 割り込み要求 04FreeBSD-4.2R
インストール
本体とついでに、USB-CD-R も買ったが、どうせ FreeBSD では使えない だろうから、それは考えない。fips.exe で領域をわけて、 DOS 領域に FreeBSD の CD-ROM の中身をコピーして、そこから インストール。特にはまることもなかった。
PC-Cardスロットの認識と zzz
検索しながら思考錯誤。結局、これで認識した。
device pcic0 at isa? irq 13 port 0x3e0 iomem 0xd0000kernel の設定ファイルはこんな感じ。 dmesg はこんな感じ。
device pcic0 at isa? irq 11でも認識したけど、認識具合が気に食わなかったから上のように修正。zzz ったときにも平気なように、/etc/apmd.conf を少し書き換えた。 zzz 前に pccardc power 0 0 をするようにした。 復帰のときにはひょっとしたらカードが挿さっていないかもしれないので、 power 0 1 はしない。rc.suspend を書き換えようかと思ったけど、 忘れそうなので apmd.conf に書いた。
Windows から FreeBSD へ起動するとダメ。 Windows は終了するときに、PCI デバイスとかを low power mode とか いうのにして、そのせいでレジスタにアクセスできなくなるらしい。 この状態は、BIOS の初期化処理後の状態とはちょっと違うらしく、 現状だとダメらしい。ま、気長に待つべし。
Windows から FreeBSD に起動して認識していない状態で zzz すると落ちる。 こんな感じ。
: resumed from suspended mode (slept 00:00:16) : ata0: resetting devices .. done : pcm0: cs4281_rdcd: DCV did not go : pcm0: cs4281_wrcd: DCV did not go : pcm0: cs4281_wrcd: DCV did not go : pcm0: cs4281_rdcd: DCV did not go : pcm0: cs4281_wrcd: DCV did not go : pcm0: cs4281_rdcd: DCV did not go : pcm0: cs4281_rdcd: DCV did not go : pcm0: cs4281_wrcd: DCV did not go : pcm0: cs4281_rdcd: DCV did not go : : : Fatal trap 12: page fault while in kernel mode : fault virtual address = 0x0 : fault code = supervisor read, page not present : instruction pointer = 0x8:0xc025e345 : stack pointer = 0x10:0xc02dae14 : frame pointer = 0x10:0xc02dae20 : code segment = base 0x0, limit 0xfffff, type 0x1b : = DPL 0, pres 1, def32 1, gran 1 : processor eflags = interrupt enabled, resume, IOPL = 0 : current process = Idle : interrupt mask = : trap number = 12 : panic: page fault : : syncing disks... : : Fatal trap 12: page fault while in kernel mode : fault virtual address = 0x30 : fault code = supervisor read, page not present : instruction pointer = 0x8:0xc020df2c : stack pointer = 0x10:0xc02dac40 : frame pointer = 0x10:0xc02dac48 : code segment = base 0x0, limit 0xfffff, type 0x1b : = DPL 0, pres 1, def32 1, gran 1 : processor eflags = interrupt enabled, resume, IOPL = 0 : current process = Idle : interrupt mask = bio : trap number = 12 : panic: page fault : Uptime: 22s : Automatic reboot in 15 seconds - press a key on the console to abort : Rebooting...XF86Config
XF86Setup したらすぐにできた。 こんな感じ。 下に書いた xvidtune -next 可能バージョン。
zzz 復帰後に画面に何もでなくなる‥‥
console や X 上で画面に何も出なくなってしまうときは、 Fn + F7 で外部モニタ出力に変えてから、また LCD 出力に戻すと画面がでる。
X 上で画面が崩れてしまうときは、
% xvidtune -nextすれば直る。下の XF86Config のように、ModeLine と Modes を2つ書くべし。
DHCPでIPアドレス設定
使っているのは Laneed LD-CDY とかいう安物の PCMCIA な NIC で、 ed1 として認識している。 でも、そのままだと DHCP でアドレスが正常に設定されない。
# DHCP クライアントとしては、パッケージの Internet Software Consortium DHCP Client V3.0b2pl9 を使用。
調べてみたら、ed? として認識するカードは ifconfig で media を 指定できないらしい。しかも、/etc/dhclient.conf で media を指定 できない。どうやって指定しても、10baseT/UTP ってなってしまう。 くそー、ってんで、# vi /etc/dhclient.confして /usr/local/sbin/dhclient-script を呼ぶようにして、
# cp /sbin/dhclient-script /usr/local/sbin # vi /usr/local/sbin/dhclient-scriptしてやった。結果はこんな感じ。 ところどころ echo が入ったままになってるけど、許して。
/var/db/dhclient.leases が GMT 表記になっているのはそういうものらしい。 気にするな。
WinModem を使おう
こちらのページを参考にしたら、一発でできた。 cual0 として使えてます。4.3R の kernel と一緒に使ってるけど、 特に問題なし。/etc/rc.local で
/sbin/kldload ltmdm.ko & echo -n " ltmdm.ko";こんなことしてロードしてる。 /boot/loader.conf にも書けるみたいだけど、 そうすると SHARED モードにならない。ときの不具合が fj.os.bsd.freebsd (<3ACF2F7D.DE7F9263@pop16.odn.ne.jp>)に報告されていたので、 rc.local の方でやっている。
音を鳴らそう
4.3R から CS4281 がサポートされている。 4.3R の /sys/dev/sound だけを移植しようと思ったら、 思ったよりもコンパイルを通すのが大変そうだったので、 kernel を 4.3R に入れ換えてしまった。 特に問題なさそう。 認識具合は dmesg をどうぞ。
PC-Card と同じく、Windows から再起動すると認識しない。
Windows からの再起動で音が鳴らない
Windows から、ウォームスタートすると音が鳴らない。 Windows の終了処理が若干手抜きしているそうだ(ウソかも)。 渡辺さんにパッチを作ってもらった。 これを当てて、コンパイルすれば、見事 OK。
キーボードマップ
やっぱ 101 でしょう、ってんでこんな感じ。 console 用は rc.conf を書き換えること。 X 用は xmodmap すること。
Sharity-Light
Windows から Unix 側のファイルを見るのは samba だけど、 その逆は Sharity-Light が有名。 コンパイルは簡単だけど、unshlight.sh がおかしいので、 /etc/mtab の代わりに mount を使うように修正。
samba, apache
特に書くこともなし。
httpd.conf で
AllowOverride Allにした。
Windows の NT ドメインでは takano という名前なので、 UNIX の login 名である kazuki と対応させるために、 一行だけ smbusers を書いた。
PALDIO 611S
会社のPHSが借りられることになったので、使えるようにしてみた。
挿しただけでこんな感じで
pccardd[57]: Card "NTT DoCoMo"("PALDIO 611S PCCARD") [(null)] [(null)] matched "NTT DoCoMo" ("PALDIO 611S PC CARD") [(null)] [(null)] pccardd[57]: Using I/O addr 0x2f8, size 8 pccardd[57]: Setting config reg at offs 0x200 to 0x61, Reset time = 50 ms pccardd[57]: Assigning I/O window 0, start 0x2f8, size 0x8 flags 0x1 pccardd[57]: Assign sio0, io 0x2f8-0x2ff, mem 0x0, 0 bytes, irq 3, flags 40000 /kernel: sio4 at port 0x2f8-0x2ff irq 3 slot 0 on pccard0 /kernel: sio4: type 16550A pccardd[57]: sio4: NTT DoCoMo (PALDIO 611S PC CARD) inserted.認識したいたのだが、ppp するといきなり OS が固まる。 なんでかな、とちょっと検索してみたら、irq が重なっているとそうなる らしい。たしかに、sio1 が default だと irq 3 だし。
ってことでシリアル関係を
device sio0 at isa? port IO_COM1 flags 0x10 irq 4だけにして kernel を make。
pccardd[57]: Card "NTT DoCoMo"("PALDIO 611S PCCARD") [(null)] [(null)] matched "NTT DoCoMo" ("PALDIO 611S PC CARD") [(null)] [(null)] pccardd[57]: Using I/O addr 0x2f8, size 8 pccardd[57]: Setting config reg at offs 0x200 to 0x61, Reset time = 50 ms pccardd[57]: Assigning I/O window 0, start 0x2f8, size 0x8 flags 0x1 pccardd[57]: Assign sio0, io 0x2f8-0x2ff, mem 0x0, 0 bytes, irq 3, flags 40000 /kernel: sio1 at port 0x2f8-0x2ff irq 3 slot 0 on pccard0 /kernel: sio1: type 16550A pccardd[57]: sio1: NTT DoCoMo (PALDIO 611S PC CARD) inserted.って認識。なので /etc/ppp/ppp.conf を
set device /dev/cuaa1と変えたら無事使えた。よかったよかった。
msdosfs-ja
FAT32 上の日本語ファイルを読もうと思って設定した。 ファイル名はほとんど全部読めるんだけど、 中身が読めるファイルと読めないファイルがあるが、ま、いいや。
mtools.conf を修正することで、FAT32 上のファイルを読めるのね。 これだと直接は読めなくて、修正する際はコピーなどしなきゃダメみたいだけど。
念のために、
を待避。README.jp にいくつか make のコマンドが書いてあるが、 実際に実行する前にmake -n ???を実行すれば、 何がされるかわかるので安心。
- /usr/src
- /usr/include/msdosfs/direntry.h
- /usr/include/msdosfs/msdosfsmount.h.4.2R
% su # cd /usr/src; # gtar xzvfp どこか/msdosfs-ja-20000421.tar.gz # cd msdosfs-ja-20000421/ # make patch # make mount_msdos # cd /usr/src/sys/i386/conf/ # cp conf_file # vi conf_file options MSDOSFS_LC_JAPAN #ja_JP.EUC support を追加。 # make depend # cd ../../compile/conf_file # make # cp kernel /kernel.new # shutdown -r nowカーネルのコンパイル中、DFLTBSIZEというのが undefined になって エラーになってしまった。適当に google したら
#define DFLTBSIZE 4096というのが見つかったので、それを採用。 一応、大丈夫みたいなので、ま、いいや。