ソースの表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ Share via Share via... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer Reddit Teams最近の変更Send via e-Mail印刷パーマリンク × « ミスって家鯖のFreeBSD環境を飛ばしてしまった FreeBSDのMariaDB 10.4から設定ファイルがserver.cnfに変わった » 飛ばしたFreeBSDをbsdinstallで復旧 最初に謝っておこう。復旧と言ってるけど、実態としては殆ど新規インストールなんだ、すまない。 誤って家鯖のFreeBSDを飛ばしたわけだけども、13.0-RELEASEの完全クリーンインストールはやめ、既存環境を上書きする形で12.2-RELEASEを起動できる状態にいったん戻すことにした。FreeBSD標準の自動インストールでは、ストレージの現在のパーティションを生かす方法がなく、結局手動でアレコレする羽目になる。だったら、手っ取り早く上書きインストールした方が簡単かなと。 上書きインストール、というかFreeBSDのインストール自体は/usr/freebsd-distにあるアーカイブをファイルシステムに展開するだけ(と少々の起動設定)なんだけど、せっかくなのでbsdinstallを使ってみた。 必要な環境変数を設定し、bsdinstall distextractを実行するとアーカイブを展開してくれる。 まずはFreeBSDのインストーラでマシンを起動し、Shellに落ちて、破損したシステムをマウントする。うちはRoot on ZFS環境なので↓のような感じ。 # mkdir /tmp/zroot # zpool import -f -R /tmp/zroot zroot 続いて環境変数の設定。 # export BSDINSTALL_DISTDIR=/usr/freebsd-dist # export DISTRIBUTIONS="base.txz kernel.txz lib32.txz" # export BSDINSTALL_CHROOT=/tmp/zroot/ 環境変数名 意味 BSDINSTALL_DISTDIR インストールアーカイブのパス。デフォルト値は/usr/freebsd-distで、インストーラから起動した場合は特に指定する必要はない。 DISTRIBUTIONS インストールするアーカイブの指定。BSDINSTALL_DISTDIRにあるファイル名を列挙する。base.txz, kernel.txzの2つがあればOSとして動く。 BSDINSTALL_CHROOT アーカイブの展開先のパス。冒頭で/tmp/zrootにZFSの'/'をマウントしているので、その値を指定。デフォルト値は/mnt。 でもってbsdinstallを実行。 # bsdinstall distextract すると見慣れたFreeBSD Installer画面になって展開が進む。終わるとシェルに戻ってくる。 ZFS起動に必要な設定を書き込む。 # echo 'zfs_load="YES"' >> /tmp/boot/loader.conf # echo 'zfs_enable="YES"' >> /tmp/etc/rc.conf 念のためプールをエクスポート&再起動 # zpool export zroot # reboot これで、新規12.2-RELEASEが立ち上がった。以前のデータの残り具合次第では、ある程度、設定済みの環境も戻ってくるだろう。自分の場合、/usrと/etcが完全に消えたので、殆どクリーンインストールと一緒だけどな!気持ち的には、秘伝の家鯖の血脈は保たれた。まっさらな環境だけどな! ベニクラゲのように若返ったとでも思っておこう。 (2021/04/26 追記) 環境構築を進めてみると/usr/local/etcがほぼほぼ残っていることが判明。これは名実ともに血脈が保たれたと言ってもいいのでは…!?しかしあれだ、ちゃんとバックアップは取っておきましょうね。 参考サイト bsdinstall(8) freebsd/zfsboot at master · lattera/freebsd · GitHub Comments Name E-Mail Website 人間の証明として、ボックス内の全ての文字を入力してください。 この項目は空のままにして下さい:Preview Comment blog/2021/2021-04-23.txt 最終更新: 2021-04-26 10:10by Decomo