Trident Beta 3: FreeBSD 11.2 chroot to Trident possible?


#1

I screwed up my package management on Trident Beta 3 so I don’t get a display manager and also no text console after boot. I also have FreeBSD 11.2 installed and thought that I could fix this problem using a chroot from FreeBSD 11.2 to Trident. So I booted it and imported “tank” to /mnt and tried a chroot to /mnt

chroot /mnt /usr/local/bin/bash

and got an error message that /usr/local/bin/bash doesn’t exist. Actually

find /mnt -name bash

shows no results. So where is it?


#2

why not install into another BE?

you’d keep youre ~/HOME directory intact


#3

Yes, that would be an option. But I’m just wondering: where are big parts of the Trident installation? There is no /bin, no /usr/bin altough I imported the whole “tank” using

zpool import -f tank -R /mnt


#4

zfs list and look at the mountpoints.
there it a tank/ROOT with mount point / but nothing for a mount point of /usr/local, so that means /usr/local is under tank/ROOT.
That is the TrueOS dataset schema at least.
You did zpool import -f tank, did you already have a tank zpool? What does ls -ltr /mnt show?
My TrueOS (I’m assuming Trident would be the same /similar) has:
zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 33.2G 188G 88K none
tank/ROOT 17.6G 188G 88K none
tank/ROOT/12.0-CURRENT-up-20180316_031802 304K 188G 5.63G /
tank/ROOT/12.0-CURRENT-up-20180325_093028 304K 188G 5.24G /
tank/ROOT/12.0-CURRENT-up-20180609_051435 17.6G 188G 5.36G /
tank/ROOT/initial 216K 188G 3.65G /mnt
tank/tmp 376K 188G 376K /tmp
tank/usr 15.6G 188G 88K none
tank/usr/home 15.6G 188G 88K /usr/home
tank/usr/home/username 15.6G 188G 15.6G /usr/home/username
tank/usr/obj 88K 188G 88K /usr/obj
tank/var 6.16M 188G 88K none
tank/var/audit 88K 188G 88K /var/audit
tank/var/log 5.78M 188G 5.78M /var/log
tank/var/mail 112K 188G 112K /var/mail
tank/var/tmp 96K 188G 96K /var/tmp

so you may need to poke around a bit more for where things are mounted. zfs list should tell you.


#5
Also, the Trident or TrueOS (FreeBSD 12 ABI) /usr/local/bin/bash isn't 
likely to run on top of the FreeBSD 11 kernel.
The OP is better off following your suggestion to install a new Trident BE
even if he manages to mount the right ZFS datasets in the right places.

John
groenveld@acm.org

#6

ZFS is still a bit confusing for me :wink:
After booting FreeBSD 11.2 and importing tank:

ls -ltr /mnt
total 21
drwxr-xr-x   2 root  wheel  512 Sep  5 19:33 mnt
drwxr-xr-x   8 root  wheel  512 Sep  5 19:33 usr
drwxr-xr-x   6 root  wheel  512 Sep  5 19:33 var
drwxrwxrwt  16 root  wheel   32 Oct  6 21:36 tmp

zfs list
NAME                                        USED  AVAIL  REFER  MOUNTPOINT
tank                                       11.0G  35.5G    88K  none
tank/ROOT                                  8.40G  35.5G    88K  none
tank/ROOT/12.0-CURRENT-up-20181006_191147  8.39G  35.5G  5.22G  /mnt
tank/ROOT/initial                          9.66M  35.5G  4.49G  /mnt/mnt
tank/tmp                                    188K  35.5G   188K  /mnt/tmp
tank/usr                                   2.56G  35.5G    88K  none
tank/usr/home                              2.55G  35.5G  2.55G  /mnt/usr/home
tank/usr/jails                               88K  35.5G    88K  /mnt/usr/jails
tank/usr/obj                                 88K  35.5G    88K  /mnt/usr/obj
tank/usr/ports                               88K  35.5G    88K  /mnt/usr/ports
tank/usr/src                                 88K  35.5G    88K  /mnt/usr/src
tank/var                                   1.18M  35.5G    88K  none
tank/var/audit                               88K  35.5G    88K  /mnt/var/audit
tank/var/log                                828K  35.5G   828K  /mnt/var/log
tank/var/mail                               112K  35.5G   112K  /mnt/var/mail
tank/var/tmp                                 96K  35.5G    96K  /mnt/var/tmp

find /mnt -name bash: no results

zpool import -f tank/usr -R /mnt/usr/                      

cannot import 'tank/usr': no such pool available                                

So I can’t import a subdirectory of a pool. But why wasn’t /bin, /usr/bin, /usr/local etc imported?


#7

Well, at least a chroot from Trident to FreeBSD 11.2 works.

The OP already chose to make a fresh install of Trident, using a backup of the home directory :wink:


#8
FreeBSD 11 binaries should just work under TrueOS and Trident
which are running on top of FreeBSD 12. Backwards but not forwards
ABI compatibility.

TrueOS/Trident recovery still needs work in the cases
where the bootloader doesn't let you select from previous
BEs.

I think that's only an issue when booting via Rod Smith's rEFInd.
I believe GRUB and BSD bootloader allow you to select a BE.
John
groenveld@acm.org

#9

I use the BSD boot loader installed by FreeBSD and updated by Trident. Well I still have to learn about using BEs efficiently.


#10

On my sample of 1 UEFI system (dedicated TrueOS install), rEFI allows you to select what “next loader” to run. On this system, it goes to the FreeBSD bootloader that allows you to select BEs.


#11
Indeed.

Confirmed using VirtualBox guest with EFI emulation enabled.

Also confirmed on real hardware, though I had to add this setting 
to /boot/loader.conf.local for the BSD Loader to display on screen:
hw.vga.textmode="0"

John
groenveld@acm.org