Re: FreeBSD, boot environments and /dev

From: Wes Maag <jwmaag_at_gmail.com>
Date: Thu, 05 May 2022 22:21:00 UTC
On Thu, May 5, 2022 at 4:10 PM Michael Schuster <michaelsprivate@gmail.com>
wrote:

> Hi all,
>
> while still working (slowly) on an answer to my own question on the
> right workflow to keep current up to date reliably with boot
> environments, I noticed that after creating and mounting a new BE,
> that new BE's /dev (eg /mnt/dev) is very sparsely populated:
>
> [22:44:45: ~ 0] $ ll /mnt/dev
> total 20
> 9 dr-xr-xr-x   4 root  wheel   7 Apr 18 00:35 .
> 9 drwxr-xr-x  23 root  wheel  30 May  5 22:44 ..
> 1 drwxr-xr-x   2 root  wheel   2 Apr 18 00:35 fd
> 1 lrwxr-xr-x   1 root  wheel  12 Apr 17 20:41 log -> /var/run/log
> 1 -rw-r--r--   1 root  wheel  63 May  3 22:19 null
> 1 -rw-r--r--   1 root  wheel   1 May  3 22:18 null.bak
> 1 drwxr-xr-x   2 root  wheel   2 Apr 18 00:35 shm
> [22:44:48: ~ 0] $
>
> (no matter whether I use "beadm create" or "bectl create -r")
>
> I can then mount devfs:
> # mount -t devfs devfs /mnt/dev
>
> and it will look (and work) as expected (eg for "pkg -c /mnt update"
> (*)) ... as long as the BE is mounted.
> When I try to boot from (into?) that BE though, it fails, and on the
> console I can see messages about missing /dev/... entries. I sneaked a
> peek into beinstall.sh, found no inspiration there, I'm afraid.
>
> I believe I noticed this apparent requirement to mount devfs
> separately not so long ago ... definitely this year, while I've been
> experimenting with boot environments for quite a bit longer. Was I
> just lucky all along, or did something change ... and, more
> importantly, how do I make my boot environments bootable again?
>
> TIA for hints, pointers, advice
> Michael
>
> *) I first noticed something was amiss when "pkg -c /mnt ... "
> complained about /dev/null missing, IIRC ...
> --
> Michael Schuster
> http://recursiveramblings.wordpress.com/
> recursion, n: see 'recursion'
>
>
getting /dev/null errors with pkg -c makes sense. I wouldn't expect /dev to
contain anything after a create.

Why it is not populated on boot seems odd to me though... It's possible, if
you created a deep boot environment, you created a pool/ROOT/dev dataset
and it is overwriting the initial /dev from boot (I have not tested this
theory). Tough to say without more information about the BE layout, and
maybe a look at fstab.

FWIW I typically run "pkg -r /tmp/be_mount.XXXX" after mounting with "bectl
mount" which should give you the same effect as -c without the rooted devfs
requirement

--
Wes