新しいOpenBSDカーネルを「安全に」インストールするのはなぜですか?

新しいOpenBSDカーネルを「安全に」インストールするのはなぜですか?

新しいOpenBSDカーネルを構築した後、installカーネルのターゲットはMakefile次のことを行います。

rm -f /obsd
ln /bsd /obsd
cp bsd /nbsd
mv /nbsd /bsd

最初の2行は、古いバックアップカーネルを削除/obsdし、/obsd現在実行中のカーネルへのハードリンクを作成することを知っています/bsd。特に実行中のカーネルはまったく移動されません。これは私にとって意味があります。

./bsd/nbsdしかし、新しく構築されたカーネルを最初にに移動してから名前をに変更する目的は何ですか/bsd?なぜ3行目と4行目をより単純な行に置き換えないのですかcp bsd /bsd

これが重要な場合:OpenBSDのデフォルトのパーティション化スキームは、カーネルビルドツリーをルートファイルシステムとは異なるファイルシステム(ディスクラベル)に配置します。

答え1

makefileレシピのコマンドが失敗状態を返すと(コマンドの前に1が来ない限り-)、レシピの実行は停止します。引用したレシピは、/bsdコマンドが成功した場合にのみ置き換えられることを保証しますcp bsd /nbsd。パーティションがいっぱいになっているか、inodeが十分でないと、cpが失敗する可能性があります。

関連情報