如何在 BSD 上创建 /dev/null?

iBu*_*Bug 5 freebsd devices

/dev/null在我的系统上删除了错误编写的脚本。我确实在这里找到了答案并进行了尝试。但是一旦我向 new 写了一些东西/dev/null,系统就会崩溃。恐怕这个答案不适用于 BSD。

任何人都可以帮忙吗?

这是 FreeBSD 10.3

Sat*_*ura 6

在 FreeBSD 上:

mknod /dev/null c 15 0 root:wheel
chmod 0666 /dev/null
Run Code Online (Sandbox Code Playgroud)

正如您所发现的,数字 15 和 0 不可移植到其他系统。

  • @iBug 不。OpenBSD fi 需要 2 和 2。 (2认同)

Gil*_*il' 6

创建设备节点条目的命令mknod几乎在所有 unix 系统上都有。设备编号完全取决于 unix 变体,因此您需要在文档中查找它们。在某些系统上,man 4 nullnull第 4 节“特殊文件”中的手册页)会告诉您设备编号是什么。(设备在 BSD 和 Linux 上的第 4 部分,但在其他 Unix 变体上,部分编号可能会有所不同,例如它在 Solaris 上是第 7 部分。)

如果手册页没有告诉您,请查找MAKEDEV命令,通常位于/dev. 这通常是一个 shell 脚本,您可以在其中轻松找到设备编号,或将其作为cd /dev && ./MAKEDEV null.

一些现代 unix 系统不使用,MAKEDEV因为设备节点是自动创建的。在带有 udev 的 Linux 系统(某些嵌入式系统除外)上就是这种情况,在带有devfs 的FreeBSD 上也是如此。如何重新创建通常自动创建的条目取决于自动设备创建系统。在 FreeBSD 上,您可以简单地为mknod命令提供设备名称:mknod /dev/null.