有没有办法在 macOS 的目录中重新创建 /dev 以进行 chroot 操作?

Is there a way to recreate /dev within a directory on macOS for the purpose of chroot-ing?

我一直在 chroot 目录中试验 运行 应用程序。

许多应用程序和二进制文件需要访问 /dev 中的项目,例如 /dev/null 和 /dev/random 才能工作。

有没有办法为此在目录中重新创建或绑定挂载 /dev 文件系统?


我尝试了以下但没有成功: (其中 root 是我要 chroot 到的目录)

$ sudo bindfs -o dev -o allow_other /dev ./root/dev/

导致:

$ cat ./root/dev/urandom
cat: ./root/dev/urandom: Operation not permitted


$ mount -t devfs devfs ./root/dev

导致:

$ cat ./root/dev/urandom
cat: ./root/dev/urandom: Device not configured


尝试使用 mknod 手动制作设备也不起作用。

$ sudo mknod null c 1 3
$ sudo chmod 666 ./null 
$ cat ./null
cat: ./null: Operation not permitted



有没有办法在 chroot 中使用现有的 /dev 项目或重新创建它们?

不幸的是,互联网上似乎没有太多关于 OSX/macOS 使用 chroot 的文档。

操作系统详细信息:macOS Mojave,10.14.6。已启用 SIP。

嗯,这个主要是我笨

sudo mount -t devfs devfs ./dev

工作正常。

如果上面的命令是运行没有root,它会在./dev 中绑定devfs 设备,但是所有设备都会响应"Device not configured" 错误。如果它是 运行 作为 root,所有 ./dev 设备将按预期工作。