ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

初心者がFreeBSDをいじる会コミュのカーネルの再構成についての覚え書き

  • mixiチェック
  • このエントリーをはてなブックマークに追加
カーネルを再構成すると、起動時間が早くなる。
というのでさっそくチャレンジしました。
これはその覚え書きです。

/usr/src/sys にある自分のマシンのアーキテクチャを示すディレクトリ
にある/conf で作業するのだが…アーキテクチャって?

…基本設計や設計思想のことだとある。

i386, alpha, pc98 の3種類あるらしいが、自分のマシンが
どれだか調べることから始めなきゃいけない。

で、システム情報を示す uname コマンドを打ってみる。

# uname
FreeBSD

…なんてそっけない…。

よく本を見るとオプションで -a をつけるともっと情報が表示されるらしい。

# uname -a
FreeBSD Salt.home 5.4-RELEASE-p6 FreeBSD 5.4-RELEASE-p6 #0:
Sat Oct 21 19:37:54 JST 2006
root@freebsd.ongs.co.jp:/usr/obj/usr/src/sys/GENERIC i386

とでて、i386 と記述あるからそれがマシンのアーキテクチャなんだろう。

*後で分かったが、login: プロンプトの上にFreeBSD/i386 と 出ることに気づいた。
 普段はWindows 上から Tera Term というソフトで遠隔ログ インしており、気づかなかったのだ。 

ということで、/usr/src/sys/i386/conf に移動。

そこの GENERIC ファイルをコピーして新しい名前をつける。
ここでは CUSTOM_KERNEL とつけた。

# cp GENERIC CUSTOM_KERNEL

この新しく作った CUSTOM_KERNEL をvi などのエディタで編集する。
まぁ簡単に言えば、
並んだ項目の行頭に"#"をつけて(コメントアウト)その項目を無効に
したり、反対にとって有効にしたり。

とりあえず必要ないと分かるところは全部"#"をつける。

一行づつ手動で"#"をつけるのは面倒なので、正規表現を使ってみる。
:.,+10s/^/#/
でカーソル行から下11行(カーソル行含め11行)の頭に"#"がつくはず…。
うん成功。これはなんだか嬉しいな。

全部終わったら、カーネルコードを生成するため、

# config CUSTOM_KERNEL

を実行。
ここでエラーがでたら、おかしい行番号も一緒に表示されるので、
またエディタで確認・編集。

成功すれば、
kernel build dilectory is ../compile/CUSTOM_KERNEL
Don't forget to do a "make depend"
と表示される。

指示通りそのディレクトリ /usr/src/sys/i386/compile/CUSTOM_KERNEL
に移動して、以下実行

# make depend
# make
# make install

だが、# make の途中でエラーになって中断してしまう。

"make" できないときは config がとらえられなかったファイル記述の間違い
があることが多いらしい。。
もういちど編集したコンフィギュレーション・ファイルの見直し……
するが、どこがおかしいのかさっぱりわからん。
必要な項目をコメントアウトしているからか?

しかし、make depend 〜 make の過程だけで、実行が終わるまで30分はかかる。。。

いちいち1つづつ"#"をつけて、その度に"make"していたんでは
とてもやれない。

ということで、編集を50行づつくらい進めて確認していく。
が、52行目の
options SYSVSHM #SYSV-style shared memory
をコメントアウトするくらいまでは上手く make できたのだが、
それ以降の SCSI デバイスの項目以降をコメントアウトすると
エラーがでる。
う〜ん。SCSI機器はつないでないんじゃが、、。

RAID とかはよく分からんので飛ばす。

50行以降どうもうまくいかず。
3時間くらい編集とmakeのいったりきたり。。。

もうしかたないんで終わりから攻めようということで、
260行あたりの USB デバイスの辺から最後までいらないとこをコメントアウトしてみる。

で、
# make depend
# make

うまくいった。
とりあえず先に進めることに。

# make install

で、再起動。
ブート画面で CUSTOM_KERNEL の文字が見られ、編集したカーネルが
使われていることが分かる。

で、起動に要する時間は…

カーネルの再構成をする前→2分18秒
再構成後→1分36秒

おお、中途半端なカーネル再構成にもかかわらず、
約40秒も短縮。

とりあえずは成功。
結局自分のマシンのハード(デバイス)についての知識が
ないといけないということを学びました。


コメント(4)

Kernelを再構成すると余分な物が入らなくなるので立ち上がりは早くなりますね。本当は必ずやっておいた方が良いんですが、面倒なので皆さんやらないようです。
一度、KernelをMakeしておくと、次からは変更部分しか対象にならないのでMakeも早くなりますよ。
正式リリース版は、i386ですね。
/usr/src/sys/i386 辺りに、LINTというファイルがあります。ここに、Device別にKernelの編集方法が書いてあるので参考にするといいかもしれません。只、英語です。
音源とかを使うときには必要になると思います。
ありがとうございます。

LINTというファイルは見当たらなかったんですが、
/usr/src/sys/i386/conf に NOTES というファイルがあり、

# NOTES -- Lines that can be cut/pasted into kernel and hints configs.
#
# This file contains machine dependent kernel configuration notes. For
# machine independent notes, look in /sys/conf/NOTES.

という記述が冒頭にあるので、これがそれに当たるのかも
と思いました。
アーキテクチャに依存しないものは/usr/src/sys/conf/NOTES、i386プラットフォームに特有のものは/usr/src/sys/i386/conf/NOTESにあるみたいですね。

読み解くのはかなり根気がいりそうですね…。
>LINTというファイルは見当たらなかったんですが、

うる覚えですが、/usr/src/sys/i386/conf以下で"make LINT"って魔法を唱えればLINTが作成されたような...
Makefileがあったはずなので眺めてみてください。
make LINT で確かにLINTが作成されました。
Makefile の中にそれらしい記述ありますね。。
ありがとうです。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

初心者がFreeBSDをいじる会 更新情報

初心者がFreeBSDをいじる会のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング