Re: FreeBSD, boot environments and /dev
- In reply to: Wes Maag : "Re: FreeBSD, boot environments and /dev"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 07 May 2022 15:32:37 UTC
Hi Wes, finally I get round to responding (below) ... On Fri, May 6, 2022 at 12:15 AM Wes Maag <jwmaag@gmail.com> wrote: > > > > 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. as I wrote, I *thought* that worked automatically ... apparently not. > 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. (after beadm create and beadm mount): $ zfs list -tall [...] tank/ROOT/BE_20220507_171901_adm 184K 397G 17.9G / tank/ROOT/BE_20220507_171901_adm/ports 8K 397G 1.92G /usr/ports tank/ROOT/BE_20220507_171901_adm/src 8K 397G 2.57G /usr/src $ mount | grep dev devfs on /dev (devfs) /dev/nvd0p1 on /boot/efi (msdosfs, local) devfs on /compat/linux/dev (devfs) fdescfs on /compat/linux/dev/fd (fdescfs) tmpfs on /compat/linux/dev/shm (tmpfs, local) $ cat /etc/fstab # Device Mountpoint FStype Options Dump Pass# /dev/nvd0p1 /boot/efi msdosfs rw 2 2 /dev/nvd0p3 none swap sw 0 0 proc /proc procfs rw 0 0 > 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 good point ... until now, "pkg -c" worked as expected, I never looked further ;-) I'll keep it in mind! I expected (perhaps naively) that with -c, pkg would be using the "new" stuff I'd installed in the previous step (see below), not the currently running bits ... Any thoughts on that? One more data point, perhaps that's relevant: I've been updating these BEs using a sequence of installing freshly built current into /mnt (using "DESTDIR=/mnt"), following by a few ports (drm-devel, primarily), and then doing pkg update/upgrade. thx Michael -- Michael Schuster http://recursiveramblings.wordpress.com/ recursion, n: see 'recursion'