Re: error creating thin jail on 15.0 [SOLVED]

From: Graham Menhennitt <graham_at_menhennitt.com.au>
Date: Wed, 31 Dec 2025 03:20:35 UTC
Yes, you're correct. It appears that I copied the jail.conf entry from 
section 17.5.1 instead of 17.5.2. So, it was missing the mount.fstab 
entry. Once I corrected that, it all started correctly.

Thanks very much for your help, Jamie.

Regards,

     Graham



On 30/12/2025 6:24 am, James Gritton wrote:
> OK, I see where we've been going differnt directions.  I was using the 
> ZFS section of the instructions, and you were using the NullFS section 
> (I just took a closer look at your command history).  That way of 
> doing thing is a lot messier, but it seems things should still work out.
>
> The essential part that seems to not be working is the fstab file, 
> whnere /usr/local/jails/templates/15.0-RELEASE-base (which has all the 
> files you've been missing) is mounted onto 
> /usr/local/jails/vaultwarden-nullfs-base/.  With that, you should be 
> able to see all the regular files (including the dev directory that 
> was the first sign of something wrong).  So perhaps something is going 
> wrong with that mount.
>
> - Jamie
>
>
> On 2025-12-28 18:50, Graham Menhennitt wrote:
>> Thanks again for replying.
>>
>> The command that I used is copied directly from section 17.5.2 of the 
>> handbook (at 
>> https://docs.freebsd.org/en/books/handbook/jails/#creating-thin-jail-nullfs). 
>> Perhaps the handbook is wrong.
>>
>> Anyway I tried your suggested command (without the "-base" in that 
>> tar command and lots of subsequent commands), but it fails in the 
>> same way.
>>
>> Thanks,
>>
>> Graham
>>
>> On 26/12/2025 7:09 am, James Gritton wrote:
>>> I suspect a copy/paste problem: one of the commands is:
>>> # tar -xf /usr/local/jails/media/15.0-RELEASE-base.txz -C 
>>> /usr/local/jails/templates/15.0-RELEASE --unlink
>>>
>>> and it wouldn't be hard to turn it into
>>> # tar -xf /usr/local/jails/media/15.0-RELEASE-base.txz -C 
>>> /usr/local/jails/templates/15.0-RELEASE0-base --unlink
>>>
>>> since that's the name of the tar file without its extension. So you 
>>> might be almost there - just rename the directory, and proceed from 
>>> there.
>>>
>>> I don't know if ezjail does that thin jail setup, but something like 
>>> that is certainly worth a try.
>>>
>>> - Jamie
>>>
>>>
>>> On 2025-12-24 16:51, Graham Menhennitt wrote:
>>>> Thanks very much for replying, Jamie.
>>>>
>>>> I suspect that you're correct in saying that "files weren't 
>>>> extracted into the master directory". There is no 
>>>> directory /usr/local/jails/templates/15.0-RELEASE as you said in 
>>>> your suggestions. There is 
>>>> only /usr/local/jails/templates/15.0-RELEASE-base 
>>>> (and /usr/local/jails/templates/15.0-RELEASE-skeleton which is 
>>>> created by the later mkdir command in the instructions).
>>>>
>>>> I checked my command history and I'm fairly certain that I followed 
>>>> the instructions correctly.
>>>>
>>>> See below for the results of the "ll" commands, and the relevant 
>>>> extract from the history.
>>>>
>>>> I see that there is the "ezjail" utility. I may try using that.
>>>>
>>>> Thanks again,
>>>>
>>>>     Graham
>>>>
>>>>
>>>>
>>>> # ll /usr/local/jails/templates/
>>>> total 8
>>>> drwxr-xr-x  15 root wheel 512 23 Dec 15:30 15.0-RELEASE-base
>>>> drwxr-xr-x   8 root wheel 512 23 Dec 15:28 15.0-RELEASE-skeleton
>>>>
>>>> # ll /usr/local/jails/templates/15.0-RELEASE-base/
>>>> total 60
>>>> drwxr-xr-x   2 root wheel 1024 23 Dec 15:26 bin
>>>> drwxr-xr-x  15 root wheel 1536 23 Dec 15:26 boot
>>>> -r--r--r--   1 root wheel 6070 28 Nov 14:51 COPYRIGHT
>>>> dr-xr-xr-x   2 root wheel  512 28 Nov 14:42 dev
>>>> lrwxr-xr-x   1 root wheel   12 23 Dec 15:29 etc -> skeleton/etc
>>>> lrwxr-xr-x   1 root wheel   13 23 Dec 15:29 home -> skeleton/home
>>>> drwxr-xr-x   4 root wheel 2048 28 Nov 14:46 lib
>>>> drwxr-xr-x   3 root wheel  512 28 Nov 14:43 libexec
>>>> drwxr-xr-x   2 root wheel  512 28 Nov 14:42 media
>>>> drwxr-xr-x   2 root wheel  512 28 Nov 14:42 mnt
>>>> drwxr-xr-x   2 root wheel  512 28 Nov 14:42 net
>>>> dr-xr-xr-x   2 root wheel  512 28 Nov 14:42 proc
>>>> drwxr-xr-x   2 root wheel 2560 23 Dec 15:26 rescue
>>>> lrwxr-xr-x   1 root wheel   13 23 Dec 15:29 root -> skeleton/root
>>>> drwxr-xr-x   2 root wheel 3072 23 Dec 15:26 sbin
>>>> drwxr-xr-x   2 root wheel  512 23 Dec 15:29 skeleton
>>>> lrwxr-xr-x   1 root wheel   11 28 Nov 14:42 sys -> usr/src/sys
>>>> lrwxr-xr-x   1 root wheel   12 23 Dec 15:30 tmp -> skeleton/tmp
>>>> drwxr-xr-x  13 root wheel  512 23 Dec 15:29 usr
>>>> lrwxr-xr-x   1 root wheel   12 23 Dec 15:30 var -> skeleton/var
>>>>
>>>> # ll /usr/local/jails/templates/15.0-RELEASE-skeleton/
>>>> total 24
>>>> drwxr-xr-x  30 root wheel 2560 23 Dec 15:27 etc
>>>> drwxr-xr-x   2 root wheel  512 23 Dec 15:27 home
>>>> drwxr-x---   2 root wheel  512 23 Dec 15:28 root
>>>> drwxrwxrwt   2 root wheel  512 23 Dec 15:28 tmp
>>>> drwxr-xr-x   3 root wheel  512 23 Dec 15:27 usr
>>>> drwxr-xr-x  24 root wheel  512 23 Dec 15:28 var
>>>>
>>>> # ll /usr/local/jails/containers/vaultwarden
>>>> total 24
>>>> drwxr-xr-x  30 root wheel 2048 23 Dec 15:31 etc
>>>> drwxr-xr-x   2 root wheel  512 23 Dec 15:31 home
>>>> drwxr-x---   2 root wheel  512 23 Dec 15:31 root
>>>> drwxr-xr-t   2 root wheel  512 23 Dec 15:31 tmp
>>>> drwxr-xr-x   3 root wheel  512 23 Dec 15:31 usr
>>>> drwxr-xr-x  24 root wheel  512 23 Dec 15:31 var
>>>>
>>>> # history
>>>> ...
>>>>   441  mkdir /usr/local/jails/
>>>>   442  mkdir /usr/local/jails/{media,templates,containers}
>>>>   443  ll /usr/local/jails/
>>>>   444  vi /etc/jail.conf
>>>>   445  # mkdir /usr/local/jails/templates/15.0-RELEASE-base
>>>>   446  mkdir /usr/local/jails/templates/15.0-RELEASE-base
>>>>   447  fetch 
>>>> https://download.freebsd.org/ftp/releases/amd64/amd64/15.0-RELEASE/base.txz 
>>>> -o /usr/local/jails/media/15.0-RELEASE-base.txz
>>>>   448  tar -xf /usr/local/jails/media/15.0-RELEASE-base.txz -C 
>>>> /usr/local/jails/templates/15.0-RELEASE-base --unlink
>>>>   449  cp /etc/resolv.conf 
>>>> /usr/local/jails/templates/15.0-RELEASE-base/etc/resolv.conf
>>>>   450  cp /etc/localtime 
>>>> /usr/local/jails/templates/15.0-RELEASE-base/etc/localtime
>>>>   451  freebsd-update -b 
>>>> /usr/local/jails/templates/15.0-RELEASE-base/ fetch install
>>>>   452  mkdir /usr/local/jails/templates/15.0-RELEASE-skeleton
>>>>   453  mkdir -p /usr/local/jails/templates/15.0-RELEASE-skeleton/home
>>>>   454  mkdir -p /usr/local/jails/templates/15.0-RELEASE-skeleton/usr
>>>>   455  mv /usr/local/jails/templates/15.0-RELEASE-base/etc 
>>>> /usr/local/jails/templates/15.0-RELEASE-skeleton/etc
>>>>   456  mv /usr/local/jails/templates/15.0-RELEASE-base/usr/local 
>>>> /usr/local/jails/templates/15.0-RELEASE-skeleton/usr/local
>>>>   457  mv /usr/local/jails/templates/15.0-RELEASE-base/tmp 
>>>> /usr/local/jails/templates/15.0-RELEASE-skeleton/tmp
>>>>   458  mv /usr/local/jails/templates/15.0-RELEASE-base/var 
>>>> /usr/local/jails/templates/15.0-RELEASE-skeleton/var
>>>>   459  mv /usr/local/jails/templates/15.0-RELEASE-base/root 
>>>> /usr/local/jails/templates/15.0-RELEASE-skeleton/root
>>>>   460  cd /usr/local/jails/templates/15.0-RELEASE-base/
>>>>   461  mkdir skeleton
>>>>   462  ln -s skeleton/etc etc
>>>>   463  ln -s skeleton/home home
>>>>   464  ln -s skeleton/root root
>>>>   465  ln -s ../skeleton/usr/local usr/local
>>>>   466  ln -s skeleton/tmp tmp
>>>>   467  ln -s skeleton/var var
>>>>   468  cp -R /usr/local/jails/templates/15.0-RELEASE-skeleton 
>>>> /usr/local/jails/containers/vaultwarden
>>>>   469  mkdir -p /usr/local/jails/vaultwarden-nullfs-base
>>>>   470  vi /usr/local/jails/vaultwarden-nullfs-base.fstab
>>>>   471  service jail start vaultwarden
>>>> ...
>>>> #
>>>>
>>>> On 24/12/2025 5:52 am, James Gritton wrote:
>>>>> On 2025-12-22 21:40, Graham Menhennitt wrote:
>>>>>> Hello,
>>>>>>
>>>>>> I've recently upgraded my server from 14.3 to 15.0. Everything 
>>>>>> appeared to work successfully in the upgrade.
>>>>>>
>>>>>> I now want to create a thin jail using UFS. I've followed the 
>>>>>> handbook section 17.5 exactly except that my jail is named 
>>>>>> "vaultwarden" instead of "thinjail". Accordingly, I've replaced 
>>>>>> "thinjail" by "vaultwarden" everywhere.
>>>>>>
>>>>>> When I try to start the jail, I get an error:
>>>>>>
>>>>>> # service jail start vaultwarden
>>>>>> Starting jails: cannot start jail  "vaultwarden":
>>>>>> jail: vaultwarden: mount.devfs: 
>>>>>> /usr/local/jails/containers/vaultwarden/dev: No such file or 
>>>>>> directory
>>>>>> .
>>>>>> #
>>>>>>
>>>>>> I tried creating 
>>>>>> directory /usr/local/jails/containers/vaultwarden/dev. Then I get 
>>>>>> a different error:
>>>>>>
>>>>>> # service jail start vaultwarden
>>>>>> Starting jails: cannot start jail  "vaultwarden":
>>>>>> 1
>>>>>> jail: vaultwarden: /bin/sh /etc/rc: failed
>>>>>> .
>>>>>> #
>>>>>>
>>>>>> I'm completely new to jails. Can somebody please give me a clue 
>>>>>> on how to diagnose then problem.
>>>>>
>>>>> Considering /dev didn't exist in the jail directory, I'm guessing 
>>>>> that nothing exist there.  That leaves two possibilities: the 
>>>>> files weren't extracted into the master directory, or they weren't 
>>>>> reflected into the thin jail directory.  What it look like when 
>>>>> you run:
>>>>>
>>>>> ls -l /usr/local/jails/templates/15.0-RELEASE
>>>>> ls -l /usr/local/jails/containers/vaultwarden
>>>>>
>>>>> Both of those directories should show a root directory listing. If 
>>>>> the first one isn't there, something went wrong in downloading and 
>>>>> unpacking the base file set.  I would imagine there'd be some kind 
>>>>> of error message if that were the case. If the second one isn't 
>>>>> there, the clone didn't work.  Again, I'd expect an error message. 
>>>>> If both of them *do* show files, there's probably something wrong 
>>>>> in the jail.conf.
>>>>>
>>>>> Another command with potentially useful output is "zfs list -t 
>>>>> all".  I would expect to see a line showing the dataset named 
>>>>> zroot/jails/containers/vaultwarden at the mount point 
>>>>> /usr/local/jails/containers/vaultwarden.
>>>>>
>>>>> - Jamie
>>>>>
>>>
>