IBM ThinkPad 600(2645-45J)に対する FreeBSD 2.2.8-RELEASE + PAO(19981225)のインストール
1999年4月
たちゃな@巫研
abstract
IBM ThinkPad 600(2645-45J)でFreeBSDを動作させる場合、 そのままでは正常にインストールできない (若干トリッキーな手法が必要になる)場合があります。 ここでは、私が試行錯誤の結果、 メモリを288MBに増設済みのIBM ThinkPad 600に対してFreeBSD 2.2.8-RELEASE + PAO(19981225)をインストールし、実用レベルまで持っていった経験を元に、 その手順と問題点・対処を簡単に解説してみたいと思います。
使用機材
本体 | IBM ThinkPad 600(2645-45J) |
MEMORY | IODATA SDIM2100(SODIMM 128MB) x 2 |
HDD | IBM DADA26480(6GB) |
OS | FreeBSD 2.2.8-RELEASE |
PAO | PAO(19981225) |
PCCARD#1 | IODATA PCLA/TE(10BASE-T) |
PCCARD#2 | NTT MOBILE DATA CARD 96P |
ハードウェア設定編
シリアルポート部分の割込み設定
FreeBSDでシリアルポート(及びIrDA)を利用できるように するため、IBMのウェブ上にある 「IBM ThinkPad DOS用ユーティリティ」にてシリアルポートの 割り込み番号を設定します。
これは、Windows上で動作する同様のユーティリティで設定した場合、 上手くいきませんので注意が必要です。 必ずDOS用のもので設定する必要があります。
シリアルのIRQを適当な状態に変更するための設定コマンドは大体以下のとおり。
C:\> ps2 imodem disable (リブート) C:\> ps2 ir enable C:\> ps2 ir address 2 (リブート) C:\> ps2 sera enable C:\> ps2 sera address 1 (リブート) |
尚、変更後の内容は以下のようになります。
背面シリアルポート | 4 |
パラレルポート | 7 |
内蔵モデム 1st IRQ | X(10) |
内蔵モデム 2nd IRQ | X(3) |
WSS/FM/サウンドブラスター | 5 |
MIDIポート | 9 |
IR | 3 |
2nd IDE(UltraBay) | 15 |
2nd IDE(ドッキングステーション) | X(15) |
3rd IDE | X(11) |
PCIデバイス用 IRQ | 11 |
その他給電の設定等にも注意しましょう。
以上で、sio0が裏面シリアルポート、sio1がIrとして利用可能になります。
Ref.
http://www.ibm.co.jp/pccsvc/thinkpad.html
インストール編
【メモリを増設している場合に発生する問題点】
本体のメモリがある程度(>64MB?)増設されている場合、 標準のboot-paoフロッピーからインストーラを起動しようとしても、 apm0のプルーブ時にフリーズしてしまい、正常にインストールできなくなります。
私の環境ではメモリを64MBから288MBに増設した際、 このトラブルに遭遇しました。 (なお、私はメモリを80MBに増設したIBM ThinkPad560E(2640-40J)も所有していますが、 こちらではトラブルありません。)
この問題を回避してインストーラを続行するためには、 ブート時に表示されるKernel Configuration Menuより 「Start kernel configuration in CLI mode」を選択し、
config> disable apm0 config> quit |
と入力し、一時的にapmを使用しないようにします。
【PC-cardの設定】
PCカードコントローラが使用するI/Oアドレスには Default(0xd0000-d3fff)を使用します。 また、IRQの予約もDefaultのままで特に問題はないようです。
【パーティションの分けかた】
参考として、私のマシンのものを掲げておきます。
wd0s1 /win98 4097MB DOS wd0s2a / 1513MB UFS Y wd0s2b swap 583MB SWAP |
HDDには「IBM DADA26480(6GB)」を使用しています。
なお、ファイルシステムをルートのみとしている理由には、 このUNIXシステムは 個人的に常時使用される(=私が常時管理する)性格のものであり、 かつパーソナルな用途にしか使わない、つまり万一問題が発生しても管理者・利用者が 私個人に限定されるため、何とでもできるという点(=責任が自己完結)と、 全体のHDD容量が数GBしかないため、ファイルシステムを細切れに分割するよりも、 結果として全体的なポテンシャルを犠牲にすることがない (最終的にスケーラビリティの面で優る) という判断からです。
【その他インストールするセットについて】
以上のような設定でインストールを行なえば結構だと思います。
作業完了後、ふつうはリブートされるところですが、この段階のカーネルでは ThinkPad 600がフリーズしてしまいます。ウンともスンとも言わなくなったら、 (電源スイッチも効かなくなるので)電源スイッチ横のリセットボタンを先の尖った もので押してリセットし、再起動してください。
【PAOカーネルの再構築】
インストール直後の再起動においてはカーネルとしてGENERICカーネルが 動作するので、PCMCIAサポート等が欠落しています。よって、PAOカーネルを ビルドして載せ換える必要があります。(以下、話を簡単に進めるためにsysinstallを使った場合の手法を載せます。自力でpatchを当てる場合は適当に直して読んでください。)
まず、/stand/sysinstallを起動して、Configure->PC-cardを選択し、 カーネルを再構築してください。
また、この時点でAPMとPC-cardのサポートを入れましょう。 (問い合わせ画面が出てくるので、チェックを付けてください)
画面の指示に従い、PAOのシステムとPAOカーネルの再構築が完了したら、 システムを再起動することなしにsysinstallを終了して以下のコマンドを実行します。 (ここで、メモリ増設済みのThinkPad上で安定して動作する本当のカーネルを 構築します。)
# cd /sys/i386/conf # cp PAO RAVEN # ee RAVEN |
/sys/i386/conf/RAVEN |
ident RAVEN options "MAXMEM=(288*1024-1024)" |
※identを変更し、MAXMEM行を追加します。
塔載メモリのサイズによって、上記MAXMEM値を適宜変更してください。 例えば、オンボード32MB+増設128MBの場合には、「MAXMEM=(160*1024-1024)」になります。
本体に実装されているメモリ量を下回るサイズを指定してやることで、 システムが安定して動作するようになります。ここでは単純に、最後の1MB を利用しないように設定してあります。
Ref.
http://metalab.unc.edu/LDP/HOWTO/BootPrompt-HOWTO.html
(3.3 Boot Arguments Related to Memory Handling)
コンフィグファイルの編集が終われば、カーネルをビルド・インストールしましょう。
# config RAVEN # cd ../../compile/RAVEN # make depend; make; make install # reboot |
以上でThinkPad 600上で正常に動作する一応のカーネルが出来上がります。 PC-card無しの状態で、サスペンド・レジュームは正常に動作し、 また、DOS領域にハイバネーションファイルがあればハイバネーションも 正常に動作することを確認してください。
私の環境下では、何らかのPC-cardが刺さっていると常にサスペンドに失敗してしまいます。 失敗といっても致命的問題ではなく、画面はブラックアウトするのですが、 エラー音が鳴り、サスペンド状態にならないといったものです。 (Windows98では問題なくサスペンド状態に持っていけるのですけれど...) 尚、サスペンドに失敗した状態からは問題なく復帰することが可能です。 「レジューム時にセキュリティキーを要求する」ように設定しているなら、 その時点でロック機能も正常に働いてくれるようです。
Ref.
http://www.netpassport.or.jp/~wkaoyama/bsd/tp600.html
http://cuvier.center.osakafu-u.ac.jp/tp600-linux/
FreeBSD 2.2.8 インストール後の基本設定
sendmailの停止
3rd party relay 可能な状態で sendmail が動いているので、sendmailの プロセスを殺します。
# ps auxw|grep sendmail # kill (pid_of_sendmail) |
portmapの停止
RPC周りの機能は使わないので、portmapのプロセスを殺します。
# ps auxw|grep portmap # kill (pid_of_portmap) |
syslogdのセキュア化
syslogdがオープンになっているので、secure modeで動作させ直します。
# ps auxw|grep syslogd # kill (pid_of_syslogd) # syslogd -s |
r-commandsの停止
r-commandsが有効になっているので、これを無効化します。
# ee /etc/inetd.conf (telnetの行以外はコメントにする) # ps auxw|grep inetd # kill -HUP (pid_of_inetd) |
syslogd、portmap、sendmailの各々ついて、次回起動時の設定をおこないます。
/etc/rc.conf |
syslogd_flags="-s" portmap_enable="NO" sendmail_enable="NO" #Don't use sendmail, the most buggy system in the world. ;-) |
NTPの設定
Internetに常時接続の環境下で、NTP(Network Time Protocol)を利用して時刻合わせをおこなう場合には、以下のような設定をおこないます。ダイヤルアップ接続のユーザは、この設定によりもたらされる結果について充分理解していない場合、設定してはいけません。
/etc/rc.conf |
ntpdate_flags="ntp.nmt.ne.jp" xntpd_enable="YES" |
/etc/ntp.conf |
server ntp.nmt.ne.jp server ntp2.nmt.ne.jp server ntp3.nmt.ne.jp |
tmpの統合
管理しやすいよう、テンポラリディレクトリを統合します。
# ln -s /tmp /usr/tmp # rm -rf /var/tmp; ln -s /tmp /var/tmp |
初期ユーザの登録
普段利用するためのユーザを登録します。
/etc/group |
wheel:*:0:root,yama users:*:1000: |
# vipw |
yama:*:1000:1000::0:0:Yamamoto:/home/yama:/bin/sh |
パスワードを設定します。
# passwd yama |
ホームディレクトリを作成します。
# mkdir /home # mkdir ~yama; chown yama.users ~yama # exit |
以上で完了です。アカウントyamaでログインし、「su root」等が正常に動くことを確認しましょう。
次に、ユーザの環境設定をおこないます。
$ cp /root/.login ~ $ cp /root/.profile ~ |
環境変数HOMEの内容を適当なものに変更します。
~/.profile |
HOME=/home/yama |
ログインしなおして、環境変数などが正常に設定されていることを確認しましょう。
利用の形態によっては、リミッタを調整する必要があります。 このWSは個人で酷使する性格のものであるので、 最大まで拡張し、ハードウェアの限界まで利用できるようにします。
まず、ログインクラスrootのリミッタを引きあげます。
/etc/login.conf |
root: :coredumpsize=0:\(coreなんて邪魔な場合/旧:infinity) :memoryuse=infinity:\(旧:32M) :maxproc-cur=infinity:\(旧:64) :openfiles-cur=infinity:\(旧:1024) |
そして、リミッタの限定解除が必要なユーザのログインクラスをrootに設定しましょう。レコードの位置は5番目です。
# vipw |
yama:*:1000:1000:root:0:0:Yamamoto:/home/yama:/bin/sh |
カーネルのオプティマイズ
性能を充分発揮するためには、カーネルのオプティマイズが必要になります。 各値の最適値は一般に殆ど経験則的に求められることとなるでしょう。 私の場合は、以下のようなコンフィギュレーションにしています。
sys/i386/conf/RAVEN |
machine "i386" cpu "I686_CPU" ident RAVEN maxusers 256 options NMBCLUSTERS=4096 options CHILD_MAX=256 options OPEN_MAX=256 options "MAXDSIZ=(256*1024*1024)" options "DFLDSIZ=(256*1024*1024)" options "MAXMEM=(288*1024-1024)" options SHMMAXPGS=4096 options INET #InterNETworking options FFS #Berkeley Fast Filesystem options NFS #Network Filesystem options MFS #Memory Filesystem options MSDOSFS #MSDOS Filesystem options "CD9660" #ISO 9660 Filesystem options PROCFS #Process filesystem options "COMPAT_43" #Compatible with BSD 4.3 [KEEP THIS!] options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device options BOUNCE_BUFFERS #include support for DMA bounce buffers options UCONSOLE #Allow users to grab the console options FAILSAFE #Be conservative options USERCONFIG #boot -c editor options VISUAL_USERCONFIG #visual boot -c editor options APM_PCCARD_RESUME options PCIC_RESUME_RESET options SCSI_DETACH options ATAPI_DETACH options "APM_NO_CLOCK_ADJUST" options "APM_TP_WIN98BIOS" config kernel root on wd0 controller isa0 controller pci0 pseudo-device card 1 device pcic0 at isa? port 0x3e0 irq 11 vector pcicintr device pcic0 at isa? port 0x3e4 irq 11 vector pcicintr device pcic1 at isa? port 0x3e2 # for HiNote Ultra II device pcic1 at isa? port 0x3e4 # for Chandra II controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr disk fd0 at fdc0 drive 0 controller fdc1 at isa? disable port "IO_YEFDC" bio irq 6 vector fdintr disk fd1 at fdc1 drive 0 options FDC_YE options "CMD640" # work around CMD640 chip deficiency controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr disk wd0 at wdc0 drive 0 controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr disk wd1 at wdc1 drive 0 controller wdc2 at isa? disable port "IO_WD2" bio irq 15 vector wdintr disk wd2 at wdc2 drive 0 controller wdc3 at isa? disable port "IO_WD2" bio irq 15 vector wdintr disk wd3 at wdc3 drive 0 options ATAPI #Enable ATAPI support for IDE bus options ATAPI_STATIC #Don't do it as an LKM device wcd0 #IDE CD-ROM device wfd0 #IDE floppy (LS-120) controller aic0 at isa? port 0x340 bio irq 11 vector aicintr controller nin0 at isa? port 0x280 bio irq 5 vector ninintr controller spc0 at isa? port 0x320 bio irq 11 iomem 0xd0000 flags 0x01 vector spcintr options SCSI_LOW # XXX: for ncv? and stg? driver controller ncv0 at isa? port 0x320 bio irq 5 vector ncvintr controller stg0 at isa? port 0x320 bio irq 5 vector stgintr controller scbus0 device sd0 device od0 #See LINT for possible `od' options. device st0 device cd0 #Only need one of these, the code dynamically grows device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr options PCVT_SCANSET=2 # IBM keyboards are non-std device npx0 at isa? port "IO_NPX" flags 0x1 irq 13 vector npxintr device apm0 at isa? # Advanced Power Management options APM_BROKEN_STATCLOCK # Workaround some buggy APM BIOS device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr device sio2 at isa? disable port "IO_COM3" tty irq 5 vector siointr device sio3 at isa? disable port "IO_COM4" tty irq 9 vector siointr device sio4 at isa? disable port "IO_COM3" tty irq 5 vector siointr device lpt0 at isa? port? tty irq 7 vector lptintr device lpt1 at isa? port? tty device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr device ed0 at isa? port 0x280 net irq 10 iomem 0xd8000 vector edintr device ed1 at isa? disable port 0x300 net irq 10 iomem 0xd8000 vector edintr device ep0 at isa? port 0x300 net irq 10 vector epintr device ep1 at isa? disable port 0x300 net irq 10 vector epintr device fe0 at isa? port 0x300 net irq 10 vector feintr device fe1 at isa? disable port 0x300 net irq 10 vector feintr device sn0 at isa? port 0x300 net irq 10 vector snintr device sn1 at isa? disable port 0x300 net irq 10 vector snintr device pcm0 at isa? port 0x52c tty irq 5 drq 1 flags 0x10 vector pcmintr device joy0 at isa? port "IO_GAME" pseudo-device loop pseudo-device ether pseudo-device log pseudo-device sl 1 pseudo-device bpfilter 4 pseudo-device vn 1 pseudo-device tun 1 pseudo-device pty 16 pseudo-device gzip # Exec gzipped a.out's options DDB options SYSVSHM options SYSVSEM options SYSVMSG |
サウンドドライバの設定
pcmドライバにおいて、CS4237をWSSモードで利用するためには 以下のような設定でOKです。(前節の内容に含まれています)
sys/i386/conf/RAVEN |
device pcm0 at isa? port 0x52c tty irq 5 drq 1 flags 0x10 vector pcmintr |
新しいカーネルで再起動後、デバイスファイルの作成をおこないましょう。
# cd /dev # ./MAKEDEV snd0 |
尚、サウンドデバイスの状態に関しては、以下のようにして確かめることができます。
$ cat /dev/sndstat |
XFree86の設定
XFree86 3.3.3.1は以下のような設定で問題無く動作します。
/etc/XF86Config |
# XF86Config for ThinkPad600 Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/misc/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/ttf/" EndSection Section "Keyboard" Protocol "Standard" XkbRules "xfree86" XkbModel "jp106" XkbLayout "jp" EndSection Section "Pointer" Protocol "SysMouse" Device "/dev/psm0" Resolution 100 Buttons 3 EndSection Section "Monitor" Identifier "LCD" VendorName "Unknown" ModelName "Unknown" HorizSync 31.5-48.5 VertRefresh 50-100 Modeline "800x600" 40 800 856 1040 1056 600 600 626 628 +hsync +vsync Modeline "800x600" 50 800 856 976 1040 600 637 643 666 +hsync +vsync Modeline "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync EndSection Section "Device" Identifier "NeoMagic" SpeedUp "none" VideoRam 2048 Clocks 25.2 28.3 40.0 65.0 EndSection Section "Screen" Driver "svga" Device "NeoMagic" Monitor "LCD" DefaultColorDepth 16 Subsection "Display" Depth 8 Modes "1024x768" ViewPort 0 0 # Virtual 1024 768 EndSubsection Subsection "Display" Depth 16 Modes "1024x768" ViewPort 0 0 # Virtual 1024 768 EndSubsection EndSection |
まとめ
機能 | FreeBSD下での状況 |
CDROM | 正常動作を確認。 |
FDD | 正常動作を確認。(2-mode) |
SERIAL | 正常動作を確認。 |
IrDA | 未確認。(たぶん正常動作する) |
PARALLEL | プリンタへ正常に出力できることを確認。 |
Ext.Keyboard | 未確認。(たぶん正常動作する) |
Ext.Mouse | 未確認。(たぶん正常動作する) |
Ext.Bus | 未確認。(たぶん正常動作する) |
USB | 未対応の筈。 |
PCMCIA | 手持ちのカードで正常動作を確認。 |
CardBus | 未対応の筈。 |
ZV Port | 未対応の筈。 |
PCM | Luigi's Sound Driver(SB Pro/WSS)およびOpen Sound System(WSS)での動作を確認。 |
MIC/LINE IN | OSSでの正常動作を確認。しかし何故かLuigi's Sound Driver(WSS)では動作しない?? |
Int.MODEM | 動作しない。(MWave) |
APM | 正常動作を確認。(但し、何らかのPCCARDが刺さっているとサスペンド・ハイバネーションしないようだ) |
VIDEO | XGA,16bppの環境でXFree86 3.3.3.1が動く。 |
TrackPoint | 正常動作を確認。ミドルボタンも動作する。 |