私のメモです。参考になればいいですが、間違っていたらごめんなさい。
------------------------------------------
UNIX USER12月号にFreeBSD4.4-RELEASEが
付いてきたので、それを利用することにした。早速CDからブートすると、カーネルの選択→
言語の選択の後、何やらいっぱい書かれたインストーラが立ち上がる(カーネルはCD-ROMのカーネルを、
言語は日本語を選択)。インストールにはStandardとExpressとがあるようだが、recommand(推奨)に
なっているStandard Installを選択する。すると、パーティションの作成→ブートマネージャーの選択→スライス
(Linuxで言うディレクトリのこと)の作成→インストールするファイルの選択→portsのインストール→
インストールメディアの選択→インストールとなる。ここで注意するのはブートマネージャーの選択である。
LinuxではLILOのインストールをしなくてはならないが、FreeBSDのブートマネージャーはLILOとは違って
カーネルを起動するものではなく、単にカーネルローダーに受け渡すためのOSセレクタ(?)みたいなものである。
そのため、この「ブートマネージャーの選択」では、マルチブートを行っているならば「none」を選択する必要がある。
また、言うまでもなくデバイスの名前の付け方がLinuxと異なる。ハードディスクはhdaではなくad0であり、
例えばprimaryハードディスクの6つ目のパーティションはad06ではなくad0s6になる。
一つ驚きであったのは、1つのパーティションにいくつものスライスを設定できる点である。
僕はad1s1(secondryの1つ目のパーティション)に「/」と「/usr」を、as1s4に「/home」と「swap」を設けた。
ちなみに、インストールするファイルの選択では、「x-user」を選択している。
お約束通り(?)インストールを数回やり直してようやくインストール完了。
でも、Linuxのディストリビューション同様、インストール後はカーネルが全ての機能を有効にしている。
これでは起動が遅くなるし無駄にメモリを使うし余計なサービスに応答しかねないしあまりいいことがない。
そこで、カーネルの再構築を行った。Linuxのカーネル再構築では、膨大な量を設定する
必要があるがFreeBSDではこれは楽チンである。/usr/src/sys/i386/conf/GENERICにデフォルトのカーネル
コンフィグレーションがあるので、そのコメントアウト部を見ると何を設定しているかが分かる。
何より設定する項目が少ないので非常にハッピーである。でもこれは裏を返せば、GENERICに載って
いないハードフェアは設定方法ドキュメントから探して自分で設定するんだけどね。ともあれ、
僕のハードウェアはすでに枯れかけているのでGENERICに載っていたようだ。
さて、肝心カーネルの再構築の方法であるが、
ASCII出版「プロフェショナルBSD改訂版」
を参考にした。まず、標準に入れるとkernelのソースファイルはインストールされていない。
そこで、/stand/sysinstallを起動して、Configure→distribution→src→sysを選択してインストールすることができる。その後は以下の通り。
コンフィグレーションファイルのあるディレクトリへ移動
# cd /usr/src/sys/i386/conf
再構築用のコンフィグレーションファイル(MYKERNEL)を作成
# cp GENERIC MYKERNEL
コンフィグレーションファイルを編集。
# vi MYKERNEL
編集後はこのようになる。
コンパイルディレクトリやMakefileを作成。
# config MYKERNEL
上記ファイルが作成されたディレクトリへ移動
# cd /usr/src/sys/compile/MYKERNEL
カーネルの作成。
# make depend && make
カーネルインストール前にオリジナルを別名で保存。
# cp /kernel /kernel.orign
カーネルのインストール。
# make install
後は再起動すればOK。ちなみに作成されたカーネルは、デフォルトではGENERICになっているため、
uname -aコマンドでカーネルを確認するときにオリジナルと区別が付かない。
そこで、カーネルコンフィグレーションファイルの”ident”行に書かれている「GENERIC」を好きな
名前に変えると良い(僕はMYKERNELにしている)。
そう言えば、カーネルコンフィグレーションファイルにはサウンドの設定が無かった。
そこで、FreeBSDプロジェクト(Japan)の
ハンドブックを見てみると、
どうやらカーネルの再構築が必要なようである。僕のサウンドデバイスは、マザーボードに
オンボードのESS1371なので、カーネルコンフィグレーションファイルに次の1行を追加すればOKである。
device pcm
で、早速カーネルを再構築して再起動。しかし、これだけでは動かない。
ハンドブックにもあるように、サウンド用のデバイスノードを作る必要がある。
下にあるように、sndXのXを調べるためにまずは起動メッセージをdmesgコマンドでチェック。
# dmesg |grep pcm
これでpcm0になっていることを確認。その後はハンドブックの通り、
# cd /dev # sh MAKEDEV snd0
さて、上記のようにすればサウンドは使えるのだが、一つ不安が・・・。
上記の方法ではカーネルにサウンドが組み込まれることになり、サウンドで問題があった場合に
フリーズしそうな気がする。
そこで僕は、Linuxの方ではこれを嫌ってモジュールでALSAドライバを
組み込んでいる。同じ様にFreeBSDもできないのかな?と調べていたら、UNIX USER
7月号に、「FreeBSD 4.3-RELEASEの変更点」として記載されていた。それによると/boot/loader.confに次の1行を追加すれば良いらしい。
snd_es137x_load="YES"
これはes1371のドライバを使っているのが分かる場合、上記のようにすることによってそのドライバだけを
ロードする設定である。自分の使っているチップを読み込むための記述の仕方は、/boot/defaults/loader.confを
見ると書かれている。もし、ドライバが分からなければ、下のようにすると/boot/defaults/loader.confに
記載されたモジュールを全て読み込んでくれる。
snd_load="YES"
もちろん、/boot/loader.confを設定した後、再起動してサウンドノードを作成する必要があるが、
僕の場合は上ですでにデバイスノードを作成していたので再起動するだけでOKであった。
戯れ言2
ようやくカーネルの調整が終わり、サウンドもなるようになったが、 このままではすごーく味気ないコンソール画面だけである。ここからはある意味で FreeBSD固有の設定ではない部分が多いけど、mousedなどのようにFreeBSD固有の機能がXの設定に 関係する部分もあるので忘れないように書いておくことにした。
FreeBSDでは、/stand/sysinstallを実行することによっていろいろな設定ができる。Xの設定も/stand/sysinstall
→ Configure → XFree86を選択することによってXF86Setupやxf86configを使って設定できる。
しかし、僕のグラフィックチップはi815eなので、FreeBSD 4.4-RELEASEでx-userを選んだ場合にインストールされる
xfree86-3.3.6ではサポートされていない。そこで、Xの設定をする前に、xfree86-4.0以上をインストールする。
これはUNIX USER12月号のDisk4に収録されている。インストールも/stand/sysinstallからできる。
まずDisk4をCD-ROMに入れて/stand/sysinstall → Configure → Packages → X11を選択すると出て来る、
XFree86-4.1.0関係を選択すれば良い。これで自動的に3.3.6のパッケージも削除してくれる。
XFree86-4.1をインストールした後、/stand/sysinstall → Configure → XFree86で出て来るXF86Setupを実行する。
xf86configでもいいんだが、XF86Setupがグラフィカルで視覚的に設定できること、キーボードにjp106が入っていること、
mouseの設定が豊富なことからこっちを利用することにした。XF86Setupでは、mouseをIntellimouseに、キーボードは
jp106(言語はjapanese)、グラフィックはi810を、モニターはカスタムでEIZO FlexScan E53Fの設定を入れて見る。。。
が、Xの設定に失敗しているようだ。とりあえずXF86Setupを終えて、/etc/X11/XF86Configファイルを見ようとしたが見つからない。
うーん、仕方無いので、今度はxf86configで設定したが、やっぱり立ち上がらない。
でもxf86configのおかげで、/etc/XF86Configができたようである。取り敢えず/stand/sysinstallを抜けてこのファイルを見るが、
これといって不具合は無い(基本的にグラフィックカードとモニタが適切に設定して入れば、画面くらいは表示される)。
これは困った。早速インターネットで調べてみると、すぐに解決した。googleを使って
「FreeBSD i815」をキーワードに日本語ページから探したら、
一発で見付かった
agpを利用するグラフィックカードは、そのモジュールとデバイス、そしてそれをロードするように/boot/loader.confに
記述しておかなくてならないのである。
まずは、モジュール /modules/agp.koと/dev/agpgartがあることを次のコマンドで確認。
# ls /modules |grep agp.ko
この結果agp.koが出力されればOKである
# ls /dev |grep agpgart
この結果agpgartが出力されればOKである。
FreeBSD 4.4-RELEASEでは、すでにこれらが用意されているようなので、とりあえず問題なし。
起動時にagpモジュールをロードするように/boot/loader.confに下の1行を書き足した。
agp_load="YES"
その後、再起動してログイン後にstartxを実行することにより無事にXの画面が立ち上がった。
無事にXが立ち上がったのだが、マウスがまともに動かない。
動かそうとするとしゅるしゅるっと左上に行ったきりになってしまう。
うーん、そう言えばFreeBSDではmousedってのを利用しているから、Xの設定はプロトコルが
AUTO、deviceが/dev/sysmouse(または/dev/mouse)になるというのがマウスの設定後に出てきたような気がする。
さて、FreeBSDにあるハンドブックやFAQ、
メーリングリストからの検索で調べてみると、次のことが分かった。
(1) mousedを利用する場合は引数に”-z 4”を付けて、4つ以上ボタンがあることを認識させる。
(2) XF86Configファイルのマウスセクションでは、ボタンが5つであることを明記する。
(3) Intellimouse互換と言っても、たまにインチキ品があるのでちゃんとIntellimouseと認識されているかを確認した方がいい。
そこで、まずは(3)を確認するために # dmesg |grep mouseでマウスの出力結果を見ると、
ちゃんとIntellimouseとなっているのでこれはOKであった。
次に、mousedの引数を変更するのだが、グラフィカルにやるなら/stand/sysinstall → Configure → マウスの設定
でいいのだが、これをやると/etc/rc.confの中身が何回も書き直されて非常に醜い。
そこで、素直にviで/etc/rc.confを編集して、マウスの設定は次のようにした。
moused_enable="YES"
moused_port="/dev/psm0"
moused_type="auto"
moused_flags="-z4"
これでマウスの設定はOK。後は再起動してもいいけど、ps ax |grep moused でジョブ番号を調べて、kill
[ジョブ番号] で一旦mousedを立ち下げ、次のコマンドを打っても同じである。
# moused -z 4 -t auto -p /dev/psm0
また、マウスのボタンが5つあるとXに示すため、XF86Configのマウスセクションで次のようにした。
Option "Buttons" "5"
これを設定した後、startxで確かめたら無事にホイールが動いた。
ちなみに、なぜボタンが5つあることを示すかと言うと、ホイールの動作は上に回したら「PageUp」キーに、
下に回したら「PageDown」キーに受け渡しているためである。
また、ホイールを押すと3ボタンマウスの真中になるのは言うまでもない。。。
参考:XF86Config
さて、ようやくXの環境も整ったので、/stand/sysinstall → Configure → Desktopから
gnome-sawfishを導入した。rootでログインしてからstartxで起動できるけど、一般ユーザーではログインできない。
でもWindowManagerを使うと一般ユーザーでもログインできるようだ。
そこで、どーもgdmはデザイン好きになれないgdmではなくwdmを入れる事にした。
それにgdmはロケールの設定がいまいち良く分からないね(/etc/environmentに設定すれば良いとも言われるが、
これだと日本語に対応していないシェルで文字化けする)。
wdmはホームディレクトリの.xseesionファイルに書かれたセッションを実行するので、
ホームディレクトリに.xsessionファイルを作っておく必要がある。また、.xsessionファイルにロケールを設定する事により、
gnomeを日本語で表示可能である。で、シコシコと.xsessionを書いてもいいのだが、面倒なのでDebianで使っている.xsessionを持ってきた。
ただし、次の変更を加えないとgnomeは起動しない。
変更前 変更後
export LANG=ja_JP.eucJP export LANG=ja_JP.EUC
また、次の一行を加えないと、どうもシェルのメッセージ表示が文字化けする。
export LANGUAGE=ja
と言うわけで、Debianから持ってきた.xsession、 .Xresourcesを使って、無事にgnomeは日本語表示され
kinput2+cannaで日本語入力できるようになった。
参考:.xsession、.Xresources
さらに、FreeBSDを起動直後にwdmが起動するように、次のスクリプトファイルを作成した。
まず、 /usr/X11R6/etc/rc.d/にwdm.shを作成。
# vi /usr/X11R6/etc/rc.d/wdm.sh
その中身は下の通り。
#!/bin/sh
if [ -f /usr/X11R6/lib/X11/wdm/wdm-config ] ; then
echo 'Starting wdm'; /usr/X11R6/bin/wdm
fi
もちろんwdm.shに実行権限を与える。。。
# chmod 755 /usr/X11R6/etc/rc.d/wdm.sh
gnomeも無事立ち上がり、次はPC-UNIXではもっとも不要と思われる音の話である。
そう、CDを聞きたいのである。
下準備としては、FreeBSDのQandAにも書かれているように、
acd0cのグループがoperatorなのでCDを聴く人をoperatorグループに加えておかなくてはならない。
ちなみにCDを聞くだけなら、デフォルトで利用できる次のコマンドでOKである。
# cdcontrol -f /dev/acd0c play 1
/dev/acd0cはCD-ROMのデバイスノード、playの後の数字は演奏するトラック番号である。
ただし、FreeBSDのHANDBOOKにも書かれているように、acd0cのグループがoperatorなのでCDを聴く人をoperatorグループに
加えておかなくてはならない。
でもコマンドじゃぁ、つまらない。これで聴くくらいならgnomeなど入れねーよ。
ってことで早速gtcdをインストール。Linuxのディストリビューションだとgnomeに標準(?)で付いているCD Playerに思えるが、
FreeBSDではgnome+sawfishを入れただけではインストールされない。
FreeBSDでは、gnomemediaというパッケージを入れるとgtcdやgmixなどがインストールされる。
でもgtcdを起動すると、「/dev/cdromが無いよ」ってエラーを吐いている。
FreeBSDでは/dev/acd0cがcdromデバイスなので、gtcdの設定で直してやるがやっぱり音が出ない。
うーん、なんでだろう???
ほかのプレーヤーでも同じだろうか、と思いxcdplayerをportsからインストールして、下のようにデバイスを
指定してから起動するとちゃんと音が出る。
# xcdplayer -device /dev/acd0c
さてさて、どうしたものか。また、gnomeapletsというアプレット集の中にもコンパクトなCD Playerがある。
こっちの方はデバイスの設定ができないらしい。そこで、「どうせ/dev/cdromを使っているだろう」ということで、
/dev/cdromを/dev/acd0cのシンボリックリンクにすることにした。
# ln -s /dev/acd0c /dev/cdrom
リンクを張った途端、CDプレーヤーアプレットの経過時間を示す所に「- -:- -」と表示されてCDが聴けるようになった。
外観はgtcdを気に入っていたんだけど、音が出せなくちゃ意味が無い。
かといってxcdplayerは何か安っぽいし。とりあえずCDプレーヤーアプレットにすることにした。gtcdの件はまた後日だな。。。
とりあえずはCDも聴けるようになったので、こんどは動画だろう。PC UNIXで動画といえば、最近はxineがお奨めである。
ports collectionに入っているかなと思って検索してみるとport/graphics以下のディレクトリに入っているようだ。
# whereis xine
xine: /usr/ports/graphics/xine
インストールしてコマンドで立ち上げて見ると、「plug-inが無いねー」って言われるがきちんと起動する。
たぶんxine用に何か良いプラグインがあるのだろうと探して見ると、xine_d4d_pluginとういのがある。
すかさずインストールすると、インストール直後に次のようにシンボリックリンクを張るようにメッセージが出た。
# ln -s /dev/acd0c /dev/cdrom
# ln -s /dev/racd0c /dev/rdvd
たぶんVCDとDVDのデバイスの設定だろう。 cdromの方はCDを聴く際にすでにリンク済みなので、DVDの方のリンクを張っておいた。DVDは持ってないので試せなかったが、 MPEGとVCDは見る事ができた。 でも、スライドバーで早送りすると確実に落ちる。うーん、、、なぞだ。Linuxでもxineを使っているが、 今回インストールしたバージョン0.9.7って、あまり調子が良くなかったような。 そう言えばxineはバージョン0.5くらいからskinを採り入れたりしてかなり変わったようなんだけど、 それ以降調子悪いかも知れない。。これも様子見かな。
戯れ言3
ようやくカーネルの調整が終わり、サウンドもなるようになったが、このままではすごーく味気ない コンソール画面だけである。ここからはある意味でFreeBSD固有の設定ではない部分が多いけど、mousedなどのように FreeBSD固有の機能がXの設定に関係する部分もあるので忘れないように書いておくことにした。
日常生活で使うようなものは一通りインストール終了したので、次はインターネット接続である。
FreeBSDでも設定する内容はLinuxと一緒である。
ただし、2001年12月14日にYahoo!BBのADSLが開通したので、
Linuxでさんざん苦しんだpppの設定は不要である。
LANカード、ゲートウェイ、nameサーバーさえ設定してしまえばインターネットにつながるはずである。
IPアドレスは僕のADSLのページにある通り分かっているので、
問題はどのファイルで設定するかである。そこで、ごにょごぎにょインターネット(56k modemを使用)で調べてみると、
/etc/rc.confに記入しておけばいいらしい。LANカードの設定もこのファイルなので下のように設定した。
defaultrouter="192.168.XXX.YYY"
hostname="xxxxxxx.localdomain"
ifconfig_dc0="inet 192.168.0.ZZZ netmask 255.255.255.0"
1行目はゲートウェイの設定、2行目はマシンの名前、3行目はLANカードのIPアドレスとネットマスクである。
LANカードとゲートウェイの設定がすんだので、次はnameserverの設定である。これはLinuxと同じように/etc/resolf.confで行う。
インストール時のLANカードの設定時にnameseverを設定した場合にはこのファイルが作られるが、
それを省略するとファイルが空なだけでなくファイルすら無い。そこで、viで次のようなファイルを作成した。
domain localdomain nameserver 43.XXX.YYY.ZZZ nameserver 218.xxx.yyy.zzz
また、ゲートウェイになっているブロードバンドルータ(BRL-04F)ともう一台のPCのホスト名を決めておく必要がある。 これもLinuxと一緒で、/etc/hostsファイルに下のように記述しておけばよい。
192.168.0.zzz xxxxxxx.localdomain main-ws 192.168.0.xxx second.localdomain second 192.168.0.yyy BRL-04F BRL-04F
さて、この後はネットワークの設定を再起動すればいいのだが、やり方がわからない(笑。 そこでシステム自体を再起動したところ、無事インターネットへ接続することができた。 (でも、まだブラウザをインストールしてないので、pingコマンドをネームサーバーに打って確認しただけね)
ようやくインターネットに接続できたが、肝心のブラウザをインストールしていなかった。 Linuxで使っていてなかなか良い感じの「galeon」をインストールすることにした。FreeBSD 4.4-RELEASEでは galeon-0.12がports collectionに入っている。早速それをインストール。
# whereis galeon
galeon: /usr/ports/www/galeon
# cd /usr/ports/www/galeon
# make install
これでOK!なのだが、やたらコンパイルに時間がかかっているようだ。
そう、galeonはmozillaに依存しているのでmozillaもインストールしているのだ。意外とportsは賢い。
しかし、このmozillaのコンパイルがやたら長い。Pentium!!! 933MHzで2時間近くかかる。
でも待ったかいがあって無事にgaleonのインストール完了。ついでにmozilla-0.9.3も。
さて、galeonを起動すると、、、エラーを報告してまともに起動しない。
エラーの内容は、「schemaが無いよん。gconfの設定を見直してみてね」というものであった。
早速、googleでgconf、galeonで検索してみると、Debian-userのメーリングリストから次のことが分かった。
galeonインストール後に次を実行。
# export GCONF_CONFIG_SOURCE=xml::/usr/X11R6/etc/gconf/gconf.xml.defaults
# gconftool --makefile-install-rule /usr/X11R6/etc/gconf/schemas/galeon.schemas
実際にこれを実行して確かに起動するようになったが偉く不安定である。
Linkをクリックすると突然Xが終了し、wdmのログイン画面になってしまう。
しかも右下のxconsoleにもエラー出ているようだ。結局、泣く泣くシステム全体の再インストール
となった。くっそー、何も考えずに変なのを実行したのが間違いだった。
さて、気を取り直してこれまでどおりシステムを構築しgaleonをインストール。 そして起動してもやっぱり起動しない。こんな時はやっぱり王道を行くべきであろう。 galeonのFAQ を見てみることにした。するとどうやらgaleonが利用するディレクトリのパーミッション設定が正しくないようだ。 そのページによると、 次のようにしてgaleonが利用するディレクトリのパーミッション設定を変えると良いというものであった。
# cd /usr/X11R6/etc/gconf
# chmod -R 755 gconf.xml.defaults
これでようやくgaleonを無事起動することができた。
一通りの環境が整ったので、Debian同様バージョンアップをしてみようという色気が出て来た。 FreeBSDにはapt-getのようなコマンドが無い代わり、CVSupというバージョン管理ツールがある。 正確にはCVSupというバージョン管理方法があり、FreeBSDでもそれを採り入れているということである。 この使い方をFreeBSDのハンドブックを見て ある程度理解できたので、早速CVSupをインストールしてみた。とは言っても、CVSupは設定が面倒そうなのでCVSupit を入れることにした。インストール途中で、どのバージョンをトレースするか、どのFTPサーバーからゲットするか、 どのディレクトリにソースを展開するかを尋ねられる。バージョンはCurrentを、FTPサーバーはjpを、インストール ディレクトリは/usrを選択した。その直後、CVSupを実行するかを尋ねられたので早速CVSupを実行した。 ちなみにコマンドラインから実行するには下のコマンドである。
# cvsup -g -L 2 /etc/cvsupfile 初めてのCVSupは時間がかかるが、1時間後くらいに終った。
その後、もう一つのPCにハンドブック の
「make worldの利用」を表示し
ながらアップデートを行う。その手順に従ってmake buildworld、make buildkernelも無事終了し、make installworldを
実行したがこれに失敗した。errorメッセージは、「/boot/〜.hintsがない」というものである(〜は失念してしまった)。
そこで、/usr/sys/UPDATINGを読んだが、、、うーん、よくわからん(^^;;
ちょっと僕には荷が重かったようである。CVSupの設定ファイル/etc/cvsupfileでバージョンを設定するtagを4.4-RELEASEに設定した。
*default tag=RELENG_4_4
ちなみに5.0-Currentは tag=. となっている
/etc/cvsupfileを設定し直した後、もう一度cvsupを実行して再びmake worldでシステムを4.4-RELEASEに戻した。 ふぅ。でもね、この後、他のパッケージをインストールしようとしたら、「libc.so.5が見つからない」と言って、 どのパッケージもmakeできなくなってしまった。おそらくCVSupで4.4-RELEASEに戻した時に何かを失敗したのかも知れない。 うーーーん、無知だとこういう時に全く手も足もでなくなる。そして、またもや再インストール(ToT)(ToT)(ToT)
またまた再インストールを終えて、CVSupに再挑戦。今度はいきなり未知の5.0-Currentへ行くのではなく、
4.Xの本流(=4.5-PRERELEASE)にバージョンアップすることにした。/etc/cvsupfileのタグは下の通り。
*default tag=RELENG_4
さすがに大きなバージョンアップではないので/usr/srcへ移動後、make buildworld、make buildkernel、 make installkernelを実行してなんなく成功。再起動してカーネルの起動待ち中にEscキーをおして、 $ boot -sでシングルユーザーモードで起動し、各スライスをマウント後にやはり/usr/srcディレクトリでmake installwolrdを 実行してこれも無事に終った。さらにmergemasterと打って、/etc、/devなどの設定ファイルを更新。 とはいってもほとんどいじらないでそのままを選んだんだけどね。 その後再起動してようやくFreeBSD-4.5-PRERELEASEへ移行完了!!
先に書いたxine、galeonはどうもバージョンが新しすぎてまともに動かないようだ。 そこでportsだけを4.4-RELEASEへ戻してxine-.4.3、galeon-0.12(mozilla-0.9.3)をインストール。 portsを4.4-RELEASEに戻すには、次のようにした。
# rm -rf /usr/ports
# /stand/sysinstall
上記からConfigure → Optionsで「Release Name」が「4.5-PRERELEASE」になっているのを
「4.4-RELEASE」に書き直してから、DIstribution → CD/DVDのメディア → portsを選んでやった。
もちろん、実際は4.5-PRERELEASEなので、xine、galeonのインストールが終ったら、速攻でcvsupを実行したのは言うまでもない。
1月下旬にFreeBSD 4.5ーRELEASEが出た。4.4からcvsupでアップデートしていたのでほとんど変化がないのだが、
OpenBSDを入れるためにパーティションをいじっているうちにFreeBSDが起動しなくなってしまった。
仕方無いand良い機会なので再インストールすることになった。なぜ良い機会かというと、make.confでi686を指定したもの
とそうでないものが混在していたり、バージョンの変化が大きすぎるのかgaleonのmakeが通らないからである。
FreeBSDのウェブページからISOイメージ(installのみ)を取ってきて、早速インストールした。
もちろん、以前のパーティションが残っているので、/homeのみはフォーマットしないようにした。
これはスライスを切る際に、Cでnewfsをクリエートせず、単に既存のスライスにMでマウントポイント/homeを指定すればよい。
newfsがNになっていればOKである。
パッケージはx-userを選んで労せずインストール終了した。その後、これまでの経験を
もりこんでカーネルを再構築して無事復帰完了。
参考:カーネルコンフィグレーションファイル
4.5-RELEASE後はほとんど放置していたが、どうやら4.6-RC1が出たようなので アップグレードしてみることにした。しかし、cvsupを行うと数時間掛かることが予想されたため、 ISOイメージ をダウンロード→CD-R化→CDからアップグレードすることにした。
CDからブートし、インストーラで”アップデート”を選択し、各スライスのマウント ポイントの指定をした後、無事にアップデートは終わった。だが、アップデートしたのはカーネルのみ で、gnome関連の面倒なパッケージは放置されている。かといって、cvsup後にportupgradeをすると、 current関係のパッケージが入ってコンパイルに失敗するのは目に見えている。 結局、4.5-RELEASEの再インストールの時のように、 /homeだけnewfsをNにして、再インストールすることにした。
全く、カーネルのアップデートはいいとして、アプリケーションのアップ グレードは何とかならんかなぁ。。。
依存関係の面倒なgnomeをやめて、 Mandrake Linuxで使ったXFce をportsからインストールした。XFceをインストールすると、デフォルトのデスクトップ環境を XFceにするxfce_setupというコマンドあるのでそれを実行した。(但し、このコマンドで は、元々ある.xsessionファイルのバックアップを取った後に書き換えられので注意)
さて、wdmを起動するスクリプトを作成してから再起動し、 立ち上がったwdmでウィンドウマネージャーを「No Change」にしてログインするとXFceが起動する。 しかし、メニューはまだ英語のままである。XFceはgtkを使っているため、 前にも書いたようなlocaleの設定することによって日本語化できるようである。
具体的には、.xsessionに以下の記述を加えた※。
#localeを設定
export LANG=ja_JP.eucJP
export LANGUAGE=ja
PATH=$HOME/bin:$PATH
#日本語入力の設定
XIM=kinput2
XIM2=-canna
#kinputの起動
if type $XIM &> /dev/null
then
$XIM $XIM2 &
fi
XMODIFIERS=@im=$XIM
export XMODIFIERS
注意:4.5-stableの途中から、ja_JP.EUCではなくja_JP.eucJPになっている。
さて、これでアイコンやメニューは日本語になったのだが、左クリックで出る メニューやタイトルバーが文字化けしている。ウェブを調べてみると、 @てらぴーさんの ウェブページでヒントを見つけた。それによると、XFceの設定メニューで、タイトル、 アイコン、メニューのフォントを次のものにしないといけないらしい。
上記の通り設定すると、確かに文字化けは解消されるが、boldはいただけない。 そこでダメ元でbold→midiumにしてみたところboldが無事解消された。
※これでダメだったこともある(FreeBSD 4.5-RELEASE)。その際は、~/.profileに 次の一行を追加したら無事日本語化された。
LANG=ja_JP.EUC export LANG
こっちに書いたように、 FreeBSDでもUSBキーボード&マウスが使えるかを試してみた。
まず、ウェブで調べてみると、FreeBSDのFAQ 「 ハードウェアコンパチビリティ」にちゃんと USBキーボード、 USBマウス の設定方法に関して書かれている。これによると、カーネルコンフィグレーションファイルで次の ところを有効にすれば良いようだ(但し、FreeBSD3.2以降の記述方法である)。
|
device uhci device usb device ukbd options KBD_INSTALL_CDEV |
|
device uhci device ohci device usb device ums |
コンフィグレーションファイルで必要とするデバイスノードを作る
また、/etc/rc.confに次の行を追加する。
|
usbd_enable="YES" usbd_flags="" |
|
moused_enable="YES" moused_type="auto" moused_port="/dev/ums0" moused_flags="" usbd_enable=YES" usbd_flags="" |
さらに、USBキーボードをコンソールでも使えるように次の一行を/etc/rc.i386 に記述する。
XでUSBマウスが使えるように次のように/etc/X11/XF86Configのポインタセクションを記述する。
|
Device "/dev/sysmouse" Protoco "Auto" |
上記の設定を終えて、新しいカーネルで起動したがキーボードもマウスも 使えない(ToT)。dmesgを見てみると、ちゃんとkbd1、ums0にUSBキーボード&マウスが 接続されているようだ。そして、よーーーく見ると、なぜか無いはずのPS/2キーボードが認識 されている。結論としては、以下のことを試してみたが、マウスがどうやっても使えなかった。
はぁ、ハズレの機器を掴んだんだろうか。。。
その後、PS/2キーボード+USBマウスの組み合わせで試してみたが、
やはり駄目である。キーボードのHUBが駄目なのかと思っていたが、単にマウスが
BSDに対応していないようだ。
ちなみに、USBデバイスのメッセージは下のようになっている。
ums0: MOUSE SYSTEM U+P mouse, rev 1.00/0.00, addr 4, iclass 3/1
ums0: 5 buttons and Z dir.
そこで、5ボタンではなく3ボタンのマウスを買ってくることにした。 またSanwa Supplyでもいいのだが、 ウェブで調べて見るとFreeBSDで Elecomのイメージセンサーマウスで 動作したという報告を数個見つけた。そこで、USB接続でイメージセンサータイプのマウスである M-N1URSV を買ってきて繋いだところ、一発で認識してくれた。うーん、Sanwa Supplyのマウスは 5ボタンってのが悪かったのかも知れない。。。
上記はオリジナルのカーネルコンフィグレーションファイルを使ったカーネルで、 問題なくUSBキーボード&マウスとも使えるようになった。このカーネルコンフィグレーションファイル では、PS/2キーボード&マウスを使用しないように、以下の部分がコメントアウトされている。
| # atkbdc0 controls both the keyboard and thePS/2 mouse |
| # device atkbdc0 at isa? port IO_KBD |
| # device atkbd0 atatkbdc? irq 1 flags 0x1 |
| # device psm0 at atkbdc? irq 12 |
しかし、GENERICカーネルを使うと相変わらず有りもしないPS/2キーボードを
認識するため、make world後に再起動するとキーボードが使えなくなってしまう。
その辺を調べてみると、FreeBSD-tech-jpの
3147
に、自動的に切り替えてくれるスクリプトを書いた方がいるのを見つけた。
その記述通り、usbd.conf、usb_kbdを書いたところ、GENERICでもPS/2関係がコメントアウトしてる
オリジナルのカーネルでも無事USBキーボードも使えるようになった。
|
# USB keyboard device "USB keyboard" devname "ukbd[0-9]+" attach "/etc/usb_kbd ${DEVNAME} start" detach "/etc/usb_kbd ${DEVNAME} stop" |
usb_kbdは長いのでtxtとしリンク:usb_kbd
中古で買ったNikon coolpix 775 がFreeBSDでUSBストレージとして使えるか試してみた。google で検索してみると、USBストレージはSCSIディスクとして使えるらしい。但し、カーネルロード時に coolpix775を接続して電源を入れた場合である。実際やってみると、USBストレージとして /dev/da1s1※に接続された。CompactFlashはFAT32なので、下のようにマウントできた。
# mount -t msdos /dev/da1s1 /mnt/nikon
※僕のPCにはSCSIのMOドライブがあり、それが/dev/da0s1となっている。
そのためUSBデバイスはda1となる。
次にhotplugをやってみる。FreeBSDを起動してからcoolpix775をUSBで繋いで 電源をオンにすると、次のメッセージが出力される。
umass0: BBB reset failed, TIMEOUT
umass0: BBB bulk-in clear stall failed, IOERROR
umass0: BBB bulk-out clear stall failed, IOERROR
上記の現象は、ここ で報告されている現象と同じである。しかも解決策は無し。。。CD-RWなどで同じ症状の人が ソースをいじってはまっていたので、普通には動かせそうもない。
さらにgoogleで"Nikon"で 検索した結果、KAWAI Kenさんのページで coolpix880のドライバ を見つけた。 そのドライバのページに ある手順で作業を行った。
# cd /usr/src/sys
# zcat somewhere/sys-udsc.diff.gz | patch -p1 (小文字のLではなく数字の一)
/dev/src/sys/dev/usb/usbdevs
NIKON E880をNIKON E775に変更
/dev/src/sys/dev/usb/udsc.c
USB_PRODUCT_NIKON_E880をUSB_PRODUCT_NIKON_E775
# cd /usr/src/sys/dev/usb
# make -f Makefile.usbdevs
カーネルのコンフィグファイルに device udsc を 加えて、カーネルを再構築する。
# cd /usr/src/sys/modules/udsc
# make depend
# make
# make install
# kldload udsc
# mknod /dev/udsc0 c 161 0 root:wheel
# chmod 666 /dev/udsc0
さて、上記のようにしてudsc.oは無事ロードできたが、その後coolpix775を 繋いで電源を入れても/dev/da1s1には接続されない。それどころか、udsc.oのためにフリーズ しているようだ。調べたところに依ると、FreeBSD Q&A701 に書かれているように、cam/scsi/scsi_da.cを修正する必要がある。(続く)