unix/Step by step/システム再構築

2018-04-16 (月) 15:53:00 (1287d)

up



システム再構築のタイミング

  • 最初にソースをダウンロードし,アップデートの準備を行った時
  • セキュリティバージョンアップを行った場合
    • 5.0 から 5.0.1
  • マイナーバージョンアップを行った場合
    • 5.0 から 5.1
  • メジャーバージョンアップを行った場合
    • 5.0 から 6.0

ソースの取得

環境設定

カーネルソースの取得

  • cd /usr (sourceは/usr以下に置いておく)
  • cvs checkout -r netbsd-5 -P src
    • stable版の入手(推奨)
      • checkoutの時間を計測するためには以下のようにする
      • time cvs checkout -r netbsd-5 -P src
      • 各PCのベンチマークとして使用したりする
  • (cvs checkout -A -P src)
    • current版を入手する場合
  • (cvs checkout -r <BRANCH> -P src)
    • RELEASE版の入手
    • RELEASEの例:4.0
      • <BRANCH>:netbsd-4-0-RELEASE
    • RELEASEの例:3.0.2
      • <BRANCH>:netbsd-3-0-2-RELEASE

Xのソースの取得

  • cd /usr(sourceは/usr以下に置いておく)
  • cvs checkout -r netbsd-5 -P xsrc
    • stable版の入手(推奨)
      • checkoutの時間を計測するためには以下のようにする
      • time cvs checkout -r netbsd-5 -P xsrc
      • 各PCのベンチマークとして使用したりする
  • (cvs checkout -A -P xsrc)
    • current版を入手する場合
  • (cvs checkout -r <BRANCH> -P xsrc)
    • RELEASE版の入手
    • RELEASEの例:4.0
      • <BRANCH>:netbsd-4-0-RELEASE
    • RELEASEの例:3.0.2
      • <BRANCH>:netbsd-3-0-2-RELEASE

ソースのアップデート

カーネルソースのアップデート

  • cd /usr/src
  • cvs update -Pd

Xのアップデート

  • cd /usr/xsrc
  • cvs update -Pd

システムの再構築

  • http://www.netbsd.org/docs/updating.html
  • 以下は旧情報か?
  • mv /etc/mk.conf /etc/mk.conf.pkgsrc
    • pkgsrcでmk.confを使用している場合,名前を変更(ここでもmk.confを使用しようとするから)
  • cd /usr/src
  • ./build.sh -O ../obj -T ../tools -U -u distribution
    • ユーザランドの構築
      • ./build.sh distributionの時間を計測するためには以下のようにする
      • time ./build.sh -O ../obj -T ../tools -U -u distribution
      • 各PCのベンチマークとして使用したりする
  • ./build.sh -O ../obj -T ../tools -U -u kernel=GENERIC
    • カーネルの構築
      • ./build.sh kernelの時間を計測するためには以下のようにする
      • time ./build.sh -O ../obj -T ../tools -U -u kernel=GENERIC
      • 各PCのベンチマークとして使用したりする
  • GENERICは自分のカーネル定義ファイルを使用
    • ここを参考に,自分用のカーネル定義ファイルMYKERNELを作成すると,一度にシステムアップデートとカーネルアップデートが出来てお得
  • cd ../obj/sys/arch/<ARCH>/compile/GENERIC
  • su
  • mv /netbsd /netbsd.old
    • netbsd.old日付-番号などとした方が分かりやすいかも
      • 例:netbsd.old20090620-01(2009年6月20日につくった1個目のバックアップ)
    • 新しいカーネルが安定動作したなら将来的には古い(old)カーネルは削除
  • cp netbsd /netbsd
  • shutdown -r now
    • カーネルのインストール
    • <ARCH>は自分のPCのアーキテクチャ
      • i386, amd64, etc
    • 再起動時に問題が起こったら古いカーネルで起動して修正
      • boot netbsd.old -s
      • fsck /
      • mount /
      • mv netbsd.old netbsd
      • reboot
  • cd /usr/src
  • su
  • ./build.sh -O ../obj -T ../tools -U install=/
    • ユーザランドのインストール
  • /usr/sbin/etcupdate -s /usr/src
    • システムの設定ファイル(/etc)のアップデート
      • 1ファイルごとにアップデート確認が行われる
      • 基本は,i(新しいファイルで上書き)とd(古いファイルを使用)
      • 全てiにした場合は,これまでに設定したもの(rc.confからifconfigなどネットワークの設定まで)ほとんど全てが初期設定に戻ってしまうので再設定が必要.
      • できれば,メッセージを読み,分からないものはiで,自分で設定した記憶があり再設定の必要がないものをdとするように.
      • アップデート確認でm(マージ)をした場合には,特殊エディタ(?)が立ち上がり,違いを{新|旧|それぞれを元に自分で編集}を選択できる.使えるコマンドはpとでも打つとでる.
      • 事前に差分を見たい場合は,etcupdate -al?
      • http://www.area51.gr.jp/~rin/pcmemo/NetBSDkernelmake
    • /usr/sbin/postinstall -s /usr/src -d / fix ****
      • etcupdateをすると最後にエラーメッセージがでて,postinstallを実行するようにと出てくる.その時のメッセージを読んで,****は,fixしてもらいたいものを書いて実行
      • /usr/sbin/postinstall list とやると一覧が出てくる?
  • mv /etc/mk.conf.pkgsrc /etc/mk.conf
    • pkgsrcでmk.confを使用している場合,変更した名前を元にもどしておく
  • システムアップデートに関する参考文献

その他情報

バージョンの概要

  • current
    • 現在開発中のバージョン.
  • maintenance branches, stable branch, etc.
    • 最新の安定版
  • formal releases, release, etc.
    • release版として名づけられた版.過去の色々なバージョン.
  • 詳しい説明

アップデート等に関する情報

  • build.sh -h
  • UPDATING ファイル
  • BUILDING ファイル