はじめに

本ページでは IBM ThinkPad X40 (HDが40Gのモデルです)に FreeBSD 5.2.1 を載せた時の覚書を載せています. 2004年8月現在,Windows XP と FreeBSD 5.2.1 を Dual boot で使っています. 他の機種用のUSBのFDドライブと, 純正のCD/DVDドライブ(USB 2.0 Portable Multi-Burner)を使ってます.

(追記) 2005年8月にFreeBSDを5.4にupdateしました.

パーティション

ThinkPad X40では,ファイルシステムは NTFS なので,まずつまづく. X40はそもそも,最初に電源を入れると,勝手に NTFS 化してしまう. 電源を入れる前にこれを回避する方法もあることはある. 具体的には,まず電源を入れる前にHDを取り出して,他の PC でマウントして, convert.exe を移動してしまうらしい.私の場合はそれを知らなかったので, NTFS 化されてしまった.

NTFS 上では,FIPS は使えない.また presizer も,X40 上ではうまく動作しない. 具体的には「複数のパーティションが同じ領域を share している」といった内容のエラーが 出てしまう.たぶんバックアップ関係のパーティションかツールが邪魔しているのだと思うが, 詳細は不明.そこで,Linux のインストールで使う nftsresize を使用した.基本的な手段は 「 NTFSをリサイズしてLinux用領域を作成」と同じ.具体的な手順は以下のようにした.

  1. リカバリーディスクを作っておく(起動CDを1枚,リカバリーCDを6枚,合計7枚必要)
  2. FreeBSD-users-jp 79698を参考に, Windows XPに入っている[Thinkpad機能設定 プログラム]で[Second IDE devices]を[Disable]にしておく.
  3. 最初からインストールされている IBM Rapid Restore Ultra 4.0 をアンインストールした. IBM のユーザサポートさんからの情報によると,これがあるとパーティションを分割できないらしい. アンインストールは「コントロールパネル」の「プログラムの追加と削除」から実施した. なお,これをやったあとも,やっぱり presizer は動作しない.
  4. static-link の ntfsresize を入手して,DOSフォーマットのFDに記録しておく ( The ntfsresize Frequently Asked Questionsの Q.7 の答の所から入手)
  5. 他のマシンで LinuxのインストールCDの1枚目を焼いておく
  6. LinuxのインストールCDでブートして,
    1. [Ctrl]+[Alt]+[F2]でインストール中止
    2. mount -t vfat /dev/sda /mnt2 
      で FD をマウントする (他のマシンの普通のUSBのFDドライブを使用した)
    3. マウントしたFD上のntfsresize を実行

ちなみに

mount -t vfat /dev/hda2 /mnt2 
で HD のバックアップ用隠れ領域もマウントできる(←特に意味なし). 以下,私の実行したコマンドと結果は次の通り(あまり整理してないですが).
[fdisk -l /dev/hda の結果]
Disk /dev/hda: 40.0 GB, 40007761920 bytes
240 heads, 63 sectors/track, 5168 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

   Device  Boot   Start   End   Blocks    Id   System
/dev/hda1  *      1       4538  34307248+ 7    HPFS/NTFS
/dev/hda2         4539    5168   4762800  12   Compaq diagnostics

[./ntfsresize -i /dev/hda1 を実行]
[./ntfsresize -n -s16000M /dev/hda1 を実行]
[fdisk /dev/hda + p...]など.
[最終結果]
   Device  Boot   Start   End   Blocks    Id   System
/dev/hda1  *      1       2068  15634048+ 7    HPFS/NTFS
/dev/hda2         4539    5168   4762800  12   Compaq diagnostics
/dev/hda3         2069    4538  18673200  ef   EFI (FAT-12/16/32)
基本的には「 NTFSをリサイズしてLinux用領域を作成」と同じ.FreeBSDにだいたい18Gを割り当てた. この作業の後,Win XP を起動すると,checkdisk がかかったが,正常に終了. Win XP で[ファイル名を指定して実行]でdiskmgmt.msc をやってみて, 各領域が,ちゃんと認識できることを確認した.

インストール

CDからのインストールも,DOS領域からのインストールも,うまくいかない. (CDは後述の理由でドライブを認識しなかった.DOS領域は NTFS だからかな?)結局, FreeBSD 5.2.1 の1枚目のインストールCDで起動して,ftp でネットワークインストールした. (ネットワークカードは em0 として認識した.) HD は ad0 として認識した.私の場合のパーティションは以下の通り.

ad0
0-62 Unused
63-31268159         ad0s1  4 NTFS/HPFS/QNX 7  <- Win XP
31268160-68613614   ad0s3  8 freebsd 165 <=* FreeBSD へ
68613615-68614559   -     12 unused 0  <= なぜか残ってしまった.
68614560-78140159   ad0s2  4 Compaq Diagnostic 18 <- Backup?
ところどころ使えてない領域があるけど,あきらめる. BootMgr でブートするようにしたが,私の場合起動時に
F1 ?
F2 ?
F3 FreeBSD
と表示されて,F1 だと WinXP,F3 だと FreeBSD が起動するようになった. たぶん F2 はバックアップ領域で,間違えてブートフラグを立ててしまったんだと思う. 実害はないし面倒なので,とりあえずそのまま使っている.

X11R6

普通に XFree86 で XF86Config を作ってもいいけれど,Depth が 8bit しか動作しなかった. TuxMobilopenbsd on laptopsにXFree86のファイルがあったので, これを参考に,Depth を 24 にして,TrueType も使うようにした. 私が現在使っている XF86Configを置いておきます. これを使って X を起動すると,X を終了したあとの画面がチラチラするんですが, あまり実害はないのでほうってあります. (XFree86 で自動的に作った XF86Config だとチラつかない.)

(付記):2004年10月21日に上記の XF86Config を置き換えました. フォントを読み込む順番,あるいは読み込まないという処置によって, 以下の問題を解決したあとです.個々の工夫についてはもう忘れました…. 特に /usr/X11R6/lib/X11/fonts/cyrillic/ を FontPath から外すこと,が 大切だった覚えがあるのですが,なぜだったかなぁ….

(付記) 2005年8月にFreeBSDを5.4に変更し,ついでに XFree86 も 4.5.0 にupdateしました. i810 のドライバがちゃんとチップセットを認識してくれるようになったので, 上記のチラツキなどもなくなり,ずっといい感じです. 今使っているXF86Configはこちら

DVD/CD-Drive

純正のCD/DVDドライブ(USB 2.0 Portable Multi-Burner)を接続しても,

umass0: Unsupported ATAPI command 0x43
と言われてしまうので, http://www.clave.gr.jp/ml/bsd-usb/200311/msg00004.htmlを参考に, /usr/src/sys/dev/usb/{umass.c, usbdevs,usbdevs.h, usbdevs_data.h} を書き直して kernel を作り直したら,無事に認識した. まだCDが読めることしか確認してないけど. (後日DVDが読めることは確認しました.) 「USBデバイス動作報告」はまだ出してません.すみません. 誰か時間のある人が先に出してくれてもよいです.

残念ながら,現時点ではCD-Rへの書き込みが,うまくいかない. cdrecord で 16倍とか8倍とかで書き込もうとすると,

umass0: Invalid CSW: tag 790 should be 791
などといったメッセージが出て,書き込まずに終了してしまう. (数字はマチマチだけど,どれも1だけずれていた.) 2倍速なら,書き込むところまでうまく行くが,Fix の時に失敗してしまう. そして焼けた CD-R を mount しようとしても, device not configured と言われて失敗してしまう. 実際のメッセージをせっかくなので以下に書いておきます.
Track 01: Total bytes read/written: 664764416/664764416 (324592 sectors).
Writing  time: 1107.428s
Average write speed   3.9x.
Min drive buffer fill was 95%
Fixating...
cdrecord: Input/output error. close track/session: scsi sendcmd: retryable error
CDB:  5B 00 02 00 00 00 00 00 00 00
status: 0x0 (GOOD STATUS)
cmd finished after 10.042s timeout 480s
cmd finished after 10.042s timeout 480s
Fixating time:   33.053s
cdrecord: fifo had 10471 puts and 10471 gets.
cdrecord: fifo was 0 times empty and 8967 times full, min fill was 92%.
speed=2 などと指定しても勝手に4倍速で書いているような気がする. man cdrecord にしたがって speed=0 や,-force も試してみたが,ダメ.

(追記) 2005年8月にFreeBSDを5.4にupdateしたあと,もう一度試してみたら,CD-Rに書けるようになっていた. でも原因はOSのバージョンじゃなくて,たぶんドライブにACアダプタで別途電源を供給したことによるような気がする. うまくいったときの状況は,以下の通り.

電源まわり

Win XP だと,[Fn]+[F12]も[Fn]+[F4]も動作するけど,FreeBSDでは動作しない. FreeBSD-users-jp 79698FreeBSD-users-jp 79956FreeBSD-users-jp 80122を 参考に

をした結果,zzz や [Fn]+[F4] は X 上でもちゃんと動作して,sleep してくれるようになった. でもそのかわり,以下の問題が発生した.

私にとってはデメリットの方が多いので,当面は FreeBSD で sleep を使うことはあきらめた.

tgif(本当はstpcpy on gettext)

tgif を起動すると

/usr/libexec/ld-elf.so.1: /usr/local/lib/libintl.so.6: Undefined symbol "stpcpy"
と言われる.stpcpy がリンクされてないなんておかしい. たぶんライブラリの整合性が取れてないんじゃないか,と思うけど,それ以上はペンディング. これとか これを 見ると,tgif の問題じゃなくて gettext あたりの問題であるようだ.

その後この情報にしたがって, とりあえず /usr/ports/devel/gettext/work/gettext-0.12.1/gettext-runtime/config.h /usr/ports/devel/gettext/work/gettext-0.12.1/gettext-tools/config.hを 変更して gettext を作り直したら,無事に使えるようになった. kinput2 を使った日本語入力も問題なし.

xemacsの設定

xemacs をファイルなしで起動すると,画面がちゃんと表示されなかった. マウスでリサイズすると直るんだけど…. これは以前の機種で xemacs on FreeBSD 4.8 を使っていたときも同様だった. 具体的には,

上記の問題は,.Xdefaults と .xemacs/init.el の記述を調整してみたら直った. 今の私のこのあたりの設定は,

Diskの読みだしエラー

使用して2カ月くらいたつと,起動時など,HD を頻繁にアクセスするときに

  TIMEOUT - READ_DMA retrying (2 retries left) LBA=xxxx
といった感じで,ディスクの読みだしエラーが頻発するようになった.

ので,HD の寿命ではなく,FreeBSD 固有の問題ではなかろうか,,,と思っている. とりあえず BIOS で,[Config]→[Power]を選んで,Power Mode for AC などを Customized にして, CPU の速度を[Fixed Medium]に落としてみたら,上記のエラーが止まった. CPUが遅めでもなんでも,無事に FreeBSD が動く方がいいので,暫定的にこれで対処.

(付記) 2005年8月にBIOSをupdateしたら,また上記のエラーがときどきでるようになった. 速度を[Fixed Medium]からデフォルトの最高速に戻したら,エラーがでなくなった. 理由はまったくわかりません ;-)

今の悩み

PCMCIA/pccardがまったく使えない. これを参考に, NEWCARD, OLDCARD 両方の kernel で試してみたが,全然だめ. NEWCARD だと,PCMCIA スロットに何か挿すと,マシンがフリーズする. よくみると,非常に低速(高負荷?)で動いているようにも見えるけど. OLDCARD だと,PCMCIA スロットに何か挿しても,無反応. そもそもスロットがあることすら認識してないみたいに見える. どちらのカーネルでも

 pccardc dumpcis
を実行すると,
 0 slots found
と言われるから,そもそもどちらもスロットを認識していないのかもしれない.

実害はないけどBootmgrのメニューを書き換えたい. Bootmgr ではメニューは自分で書き換えられないようなので, OS-BSでも入れるかな…?


Last modified: Wed Aug 24 09:03:31 JST 2005
by R.Uehara (uehara@jaist.ac.jp)
Valid HTML 4.0!