2004 年 12 月 19 日 (日) 自宅

さて、ここしばらく FreeBSD 5.3-RELEASE を IBM ThinkPad X24 (関係ない…いや、関係あるけど、レノボになってしまったらどうしよう…) に入れて、環境設定を行っていました。 完璧とはとうてい言えないものの、そこそこ使える環境とはなったので、 ちょっとノウハウをまとめておきましょう。

[image]

X.Org

X.Org 6.7.0 は一応動きますが、xorgcfg で謎の動作がありました。 何をしたのか忘れましたが、現在はちゃんと動いています。 FreeBSD 4.10+XFree86 4.4.0 では正常動作していた DRI はなぜか動作しません。

デスクトップ環境としては現在、Gnome 2.8.0 を入れています。

gnome2.8.0

サウンド

サウンドは /boot/loader.conf に以下の行を追加するだけで動作します。

snd_ich_load="YES"

内蔵モデム

内蔵モデムは Lucent Winmodem 互換のため、 ports/comms/ltmdm をインストールすれば動作します。 一応、/etc/rc.conf には次のように追加します。

ltmdm_enable="YES"

有線 LAN

これは通常の fxp ドライバで fxp0 と認識されます。

ACPI

ACPI はさしあたって S3 (サスペンド) が動きます。 S4 (ハイバネ) は s4bios が 0 ですので動きません。 acpiconf -s 3 で S3 にすると、 バックライトが点灯したままサスペンドしてしまいます。 一応、蓋を閉じればバックライトは消えている感じですが…。

acpi_video の DPMS パッチを当てれば、 acpiconf -s 3 でも消えるようになります (ただし、 どうせ 5.3 では動かない DRI や AGP サポートを有効化していると、 この DPMS パッチが動きません)。

ということで、カーネルの config ファイルから以下の行をコメントアウトしました。

device         agp             # support several AGP chipsets

DPMS パッチを動かすために、さらに以下の設定を行っています。 まずは /boot/loader.conf に次の行を入れています。

acpi_video_load="YES"

さらに /etc/sysctl.conf に以下の行を追加しています。

hw.acpi.reset_video=0
hw.syscons.sc_no_suspend_vtswitch=1
hw.pci.do_powerstate=1
hw.acpi.lid_switch_state=S3

わりと安定して動いています。 APM の時にたまにあった、 サスペンドから復帰後にパニックという現象は減ったように思いますが、 一方でサスペンドから復帰後に X やコンソールの画面が乱れる現象がたまに生じます。 正常再起動は効くので、パニックよりはましです。

11a/b/g 無線 LAN

Buffalo の WLI-CB-AG24 が、 Windows の NDIS ドライバを利用するためのラッパーである ndis ドライバで動作します。 ndis の使い方は man ndis を参照してください。

# cd
# fetch http://www2.melcoinc.co.jp/pub/lan/wdrv_600.exe
wdrv_600.exe                                  100% of   11 MB  845 kBps 00m00s
# lha x wdrv_600.exe
...(略)...
# cd wdrv_600/cbg54/
# ndiscvt -s bcmwl5.sys -i netcbg54.inf -o ndis_driver_data.h
# cp ndis_driver_data.h /usr/src/sys/modules/if_ndis/
# cd /usr/src/sys/modules/if_ndis/
# make
...(略)...
# make install
install -o root -g wheel -m 555   if_ndis.ko /boot/kernel
kldxref /boot/kernel

これを起動時に読み込ませるために、 以下の設定を /boot/loader.conf に追加しました。

if_ndis_load="YES"

/etc/rc.conf には以下のように記述します。

removable_interfaces="ndis0"
ifconfig_ndis0="DHCP"

WEP などのオプションを指定する際には、 以下のように /etc/start_if.ndis0 に記述します。 11a と 11b/g は SSID の設定で自動認識されます。

ifconfig ndis0 up ssid XXXXXXXX wepkey XXXXXXXXXXXXX wepmode on

この場合の ifconfig はこんな感じ。

% ifconfig ndis0
ndis0: flags=8843 mtu 1500
        inet6 fe80::20d:bXX:XXXX:XXXX%ndis0 prefixlen 64 scopeid 0x5
        inet 192.168.X.X netmask 0xffffff00 broadcast 192.168.X.255
        ether 00:0d:0b:XX:XX:XX
        media: IEEE 802.11 Wireless Ethernet autoselect
        status: associated
        ssid XXXXXXXXX 1:XXXXXXXXXX
        channel 34 authmode OPEN powersavemode OFF powersavesleep 100
        rtsthreshold 2312 protmode CTS
        wepmode MIXED weptxkey 1
        wepkey 1:104-bit

この状況では、たくさん通信を ndis0 経由で行うと、 "no buffer space available" のエラーが ping などからも返されるようになって、 通信ができなくなる場合があります (カードを抜いて挿し直せば再び動くのですが…)。 どうもこれは mbuf を膨大に増やしておくと軽減されるようなので、 今はこういうひどい記述を /boot/loader.conf に入れています。

kern.ipc.nmbclusters="102400"

/etc/sysctl.conf には次の行を追加しています。

kern.ipc.maxsockbuf=3840000

だいたいこんな感じですかね?

Vmware3

vmware2 は既に FreeBSD 5.X ではサポートモジュールが KSE 未対応のためにコンパイル不能です。 したがって vmware3 になるわけですが、なぜかフルスクリーンが動かないので、 800x600 程度の解像度で我慢です。 でもマウスカーソルの in/out が vmware2 よりスムーズなので、 あまり負担にはなりません。 Autofit にすればそこそこ使えます。


vmware3

あと、vmware port の FreeBSD 関係ドキュメントにも書いてありますが、 /etc/sysctl.conf に次の行を書き加えないと正常に起動できません。

kern.ipc.shm_allow_removed=1

samba を使ったままいろいろ動き回る人間としては、 vmware のネットワークはブリッジよりも host-only の方が便利だったりします。 なので、古典的な host-only で vmnet1 を使い、 /etc/rc.conf と /etc/pf.conf で pf を使って NAT 設定を行います。 まずは /etc/rc.conf の追加分。

gateway_enable="YES"
pf_enable="YES"

あとは /etc/pf.conf の設定です。ここで ext_if の処理を自動化できると、 さらにいいんだけどね…(有線・無線切り替え)。 今後さらに pf の使い方を調べて解決法を探ります。 pf は設定がとても簡単でしかも高機能なのが嬉しい。

ext_if="fxp0"
#ext_if="ndis0"
nat on $ext_if inet from !(ext_if) to any -> ($ext_if)

まあこのままでも、/etc/pf.conf の ext_if のコメントを調整して、 次のように実行すれば切り替わるから別にいいんだけど。

# vi /etc/pf.conf
...(編集)...
# /etc/rc.d/pf restart
No ALTQ support in kernel
ALTQ related functions disabled
Disabling pf.
No ALTQ support in kernel
ALTQ related functions disabled
pf disabled
Enabling pf.
No ALTQ support in kernel
ALTQ related functions disabled
No ALTQ support in kernel
ALTQ related functions disabled
No ALTQ support in kernel
ALTQ related functions disabled
pf enabled

まあ、今のところこんな感じで落ち着いた環境となりつつあります。 一応日常作業上はあまり問題はありません (ACPI サスペンド時に USB が死ぬという噂は聞きますが、 私はほとんどラップトップでは USB を使わないので…)。

またノウハウが分かってくれば後日…という感じかな?


このサイトへのリンクには何ら許可は必要ありません。 ただし、無断で写真をダウンロードして他の場所に掲載したり、 画像加工の素材として利用するなど、再配布に当たる行為はしないようにしてください。 また、このサイトへのリンクであることを明示すること無しに <img src="..."> などで他のページの内部に画像ファイルを取り込むことも、 ご遠慮下さい。