システムアップデート - freebsd-update - 11.1 RELEASE → 11.2 RELEASE - 11.1 RELEASE を用意

クラウディア 
1. 11.1 RELEASE を用意
2. /boot/GENERIC を作ってみる
3. DVD メディアから作ってみる
4. GENERIC から作ってみる

1. 11.1 RELEASE を用意

 まずは、アップグレード対象とする FreeBSD 11.1 RELEASE のマシンが必要なわけですが、これは、以前にインストールしてアプリケーションの動作確認を行っていたものがあります。  実機のターゲットは、カスタムカーネルを使用しているため、あえてカスタムカーネルを作ろうと思ったら・・・。  おおお、作ってました。

> uname -a
FreeBSD vm11.1.sing.ne.jp 11.1-RELEASE FreeBSD 11.1-RELEASE #0: Fri Jul 28 22:30:38 JST 2017     hogehoge@vm.sing.ne.jp:/usr/obj/usr/src/sys/MYKERNEL  amd6
 と、freebsd-update しようと思ったのですが・・・。  作業しようとしたところが実機のある環境と違って、テザリング環境のため、通信量が不安でどうにもならない・・・。  ってことで、当面、GENERIC カーネルを boot に作成できるか?に絞ってみることにしました。  11.1 → 11.2 間にカーネルの変更があったか知らんが・・・。  いずれ訪れる、12.x のときに備えておかんとね。

2. /boot/GENERIC を作ってみる

 ここのサイトに 8.4-RELEASE から 9.3-RELEASE へアップデートしたときの資料が残っていますが、このときのコマンドが動くかしら・・・?  そのときは

cd /usr/src
env DESTDIR=/boot/GENERIC make kernel __MAKE_CONF=/dev/null SRCCONF=/dev/null
mv /boot/GENERIC/boot/kernel/* /boot/GENERIC
rm -rf /boot/GENERIC/boot
 てな感じでしたが・・・。  なんか「ハンドブック - FreeBSD Update」を読むと、FreeBSD 9.x 以降も似たような感じに見えるのですが・・・。  やってみるず。  いまやろうとしているのは、VirtualBox 上のマシンなのでやる直前のスナップショットをとっておけば、何も怖いものはありませんわな。

3. DVD メディアから作ってみる

 ハンドブックに書いてあるひとつの方法。  DVD メディアから作ってみます。  DVD を挿入して、以下のようにと書いてあるが・・・。

mount /cdrom
cd /cdrom/usr/freebsd-dist
tar -C/ -xvf kernel.txz boot/kernel/kernel
 いきなり初手から NG。

> mount /cdrom
mount: /cdrom: unknown special file or file system
 「/etc/fstab」に「/cdrom」の記述がないからのようですな。  これ、次のコマンドを調べるのに、参考にさせていただいたサイトがあって、リンクをはっていたのですが、リンク切れになっちゃいました。

> camcontrol devlist
<VBOX HARDDISK 1.0>                at scbus0 target 0 lun 0 (pass0,ada0)
<VBOX CD-ROM 1.0>                  at scbus1 target 0 lun 0 (cd0,pass1)
 なるほど、「cd0」だね。

mount -t cd9660 /dev/cd0 /mnt
 おし、マウントできました。

cd /mnt/usr/freebsd-dist/
tar -C/ -xvf kernel.txz boot/kernel/kernel
cd
umount /mnt
 おおこれで、できてる風ですわ。  でも /boot/GENERIC でなく /boot/kernel なんだけどこれでいいのかな?  上記、いささか納得の話が

nextboot -k GENERIC
 を使うなら /boot/GENERIC が必要なんでしょうが、nextboot 使わなければ、そのまま /boot/kernel を使用するんで問題ないと思われ・・・。

4. GENERIC から作ってみる

 GENERIC はオリジナルのものを残していますからね・・・。

cd /usr/src
make kernel __MAKE_CONF=/dev/null SRCCONF=/dev/null
 ここは結構、長く待ちます。  貧弱な環境であれば、数時間という単位です。  となれば、前項のメディアから作成するのが一番と思われます。  もしメディアが存在しなくても iso ファイルをマウントしてそこから作成するのは数分でしょう。