$last update: Wed Jul 16 00:24:05 2003 $


ThinkPad i1124(2609-93J) with FreeBSD

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
割り込み要求 04

FreeBSD-4.2R

インストール

本体とついでに、USB-CD-R も買ったが、どうせ FreeBSD では使えない だろうから、それは考えない。fips.exe で領域をわけて、 DOS 領域に FreeBSD の CD-ROM の中身をコピーして、そこから インストール。特にはまることもなかった。

PC-Cardスロットの認識と zzz

検索しながら思考錯誤。結局、これで認識した。

device          pcic0   at isa? irq 13 port 0x3e0 iomem 0xd0000
kernel の設定ファイルはこんな感じ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 上のファイルを読めるのね。 これだと直接は読めなくて、修正する際はコピーなどしなきゃダメみたいだけど。

念のために、

  • /usr/src
  • /usr/include/msdosfs/direntry.h
  • /usr/include/msdosfs/msdosfsmount.h.4.2R
を待避。README.jp にいくつか make のコマンドが書いてあるが、 実際に実行する前にmake -n ???を実行すれば、 何がされるかわかるので安心。

% 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
というのが見つかったので、それを採用。 一応、大丈夫みたいなので、ま、いいや。


HOMEPAGE
introducing myself| E-RMOU SKI CLUB| motorcycle| Favorites| Make
www.GENTEI.org


Mail: kazuki@e-rmou.org