カテゴリー:FreeBSD

radeonhd と AMD690G。

ちょっと前の記事で ASUS M2A-VM HDMI で PC を組み立てて FreeBSD を動かした。と言うのを書いた。

この時はまだ xorg で AMD690G が vesa しか動かないので GeForce 7300LE を利用したと書いたけど、FreeBSD 7-STABLE になって ports-current を利用していると xorg も随分とバージョンが上がったのでイヨイヨ AMD690G のグラフィックスチップが動くようになった。

ぱちぱちぱち。X1250 互換なんだけど radeonhd ドライバで動きます。ちなみに今利用しているバージョンは以下の通り。

・xorg-7.3_1
・xorg-drivers-7.3_1
・xf86-video-radeonhd-1.2.1

この環境だと xorg が動きます。xorg.conf は Section "Device" で以下のようにするだけ。

# Radeon X1200 Series
    Driver        "radeonhd"
    VendorName  "ATI Technologies Inc"
    BoardName   "Radeon X1200 Series"
    BusID       "PCI:1:5:0"

非常に簡単にあっけなく動いてくれました。

さて、使ってみた感想ですが、ふつーの 2D は特に遅いとは感じないです。僕は FreeBSD で 3D は体験しないのでそれについては良くわかりませんが、drm が利用できないので mplayer は動画の再生をフル画面で表示することができません。その辺りはちょっと悲しいかな。

後、前の記事で書いていて気がついたのだけど、今回も FF ベンチを試してみたけど AMD690G の X1250 互換チップでは LOW で 3800 しか行かなかった・・。前の記事では GeForce 7300LE で 6000 を超えた。と書いているので、その差たるや歴然か・・。ふむー。

まぁ、消費電力などのことを考えるとオンボードチップを使った方が良いと思われるのでこの際我慢して使うことにしようかねぇ;-)。

付録で以下の二つを付けておきます;-)。

Xorg.0.log
xdpyinfo

konqueror で smb://。

僕は GNOME ではなく KDE3 ユーザであり FreeBSD で利用しています。

そして ports-current を追いかけているのですが、samba3 のあるバージョンから konqueror の smb:// を利用してファイルサーバにアクセスした場合に日本語のファイルやディレクトリが文字化けして表示されるようになってずっと困っていたのですがそれはそれでほっといていました(^^;;。

しかし、いてもたってもいられずにようやっと調査してみることにしました。結局無事に日本語も表示できでばっちりな状態になりました。ふぅ。良かったよ。

今回はその設定方法についてちょっと書いてみたいと思います。それにしても「何をいまさら。」的ネタだったら申しわけ有りません・・。

基本は samba3 の動作にあることが解りました。smbd と nmbd は /usr/local/etc/smb.conf を参照して動くのだけど、クライアント側、それは ports 的には samba-libsmbclient だったりするんだけど、これはクライアント側の設定である ~/.smb/smb.conf を参照して動作するらしいです。

なので smbd や nmbd が参照する /usr/local/etc/smb.conf が適切な設定であってもクライアント側の設定と不一致であれば文字化けしてしまう。と言うのが konqueror の動作のようです。

ちなみに GNOME については知りません。昔は GNOME も KDE3 も入れていたのだけど、今は両方インストールすると ports の数が 700 を越えるので GNOME をインストールするのはやめました;-)。

さて、konqueror で日本語を正しく表示するための設定ですが、上にも書いた通り samba-libsmbclient の設定をする必要があります。以下がその設定になります。

[global]
#   display charset = EUCJP-MS
#   unix charset = EUCJP-MS
    display charset = UTF-8
    unix charset = UTF-8
    dos charset = CP932

ちなみに僕が管理している smbd・nmbd のサーバ側の文字コードに関する設定は以下になっています。この設定は Windows や MacOSX からは無事に日本語が表示できています。

[global]
    display charset = EUCJP-MS
    unix charset = EUCJP-MS
    dos charset = CP932

どうやら konqueror 側からは UTF-8 でアクセスしなければならない。ということのようですね。サーバ側は EUCJP-MS であるのに。ということがわかります。では、僕は KDE3 をどの LANG で使っているのか?と言われれば、以下のようになっています。未だ EUC-JP を利用しています。以下は starkde を実行する前の ~/.xsession で設定しています。

export LANG=ja_JP.eucJP
export LC_CTYPE=ja_JP.eucJP

#export KDE_UTF8_FILENAMES=true
#export KDE_LANG=ja_JP.UTF-8
export KDE_LANG=ja_JP.eucJP
export QT_XFT=true

さてと。これで konqueror で smb:// は日本語文字を正しく表示できるようになりました。嬉しいことです。

EeePC で FreeBSD の ath0。

EeePC で FreeBSD を使う。の第三回目。前回は FreeBSD の利用をあきらめ WindowsXP な PC に成り下がった。と書きましたが、そもそも FreeBSD 環境は USB 接続の 2.5 インチ HDD に入っているのでいつでも色々なことができるのです。

今回は、無線 LAN カード ath0 が status: associated になったのでちょっと書きます;-)。

「ほんとに FreeBSD の利用をあきらめるのか?」とか思い、google を探していたら ath_hal を交換すれば動作するよん。と言うのを発見。実際に試してみた。

詳しくは以下の URL を参照してくだされ。

http://nighthack.org/wiki/EeeBSD
http://snapshots.madwifi.org/special/

ここを参考にしてアーカイブを持ってきます。僕が持ってきたのは全部で三つ。その内以下のファイルではなかなかよろしい感じがする;-)。

madwifi-ng-r2756+ar5007.tar.gz
madwifi-nr-r3366+ar5007.tar.gz

このアーカイブを展開したら以下のようにします。hal ディレクトリを ath として利用すると言うことですね。

# cd /usr/src/sys/contrib/dev
# tar xvzfp ~/madwifi-nr-r3366+ar5007.tar.gz
# mv ath ath.ORG
# ln -s madwifi-nr-r3366+ar5007/hal ath

この後、GENERIC カーネルを利用しているのであればカーネルを作り替え、カーネルモジュールであれば modules/ath・modules/ath_hal・modules/ath_rate_sample を作り替えます。

以上で準備万端。あ。カーネルモジュールには wlan_scan_sta.ko をロードしておいたほうが良いでしょう。

リブートしたマシンでは以下のメッセージがでなくなります。

ath0: unable to attach hardware; HAL status 13

おーー。ぱちぱちぱち。でもって一番最初に書いたとおり ifconfig ath0 すれば status: associated となり、ifconfig ath0 scan すると AP を見つけてくれるようになります。おーーーっ!!。

これで無線 LAN カードはなんとか復活かーーっ!!と思いきや・・。

悲しいかな。僕の自宅でまともに動作しませんでした。まぁ、自宅の AP の設定が複雑であると言うのもあるかも知れませんが、ネットワークに接続できない原因までは特定できませんでした。まぁ、疲れ果てた。と言うのが正解ですが・・。

しかし、ra で IPv6 が付いたりたるんだけど ping・ping6 が通らない状態だったりするし・・。

と、言うことで何か希望が持てた上記の作業なのでした;-)。

つづく。かな?

EeePC。FreeBSD の利用を断念。

先日買った EeePC だが、結局 FreeBSD での利用を断念した。WindowsXP 専用機として「キッチンのコンピュータ」になった・・。

本来、サーバとして利用しようと思っていたのだが、7-STABLE をインストールしても、オンボード NIC が使えない。無線 LAN カードである ath0 が使えない。と言うことでネットワークが全滅状態ではどうしようも無い。

一応、EeePC 購入時に aue0 な USB NIC を買ったのだけど、どうも美しくない。速度も出ないし・・。

後、USB 接続な HDD もしくは SDHC 16GB では遅すぎる(ストレスが溜まりすぎる)と言うのも断念するきっかけにはなっている。ウェブを見ているとマザーボードに半田で CF スロットを付けているのを見かけるけど、僕だったら IDE リボンを接続するけどなぁ。まぁ、そんな腕が無いのでどうしようも無いのだけど・・。

と、言うことで NIC が動かない現在の FreeBSD ではちょっと無理っぽいと言うのが結論。今はメモリ 2GB、SDHC 16GB を搭載し、外部ディスプレーと USB キーボード・マウスを接続してすっかり Windows が動いています。はぁ・・。

どちらかの NIC が FreeBSD で動作するようになったら再度トライしてみたいと思います。

あーうー。どなたか、2.5 インチの IDE リボンを IDE バスから引っ張りだす改造してください・・。

あ。そーそー。最後に一点。
無線 LAN カードは miniPCI Express スロットに接続されているので、ばらして ath0 なカードを抜いて別のカードを差し込もうかと思ったのだけど、今の所、miniPCI Express の無線 LAN カードって Intel のヤツしか無いみたいね。wpi とか /usr/src/sys/contrib/dev 配下のドライバでなんとか動く状態だったりするのねぇ・・。

EeePC 購入。

今まで使っていた CASIO MPC-206 がいよいよ壊れたので新しく NotePC を新調する必要が出てきたので、一番安い NotePC である EeePC を購入した。

何はなくとも FreeBSD を動作させる必要があるのでずが、このネタはのその足跡を書き留めてみたいと思います。きっとシリーズになることでしょう。

今回はその第一回目;-)。

SSD が 4GB しか無いのでそこに WindowsXP が入っているけど、今回はそれについては手つかずの状態にしておいた。これとは別に SO-DIMM 2GB と SDHC 16GB を購入。メインはこっちを利用する予定。メモリが 2GB もあるので SWAP も必要ないでしょ。状態に;-)。

さて、FreeBSD は USB 接続された 2.5 インチの HDD にインストール。インストールメディアは USB 接続の DVD-ROM から行ったのだけど、FreeBSD のインストーラが CD を認識してくれなかったので 2.5 インチ HDD と DVD-ROM を他の PC に接続して FreeBSD 7.0-RELEASE をインストールして、インストール後に EeePC に接続してから ESC キーで USB HDD を指定してブートした。

つまり 2.5 インチ HDD への FreeBSD のインストールは他の PC で行い、その HDD を EeePC に接続した。と言うことですね。早くも挫折感が漂っているのですけど・・。

FreeBSD 7.0-RELEASE は無事に起動しました。が、しかしっ!! NIC が全然使えません。10/100BASE NIC と ath0 な a/b/g 無線 NIC が利用できないのです。10/100BASE NIC は NetBSD では動くみたいですが、 FreeBSD ではダメなのは事前調査で分かっていました。 ath0 が動かないのはまいったちゃん。けど、まぁ、ダメだろうとは思っていたので USB NIC を接続しました。現在は aue0 が接続されています。

さて、以下に情報を付けておきます。

dmesg
pciconf -lv
sysctl -a

GENERIC カーネルの情報ですが、サウンドカードは snd_hda.ko をロードしました。しかし、本当に音が出るかは試していません。あ、言い忘れましたが、この PC はサーバ用途で利用する予定なので X を起動する予定はありません。音も鳴らす予定もありません。

pcm0: [ITHREAD]
pcm0: <HDA Codec: Realtek (Unknown)>
pcm0: <HDA Driver Revision: 20071129_0050>

Codec: Realtek (Unknown) となっているので音がちゃんと出るのかが不安ですが・・。

後、ath0 ですが、pciconf -lv を満て頂ければどんなカードか解るかと思いますが、こいつは以下のようになりやはり動きません。

ath0: unable to attach hardware; HAL status 13

これは、/usr/src/sys/contrib/dev/ath/ah.h に書いてあるのですが、「Hardware revision not supported」だそうなので、まだ動く気配がなさそうです・・。

と、言うことで当分は USB NIC のお世話になる必要がありそうです・・。

さてと、今回のネタはここまで。これから少しずつ格闘していきたいと思います。今はまだ 2.5 インチ HDD(この HDD の容量は 20GB) にインストールしているのですが、もう少し落ち着いたら 16GB の SDHC で試してみたいと思います。

つづく。


あ。最後に。キーボードですが、キータッチ・大きさは MPC-206 と一緒です。DEL キーの場所がちょっと違いますけど、ASUS はMPC-206 のキーボードをパクってビクターの PC を作ったのですが、今回はさらにそのキーボードを使い回ししているようですね。さすがは ASUS;-)。

ちなみに壊れた MPC-206 のキーボード使おうかな。とか思ったのだけど、MPC-206 にはマウスのポインタがあるので再利用できないとこを発見;-|。

imap4-SSL サーバ構築。

JailBreak をやめた iPod に「ソフトウェアアップグレード」したら SSH トンネルが使えないので imap4 を SSL 化する必要がでてきた。

と、言うことで自宅のサーバを imap4-SSL に対応にしてみた。

うちで動作しているサーバは FreeBSD の 6 系 STABLE で ports は 最新の ports-current を追いかけている。動作しているメール環境は sendmail+procmail と courier-imap。つまり、Maildir 形式を利用していることになります。

メールの送信はこの際やめておこう(つまり sendmail の SSL 化は止めておこうと言う意味です(^^;)。iPod Touch でもメールの送信が可能で SMTP サーバを設定する項目はあるのだけど、無線アクセスポイントを利用したときにメールを送信する可能性が有るのかと言えば、あんまりない・・。メールの送信は携帯でやることにしよう(^^;;。

と、言うことで imap4 サーバと pop3 サーバのみを SSL 化することにした。

さてと courier-imap を SSL 対応するのだけど、あまりにも簡単なので驚いた。sendmail+procmail で Maildir 形式に対応した後 ports から courier-imap をインストールするんだけど、courier-authlib と courier-authlib-base も合わせてインストールされます。

全部で以下がインストールされます。courier-imap ってどっかのバージョンで認証方法ががらっと変わったので設定方法も思いっきり変わりました。今回は courier-imap-4.3.0 についてです。

courier-authlib-0.60.2
courier-authlib-base-0.60.2
courier-imap-4.3.0,2

ふつーの imapd と pop3d は現在ではもう既に動いているのですが、インストールは ports を make install しただけで動き出します。すごいっ!! そして Maildir 形式にするには procmail もインストールして /usr/local/etc/procmailrc は以下のように一行だけ書く必要がるんだけど・・。

DEFAULT=$HOME/Maildir/

けど、そーすると sendmail.cf も procmail に対応する必要があるなぁ。/etc/mail/freebsd.mc に以下の行を追加して、/etc/mail で make を実行すれば新しい sendmail.cf と submit.cf ができますので、これで sendmail は MDA に procmail を利用して Maildir に配達てくれるようになるでしょう。

# procmail を利用するための設定
FEATURE(`local_procmail',`/usr/local/bin/procmail',`procmail -a $h -d $u')

make install したらすぐに使える courier-imap だけど imapd の設定は一ヶ所だけ直しました。Thunderbird を使っているとセッションが足りないとか言われるので同一 IP から受け付ける imap のセッション数を増やす必要があります。以下の設定にすれば大丈夫。

#MAXPERIP=4
MAXPERIP=20

続いて imap-SSL と pop3d の設定についてですが、こぉれもちょー簡単。結局なぁんもやること無く動き出してしまった。と、言うのは語弊があるんだけど /usr/local/etc/courier-imap/ の下の imapd.cnf と pop3d.cnf を書いてあげる必要があります。これは SSL の証明書を記述するファイルです。自分のサーバに合ったものに書き直してあげましょう。

二つのファイルが準備できたら後は以下のコマンドを実行します。

# cd /usr/local/share/courier-imap/
# ./mkimapdcert
# ./mkpop3dcert

上記コマンドを実行すると /usr/local/share/courier-imap/ 内に imapd.pem と pop3d.pem と言う証明書が作成されます。後は /usr/local/etc/rc.d/ にある courier-imap-imapd-ssl.sh と courier-imap-pop3d-ssl.sh を実行して起動するだけ。あ、当然、/etc/rc.conf は編集してね;-)。

iPod Touch で接続する前に、まず Thunderbird などで SSL 接続できるか、また、証明書の塩梅を確認してみるのが良いでしょう。非常に簡単に iPod Touch 対応の imap-SSL サーバができてしまいました;-)。

と、言うことで認証のことを書くのを忘れてしました(^^;;。courier-imap の認証部分は courier-authlib がやってくれています。僕はメールを受信するユーザを作成しているので認証は /etc/passwd でやることになります。認証の設定は /usr/local/etc/authlib/authdaemonrc でやるのですが、/etc/passwd で認証するのであればどこも変更する必要はありません。

ただ、/etc/passwd の方ではメールを受信するだけのユーザの場合は shell の設定は /sbin/nologin にしておいたほうが安心でしょう。後は /etc/mail/alias を上手に使うと言う感じですかねぇ。

pxeboot。サーバは FreeBSD/amd 7.0-PRERELEASE で。

DELL X200 と言う NotePC の HDD が逝ったみたいなので交換した。付属の IEEE/1394 の CD-ROM で CD ブートしてインストールしようと思ったのだけど壊れているみたいだったので FD ブートも試したんだけど全然ダメだったので、結局 pxeboot することにした。

NotePC にインストールする OS は FreeBSD/i386 6.3-RELEASE、pxeboot の tftpd・dhscpd・NFS などのサーバ側は FreeBSD/amd64 7.0-PRERELEASE と言う、最新の環境でやることになってしまった。

google などで FreeBSD と pxeboot で検索すると設定はごまんと出てくるのでここではその詳細については割愛するが、はまった所だけ書いておきます。

まず、サーバ側で設定する必要のあるのは以下です。

・DHCPサーバ(/usr/ports/net/isc-dhcp3-server をインストールし /usr/local/etc/dhcpd.conf を編集)
・tftpdサーバ(inetd を起動し /etc/inetd.conf を編集)
・NFSサーバの設定(/etc/exports を編集)

ここまで来たらほぼ完成なんですけど、ここからはまった道。

まずはそのいち。 /etc/hosts.allow には tftpd の許可設定をちゃんと書きましょう。これ書かないと NotePC の PXE はタイムアウトします。

tftpd : localhost : allow
tftpd : 127.0.0.1 : allow
tftpd : .running-dog.net : allow
tftpd : 192.168.1.0/255.255.255.0 : allow
#tftpd : [fe80::%re0]/10 : allow
tftpd : [fe80::%re1]/10 : allow
tftpd : ALL : deny

続いてそのに。サーバ側ではFTP サーバからダウンロードした 6.3-RELEASE の iso イメージを NFS として公開するために mdconfig で /dev/md4 辺りに対応づけてから mount_cd9660 で /cdrom に mount するんだけど、NFS クライアント側、つまり NotePC の PXE でブートした側では パーミッションが無い。と言われて mount できません。

google で調査した時は NFS のパーミッションについて取り上げている所はどこも無かったので、これは多分 7 系 FreeBSD のみで起こる問題かもしれません。FreeBSD の 7 では NFSv4 対応されたりして NFS 回りは大きく修正が入っています。そのあおりを受けたのかも知れません。

ただ、mdconfig を使った場合、-o ro するときが全部で三箇所あるんですが、それを全てそろえる必要があるのかもしれません。

・mount_cd9660 -o ro /dev/md4 /cdrom
・/etc/expotrs にて ro オプションを指定
・クライアント側の mount_nfs -o ro を指定

けど、結局ダメだったので僕は /cdrom に iso イメージの中身全部をコピーしてしまいました。弱々です・・。

最後にそのさん。これは書いている所が多いですが、PEX ブートするクライアント側ではブート時に OK プロンプトで boot -a と叩いて起動し、その後、UFS が見付からない所で止まったら ufs:/dev/md0c と叩いてから次に進みましょう。


後、最後にですけど PXE ブートの環境は普段から持っていると良いかも知れません。今回 NotePC にインストールした FreeBSD はカーネルを作り替えたらまともにブートしなくなってしまうと言う状態が続き、かぁなりナンギしました。

そんなときに PEX ブートして、ちょうど fixed.flp たいな目的で利用できます。 login プロンプトが出たところで root でログインし mount -o rw /dev/ad0s1a /mnt とかすると HDD 内部の変更が可能になるので /boot/loader.conf や /etc/fstab を直したりすることが可能になります。

それにしても今回は楽しい PXE ブート環境構築なのでした;-)。

net-snmp-5.3.2 と /etc/hosts.allow。

FreeBSD の ports を cvsup したら net-mgmt/net-snmp が 5.3.1_7 から 5.3.2 になった。

snmpd を再起動して、リモートのマシンもしくは localhost から snmpwalk で接続しても REFUSED され、接続できなくなってしまった。 cat /var/log/snmpd.log してみると接続してくれない状態が良く解るのであるが大体以下のログを出力している。

Connection from UDP: [0.0.0.0]->[192.168.100.1]:-6568 REFUSED

ちなみに、 /etc/hosts.allow の設定は 5.3.1_7 の時からしていたのと変更はない。snmpd : ALL : allow はコメントアウトして、snmpd : ALL : deny を付けている。後はアクセスを許可するネットワークやホスト、ドメイン名を allow している設定をしている。

でもって 5.3.2 にした途端に接続できなくなってしまった・・。何回か試行錯誤を繰り返した結果、以下の行を記述すれば接続できることを発見。

snmpd : 0.0.0.0 : allow

しかし、なぜに NULL アドレスを設定せねばならんのじゃ? snmpd が IP アドレスを正しく取れていないバクであることは明白であるような気がしてならない・・。とほほ・・。

かくして、自宅サーバは SNMP の取得が復活したでした。ふぅ。

ASUS M2A-VM HDMI の続き。7-STABLE編。

新年明けましておめでとうございます。今年も宜しくお願いします。

新年一発目は ASUS M2A-VM HDMI ネタです。 自宅の FreeBSD/amd64 は今まで 6-STABLE だったのですが、7-STABLE にしました。今 cvsup すると 7.0-PRERELEASE になります。

6-STABLE から大きく変わった点としては acpi_ppc.ko が make 出来なくなりました。そして cpufreq.ko + powerd はカーネルが凍り付くことも無くなり安定稼働するようになりました。同じマザーボードに FreeBSD/i386 をインストールしている人は前から cpufreq.ko + powerd は安定稼働しているとのことなので、FreeBSD/amd64 ではようやっと正しい動作をするようになった。と言うことでしょうか。

ちなみに自宅のマシンはメモリを 4GB にしました。うちで稼働している OS は FreeBSD/amd64・WindowsXPx64 なので 4GB のメモリでも有効利用できるのです;-)。

せっかくなので WindowsXP のほうには Microsoft Virtual PC 2007 をインストールして、その上で Windows Server 2003 Enterprise Edition x86 が動いていたりします。こいつにはメモリを 1.5GB も上げると言う贅沢が出来ます;-)。ちなみに Windows Server 2003 EPE の x64 はインストールてきませんでした。32bit OS しかだめみたいです。

さて、新年一発目なのでこの位にしましょう。全然中身が無い、ただのよもやま話になってしまいましたが・・。

今年も宜しくお願いします。

ASUS M2A-VM HDMI の続き。そのさん。

さて、ASUS M2A-VM HDMI で FreeBSD を楽しむスレッドのそのさんです。前回は acpi_ppc.ko で Cool'n'Quiet を有効にするお話でした。

今回は IXP SB600 Serial ATA Controller のお話です。ちょっと google していたら、以下の URL を発見。

http://lists.freebsd.org/pipermail/freebsd-bugs/2007-May/024410.html

今まで ASUS M2A-VM HDMI マザーボードと言うか、AMD690G チップセットは UDMA33 で HDD を認識して忌んだけど、上のパッチを適用すると ATA150 で認識するようになってくれた。

こっちがパッチ適用前のメッセージ。

ad4: 239372MB at ata2-master UDMA33

こっちがパッチ適用後のメッセージ。

ad4: 239372MB at ata2-master SATA150

S-ATA なので ad4 と認識されてしまうんだけど、それにしても ようやっと SATA150 になった。僕の 環境は FreeBSD/amd64 6.3-PRERELEASE なんだけど、まだ、CURRENT から降ってきていないみたい。なので、STABLE で利用したい人は上記のパッチを手バッチで自分のソースに当てましょう;-)。

まぁ、一応パッチを書いておきましたけど・・。

http://www.icmpv6.org/Prog/FreeBSD_patches/IXP_SB600SATA-6.3-PRERELEASE.patch

けど、すぐに STABLE に降ってくるんだろうねぇ。

後は、グラフィックチップだなぁ。

SMP カーネルと uptime と CPU クロック。そのに。

前回、「SMP カーネルと uptime と CPU クロック。」で書いたことの続き。

SMPカーネルで acpi_ppc を利用した場合、CPU速度が上がらないと言う状態になっていた。ちょっとまとめてみると大体以下のような感じ。

・OS は FreeBSD/amd64 6.2-STABLE。
・cpufreq.ko を使わないで acpi_ppc.ko のみを kldload した場合。
・CPU が DualCore な環境。SMP カーネルであるのだが、 DualCPU ではない環境。

上記の状態の時に発生する現象。

1.make buildworld したとき CPU クロックが Cool'n'Quiet の一番低い速度で動作する。
2.make -j2 buldworld したとき CPU クロックは Cool'n'Quiet の一番高い速度で動作する。

つまり、上の場合はどんなに速い CPU を買って来ても全くもって CPU のフルスペックが利用できない状態に陥る。

ちなみに、シングルプロセスの非常に重いプログラムを動作させた場合も 1. の動作となる。しかし、マルチタスク・マルチスレッドな非常に重いプログラムを実行すると二つの Core を使ってくれるので 2. の状態になる。

これらの情報をもとに acpi_ppc.ko の作者である 福田さん にお伺いしてみました。そしたらその回答として以下の情報を頂きました。

・acpi_ppc.ko はマルチコアな環境に対応していない。
・acpi_ppc は top(1) と同じ動作をする。

との事でした。「top(1) と同じ動作」について少し書いてみたいと思います。

acpi_ppc は cp_time[] という kernel 変数から CPU 使用率を算出しクロックの制御を行なっているそうです。acpi_ppc における Cool'n'Quiet の CPU 速度のアップは CPU 使用率が 98% を超えたら一つ上のクロック設定に上げるようにしているそうなので、シングルプロセッサの場合は特に問題なく Cool'n'Quiet の機能が動作します。

しかし、マルチプロセッサの場合、シングルプロセスの重いプログラムを実行しても top で見る CPU 使用率は 50% のため、いつまで経っても Cool'n'Quiet の一つ上のクロック設定に上がることは無いそうです。当然シングルプロセスの重いプログラムを二つ実行した場合は一つ上のクロック設定に上がるようになります。

以上により acpi_ppc は SMP 環境ではちょっともったいないと言うことになります。しかし、まぁ、言われてみればその通りだなぁ。と言う気はしますが・・。

と、言うことで、僕は色々な場面で make -j2 を付けるようにしました。後、シングルプロセスの重いプログラムを実行する場合は kldunload acpi_ppc することにしました。kldunload acpi_ppc すると CPU 速度は最高速で動作するのでシングルプロセスの場合でも最高速で利用できます;-)。

ちなみに cpufreq.ko はマルチコアに対応していてシングルプロセスの重いプログラムを実行しても CPU 速度は変わるらしいです。まぁ、今回は cpufreq.ko が動作しないマザーボードを買ってしまったのでしょーがないですけど・・。

最後にですが、色々教えてくださった 福田さん。有り難うございました。

SMP カーネルと uptime と CPU クロック。

FreeBSD/amd64 6.2-STABLE で cvsup した後に make buildkernel するんだけど、その時に掛かった時間を /usr/bin/time で計ってみた。

Athlon X2 な CPU なので make buildkernel と make -j2 buildkernel の結果を比べてみた。結果は以下の通り。まぁ、2CPU で処理すると大体 1.5 倍の速度と言うことか・・。ちなみにこの時に利用したカーネルは SCHED_4BSD なスケジューラを利用。


1CPU 1380.26 real / 1006.97 user / 362.58 sys
2CPU 864.76 real / 708.34 user / 348.38 sys

で、なんで、こんなことをしたかと言うと、以下の疑問が出てきたから。

・2CPU で make した時の CPU ロードアベレージはちゃんと上がるの?
・1CPU で make しても Cool'n'Quiet の CPU 速度上がらないんだけど・・。

で、これらの疑問を持ちつつ、make 時に -j2 有り、無しを試してみました。その結果、解ったこと。

・2CPU で make -j2 したときの CPU 速度は大体いつも 2GHz 出ている。1CPU の場合は make に時間が掛かるけど Cool'n'Quiet の下の方の CPU 速度で make している。
・2CPU で make -j2 した時の CPU ロードアベレージは 2.6 辺りなんだけど、1CPU での make 時は1.4 位。

ふむぅ・・。つまり、デアルコアな CPU を買って来た場合 SMP カーネル作るけど、何かしらを make する時には -j2 オプション付けないと CPU の能力は半分しか使われていないと言うことがすごーーく良く分かった。

make buildworld や portupgrade の場合、CPU のフルパワーを使って早く終わって欲しいと思うものです。けど、実際には CPU の半分のパワーで make してたんですねぇ。

この件について /etc/make.conf 内に何かしらの設定をすれば 2CPU で make してくれると言う話を聞いたことがあるんだけど、make 時のスケジューリングの問題で make が途中で止まってしまう ports がある。と、話を聞いたこともあるし・・。まだまだ手動で -j2 と付けるしか手が無さそうですなぁ。

ちなみに、今回利用した FreeBSD は本来はデスクトップとして利用されており、KDE3 が起動しています。今回はテストのために X11、hald を停止しての実行でした。

make のために CPU のフルパワーは使っていただけたのでしょうか・・。

ASUS M2A-VM HDMI の続き。そのに。

前回は BIOS で Cool'n'Quiet を Enable にしたら FreeBSD はブートしませんよ。って所まで書きました。今回はその続編です。

ASUS のウェブサイトを見ていたら、新しい BIOS が出ていたようなので試してみました。今回試したバージョンは 1301 と 1401。しかし、どちらも Cool'n'Quiet を Enable した場合、やありブートしませんでした。あれま・・。

で、前にも書いた通り、僕は Cool'n'Quiet を有効にするために二つのカーネルモジュールをロードしているのだけど、もしかしたら、カーネルモジュールとの相性かが悪いのかと思い、試してみました。そしたら cpufreq.ko のほうをロードすると FreeBSD がピタっと止まる(つまり凍りつく)ということが解りました。

acpi_ppc.ko のほうは特に問題も無く正常に動作して Cool'n'Quiet が有効になっているような気がします。と、言うことで cpufreq.ko は使わず acpi_ppc.koのみをロードすると無事に FreeBSD は動作します。

ちなみに cpufreq.ko を利用した場合は以下の sysctl MIB で CPU 速度が取れます。

dev.cpu.0.freq: 995
dev.cpu.0.freq_levels: 1791/59000 995/21000

しかし、今回は cpufreq.ko はロードせず acpi_cpp.ko をロードするので必要な sysctl MIB は以下になります。

hw.acpi.cpu.px_supported: 2100 2000 1800 1000

これだと、実際に動作しているクロックが表示されないので、その場合は acpi_cpp.ko に付属の chkfreq コマンドで実クロックを知ることができます。

いやぁ、それにしても一個問題解決して良かった。後は AMD の 690G が X11 で使えるようになるだけだなぁ。あ、後もう一個あった・・。hw.acpi.thermal.tz0.temperature がいつも同じ値しか返さない所もなんとかせねばならんのだった・・。

NotePC でコンソールを使ってはいけません。

NotePC にインストールしてある FreeBSD にシリアルコンソールから入りたいな。と思った。自宅のサーバはシリアルコンソールを有効にするために /boot.config を置き、その中に「-Dh」と記述してあるので、NotePC でも同じことをやった。ちなみにこの NotePC には FreeBSD/i386 6.2-STABLE がインストールしてある。

さて、NotePC に /dev/ulpcom 対応な USB のシリアルポートを接続し /boot.config を用意してからリブートしてみた。所が「|」がくるくる回る所でピタッと止まってしまい、FreeBSD がブートすることは無かった・・X-(。10 分待っても 20 分まってもログインプロンプトが表示されることは無かったのである・・。

/dev/ulpcom で認識されるシリアルポートはカーネルがブートしてロードモジュールが認識してから tty が有効になるのだが、ブート直後ではデバイスも認識してくれないのでコンソールに表示された情報がどっかに行ってしまったんでしょうな。

と、言うことで良い子の皆さんは「NotePC に USB シリアルを付けてコンソールにしよう。」など言うことをまねしては行けません。

で、話はここで終わると良いのですが、起動しなくなった FreeBSD をどうやって復旧しようか。と言うことになるわけです。多分、/dev/ad0s1a の /boot.config を削除するだけでブートしてくれるようになるであろうとは思うわけです。ふむぅ。

まずはインストール用の CD-ROM で起動します。起動後の sysinstall 画面で Fixit と言うメニューを選択します。すると以下のようなメニュー画面が出るので 2 CDROM/DVD を選択します。すると /mnt2 に HDD の中身を mount してくれます。後は rm /boot.config してから再起動すれば良いでしょう。

X Exit Exit this menu (returning to previous)
2 CDROM/DVD Use the "live" filesystem CDROM/DVD
3 Floppy Use a floppy generated from the fixit image
4 Shell Start an Emergency Holographic Shell

ちなみにこの時 4 Shell を選択すると Alt-F4 を押した tty4 にプロンプトが現れます。しかし、ls(1) とか mount(8) は無いので随分と難儀します。 ls(1) のかわりに echo * とか echo /bin/* とかすれば ls(1) の代用にはなります。

2 CDROM/DVD を選んで Alt-F4 した後に cd /mnt2 すれば良いでしょう。

しかし、復旧には随分と手間取りました・・(^^;;。うんとふるーーい情報なのに以下の URL がそこはかとなく役に立ちました。

http://www.jp.freebsd.org/QandA/HTML/464.html

ata.ko と atadisk.ko。

僕はカーネルモジュール大好き人間なので、色々なものを kldload しているのだけど、大体 50 個位のモジュールを利用している。

ata.ko と atadisk.ko。この二つはびみょ~。今まで kldload していたのだけど、S-ATA を使ったときや、6.2-STABLE から 7-CURRENT にバージョンアップした時に / パーティションを認識してくれない事態が発生した。

S-ATA を使っている時は /dev/ad0s2a と /dev/ad4s2a を行ったり来たりしているし、cvsup で 7-CURRENT にしたときは全く、どのデバイスを利用すれば良いの?状態になってしまった。

後、注意点としては /boot/kernel.old/kernel をロードしたときは合せて、忘れないで ata.ko と atadisk.ko もロードしないとならないので・・。

と、言うことで ata.ko と atadisk.ko の二つはカーネルに組み込んでおいたほうが便利だなぁ。と最近、思いつつある・・。

ASUS M2A-VM HDMI の続き。

前回、「新しい PC を組み立ててみた。」において、新しいマザーボードと Athlon X2 4000+ を購入して FreeBSD で SMP カーネルを利用してみた。

みたいな所まで書いたんだけど、その後、BIOS を最新の 1101 にしたら突然動作が不安定になった。メモリが不良っぽい動作だったのでメモリチェックしてみてもメモリ自体には特に問題が無いのでふむぅ・・。と言う感じだった。ちなみに WindowsXP x64 は特に問題なく起動する。まぁ、使い込んでないんだけどね。

だけど、FreeBSD はブートもしないで以下のメッセージを出力しつつ panic する。

Kernel panics: failed to create swap_zone

ふむぅ・・。ブート時のメニュー画面で ACPI disable を選択するとなんとかマルチユーザでブートすることを発見。 ACPI 無いし シングルプロセッサだし、UDMA33 な状態のマルチユーザモード。けど、ブートしてくれただけでもありがたいことで options SCHED_4BSD を SCHED_ULE に変更したしりてカーネルの再構築自体はなんとか行える・・。

で、 Google で色々調べてみると

・BIOS で AMD Live! を enable にしていると凍りつく。
・BIOS で Cool'n'Quiet を enable にしていると凍りつく。

などの情報があったのでその二つを disable にしたら無事に起動するようになった。僕の場合、 loader.conf で cpufreq_load="YES" と acpi_ppc_load="YES" を書いているのでその影響かなぁ・・。

マルチユーザモードでバリバリと問題無く動くうにはなったのだけど、それにしても Cool'n'Quiet が動かなくなったのは非常に悲しいものがあります。ASUS が悪いのか、はたまた AMD690G が悪いのか・・。

しかし、Socket7 の T2P4、P5A 以来久々に ASUS のマザーボード買ったのだけど、やっぱり外れた部類に入るかなぁ・・。このマザーボード・・。

新しい PC を組み立ててみた。

ASUS M2A-VM HDMI を購入。CPU は Athlon X2 4000+。メモリは DDR2-800 を 1GBx2 の 2GByte にしてみた。

これで約 27,000yen。まぁ、安いとは思うけど、こんなものかなぁ。今まで使っていた AthlonXP 2000+ は引退して頂き、マザーボード・CPU・メモリだけの買い足しにした。

OS は WindowsXP x64 をインストールしたんだけど、ドライバはマザーボードに添付してあった CD-ROM からインストールして事は終了。

FreeBSD も動作させる必要があるのでこっちがメインの環境作り。

そもそもマザーボードにオンボードの AMD690G は X が動作しないのでパッとあきらめ、PCI-E で動作する玄人志向の nVIDIA 製 GeForce 7300LE GPU 搭載カードを買ってしまった。

さてと、この環境で FreeBSD をブートするわけだけど、AMD690G は xorg-7.2 の環境で一応試してみた。VESA だと動いたけど、ATI ドライバだやはり動かなかったので断念して、素直に GeForce 7300LE を利用することにした;-)。

ちなみに GeForce 7300LE を利用した WindowsXP x64 環境においては FFベンチを試した所 LOW で 6000 を超えてくれた。僕の持っている PC の新記録。

後、気がついた点としては

・マザーボードが AHCI に対応しているのだけど、FreeBSD はまだ対応していないっぽい。
・オンボード NIC は re0 で 1Gbps なのだけど、WakeUP on LAN の動作が怪しい。どう怪しいのかと言うと、FreeBSD 起動後に shutdown -p した後に WakeUP on LAN パケットを流しても起動しない。WindowsXP x64 をシャットダウンした後に WakeUP on LAN パケットを流すと起動してくれる。と言う感じ・・。困ったちゃん。
・音はオンボードの HDA が使える。FreeBSD の snd_hda.ko をロードすれば良いだけ。ただし、起動後に前回保存したボリュームが有効にならないので毎回どでかい音が出てしまうX-(。
・CPU は SMP カーネルで動作する。後、Cool'n'Quiet も動作する。詳細については下の sysctl の結果を見てください。

こんな感じかなぁ。

この PC で FreeBSD/amd64 6.2-STABLE を起動しているのだけど、必要な情報は以下になります。他にも情報掲載のリクエストがあれば、コメントにかいてくださーい。

dmesg の結果
pciconf -lv の結果
kldstat の結果
sysctl -a の結果
AMD690G の VESA の xorg.conf

kernel: ad0: FAILURE - SMART status=51 error=4

カーネルがメッセージを出力してくれます。

kernel: ad0: FAILURE - SMART status=51 error=4

最初、HDD がイカレたのかと心配したのですが、どうもそうではないらしい。PC の BIOS で SMART を有効にしないと上記のメッセージが出る。と言うのを FreeBSD の IRC で詳しい方に教えていただきました。

上記のメッセージは S-ATA が出しているのだけど、ケーブルの問題もあるとは思う。まずは、smartctl -a /dev/ad0 コマンドを実行してみて、「-s on オプション付けて SMART を Enable にしなさい。」みたいなメッセージが出力されたら SMART が有効になっていないので smartctl -a /dev/ad0 -s on を実行して有効にしてあげましょう。

そしてしばらく、メッセージが出力されないとこを確認すれば良いでしょう。

最近の FreeBSD は SMART 情報をカーネルが上げてくれるのか?とかちょっと驚いてしまった一瞬なのでした;-)。

local-host-namesを使わないバーチャルホストの設定。

sendmail の設定でバーチャルホストを利用するには「/etc/mail/local-host-names に受信するドメインを登録しましょう。」ってのがほとんどなんだよねぇ・・。けど、まぁ、楽なのでええんですけど、送信時に問題があることが判明。

例えば、以下のファイルがあったとして、これを cat FILE | mail takachan@running-dog.net したとすると Reply-To: に指定したメールアドレスのドメイン名が sendmail.cf 内の DM に掲載されているドメイン名で上書きされてしまう。という、どうしようもない問題に遭遇するX-(。バーチャルドメインでのメールの送信時の問題ですね。バーチャルドメインのメールが受信できることだけで満足してたらいかんぜぉ。って感じ。

To: test@test.jp
Subject: test
From: takano@test.jp
Reply-To: test00@test.jp

test


ドメイン名を上書きしてしまうのは Reply-To: ヘッダだけなので、あまり気にならない人とか気づかない人もいるのかな?

しゃーないので local-host-names を使わないバーチャルドメインの設定をするしかない。今回は VIRTUSER_DOMAIN_FILE 項を使って mc ファイルを書き直してみたい。

/etc/mail/freebsd.mc があるんだけど、この中の一部を以下のように修正。class{w} のバーチャルホストの設定を利用しないようにして class{VirtHost} を利用する。

# no class{w} added class{VirtHost}
#define(`confCW_FILE', `-o /etc/mail/local-host-names')
VIRTUSER_DOMAIN_FILE(`-o /etc/mail/virtdomains')

この設定だけだと、sendmail.cf の DM が無くなるので、以下の行を更に追加。

Dwmail
Dmicmpv6.org
define(`confDOMAIN_NAME', `$w.$m')

以上、できたら make してでき上がり。sendmail.cf の Dj は自分の好みで編集するとして、ローカルホスト配信がもしかしたらエラーになるかもしれないので submit.cf の Dj も設定して上げれば問題はなくなることでしょう。

/etc/mail/virtdomains は、/etc/mail/local-host-names と同じ記述方法で特に問題はないでしょう。

あ、書いてないけど、/etc/mail/virtusertable については触れてませんけど、他のドキュメントとか読んでくださいね;-)。

/usr/ports/www/photo_gallery 日本語版。

FreeBSD の ports に photo_gallery と言うのがあるんだけど、それの日本語版を作ってみました。

最近、Canon PowerShotG7 と言うデジカメを買ったのだけど、撮った写真を公開する場が無いので、なんかいい ports 無いかなぁ?と探していたら /usr/ports/www/photo_gallery を見つけました。ただ、不便な所とか日本語が使えないので、

「えぇい。改造してしまえっ!!」

って感じです。で、できたのはこんな感じ。サンプルは以下の URL にあります。

サンプルのウェブページ

撮った写真をディレクトリ単位で一覧表示してくれます。その後、サムネイルとかスライドショーなどがお楽しみいただけます。

基本的に /usr/ports/www/photo_gallery を改造しています。ほぼ原型は保っています。

僕の作った ports は以下の URL からダウンロード可能です。使ってみて感想などいただければうれしいです。あーうー。commit してないです;-)。

ports-ja-photo_gallery-1.5-日付.tgz

自分が「こんな機能が必要だ。」と思うとボコボコ追加していく予定;-)。後、僕が改造した部分についてはインストール後の README-ja.txt を参照してください。

bfe0 と ifconfig の alias。

自宅のサーバは FreeBSD 6.2-STABLE なんだけど、ドメインを都合三個取ったので、IPv4 はバーチャルドメインにしようと思ったのだけど、IPv6 は腐るほどあるのでサブドメインに対して一個づつアドレスを消費しよう。と思い以下のコマンドをばばばと 80 個位打ったわけですよ。

ifconfig bfe0 inet6 2001:240:e9:ffff::1003:n alias

そしたら、いきなり通信ができなくなってしました。あれぇ?と言うことで -alias しながら調べてみると bfe0 はどうやら 60 個しか alias ができないみたいです。ひどーー。

ifconfig bfe0 | grep inet | wc

で付いているアドレスの数が60個まではOKだけど、61個目のアドレスを付けた瞬間に通信ができなくなります。-alias で 60 個に戻すと通信が復活します。インターフェースが down したわけではありません。パケットを受け付けてくれなくなる感じです。

ちなみに rl0 と fxp0、そして bge0 で試しましたがこれらの NIC は alias の 60 個制限はありませんでした。と、言う事で、明らかに bfe0 のバグと言うか仕様?のようです。

bfe0 をお使いの皆様、お気をつけ下さい。

qt-3.3.7 用フォントパッチリリース。

もう長いこと KDE 使っているけど、qt の新しいバージョンが出るたびに毎回パッチを作っている。詳細については以下の URL を参照してください。

http://www.kde.gr.jp/~takachan/aa/

このパッチ当てると一番嬉しいのが konsole かな。さざなみゴシックとか使えるようになります。

新装開店。

いやはや。全面改定です。

実はこのページは SAKURA さんにあったのですが、もう 10 年位利用していることになりますね。

で、僕はいつの間にか法人サーバに載っていたみたいで、「さくらのレンタルサーバ」と言う個人ユーザ向けサービスを知ったのはつい最近でした。で、サーバ乗り換えのタイミングで全面改定してみました。

トップにブログをもってきました。

後、僕のページで一番アクセスの多いのは FreeBSD ネタなのだけど、最近全然更新してなくて・・。データ事態は一応残しておきますが、もう更新は無いでしょうねぇ。

なのでブログにしました。これからは FreeBSD の気づいたことはブログに書き込むことにします。そっちのほうが楽だし・・(^^;;。

と、言う事で今後とも宜しくお願いします。

 
Copyright (c) 1997-2007 takachan@running-dog.net All Rights Reserved.