“安全地”安装新的 OpenBSD 内核:为什么 `make install` 会经历这些额外的麻烦?

Min*_*nas 4 filesystems kernel cp openbsd ffs

构建新的 OpenBSD 内核后,内核的install目标Makefile执行以下操作:

rm -f /obsd
ln /bsd /obsd
cp bsd /nbsd
mv /nbsd /bsd
Run Code Online (Sandbox Code Playgroud)

我知道前两行删除了旧的备份内核/obsd并创建了一个/obsd指向当前运行内核的硬链接/bsd。特别是,正在运行的内核根本没有移动。这对我来说很有意义。

但是,将新构建的内核./bsd先移动到/nbsd,然后将其重命名为 的目的是什么/bsd?为什么不用明显更简单的替换第三和第四行cp bsd /bsd呢?

如果这很重要:OpenBSD 的默认分区方案将内核构建树放置在与根文件系统不同的文件系统(磁盘标签)中。

Mar*_*ick 5

如果其中的任何命令返回失败状态,makefile 配方将停止执行(除非该命令前面有-)。您引用的配方将确保/bsd只有在cp bsd /nbsd命令成功时才会被替换。如果分区已满或 inode 不足,cp 可能会失败。