J'essaie de configurer un jail pour permettre la construction d'une image NanoBSD. Il s'agit en fait d'un jail au-dessus d'une installation NanoBSD.
Le problème que j'ai est que je n'arrive pas à monter la md
afin d'effectuer la partie "construction de l'image". Est-il tout simplement impossible de monter un md
à l'intérieur d'une prison, ou y a-t-il une sorte de autre Je dois me tortiller ?
Sur l'hôte
/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
A l'intérieur de la prison
[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
md0
y md1
sont les disques RAM de l'hôte.
bsdlabel
semble raisonnable
[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
fonctionne bien
[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
échoue
[root@build /usr/obj/nanobsd.PROLIANT_MICROSERVER]# mount /dev/md2s1a _.mnt/
mount: /dev/md2s1a : Operation not permitted
UPDATE :
Un de mes collègues a fait remarquer
Il existe certains types de systèmes de fichiers qui ne peuvent pas être montés de manière sécurisée au sein de dans une prison, comme UFS, MSDOFS, EXTFS, XFS, REISERFS, NTFS, etc, etc. parce que l'utilisateur qui le monte a accès au stockage brut et peut le corrompre de manière à faire paniquer tout le système.
De http://www.mail-archive.com/freebsd-hackers@freebsd.org/msg160389.html
Il semble donc que le fichier nanobsd.sh standard ne s'exécute pas dans un jail s'il utilise le fichier md
pour construire l'image. Une solution potentielle que je vais essayer est de chroot
de l'hôte dans la prison de construction, plutôt que de jexec
un Shell.
0 votes
Et si on courait
mount
conktrace
?0 votes
@SaveTheRbtz ah, bonne idée. Je vais essayer ce soir.
ktrace mount /dev/md2s1a _.mnt/
Je suppose que0 votes
@ptomil, avez-vous eu de la chance ? Je suis intéressé à m'attaquer à quelque chose de similaire, et j'espère apprendre de vos cicatrices.
0 votes
@RoyceWilliams J'ai eu un certain succès, dans la mesure où il est possible d'effectuer la construction dans un environnement chroot. Il n'est pas possible de le faire dans un jail.