在监狱里build造NanoBSD

我试图build立一个监狱,以build立一个NanoBSD图像。 它实际上是一个在NanoBSD安装之上的监狱。

我遇到的问题是我无法安装md设备来执行“构build图像”部分。 是不是可以在一个监狱内安装一个md设备,或者是否有其他一些我需要旋转的旋钮?

在主机上

/etc/rc.conf.local

 jail_enable="YES" jail_mount_enable="YES" jail_list="build" jail_set_hostname_allow="NO" jail_build_hostname="build.vm" jail_build_ip="192.168.0.100" jail_build_rootdir="/mnt/zpool0/jails/build/home" jail_build_devfs_enable="YES" jail_build_devfs_ruleset="devfsrules_jail_build" 

/etc/devfs.rules

 [devfsrules_jail_build=5] # nothing 

在监狱里面

 [root@build /usr/obj/nanobsd.PROLIANT_MICROSERVER]# sysctl security.jail security.jail.param.cpuset.id: 0 security.jail.param.host.hostid: 0 security.jail.param.host.hostuuid: 64 security.jail.param.host.domainname: 256 security.jail.param.host.hostname: 256 security.jail.param.children.max: 0 security.jail.param.children.cur: 0 security.jail.param.enforce_statfs: 0 security.jail.param.securelevel: 0 security.jail.param.path: 1024 security.jail.param.name: 256 security.jail.param.parent: 0 security.jail.param.jid: 0 security.jail.enforce_statfs: 1 security.jail.mount_allowed: 1 security.jail.chflags_allowed: 1 security.jail.allow_raw_sockets: 0 security.jail.sysvipc_allowed: 0 security.jail.socket_unixiproute_only: 1 security.jail.set_hostname_allowed: 0 security.jail.jail_max_af_ips: 255 security.jail.jailed: 1 [root@build /usr/obj/nanobsd.PROLIANT_MICROSERVER]# mdconfig -l md2 md0 md1 

md0md1是主机的虚拟磁盘。

bsdlabel看起来很明智

 [root@build /usr/obj/nanobsd.PROLIANT_MICROSERVER]# bsdlabel /dev/md2s1 # /dev/md2s1: 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 1012016 16 4.2BSD 0 0 0 c: 1012032 0 unused 0 0 # "raw" part, don't edit 

newfs运行正常

 [root@build /usr/obj/nanobsd.PROLIANT_MICROSERVER]# newfs -U /dev/md2s1a /dev/md2s1a: 494.1MB (1012016 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 123.55MB, 7907 blks, 15872 inodes. with soft updates super-block backups (for fsck -b #) at: 160, 253184, 506208, 759232 

mount失败

 [root@build /usr/obj/nanobsd.PROLIANT_MICROSERVER]# mount /dev/md2s1a _.mnt/ mount: /dev/md2s1a : Operation not permitted 

更新:

我的一位同事指出

有一些文件系统types无法安全地安装在监狱里,无论如何,像UFS,MSDOFS,EXTFS,XFS,REISERFS,NTFS等,因为用户挂载它可以访问原始存储并可以破坏它一种令整个系统恐慌的方式。

从http://www.mail-archive.com/freebsd[email protected]/msg160389.html

所以看起来标准的nanobsd.sh不会在监狱里面运行,而使用md设备来构build图像。 我会尝试的一个潜在的解决scheme是从主机chroot进入build设监狱,而不是jexec壳。

正如你所说,chroot是要走的路。

您不想实现安全性,只需构build和更改根目录,以便安装脚本正确运行。 这就是chroot的目的。

在一些系统中,没有一个chroot二进制文件,但是编写一个简单的脚本很容易,它可以实现你想要的一切(嘿,你可以稍后再使用它!)。