Let's Note CF-R4 (CF-R4JWMAXC たぶん生協モデル)にFreeBSD 7.0-RELEASE をインストールしたので, メモしておく.
USB外付けCDドライブにインストールCDを入れて起動して普通にインストールできるはず. (....なのだが, カスタムでインストールしたら, メモリファイルシステム上にインストールしようとしたので, オプションでインストール先を変更して継続したりとかなんとかした. 普通にやれば問題ないんだと思う. ほんとかどうかしらないけど. )
/boot/loader.confに
hint.psm.0.flags="0x2000"
と書いておく. resume後にマウスが早く使えるように刺激する, とかなんとか. 詳しくはpsm(4)参照. しかし, たまにresume後に(?)マウスが死ぬことがある. 再現したりしなかったりするのでよくわからない. 0x2000(HOOKRESUME)を0x6000(HOOKRESUME+INITAFTERSUSPEND)にしてみるといいのかもしれない. (設定は特に変えてないが, 最近は起こらなくなった. )
また, resume後に画面が真っ暗になるのでsysctl(8)で
hw.acpi.reset_video=1
を設定し, resumeしたあとでリセットするようにする. 起動時に設定させるために, /etc/sysctl.confにこれを追加しておく.
次のコマンド
# acpiconf -s 3
でsuspend(S3, メモリは通電したまま)できる. また, sysctl(8)で
hw.acpi.power_button_state=S3
と設定すると, 電源スイッチをスライドさせるとsuspendする. また, 同じ操作をするかフタを閉めた状態から開けるとresumeする. これも/etc/sysctl.confに追加しておく.
acpiconf -s 3を連続的に実行すると, フリーズするので注意. また, 電源スイッチをスライドさせた直後にフタを開けてもフリーズすることがあるので注意すること.
デフォルトの/etc/devd.confにあるように,
# User requested suspend, so perform preparation steps and then execute # the actual suspend process. notify 10 { match "system" "ACPI"; match "subsystem" "Suspend"; action "/etc/rc.suspend acpi $notify"; }; notify 10 { match "system" "ACPI"; match "subsystem" "Resume"; action "/etc/rc.resume acpi $notify"; };
これによってsuspend/resume時に/etc/rc.suspend, /etc/rc.resumeを実行する. 無線LANをwpa_supplicant(8)を介して利用している場合には, /etc/rc.resumeの最後の方に書いてある
#wpa_cli reassociate
のコメントを外しておくと, resume後に再接続を試みる.
CPU負荷が低いときにCPU周波数を落すように設定できる. これはcpufreq(4)とpowerd(8)によって行われる. cpufreqデバイス入りカーネル(例えばGENERIC)を用意するか, cpufreq.koをロードして, /etc/rc.confに
powerd_enable="YES"
と書いておく. /etc/rc.d/powerd startなどとすれば起動.
稼働するCPU周波数の最低値を指定するには, MHz単位でsysctl(8)によって
debug.cpufreq.lowest=300
などと設定する. この場合は負荷が低いときには300MHzで駆動する(see cpufreq(4)).
デフォルトでは, 温度が閾値より高くなった場合にCPU周波数を落すことで冷却を試みる(passive cooling). その閾値を例えば摂氏75.0に設定したいときはsysctl(8)で
hw.acpi.thermal.user_override=1 hw.acpi.thermal.tz0._PSV=75.0C
と設定しておく. hw.acpi.thermal.user_overrideを1に設定しないと, 二行目の変数の値を初期値から変更できない. 詳しくはacpi_thermal(4)を参照.
/boot/loader.confに
hw.psm.synaptics_support="1"
と書いておく.
タッチパッドを使えるようにするために, ports/x11-servers/synapticsをインストール. pkg-message で出てくる設定をする. また, /etc/X11/xorg.confの一部を
Option "LeftEdge" "1300" Option "RightEdge" "5300" Option "TopEdge" "1300" Option "BottomEdge" "4700"
のように変更.
USB接続したキーボードとマウスを使えるようにする. /etc/X11/xorg.confに
Section "ServerLayout" Identifier "X.org Configured" Screen 0 "Screen0" 0 0 InputDevice "Synaptics_Touchpad" "CorePointer" InputDevice "Mouse0" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Keyboard1" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbRules" "xorg" Option "XkbModel" "jp106" Option "XkbLayout" "jp" Option "XkbOptions" "ctrl:nocaps" EndSection Section "InputDevice" Identifier "Keyboard1" Driver "kbd" Option "Device" "/dev/kbd2" Option "XkbRules" "xorg" Option "XkbModel" "pc101" Option "XkbLayout" "us" Option "AlwaysCore" "yes" EndSection
などと書いておく. しかし, この設定では, ノートPCのキーボードのレイアウト(jp106)とUSBキーボードのレイアウト(us101)が違ってもjp106のキーボードのレイアウトになってしまう. (未解決)
X.Org 7.3ではxrandr(1)コマンドで解像度や表示先を設定できる.
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1024 x 1024 VGA disconnected (normal left inverted right x axis y axis) LVDS connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm 1024x768 60.1 + 85.0* 75.0 70.1 60.0 832x624 74.6 800x600 85.1 72.2 75.0 60.3 56.2 640x480 85.0 72.8 75.0 59.9 720x400 85.0 640x400 85.1 640x350 85.1
LVDSは本体の液晶ディスプレイのこと. 1024x768で表示可能なVGA出力に本体液晶ディスプレイの表示を出すには,
% xrandr --output VGA --mode 1024x768
とすればよい. 表示をやめるには,
% xrandr --output VGA --off
とする.
/boot/kernel/acpi_panasonic.ko をロードする.
F1,F2,F4,F7,F10はこれで使えるようである. acpi_panasonic(4)によれば, 他のファンクションキー押下はdevdを使ってコマンドを適当に実行させるとよいらしい.
devdを使うには/etc/rc.confに
devd_enable="YES"
と書いておく. 設定ファイルはデフォルトで/etc/devd.confにある. 詳しくはファイルとdevd.conf(5)を参照.
xrandrは, VGAコネクタが接続されていたら信号を流して, 接続されていなかったら信号を流さないようにするオプション --auto があるので, それで十分な場合には
% xrandr --output VGA --auto
などとすればよい. Windowsでの挙動のように出力をトグルするようなコマンドはないので, vgatoggle.shというスクリプトを書いた(ちょっとイマイチだけど).
#!/bin/sh XRANDR=/usr/local/bin/xrandr AWK=/usr/bin/awk MODE=1024x768 TMP0=`$XRANDR | grep VGA` TMP1=`echo $TMP0 | $AWK '{print $3}'` TMP2=`echo $TMP0 | $AWK '{print $2}'` # if disconnected, always turn off a signal to VGA if [ x$TMP2 = x"disconnected" ] ; then $XRANDR --output VGA --off else # if connected, toggle output if [ x`printf "%c" $TMP1` = x"(" ] ; then $XRANDR --output VGA --mode $MODE else $XRANDR --output VGA --off fi fi
ファンクションキーを押してVGA出力を切替えるために
notify 10 { match "system" "ACPI"; match "subsystem" "Panasonic"; match "notify" "0x83"; action "/home/murashin/bin/vgatoggle.sh"; };
と/etc/devd.confに書く.
ところが, これでは動かない. 念のためにaction行を
action "/usr/bin/logger Pressed_Fn+F3";
と変えてみたが, それでも駄目.
devdを-Ddオプション付きで起動してキーを押してイベントが観測されるかチェックしてみたが, Fn+F3とFn+F8のPressイベントとReleaseイベントはdevdに渡っていない. acpi_panasonic(4)には, Fn+F8は対応するイベントコードがないので, 何も起こらないのが正しいのかも知れない. Fn+F3については, "Not supported by the acpi_panasonic driver."と書いてあるのだが, 対応するイベントコードは存在するようにしか読めず, 整合的でないように思える.
/sys/dev/acpi_support/acpi_panasonic.cとか/sys/dev/acpica/以下を見てみたが, devdにイベントを送るかどうかを決めているのがどの部分なのかよくわからなかった.
というわけで保留.
音をならすにはsound.koとsnd_ich.koをロードすると良い.
mixer(8)コマンドで音量が調節できる.
/etc/rc.confに
mixer_enable="YES"
と書けば, /etc/rc.d/mixer stopが呼ばれたときにmixerの状態を保存できるようだ.
ファンクションキーを押したときに音量を増減させるには/etc/devd.confに例えば以下のように書く.
notify 10 { match "system" "ACPI"; match "subsystem" "Panasonic"; match "notify" "0x85"; action "/usr/sbin/mixer pcm -5"; }; notify 10 { match "system" "ACPI"; match "subsystem" "Panasonic"; match "notify" "0x86"; action "/usr/sbin/mixer pcm +5"; };
これで, F5を押すたびにスピーカーから出る音量が5ずつ減り, F6を押すたびに5ずつ増える.
/boot/loader.confに以下を追記.
legal.intel_iwi.license_ack="1" if_iwi_load="YES" wlan_load="YES" wlan_wep_load="YES" wlan_scan_sta_load="YES"
一番上の行は/usr/share/doc/legal/intel_iwi/LICENSEを読み, 承諾したというしるし. 詳しくはiwi(4)を参照すること.
複数のアクセスポイントで使いたい場合には, wpa_supplicant(8)を使うとよい.
FreeBSD Handbook 29.3 Wireless Networking や wpa_supplicant(8), /usr/share/examples/wpa_supplicant/wpa_supplicant.confを見て設定する.
IPアドレスがとれなくなることがある. そのときはrootで
/etc/rc.d/netif restart iwi0
などとする.
x11-wm/xfce4 をインストール.
パネルはデフォルトでは上下にあるが, 下のパネルを右に移した(WindowMakerをずっと使っていたので).
右のパネルには,
をインストールして設置. 設置はプロパティからぽちぽちと.
xfce4-genmon-plugin で現在のCPU周波数をモニタする. プロパティから指定するコマンドは``やらパイプやらを解さないので, シェルスクリプトを用意する.
#!/bin/sh echo "<txt>`sysctl -n dev.cpu.0.freq`MHz</txt>" echo "<tool></tool>"
これを~/bin/cpufreqmon.shなどと適当な場所に保存して, genmonから指定する. <tool></tool>はtooltipとして表示する文字列として空文字列を指定している. デフォルトではスクリプトのパスが出てしまい, 大きなtooltipが表示されて邪魔なので.
/etc/fstabに以下を書いて,
/dev/ad0s1 /mnt ntfs rw,noauto 0 0
次のコマンド
# mount_nfs /mnt
でマウントできる. 読み込みは問題なくできるようだが, 書き込みはできないようだ.
/etc/resolv.confを変更したらアプリケーション(例えばfirefox)を再起動しないと反映されない. モバイル環境でのDNS (BSD Magazine No.12)によれば, dns/totdを入れてdhclientの設定をいじれば/etc/resolv.confを変更せずに済む.
ある空間から複数のアクセスポイントが見える場合(例えば, 私の場合は研究室)で, /etc/wpa_supplicant.confに複数のアクセスポイントの設定を書いている場合に, 頻繁別のアクセスポイントに再接続し, それまでのコネクションが切れる.
priorityをアクセスポイントごとに設定してあるが, 効果はないようだ.
そこそこ接近して3-4台おいてあるので, 全部使わなくても実はあまり問題がない. そういうわけで, /etc/wpa_supplicant.confには複数ある一つのアクセスポイントしか書かないようにした.
ところが, どうもそれでも設定ファイルに書いてあるアクセスポイント以外のアクセスポイントに繋いでいることがある. これは要調査.