FreeBSD on ThinkPad T20

ThinPad T20 (2647-64J) にFreeBSDを入れてみました。

まずはFDISK

毎回悩むのがHDD の区画割り。まぁ、2つも3つもOS を突っ込もうとするから こんがらがるだけ(笑)

とりあえず今回はこんな風にしてみた。

  1. 基本区画(7MB):OS/2 BootManager
  2. 基本区画(400MB,FAT16):ハイバネーションファイルの置き場所
  3. 基本区画(1GB,FFS):FreeBSD
  4. 拡張区画(残り,HPFS):OS/2 Warp 4

う〜ん、Windows2000 が入らん(笑) やっぱり、今時 6GB じゃちと足らん。 今回は「インストールの確認」ということにして、後でHDD 換装することに 決定。

区画割りとFAT16 領域のフォーマットは Warp4 のユーティリティディスクで。 まぁ、この辺は「手になじんでいる道具が一番じゃね〜の?」ということ(笑)

お約束として、 ハイバネーションユーティリティ は事前にgetしとく。

CD Boot は楽ちん

既に焼いてあった4.4-RELEASE の ISO-Image を ウルトラベイのCD-ROM ドライブに突っ込んで、何事もなく sysinstall 画面に。X は4.x を 入れたかったので"kern-developer"を選択してインストール開始。

20分少々でインストール完了。勝手知ったるFreeBSD とはいえ、大昔にFreeBSD 2.0.xをEPSONの98x1互換NOTEにフロッピーを取っ換え引っ換えして突っ込んだ 頃を思うと、いい世の中になったなぁ…としみじみ思う。

APM を認識しない!

再起動してdmesg を確認。こんな感じ。

Copyright (c) 1992-2001 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	The Regents of the University of California. All rights reserved.
FreeBSD 4.4-RELEASE #0: Tue Sep 18 11:57:08 PDT 2001
    murray@builder.FreeBSD.org:/usr/src/sys/compile/GENERIC
Timecounter "i8254"  frequency 1193182 Hz
CPU: Pentium III/Pentium III Xeon/Celeron (647.19-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0x683  Stepping = 3
  Features=0x383f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE>
real memory  = 268369920 (262080K bytes)
avail memory = 256708608 (250692K bytes)
Preloaded elf kernel "kernel" at 0xc0480000.
Pentium Pro MTRR support enabled
md0: Malloc disk
Using $PIR table, 11 entries at 0xc00fdee0
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <Intel 82443BX (440 BX) host to PCI bridge> on motherboard
pci0: <PCI bus> on pcib0
pcib1: <Intel 82443BX (440 BX) PCI-PCI (AGP) bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
pci1: <S3 model 8c12 graphics accelerator> at 0.0 irq 11
pcic0: <TI PCI-1450 PCI-CardBus Bridge> mem 0x50000000-0x50000fff irq 11 at device 2.0 on pci0
pcic0: TI12XX PCI Config Reg: [ring enable][speaker enable][pwr save][FUNC pci int + CSC serial isa irq]
pccard0: <PC Card bus (classic)> on pcic0
pcic1: <TI PCI-1450 PCI-CardBus Bridge> mem 0x50100000-0x50100fff irq 11 at device 2.1 on pci0
pcic1: TI12XX PCI Config Reg: [ring enable][speaker enable][pwr save][FUNC pci int + CSC serial isa irq]
pccard1: <PC Card bus (classic)> on pcic1
fxp0: <Intel Pro 10/100B/100+ Ethernet> port 0x1800-0x183f mem 0xe8100000-0xe811ffff,0xe8120000-0xe8120fff irq 11 at device 3.0 on pci0
fxp0: Ethernet address 00:d0:b7:ad:89:56
inphy0: <i82555 10/100 media interface> on miibus0
inphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
pci0: <unknown card> (vendor=0x115d, dev=0x000c) at 3.1 irq 11
pci0: <unknown card> (vendor=0x1013, dev=0x6003) at 5.0 irq 11
isab0: <Intel 82371AB PCI to ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel PIIX4 ATA33 controller> port 0x1850-0x185f at device 7.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
uhci0: <Intel 82371AB/EB (PIIX4) USB controller> port 0x1860-0x187f irq 11 at device 7.2 on pci0
usb0: <Intel 82371AB/EB (PIIX4) USB controller> on uhci0
usb0: USB revision 1.0
uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
ugen0: SHARP AD-PCR2, rev 1.10/1.00, addr 2
chip1: <Intel 82371AB Power management controller> port 0x1040-0x104f at device 7.3 on pci0
orm0: <Option ROMs> at iomem 0xc0000-0xcbfff,0xcc000-0xcd7ff,0xe0000-0xeffff on isa0
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
kbd0 at atkbd0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model Generic PS/2 mouse, device ID 0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0: configured irq 4 not in bitmap of probed irqs 0
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 8250
sio1: configured irq 3 not in bitmap of probed irqs 0
ppc0: cannot reserve I/O port range
ad0: 5729MB <IBM-DARA-206000> [12416/15/63] at ata0-master UDMA33
acd0: CDROM <CD-224E> at ata1-master using PIO4
apm が無いじゃん! 当然 zzz とかやっても"Device not configured" となる。 なんで?

迷走

Web上の情報や手持ちの雑誌(BSD Magazineとか、FreeBSD Press とか、Software Designとかですね) を漁っても、GENERIC カーネルで問題が生じる話はない。ThinkPadで気を付ける のは、BIOSの バージョンと、ユーティリティであらかじめハイバネーションファイルを 作っておくことくらいしか見当たらない。
こうなるとソース読めない人間に出来ることは、 手当たり次第に試してみることだけ。

  1. BIOSをダウングレードしてみる
    入れてあったBIOSは2001年8月31日リリースの最新版(1.16)。新しいリリースで バグが混入したかとBIOSのバージョンを0.03ほど落としてみた(上記のBIOS絡み の問題は対策済み)が、当然変化なし。
  2. 4.2-RELEASEを入れてみる
    9/19にリリースされたばかりの4.4とT20に関する情報はまだ無いので、前の バージョンを入れてみる。4.2にした理由は、単に万年床の下からCD-ROMが出て きたから(笑)
    これまた変化なし。
  3. TurboLinux 6.0(FTP版)を入れてみる
    「BSD固有の問題か?」ということで、部屋に転がってたLinux Japanの付属 CD-ROM からTurboLinux を入れてみる。いかんせん慣れていないのでFreeBSD よりインストールに時間がかかったが、無事終了
    動くんだ、これが。何事もなくsuspendする。まぁ、まかりなりにもIBMが動作 確認してるんだから当然といえば当然なのかもしれないが、ちょっと ムカつく。

4-stableにする

もうヤケクソ。おうちサーバーとして稼働しているデスクトップ機は、4-stable のソースツリーを週1回の割合でCVSupで追っかけているので、最新のソースツ リーで直っていることを期待してupdateすることにする。
実はこのサーバー(Celeron333MHz)よりもT20(PenIII650MHz)の方がCPUパワーは あるんだが(笑)、ファイルをいちいちコピーするのも面倒なので、サーバー側で buildworld する。
このあたり、486DX2-50MHzなPC-9821をgatewayに仕立てる時にノウハウを 蓄えたんで、update作業には全く問題なし。具体的には

  1. サーバー側でbuildworld
  2. ターゲット側でサーバーの /usr/src,/usr/obj をローカルの /usr/src,/usr/obj にNFS mount
  3. ターゲット側でinstallworld
  4. mergemaster を実行
  5. サーバー側でbuildkernel
  6. ターゲット側でinstallkernel
てな感じ。FreeBSD(98)が相手でも、今や(98固有の実験的なコードを除いて) ソースツリーは統合されているので、手順は一緒。"MACHINE=pc98" を付けることと、コンパイルオプションを変える(/etc/make.conf に "-mpentiumpro" とか入れてるから(笑))くらい。
どうせだからってんでkernelもカスタマイズしてみる。目玉はsmbfsの追加と 不要なデバイスの削除。最近のFreeBSD はkernel module化が進んでいるので 劇的な効能は期待出来ないのかもしれないが、まぁ趣味の問題。 ちなみにconfigはこんな感じね。LINT見て いろいろと小細工してみた。

suspend 成功!

Copyright (c) 1992-2001 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	The Regents of the University of California. All rights reserved.
FreeBSD 4.4-STABLE #1: Mon Oct 15 23:48:44 JST 2001
    kenn@duck.vercss.or.jp:/usr/obj/usr/src/sys/duck
Timecounter "i8254"  frequency 1193182 Hz
CPU: Pentium III/Pentium III Xeon/Celeron (647.19-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0x683  Stepping = 3
  Features=0x383f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE>
real memory  = 268369920 (262080K bytes)
avail memory = 256258048 (250252K bytes)
Preloaded elf kernel "kernel" at 0xc04ed000.
netsmb_dev: loaded
Pentium Pro MTRR support enabled
md0: Malloc disk
Using $PIR table, 11 entries at 0xc00fdee0
apm0: <APM BIOS> on motherboard
apm: found APM BIOS v1.2, connected at v1.2
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <Intel 82443BX (440 BX) host to PCI bridge> on motherboard
pci0: <PCI bus> on pcib0
pcib1: <Intel 82443BX (440 BX) PCI-PCI (AGP) bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
pci1: <S3 model 8c12 graphics accelerator> at 0.0 irq 11
pcic0: <TI PCI-1450 PCI-CardBus Bridge> mem 0x50000000-0x50000fff irq 11 at device 2.0 on pci0
pcic0: TI12XX PCI Config Reg: [ring enable][speaker enable][pwr save][FUNC pci int + CSC serial isa irq]
pccard0: <PC Card bus (classic)> on pcic0
pcic1: <TI PCI-1450 PCI-CardBus Bridge> mem 0x50100000-0x50100fff irq 11 at device 2.1 on pci0
pcic1: TI12XX PCI Config Reg: [ring enable][speaker enable][pwr save][FUNC pci int + CSC serial isa irq]
pccard1: <PC Card bus (classic)> on pcic1
fxp0: <Intel Pro 10/100B/100+ Ethernet> port 0x1800-0x183f mem 0xe8100000-0xe811ffff,0xe8120000-0xe8120fff irq 11 at device 3.0 on pci0
fxp0: Ethernet address 00:d0:b7:ad:89:56
inphy0: <i82555 10/100 media interface> on miibus0
inphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
pci0: <unknown card> (vendor=0x115d, dev=0x000c) at 3.1 irq 11
csa0: <CS4280/CS4614/CS4622/CS4624/CS4630> mem 0xe8000000-0xe80fffff,0xe8122000-0xe8122fff irq 11 at device 5.0 on pci0
csa: card is Thinkpad 600X/A20/T20
pcm0: <CS461x PCM Audio> on csa0
isab0: <Intel 82371AB PCI to ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel PIIX4 ATA33 controller> port 0x1850-0x185f at device 7.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
uhci0: <Intel 82371AB/EB (PIIX4) USB controller> port 0x1860-0x187f irq 11 at device 7.2 on pci0
usb0: <Intel 82371AB/EB (PIIX4) USB controller> on uhci0
usb0: USB revision 1.0
uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
intpm0: <Intel 82371AB Power management controller> port 0x1040-0x104f irq 9 at device 7.3 on pci0
intpm0: I/O mapped 1040
intpm0: intr IRQ 9 enabled revision 0
smbus0: <System Management Bus> on intsmb0
smb0: <SMBus general purpose I/O> on smbus0
intpm0: PM I/O mapped 1000 
orm0: <Option ROMs> at iomem 0xc0000-0xcbfff,0xcc000-0xcd7ff,0xe0000-0xeffff on isa0
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
kbd0 at atkbd0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model Generic PS/2 mouse, device ID 0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0: configured irq 4 not in bitmap of probed irqs 0
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 8250
sio1: configured irq 3 not in bitmap of probed irqs 0
ppc0: cannot reserve I/O port range
ad0: 5729MB <IBM-DARA-206000> [12416/15/63] at ata0-master UDMA33
acd0: CDROM <CD-224E> at ata1-master using PIO4
おお、認識してるよ、apm。何に使うのか判らないsmbusもしっかり認識されてる みたい。

Xを入れる

お次はX。予定通り4.1.0をportsから入れる。packageにしないのは、これまた 趣味の問題。"make install" で後は寝てればインストールされてるんだから、 portsでもpackagesでも手間は大して変わらない。変わるのはコンパイル オプションだけ。そしてそこが一番大事(笑)。
当初はx11/XFree86-4のportsだけローカルHDDにコピーしてbuild しようとしたのだが、なんとbuild中にルートパーティション(多分/tmp)が溢れた。 installkernel で出来た /kernel.old や /modules.old/ を削除してなかったのが敗因と思われる。
ちなみにXFree86 4.1.0 にはカーネルのソースを参照している 部分があるようなので、ソースを展開していないとmakeが止まる ため注意が必要(確かDRI絡みのとこ)。
無事インストールが済めば、後は

XFree86 -configure
でXF86Config のひな形を作って、それをいじって完了。おぉ、動く動く。 ちなみにXF86Configはこちら
いじったといっても、 これだけ。modelineなんぞ書かなくても、これで1024x768で表示されてる。便利な世の中になったなぁ。

<お約束>
上記のXF86Configは、あくまで「我が家のT20はこれでうまく動いてるように見える」 というだけなので、これで動かなくても、はたまたモニタが壊れても 私は一切責任を負いません。自己責任でどうぞ。
</お約束>

ふりだしに戻る

週末にはHDD交換する予定なので、その作業が終了したら また初めからやり直し(笑)
Copyright © 2001- Kenji Nagasawa E-mail:HGF01572@nifty.com
Last Modified: $Date: 2001/10/17 00:58:49 $