小智 6
目前 OpenBSD 不支持任何“chroot on steroid”机制。过去,sysjailports 中也有相同的 jail 功能(名为),但在 2007 年被删除,因为它不易维护且非常不安全。您可以在 stackexchange 和您的搜索引擎上找到有关它的更多信息。
从历史上看,OpenBSD 只支持chroot(8)和工作方式与其他系统完全一样:
# create your target chroot
target="/tmp/chroot"
mkdir ${target}
# now build and install your userland
cd /usr
cvs -qz3 -d${repository} co src -r${openbsd_release}
cd /usr/src
make obj && make && make install DESTDIR=${target}
Run Code Online (Sandbox Code Playgroud)
# in root
chroot /tmp/chroot
# run your daemon here
# note: you need to init also dev directory
# and, eventually, customize /etc/fstab
# /tmp is currently not allowed to have dev on it
# please see fstab(5) man page
Run Code Online (Sandbox Code Playgroud)
在底座支撑chroot功能的软件很多,openntpd,openssh,httpd和许多其他被默认在孤立的目录配置。
现在,从 OpenBSD 5.9 开始,您可以使用vmm(4)hypervisor 和vmctl(8)in base。您可以vmd像任何其他管理程序(bhyve、xen 或 kvm)一样启动守护进程并创建隔离容器。
# from openbsd vmctl man page example
vmctl create disk.img -s 4.5G
vmctl start "myvm" -m 512M -i 1 -d disk.img -k /bsd
vmctl stop 1
Run Code Online (Sandbox Code Playgroud)
您还可以使用基于端口软件的另一种方法,运行qemu良好但在 OpenBSD 上性能不佳,这是由于内核加速支持湖和文件系统结构的部分原因。
现在,关于您的主要问题(提供一种远程编译源代码的方法),我想更好的主意是真正将您的代码与主系统隔离,并使用类似vmctl或qemu可能是好的答案。也许 qemu 会更好,因为你可以使用标准用户来执行它,没有内核特性和很多网络特性,但是编译会很慢。