cvsup & make buildworldするにはCPUパワーが足りない、てゆーかサーバーなので、CDドライブもフロッピーもつけてないよ、というなんだかな~なパソコンは、こんなかんじで、手軽にOSを、無理やりアップデートできる。
まず、フロッピーディスクのイメージファイルをダウンロードしてくる。snapshots.jp.freebsd.orgという、毎日ビルドしているところがあるので、そこからいただく。
http://snapshots.jp.freebsd.org:8021/pub/FreeBSD/snapshots/i386/5.4-STABLE-20050501-JPSNAP/floppies/
ダウンロードするのは、boot.flp、kern1.flp、kern2.flpの3つ。
イメージファイルをmdconfigして、mountする。# mdconfig -a -t vnode -f /home/hoge/boot.flp
md0
# mount /dev/md0 /mnt
# ls /mnt
.snap boot kernel.gz.split
acpi.ko.gz kernel.gz.boot mfsroot.gz
ふーん、最近は、こんな風になってるんですねぇ。フロッピーが3枚に分かれてから、こうなったんですかね。
カーネルなどのファイルを、ハードディスクにコピーする。コピー先どうでもいいから、/boot.flpというディレクトリにでもしてみた。# mkdir /boot.flp
# cp /mnt/* /boot.flp/
cp: /mnt/boot is a directory (not copied).
このエラーは、どうでもいい↑
コピーしおわったら、後始末する。# umount /mnt
# mdconfig -d -u 0
あとは、kern1.flp、kern2.flpについて、同様の作業を2回繰り返す。# mdconfig -a -t vnode -f /home/hoge/kern1.flp
md0
# mount /dev/md0 /mnt
# ls /mnt
.snap kernel.gz.aa
# cp /mnt/* /boot.flp/
# umount /mnt
# mdconfig -d -u 0
# mdconfig -a -t vnode -f /home/hoge/kern2.flp
md0
# mount /dev/md0 /mnt
# ls /mnt
.snap kernel.gz.ab
# cp /mnt/* /boot.flp/
# umount /mnt
# mdconfig -d -u 0
というわけで、こんな風にファイルがコピーされた。# ls -la /boot.flp/
total 3646
drwxr-xr-x 2 root wheel 512 May 2 09:13 .
drwxr-xr-x 31 root wheel 1024 May 2 09:10 ..
-rw-r--r-- 1 root wheel 139064 May 2 09:10 acpi.ko.gz
-rw-r--r-- 1 root wheel 1425408 May 2 09:13 kernel.gz.aa
-rw-r--r-- 1 root wheel 1064236 May 2 09:13 kernel.gz.ab
-rw-r--r-- 1 root wheel 16384 May 2 09:10 kernel.gz.boot
-rw-r--r-- 1 root wheel 91 May 2 09:10 kernel.gz.split
-rw-r--r-- 1 root wheel 1015943 May 2 09:10 mfsroot.gz
分割されている(らしい)ファイルを、1個につなぐ。
# cat kernel.gz.boot kernel.gz.aa kernel.gz.ab > kernel.gz
# rm kernel.gz.*
# ls
acpi.ko.gz kernel.gz mfsroot.gz
再起動する。
デーモンくんのAAが表示されるブートローダーでは、「6. Escape to loader prompt」を選ぶ。
カーネルをロードする。
OK unload
OK load /boot.flp/kernel
/boot.flp/kernel text=0x444b18 data=0x7d6c4+0x4fbdc syms=[0x4+0x5b570+0x4+0x70968]
ファイル名に.gzはいれなくていい。
mfsrootをロードする。
OK load -t mfs_root /boot.flp/mfsroot
そのままだと、もともとあるacpiモジュールが/boot/kernel/acpi.koあたりからロードされてしまうので、それを防ぐためにOK set module_path
とする。ちゃんと設定できたかどうかは、showで確認できる。
ブートする。-aオプションをつけて、ルートパーティションを選択できるようにする(変数をセットしてもいいんだけど、変数名を忘れた)。OK boot -a
mountroot> ?
というプロンプトが表示されるので、「
ufs:md0a
」と入力する(?かなんかでヘルプがでる)。
あとは、upgrade installを実行すればよい。snapshots.jp.freebsd.orgからネットワークインストールしてもいいし、事前に、snapshots.jp.freebsd.orgからローカルディスクにダウンロードしておくのもよい。
ACPIモジュールをロードしないと、ブート中にハングするマシンをみつけた。
返信削除だから、この例では「set module_path=/boot.flp」のようにして、もともとフロッピーに入っていたACPIモジュールをロードできるようにすべき。