====== システムの再構築 ====== カーネルを再構築する必要があったので、ついでにシステムも再構築(というか最新版に)してみた。その備忘録。 本作業をするにあたって、[[http://iris.homeunix.net/yayoi/|AirKnights]](by みゅ。さん)の記事を、かなり参考にさせて頂きました(他にもFreeBSD関連の役立つ記事を沢山公開されてます。興味のある方は、ゴーゴゴー!)。 (2016-05-11) 本記事の内容は現在のFreeBSDのシステム再構築には適合しない可能性があります。現在の情報については、[[https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/updating-upgrading.html|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