内容へ移動
fl8 Wiki
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
現在位置:
Dokuwiki.fl8.jp
»
02_freebsd
»
99_その他
»
FreeBSD - アップグレード
トレース:
02_freebsd:99_その他:アップグレード
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== FreeBSD - アップグレード ====== まずは、CVSupでソースを最新にする必要があります。\\ 今回はFreeBSD 5.4 ⇒ FreeBSD 6.0 へ ===== CVSupをインストール ===== ※Portsを最新版にするは [[02_freebsd:01_net:cvsup|こちら]] <code> # cd /usr/ports/net/cvsup-without-gui # make clean ===> Cleaning for libiconv-1.9.2_1 ===> Cleaning for gettext-0.14.5 ===> Cleaning for gmake-3.80_2 ===> Cleaning for libtool-1.5.20 ===> Cleaning for ezm3-1.2 ===> Cleaning for cvsup-without-gui-16.1h_2 # make install </code> ===== /etc/stable-supfileを用意 ===== <code> # cp /usr/share/examples/cvsup/stable-supfile /etc/stable-supfile # chmod 644 /etc/stable-supfile </code> ===== /etc/stable-supfileを修正 ===== <code> # vi /etc/stable-supfile --------------------------------- *default host=CHANGE_THIS.FreeBSD.org ↓ *default host=cvsup.jp.FreeBSD.org *default release=cvs tag=RELENG_5 ↓ *default release=cvs tag=RELENG_6 </code> RELENG_6というのは、6-STABLE(FreeBSD 6.xの開発版)を指しています。\\ 5.2.1-RELEASEを更新するのが目的ならば、RELEASE版のFreeBSDのツリーは例えば5.1-RELEASEであれば「RELENG_5_1」、5.2-RELEASEや5.2.1-RELEASEであれば「RELENG_5_2」と言った感じに変更します。 ===== 実行してみる(ソースの同期) ===== ▼やり方はPortsの場合とほぼ同じです。 <code> # cvsup -g -L 2 /etc/stable-supfile --------------------------------- . . . . . . </code> ===== 自動設定 ===== <code> # crontab -e --------------------------------- 00 6 * * * root /usr/local/bin/cvsup -g -L 2 /etc/stable-supfile </code> ===== ソースのコンパイル(make buildworld) ===== ソースの同期が完了したら、同期したソースをコンパイルします。\\ ソースをコンパイルするには、make buildworldというコマンドを使います。\\ これを行うと、kernelを除くFreeBSDのベースシステム全てがコンパイルされます。\\ ※すっごく時間がかかります。(うちのCeleron 600MzのPCだと6時間くらい) <code> # cd /usr/src # make buildworld </code> このようにして、放置しておくとbuildworld.logにログを残してくれます。 <code> # /usr/bin/nohup time make buildworld >buildworld.log & </code> ===== kernelのコンパイル(make buildkernel) ===== ソースがコンパイルできたら、次はkernelをコンパイルします。\\ kernelをコンパイルするには、make buildkernelというコマンドを使います。\\ make buildworldと同様に/usr/srcで <code> # make buildkernel KERNCONF=MYKERNEL # make installkernel KERNCONF=MYKERNEL # reboot </code> また、KERNCONF=MYKERNELを/etc/make.confに記述しておくと、make buildkernelとやれば自動的に指定したコンフィグファイルを参照してkernelを作成してくれます。 ===== シングルユーザモードで起動 ===== デーモンくんの表示されている個所で、シングルユーザモードを選択肢する。 <code> # fsck -p (ファイルシステムのチェック) # mount -u / (/を読み書き可能にして再マウント) # mount -a -t ufs (/etc/fstabに指定されているその他のUFSを全てマウント) # swapon -a (スワップを有効にする) </code> ===== コンパイル済みのシステムのインストール(make installworld) ===== <code> # cd /usr/src # make installworld </code> ===== /etcファイルの更新 ===== mergemasterの主な使い方は、よく文章を読めば理解できるとは思うのですが、\\ まずmergemasterは仮のルートを作って、そこへ新しい/etcを置きます。\\ そこから、/etcへコピーするか、/etcにあるものを保持するかを選択できるんですが、主な操作方法は3つです。 <code> 新しいファイルに更新する場合は"i" /etc にあるものをそのまま使う時は"d" マージする時は"m" </code> ==== /etcのバックアップを取っておく ==== <code> # cd / # cp -Rp etc etc.OLD </code> ==== mergemaster ==== mergemaster -siva 後、mergemaster -sivr すると楽に作業が行えます。\\ siva により、現在環境にないファイルをコピーしますので、変更のあるファイルのみを -sivr で適用することになりますので、\\ 単に mergemaster する場合よりも格段に作業量が減ります。 <code> # mergemaster -siva # mergemaster -sivr </code> ===== 古いライブラリの削除 ===== <color red>※ただし、古いライブラリを削除した場合、それに依存していたports等が起動できなくなる場合もあるかも知れない。</color> <code> # make delete-old # make delete-old-libs </code> ==== 古いライブラリを削除して、portsが起動できなくなった場合 ==== -/var/log/mail.logにこんなエラーが出てました。 <code> deferral: /libexec/ld-elf.so.1:_Shared_object_"libz.so.2"_not_found,_required_by_"vdelivermail"/ delivery 4: deferral: /libexec/ld-elf.so.1:_Shared_object_"libcrypt.so.2"_not_found,_required_by_"vdelivermail"/ </code> -対処:シンボリックリンクを貼ってやると、とりあえず動くみたいです。 <code> # ln -s /lib/libz.so.3 /lib/libz.so.2 # ln -s /lib/libcrypt.so.3 /lib/libcrypt.so.2 </code> ==== ソースのバージョン確認 ==== /usr/src/sys/conf/newvers.sh 中に記載。間違っていると時間の大幅なロスになるため、必ず確認する。
02_freebsd/99_その他/アップグレード.txt
· 最終更新: 2012/12/21 08:11 by
matsui
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ