文書の表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。 ====== FreeBSD 9.2-RELEASEへのfreebsd-updateに失敗してmake buildworldする羽目になった ====== <note>freebsd-updateが悪いんじゃありません。更新中に間違ってsshを閉じた自分が悪いんです…</note> ===== 経緯 ===== - 家鯖(9.0-RELEASE)で88SE9230なSATAカードとZFSのLZ4圧縮を使いたい!! - 9.2-RELEASEに更新しようず。 - 2度目のfreebsd-update installの途中で間違ってsshの接続を切る。 - とりあえず動いてはいるけど、何か気持ち悪い。freebsd-update installしても「更新は何もない。まずはfetchせよ」とでる。 - freebsd-update rollbackってコマンドがあるぞ→詳しく調べもせずに実行。 - FreeBSDがブートしなくなる。 - シングルユーザーモードで何とか起動。 - freebsd-update -r 9.0-RELEASE upgradeでダウングレードを試してみる。 - cannot open files/.gz: No such file or directory.とか出る。どうみても怪しい。 - ソースから9.2-RELEASEを作れば一番確実?と思い立ちカーネル再構築することに。(←いまここ) ===== 手順 ===== ==== ソースツリーの更新 ==== svnupを使う。 昔はCVSupやcsupだったが既に非推奨となっており、9.2-RELEASEのソースは最早正しく取得できない。 <code> cd /usr/ports/net/svnup make install </code> == 設定ファイルを編集 == <code |h /usr/local/etc/svnup.conf> host=svn0.us-west.freebsd.org branch=base/releng/9.2 </code> == ソース取得 == 結構時間がかかるのでそのつもりで。 <code> svnup release -v 2 </code> ==== ビルド ==== FreeBSDハンドブックを熟読の事。 <code> cd /usr/src make -j6 buildworld make -j6 buildkernel </code> Xeon E3-1260L(2.40GHz)を論理3コア割り当て、2.5インチHDD(750GB/5400rpm)×2のZFSミラーリングの環境において、buildworldは約40分、buildkernelは約10分掛かった。 ==== カーネルのインストール ==== <code> make installkernel </code> ==== ユーザーランドのインストール ==== シングルユーザーモードで再起動する。 ルートを読み書き可能状態でマウントしなおす。 <code> zfs set readonly=off zroot zfs mount -a </code> BIOSの時計がローカルタイムの場合は時間を調整。 <code> adjkerntz -i </code> == 設定ファイルの更新 == 念のためバックアップ <code> cp -Rp /etc /etc.old </code> マージ <code> mergemaster -p </code> <html> <!-- *** Displaying differences between ./etc/group and installed version: --- /etc/group 2013-11-26 11:04:20.166195146 +0900 +++ ./etc/group 2013-11-26 15:10:32.000000000 +0900 @@ -1,12 +1,12 @@ -# $FreeBSD: release/9.0.0/etc/group 218046 2011-01-28 22:28:12Z pjd $ +# $FreeBSD: releng/9.2/etc/group 218046 2011-01-28 22:28:12Z pjd $ # -wheel:*:0:root,Decomo +wheel:*:0:root daemon:*:1: kmem:*:2: sys:*:3: tty:*:4: operator:*:5:root -mail:*:6:postfix +mail:*:6: bin:*:7: news:*:8: man:*:9: @@ -30,24 +30,3 @@ hast:*:845: nogroup:*:65533: nobody:*:65534: -Decomo:*:1001: -messagebus:*:556: -avahi:*:558: -avahi-autoipd:*:546: -cyrus:*:60: -polkit:*:562: -haldaemon:*:560: -mic:*:1002: -dovecot:*:143: -dovenull:*:144: -maildrop:*:126: -postfix:*:125: -fetchmail:*:124: -courier:*:465: -test_user:*:1003: -qmail:*:82: -qnofiles:*:81: -vchkpw:*:89: -yoshimi:*:1004: -mysql:*:88: -redmine:*:3000: Use 'd' to delete the temporary ./etc/group Use 'i' to install the temporary ./etc/group Use 'm' to merge the temporary and installed versions Use 'v' to view the diff results again Default is to leave the temporary file to deal with by hand How should I deal with this? [Leave it for later] /usr/sbin/pwd_mkdb -p /etc/master.passwd *** Displaying differences between ./boot/device.hints and installed version: --- /boot/device.hints 2013-11-26 11:10:21.796188623 +0900 +++ ./boot/device.hints 2013-11-26 18:15:41.991283808 +0900 @@ -1,4 +1,4 @@ -# $FreeBSD: release/9.0.0/sys/amd64/conf/GENERIC.hints 210179 2010-07-16 23:21:46Z mav $ +# $FreeBSD: releng/9.2/sys/amd64/conf/GENERIC.hints 235926 2012-05-24 19:24:31Z bz $ hint.fdc.0.at="isa" hint.fdc.0.port="0x3F0" hint.fdc.0.irq="6" @@ -30,25 +30,4 @@ hint.attimer.0.at="isa" hint.attimer.0.port="0x40" hint.attimer.0.irq="0" -hint.scbus.0.at="ahcich0" -hint.ada.0.at="scbus0" -hint.scbus.1.at="ahcich1" -hint.ada.1.at="scbus1" -hint.scbus.2.at="ahcich2" -hint.ada.2.at="scbus2" -hint.scbus.3.at="ahcich3" -hint.ada.4.at="scbus4" -hint.scbus.5.at="ahcich5" -hint.ada.6.at="scbus6" -hint.scbus.7.at="ahcich7" -hint.ada.7.at="scbus7" -hint.scbus.8.at="ahcich8" -hint.ada.9.at="scbus9" -hint.scbus.10.at="ahcich10" -hint.ada.10.at="scbus10" -hint.scbus.11.at="ahcich11" -hint.ada.12.at="scbus12" -hint.scbus.13.at="ahcich13" -hint.ada.14.at="scbus14" -hint.scbus.15.at="ahcich15" -hint.ada.15.at="scbus15" \ No newline at end of file +hint.wbwd.0.at="isa" Use 'd' to delete the temporary ./boot/device.hints Use 'i' to install the temporary ./boot/device.hints Use 'm' to merge the temporary and installed versions Use 'v' to view the diff results again Default is to leave the temporary file to deal with by hand How should I deal with this? [Leave it for later] m # $FreeBSD: release/9.0.0/sys/amd64/con | # $FreeBSD: releng/9.2/sys/amd64/conf/G %2 hint.scbus.0.at="ahcich0" | hint.wbwd.0.at="isa" hint.ada.0.at="scbus0" < hint.scbus.1.at="ahcich1" < hint.ada.1.at="scbus1" < hint.scbus.2.at="ahcich2" < hint.ada.2.at="scbus2" < hint.scbus.3.at="ahcich3" < hint.ada.4.at="scbus4" < hint.scbus.5.at="ahcich5" < hint.ada.6.at="scbus6" < hint.scbus.7.at="ahcich7" < hint.ada.7.at="scbus7" < hint.scbus.8.at="ahcich8" < hint.ada.9.at="scbus9" < hint.scbus.10.at="ahcich10" < hint.ada.10.at="scbus10" < hint.scbus.11.at="ahcich11" < hint.ada.12.at="scbus12" < hint.scbus.13.at="ahcich13" < hint.ada.14.at="scbus14" < hint.scbus.15.at="ahcich15" < hint.ada.15.at="scbus15" <%1 Use 'i' to install merged file Use 'r' to re-do the merge Use 'v' to view the merged file Default is to leave the temporary file to deal with by hand *** How should I deal with the merged file? [Leave it for later] r # $FreeBSD: release/9.0.0/sys/amd64/con | # $FreeBSD: releng/9.2/sys/amd64/conf/G %2 hint.scbus.0.at="ahcich0" | hint.wbwd.0.at="isa" hint.ada.0.at="scbus0" < hint.scbus.1.at="ahcich1" < hint.ada.1.at="scbus1" < hint.scbus.2.at="ahcich2" < hint.ada.2.at="scbus2" < hint.scbus.3.at="ahcich3" < hint.ada.4.at="scbus4" < hint.scbus.5.at="ahcich5" < hint.ada.6.at="scbus6" < hint.scbus.7.at="ahcich7" < hint.ada.7.at="scbus7" < hint.scbus.8.at="ahcich8" < hint.ada.9.at="scbus9" < hint.scbus.10.at="ahcich10" < hint.ada.10.at="scbus10" < hint.scbus.11.at="ahcich11" < hint.ada.12.at="scbus12" < hint.scbus.13.at="ahcich13" < hint.ada.14.at="scbus14" < hint.scbus.15.at="ahcich15" < hint.ada.15.at="scbus15" <% ed: Edit then use both versions, each decorated with a header. eb: Edit then use both versions. el or e1: Edit then use the left version. er or e2: Edit then use the right version. e: Discard both versions then edit a new one. l or 1: Use the left version. r or 2: Use the right version. s: Silently include common lines. v: Verbosely include common lines. q: Quit. %eb hint.scbus.0.at="ahcich0" hint.ada.0.at="scbus0" hint.scbus.1.at="ahcich1" hint.ada.1.at="scbus1" hint.scbus.2.at="ahcich2" hint.ada.2.at="scbus2" hint.scbus.3.at="ahcich3" hint.ada.4.at="scbus4" hint.scbus.5.at="ahcich5" hint.ada.6.at="scbus6" hint.scbus.7.at="ahcich7" hint.ada.7.at="scbus7" hint.scbus.8.at="ahcich8" hint.ada.9.at="scbus9" hint.scbus.10.at="ahcich10" hint.ada.10.at="scbus10" hint.scbus.11.at="ahcich11" hint.ada.12.at="scbus12" hint.scbus.13.at="ahcich13" hint.ada.14.at="scbus14" hint.scbus.15.at="ahcich15" hint.ada.15.at="scbus15" hint.wbwd.0.at="isa" ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ :q Use 'i' to install merged file Use 'r' to re-do the merge Use 'v' to view the merged file Default is to leave the temporary file to deal with by hand *** How should I deal with the merged file? [Leave it for later] v # $FreeBSD: releng/9.2/sys/amd64/conf/GENERIC.hints 235926 2012-05-24 19:24:31Z bz $ hint.fdc.0.at="isa" hint.fdc.0.port="0x3F0" hint.fdc.0.irq="6" hint.fdc.0.drq="2" hint.fd.0.at="fdc0" hint.fd.0.drive="0" hint.fd.1.at="fdc0" hint.fd.1.drive="1" hint.atkbdc.0.at="isa" hint.atkbdc.0.port="0x060" hint.atkbd.0.at="atkbdc" hint.atkbd.0.irq="1" hint.psm.0.at="atkbdc" hint.psm.0.irq="12" hint.sc.0.at="isa" hint.sc.0.flags="0x100" hint.uart.0.at="isa" hint.uart.0.port="0x3F8" hint.uart.0.flags="0x10" hint.uart.0.irq="4" hint.uart.1.at="isa" hint.uart.1.port="0x2F8" hint.uart.1.irq="3" hint.ppc.0.at="isa" hint.ppc.0.irq="7" hint.atrtc.0.at="isa" hint.atrtc.0.port="0x70" hint.atrtc.0.irq="8" hint.attimer.0.at="isa" hint.attimer.0.port="0x40" hint.attimer.0.irq="0" hint.scbus.0.at="ahcich0" hint.ada.0.at="scbus0" hint.scbus.1.at="ahcich1" hint.ada.1.at="scbus1" hint.scbus.2.at="ahcich2" hint.ada.2.at="scbus2" hint.scbus.3.at="ahcich3" hint.ada.4.at="scbus4" hint.scbus.5.at="ahcich5" hint.ada.6.at="scbus6" hint.scbus.7.at="ahcich7" hint.ada.7.at="scbus7" hint.scbus.8.at="ahcich8" hint.ada.9.at="scbus9" hint.scbus.10.at="ahcich10" hint.ada.10.at="scbus10" hint.scbus.11.at="ahcich11" hint.ada.12.at="scbus12" hint.scbus.13.at="ahcich13" hint.ada.14.at="scbus14" hint.scbus.15.at="ahcich15" hint.ada.15.at="scbus15" hint.wbwd.0.at="isa" Use 'i' to install merged file Use 'r' to re-do the merge Use 'v' to view the merged file Default is to leave the temporary file to deal with by hand *** How should I deal with the merged file? [Leave it for later] i *** Merged version of ./boot/device.hints installed successfully --> </html> インストール <code> cd /usr/src make installworld mergemaster -UPi </code> <code> make delete-old reboot make delete-old-libs </code> http://toriyu.jp/hitorigoto/id2856.html http://w.vmeta.jp/tdiary/?date=20130808 http://www.freebsd.org/doc/ja/books/handbook/makeworld.html http://d.hatena.ne.jp/flageo/20081208/p1 blog/2013/2013-11-25.txt 最終更新: 2015-01-06 11:51(外部編集)