CF-R1 に関するメモいろいろ

もうだいぶ前ですが、Panasonic の Let's note PRO (二代目 CF-R1)を買ったのでそれに関するメモなど。 ちなみにほとんど linux の話題です。

linux のインストール

問題点

(少なくとも二代目までの)CF-R1 は純正ドライヴからしかブートしません。 ユーザを小バカにしたふざけた仕様です。 まったく腹立たしい。 (最近の機種ではサードパーティドライヴからも起動するように なったんだから、古いやつもBIOS アップデートで対応してくれても よさそうなものなのに…。)

で、このまま純正ドライヴを買ったら松下の思うツボ的な悔しさがあるので 何とか他の手段でインストールを考えます。

外づけドライヴ以外の手段

Windows 領域から
NTFS なので、loadlin 等でインストーラが起動まではしても、 その後ファイルシステムにアクセスできないのでダメ。
HDD 取り外し
(少なくとも初代~2代目の)CF-R1 の HDD は3[V]単一電源という 特殊仕様なのでそのまま外して 2.5''→3.5'' 変換キットを使うのは 恐いのでヤダ。
ネットワークインストール
そう。これこそが最後に残された手段です。 なぜか CF-R1 の Phoenix BIOS はネットブートに対応しているのです!

netboot & linux のインストール

結局、苦労して Debian GNU/Linux のインストールに成功しました。 ちなみに以下の手順は 二代目 CF-T1(Centrino の前のやつ) でもできました。

  1. こういう目的ですから、閉じた LAN の方が何かと安心なので、 適当なネットワークを構築します。…といってもぼくの場合、 母艦とラップトップをクロスケーブルで繋いだだけですが。
  2. 母艦を tftp & dhcp サーバにします。 tftp のルートディレクトリの指定は /etc/inetd.conf の中でやっているので、適当に設定します。ここでは/tftpboot とかしてみましょう。
    # grep tftp /etc/inetd.conf
    tftp            dgram   udp    wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /tftpboot
    	
    tftp で取得する boot ファイル名は dhcp で 与えてやる必要があります。CF-R1 の場合はbpbatchが 使えるので、これを http://www.bpbatch.orgから持ってきます。 で、それを tftp で get できるように置いておきます。 そしたら dhcpd.conf をこんな感じにします。
    host cfr1{
      hardware ethernet 00:80:XX:XX:XX:XX;          # CF-R1 の MAC address
      filename "bpbatch";
      option option-135 "-i";
      option dhcp-class-identifier "PXEClient";
      option vendor-encapsulated-options  01:04:00:00:00:00;
    }
    
  3. Debian のインストーラに必要最低限のファイルを Debian サイトから 持ってきて、tftp のルートディレクトリに保存します。 必要なファイルは、さしあたり(woody なら) の二つだと思います。
  4. CF-R1 をネットブートしてみましょう。何やらプロンプトが出ますか? help とか打ってみてそれらしい反応が帰ってきたら成功です。 続いて以下のようにしてインストーラをブートします。
    >set cachenever="ON"
    >linuxboot "tftpboot.img" "root=/dev/hda1" "root.bin"
    
  5. はい、いつものインストーラが起動しましたね。あとは適当に 努力と根性で頑張れば入ると思います。

Synaptics TouchPad 問題

この文章書いている時の最新カーネル (2.5.71~2.6.0-test5)を CF-R1 で使おうとすると、 タッチパッドのドライバがうまく動いてくれません。そのための パッチのあて方。

2.6.0-test3 の場合ですが、 drivers/input/mouse/psmouse-base.cを以下のようにいじって makeすれば ok です。(何とも後ろ向きな解決方法ですが…)

       if (param[1] == 0x47) {
                psmouse->vendor = "Synaptics";
                psmouse->name = "TouchPad";
                return PSMOUSE_PS2;  // ←この一行を追加
                if (!synaptics_init(psmouse))
                        return PSMOUSE_SYNAPTICS;
                else
                        return PSMOUSE_PS2;
       }

(2003年10月追記)

2.6.0-test6 カーネルでこの問題は解消されました。 このバージョンからメニューに新たに追加された Input device → Mice → PS/2 mouse → "Synaptics TouchPad" をチェックしないようにすれば大丈夫です。

(2004年1月追記)

カーネル2.6.1から再び問題が出てきました(2.6.0 までは ok)。 Synaptics デバイスが

Synaptics Touchpad, model: 1
 Firmware: 5.9
 180 degree mounted touchpad
 Sensor: 53
 new absolute packet format
 Touchpad has extended capability bits
 -> four buttons
 -> multifinger detection
 -> palm detection
input: SynPS/2 Synaptics TouchPad on isa0060/serio1

こんな感じで認識され、いちおう動くのですが、タップ動作 (パッドを使ってクリックとか)ができません。もしかしたら XF86Config-4 を適当にかけば良いのかもしれませんが、調べるのも 面倒なので ( 、&  カーネルのコンフィギュレーションからは Synaptics TouchPad の on/off 設定が消えてしまったので ) 以前と同じ方法で、ふつうの PS mouse にみせかけました。 linux-2.6.1/drivers/input/mouse/psmouse-base.c を以下のようにパッチ当て。

static int psmouse_extensions(struct psmouse *psmouse)
{
        int synaptics_hardware = 0;

        psmouse->vendor = "Generic";
        psmouse->name = "Mouse";
        psmouse->model = 0;
        return PSMOUSE_PS2;      // この一行を追加
/*
 * Try Synaptics TouchPad
 */

これでふつうに使えます。

一言メモ

*1世間では X1 はワインレッドでとおっていますが、 正しくはローズレッドです。もしかしたら機種によってはワインレッドも あったのかも知れませんが、少なくともぼくの知る限りローズレッドです。


kobayashi@bme.oit.ac.jp

Valid HTML 4.01!