ふりかけFreeBSD

チャンドラ2と4.4の巻

突然続きがはじまりました。


お題目


FreeBSD4.4-Releaseインストールに挑戦

(2001.12.30)

チャンドラ2は FreeBSD2.2.8+PAOで使ってたのですが、 ThinkPad240Zを使うようになって眠ってました。 最近 ThinkPad240Z の画面が調子悪いので チャンドラ2の復活を考えて FreeBSD-4.4へのアップグレードを試してみます。

今回は BSD Magazine の付録 CD からいきます。

fdimage.exe を使って、kern.flp と mfsroot.flp から ブートフロッピーディスク(2枚)を作ります。

CD-ROM ドライブが Windows98 では認識できていて 中のファイルも見えるので、 インストール用のファイル 一式を Windows98 のパーティションに コピーしてきてここからインストールすることにします。 つまり「DOSパーティションからのインストール」を選択します。 2.2.8 のときと一緒です。

以下のファイルを Windows98 のパーティションにコピーしてみます。

実は適当に選んでます。C:¥FreeBSD の下に置きます。

コピーが終ったら、先ほどのブートフロッピーで起動しなおします。

インストールについては、 今まで使っていたパーティションを newfs せずに 上書きしようと試みます。 今までのファイルシステムは次のような感じです。

/dev/wd0s2a /
/dev/wd0s2f /usr
/dev/wd0s2e /var

この3個のパーティションのマウントポイントを そのまま同じように指定(LABEL)してみました。 ところが、/dev 以下のデバイスファイルが 2.2.8 と 4.4 で 異なるため、ハードディスクをマウントできないようです。 wd ドライバが ata ドライバに変わった(未確認)ためでしょうか。

ということで、/ パーティション ( /dev/wd0s2a ) だけを newfs することにしました。 あとで気づいたのですが、/etc ディレクトリだけ バックアップしておけばよかったと思います。 /etc 以下はだいぶ変更になっているそうですが、 バックアップしておけば再び設定するときの参考程度には なったはずです。

ということで、bin, src(ALL), compat22 を custom 指定してインストールしました。 問題なくインストールできたようです。

root パスワードを設定して再起動しました。 /etc 以下が消えているのでユーザー情報もなくなってしまっているので、 とりあえず root でログインします。 昔の自分のユーザーID(番号)を確かめて、 /stand/sysinstall を利用してユーザーを作り直しました。

自分のユーザ名でログインできるようになりました。 X は起動できなくなっています。 X も CD-ROM からインストールし直した方がいいようです。


Xのインストール

(2001.12.31)

Xのインストールに挑戦します。 Windows98 で起動して、CD-ROM から XF86336 ディレクトリを C:¥FreeBSD ディレクトリに コピーしておきます。

FreeBSD でブートして、 /stand/sysinstall から X のインストールをします。 いれるものは適当に選びましたですが、 Xサーバは SVGA サーバだけでよかったみたいです。

XF86Config ファイルも、2.2.8 の時のものをそのまま /usr/X11R6/lib/X11 に置きます。(XF86Configファイル)

あと、moused を有効にしておく必要がありました。 これも /stand/sysinstall からできます。

これで startx すれば起動しました。

2.2.8 のときの mule とか kterm とかは、 「共有ライブラリが見つからない」とのことで そのままでは動きません。2.2.8 のときのライブラリについては、 共有ライブラリは /usr/lib/compat/aout/ に置かなくてはならないようです。 とりあえず /usr/X11R6/lib/ にある古い共有ライブラリに対して シンボリックリンクしまくって mule や kterm を動かすようにしました。 なんてやってたら年が明けてしまいましたので今日はここまで。

(共有ライブラリについてはこちら)


LANカード(Planex ENW-3503-T)の設定

(2002.1.1)

LANカードを使う必要があるので設定します。 /stand/sysinstall から configure → startup と進み、pccard にチェックをして リブートします。

Planex ENW-3503-T というLANカードです。 このままでは認識しないようです。 /etc/defaults/pccard.conf を /etc/pccard.conf にコピーして編集します。

card "Ethernet" "Adapter"

行の後の2行

ether 0x110 # 00:e0:98
ether 0xff0 # 00:e0:98

について、両方ともコメントアウトしました。pccard.conf の コメント行にある「Type A」のカードのようです。

これでリブートしたら認識するようになりました。ed1 になりました。 dhclient ed1 として DHCP で IPアドレスを取得できました。


再インストール

(2002.1.3)

いろいろやっていたら / (ルートパーティション)があふれてしまいましたので、 広げることにしました。いままでは次のような構成です。

ad0s2a / 32MB
ad0s2b swap 120MB
ad0s2e /var 80MB
ad0s2f /usr 2388MB

ルートパーティションは 40MB くらいは使うようです。 余裕をみて 60MB にして、swap と /var を その分微妙に減らすことにします。 / と /var はまっさらになってしまいますが、 /usr はそのまま使うことができます。

ad0a2a / 60MB
ad0s2b swap 102MB
ad0s2e /var 70MB
ad0s2f /usr 2388MB

また、今回は /etc ディレクトリ以下を 自分のホームディレクトリにコピーしておき、必要に応じて書き戻すことにします。

ということでインストールフロッピーから再インストールしました。 moused とか、PCCARD とか、timezone あたりの設定ももう一度です。 /etc/hosts とか、/etc/pccard.conf などを書き戻しました。


LANカード(corega PCC-TD)の設定

(2001.1.3)

なにも設定はいりませんでした。させば ed1 になります。 メディアカプラ一体型カードは安心感があるのでもう一枚くらい買ってもいいかな、 って感じです。


ldconfig の謎

(2001.1.3)

shared library の検索パスがどのように設定されているのか 調べてみました。

ldconfig コマンドは /etc/rc から起動されています。 ldconfig コマンドに与える引数は、/etc/defaults/rc.conf で 指定されています。これを読むとデフォルトで指定される検索パスがわかります。

ELF バイナリについては、/usr/lib, /usr/lib/compat, /usr/X11R6/lib, /usr/local/lib の順、a.out バイナリについては /usr/lib/aout, /usr/lib/compat/aout, /usr/X11R6/lib/aout, /usr/local/lib/aout の順で検索されます。

FreeBSD2.2.8 の時にインストールした a.out バイナリを動かすために、 /usr/X11R6/lib と /usr/local/lib にある a.out 用の shared library ファイルを /usr/X11R6/lib/aout と /usr/local/lib/aout に移動することにします。 次のようなシェルスクリプトを書いてみました。無保証です。

#!/bin/sh
for DIR in /usr/X11R6/lib /usr/local/lib ; do
	if [ ! -d $DIR/aout ]; then
#		echo mkdir $DIR/aout
		mkdir $DIR/aout
	fi
	for i in `file $DIR/* | grep FreeBSD/i386 | awk 'BEGIN{FS=":"} {print $1}'` ; do
#		echo mv -i $i $DIR/aout
		mv -i $i $DIR/aout
	done
done

SCSIカードと CD-RW

(2001.1.3)

いろいろ調べたりするのにマニュアルやドキュメントがあるほうが便利 (ないと不便)なので、doc と man を /stand/sysinstall を使って CD-ROM からインストールすることにしました。

例によって Windows98 を一度起動して CD-ROM からコピーしてもいいのですが、 FreeBSD のまま CD-ROM を扱えた方が便利です。

私は RATOC社 の REX-9530 という SCSI カードをずっと使っているのですが、 試しにそのままさしてみたら、あっさり ncv0 として認識されました。 CD-RW ドライブ(アイ・オー・データ RX6424)も使えました。 dmesg の表示はこんな感じです。

cd0 at ncv0 bus 0 target 6 lun 0
cd0: < CD-R/RW RW7060S 1.60> Removable CD-ROM SCSI-2 device 
cd0: 3.300MB/s transfers
cd0: Attempt to query device size failed: NOT READY, Medium not present

というわけで、FreeBSD で CD-ROM をマウントして使うことが出来るようになり、 なにかと便利そうです。


PPP

(2001.1.7)

PPP の設定をしてみます。自分のThinkPad240Zのメモを参照してすすめます。

カード一体型PHS(NTT Docomo Paldio 611s)を使えるようにします。 GENERIC カーネルの場合、611s をさしたら sio4 として認識されました。 sio2 として認識させるために、カーネルの再構築をします。 /sys/i386/conf 以下に GENERIC ファイルのコピーを作って、 sio2 と sio3 をコメントアウトします。

#device		sio2	at isa? disable port IO_COM3 irq 5
#device		sio3	at isa? disable port IO_COM4 irq 9

カーネルを再構築してインストールするのは以下のような手順です。

# cd /usr/src
# make buildkernel KERNCONF=MYKERNEL
# make installkernel KERNCONF=MYKERNEL

カーネル再構築には数十分程度かかってしまいました。 これで再起動します。

611s は sio2 に割り当てられるようになりました。

PPP の設定をします。su して /etc/ppp/ppp.conf を編集します。 sio2 は /dev/cuaa2 になりますので、

set device /dev/cuaa2

としておきます。NIFTY の PIAFS に接続するときはこんなのを書いておきます。

nifty:

 set phone 03-5744-7523
 set authname ユーザ名
 set authkey パスワード

 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
 add default HISADDR                    # Add a (sticky) default route

これで ppp コマンドから、dial nifty とすれば接続できました。


無線LAN

(2001.1.9)

無線 LAN 導入に挑戦です。機器は以下の通り。

基地局の設定

基地局は IP アドレスを DHCP で取得するようになってました。 MN128-SOHO が DHCP サーバになっているため、 LAN につなげば勝手に IPアドレスを取得して動作します。

設定は WWWブラウザでできます。 「http://基地局に割り振られたIPアドレス/」 でアクセスして設定できます。 とりあえず基地局設定用のパスワードを入力しておきました。

とりあえず家の中ということもあり、今は 「勝手に使われる」「盗聴される」 という心配はしないでゆるく使うことにします。 とはいっても留守中は基地局の電源を切っておくのが安全でしょう。

無線LANのセキュリティ(?)

まず、「基地局の ESS-ID を変更する」というのがあるようです。 同じ ESS-ID を PC側に設定しないと通信できなくなるそうです。 セキュリティというよりは、「混信を防ぐ」程度のものと思ったほうが いいかもしれません。

次に、「基地局に、無線LANカードのMACアドレスを登録」 というのがあります。登録された無線LANカードでないと 基地局を使うことができなくなります。

ちなみに、無線LANのカードも有線LANと同じ12桁のMACアドレスを 持っています。 有線LAN側からは相手が有線LANでも無線LANでもレイヤ2で同じように見えると考えてよいようです。

盗聴を防ぐためには、WEPという暗号化機能があるようです。 基地局とPCで、鍵となる同じ文字列を持っておき、それで暗号化するようです。 共有鍵暗号なのでしょうか。

考えてみれば、 既存の暗号技術である SSL や SSH が使える場面なら WEPを使わなくても問題ないわけですね。

Windows98で無線LAN

寄り道して、Windows98 の機械で無線LANカードを使ってみます。 ドライバは付属 CD-ROM の中に入ってます。 WLI-PCM-L11GP をさして、CD-ROM を入れて、D:\pcml11gp とパス指定して デバイスドライバを組み込みます。

再起動すると、無線LANカードは DHCP で IPアドレスを取得しました。

FreeBSD-4.4で無線LAN

本題の FreeBSD-4.4 です。とはいっても Windows98 よりも楽でした。 FreeBSD-4.4 ならば WLI-PCM-L11GP のデバイスドライバを 標準で持っています。 WLI-PCM-L11GP をさすと、 wi というデバイスで認識されました。

ifconfig すれば使えるようです。ここでは DHCP を使うことにしたので、

# dhclient wi

として IPアドレスを自動取得させました。

これでもう動いてしまっているので今はいいのですが、 細かい設定は

man wi
man wicontrol

などして調べるとよさそうです。

(WEP を使ってみました。)


CVSup

CVSup というソフトウェアを使って 「FreeBSD を最新にする」「ports を最新にする」などを 行うことができます。

まず、コンパイル済みのバイナリパッケージ (package) から cvsup をインストールします。 /stand/sysinstall を使って、FTPサイトより /net/cvsup-16.1_3 というパッケージを インストールしました。 私の環境からだと ftp.jp.freebsd.org からインストールするのが 回線としては速いようです。

次に、cvsup の設定ファイルを用意します。 /usr/share/examples/cvsup にあらかじめ用意されているファイルを コピーしてきて、自分の環境向きに編集して使います。

ここでは、stable-supfile と ports-supfile を /etc に コピーしてきて使いました。

FreeBSD のアップデート

stable-supfile を /etc に置いて編集します。

私の環境だと cvsup.jp.freebsd.org が近いようです。 次のように編集しておきます。

*default host=cvsup.jp.freebsd.org

また、次のようにしておきました。

#*default release=cvs tag=RELENG_4
*default release=cvs tag=RELENG_4_4

RELENG_4 にしておくと、4.4-STABLE という、安定版の最新を 入手することができます。 しかし、開発の最前線ではあるのでやはり多少のリスクはあるようです。

RELENG_4_4 にして得られるのは、 4.4-RELEASE というリリース版に、 セキュリティの修正や重大なバグ修正などだけを行った版です。 ただし、4.4-STABLE のように新機能は入っていないわけです。 今回は安全側を取って、RELENG_4_4 を選びました。

ただし、ports については、「STABLE で動く」という前提になっているので、 RELENG_4_4 では動かないものがあるかもしれません。 そのような ports を使いたい場合はシステムを STABLE にアップデートしなければ ならなくなるでしょう。

また、いずれ 4.5-RELEASE が出るでしょうから、その時には RELENG_4_5 を選んでアップデートしてもいいかもしれません。

CVSup コマンドは例えば次のように使います。

# cvsup /etc/stable-supfile

X が起動している場合は GUI モードで動きます。GUI を使いたくない場合は -g オプションをつけて起動します。

しばらく待っていると、ソースが全部新しくなりました。 これからシステムの再構築をする必要があるのですが、 時間がかかるのでまた後で。

ports のアップデート

/etc に置いた ports-supfile をやっぱり次のように編集しておきます。

*default host=cvsup.jp.freebsd.org

ports-supfile の中で ports-all を指定して ports 全てをアップデートしてしまいましたが、 chinese や korean の ports は私はあまり使わないでしょうから はずしておいてもいいかもしれません。 CVSup コマンドは次のような感じです。

# cvsup /etc/ports-supfile

今回は転送量が多いので待たされました。 要するに全部転送してしまったようです。 あらかじめ CD-ROM などから ports 全てをインストールしておいてから cvsup するのがいいようです。


パスワードジェネレータ:pwgen

(2002.1.21)

アカウントを一度に作る時に、 ランダムなパスワードを生成してくれるプログラムがあると便利です。 ports から探してみました。

sysutils/pwgen というのを見つけました。 ports ですから make install で簡単にインストールできます。

pwgen 8

とかすると、8文字の長さのパスワードを生成してくれます。

-c : 大文字小文字を混ぜる
-n : 数字を混ぜる
のようなオプションがあるようです。

pwgen 8 -c -n

など、いろいろ使えそうです。


(ダブルライダー(?)編へ)
ふりかけFreeBSD