blog:2006:2006-03-30

システムの再構築

カーネルを再構築する必要があったので、ついでにシステムも再構築(というか最新版に)してみた。その備忘録。

本作業をするにあたって、AirKnights(by みゅ。さん)の記事を、かなり参考にさせて頂きました(他にもFreeBSD関連の役立つ記事を沢山公開されてます。興味のある方は、ゴーゴゴー!)。

(2016-05-11)

本記事の内容は現在のFreeBSDのシステム再構築には適合しない可能性があります。現在の情報については、FreeBSDハンドブックの内容をご参照下さい。

cvsupを用いて行う。

/usr/share/examples/cvsup/stable-supfile をコピーし、自分の環境に合せて書き換えて、cvsupをする。

$ cp /usr/share/examples/cvsup/stable-supfile /etc/release-supfile
$ cd /etc
$ su
# chmod 644 release-supfile
# emacs release-supfile
*default host=CHANGE_THIS.FreeBSD.org → cvsup2.jp
*default release=cvs tag=RELENG_6 → RELENG_6_0
 
# cvsup -g /etc/release-supfile

変更箇所は、前者がソースの更新に使うサーバ、後者が更新するシステムのバージョンを表す。今回は6.0-RELEASEを更新するので「RELENG_6_0」となる。「RELENG_6」のままだと、6.x-RELEASEの更新となってしまうので要注意。最初、この設定で更新したら、6.1-PRERELEASEにアップデートされてしまい、orzとなった。

独自設定のカーネルにしたい場合は、コンフィグファイルの雛形 /usr/src/sys/i386/conf/GENERIC をコピーし、自分の環境に合せて書き換える。カスタマイズしたコンフィグファイル名は、マシン名を大文字にしたものにするのが慣例っぽい。俺は 慣例+年月日 にした。無論、デフォルトのカーネル(GENERIC)でよければ、この作業は必要ない。

# cd /usr/src/sys/i386/conf
# cp GENERIC YGGDRASIL20060330
# emacs
最低限 ident GENERIC を ident コンフィグファイル名 に書き換える。

オプションの依存関係(コンフィグファイルのコメントに「require hoge」と書いてある)には注意しよう。さもないと、コンパイルで失敗する。

尚、VIA C3(Samule 2)の場合「cpu I686_CPU」にしないと、CPU class not configured というカーネルパニックが発生するので要注意!!(ただ、C3はCMOVをサポートしていないので、厳密にはi586クラス。portsなどをi686指定でコンパイルすると、未定義命令が入って落ちることがあるとか。カーネルのコンパイルについては、ログを見るとI686_CPUと設定しても -march=pentium となってるので問題にはならないのかな。詳しい事はわかりません)。

いくつかスレッドを立ててやると、早く終わるらしい(4スレッドが一番効率的だとか)。

# cd /usr/src
# make -j4 buildworld

コンパイル時間はマシン性能に左右される。参考までに VIA C3(800MHz) + 256MB では6時間程かかった。

カスタマイズしたカーネルを作る場合、KERNCONFでコンフィグファイル名を設定する。特に設定がなければ、GENERICのカーネルが作られる。

# make KERNCONF=YGGDRASIL20060330 buildkernel

コンパイル時間はマシン性能に左右される。参考までに VIA C3(800MHz) + 256MB では1時間程かかった。

コンパイルが無事に終わったら、新しいカーネルをインストールする。カスタマイズしたカーネルの場合は、上で指定したKERNCONFを再度指定しなければならない。

初めてカーネルを再インストールする際に、GENERICのカーネルのバックアップを取っておくと良い。

# cp -Rp /boot/kernel /boot/kernel.GENERIC (最初の1度だけ)
# make KERNCONF=YGGDRASIL20060330 installkernel

シングルユーザーモードで起動し、作業を行う。

まず、起動項目選択画面(1.Boot FreeBSD with ACPI とか、そんなメニューがある画面)で、プロンプトへ抜けるメニュー(6.0-RELEASEでは6番)を選択する。そして、以下のコマンドでシングルユーザーモードでOSを起動する。

OK boot -s

カーネルがうまく出来ていないと、この段階でこける。その時は上のコマンドに代わって、以下のコマンドでGENERICなカーネルを起動し、対策を図る。

OK boot kernel.GENERIC

次に、シェルのパスが聞かれるので入力。その後、パーティションをマウントし、システムをインストールする。

Enter full pathname of shell or RETURN for [/bin/sh] : /bin/sh
# sbin/mount -a
# su
# cd /usr/src
# make installworld



  • blog/2006/2006-03-30.txt
  • 最終更新: 2016-05-11 10:27
  • by Decomo