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

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

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

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

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

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

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

答案1

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

相关内容