On 2017-Dec-19, at 1:49 PM, Warner Losh <imp at bsdimp.com> wrote: > > > On Dec 19, 2017 10:58 AM, "Mark Millard" <markmi at dsl-only.net> wrote: >> On 2017-Dec-18, at 2:37 PM, Warner Losh <imp at bsdimp.com> wrote: >> >> > . . . >> > >> > Or the following pseudo-code with all the weird special cases removed for >> > clarity >> > >> > load loader.efi from ESP >> > if BootXXXX uefi variable holds a second path, use that for root/kernel >> > otherwise if an override variable holds a kernel/root path, use that >> > otherwise scan for a usable ZFS pool, use that if it exists >> > otherwise use the same partition loader.efi was booted from for >> > root/kernel if it's usable >> > otherwise use the first UFS partition on the ESP that's usable. >> > >> > A partition is usable if /boot/loader.rc exists on that path. >> >> What will be the role of /etc/fstab in establishing >> were the kernel is loaded from? Where world is >> loaded from? Where/how does use of /etc/fstab for >> specifying the root file system mount fit in the >> above pseudo-code? > > Same as today: it is what the boot loader passes to the kernel as the Unix > name of /. I have no plans to change that. It's of almost no use to the boot > loader, since it can't know what BIOS device da3 is, for example, if that's > in fstab. Or even more complex examples like /dev/mirror/primary. Efibootmgr > can take Unix devices and paths and turn them into UEFI paths so we know what > devices to use for what. In the absence of those, or an equivalent fallback, > we are quite limited in what we can do since we don't have the context needed > to translate. > > Warner
Okay. It sounds different then the results I get with ubldr.bin on a rpi2 V1.1 . With the usdcard having a UFS / with basically only: /etc/fstab (redirecting to a USB SSD stick) /boot/* (with /boot/kernel/ empty and /boot/dtb/ empty) the result is that all 3 of the following come from the USB SSD stick based on the "/" line from the /etc/fstab from the usdcard: /boot/kernel /boot/dtb/bcm2836-rpi-2-b.dtb / (mounted root file system) In other words: it appears that for ubldr.bin on a rpi2 V1.1 /etc/fstab is read and used before finding the kernel that is to be loaded. (It or another /etc/fstab may be read again later.) /usr/src/stand/common/boot.c does show an explicit attempt to find a /etc/fstab: # grep -r /etc/fstab /usr/src/stand/ . . . /usr/src/stand/common/boot.c: * Try to find the /etc/fstab file on the filesystem (rootdev), /usr/src/stand/common/boot.c: sprintf(lbuf, "%s/etc/fstab", rootdev); . . . That is from getrootmount(char *rootdev): int getrootmount(char *rootdev) { char lbuf[128], *cp, *ep, *dev, *fstyp, *options; int fd, error; if (getenv("vfs.root.mountfrom") != NULL) return(0); error = 1; sprintf(lbuf, "%s/etc/fstab", rootdev); if ((fd = open(lbuf, O_RDONLY)) < 0) goto notfound; . . . Supporting detail for the example rpi2 boot context: With /mnt being the / from the usdcard: # find /mnt -print | more /mnt /mnt/.snap /mnt/boot /mnt/boot/defaults /mnt/boot/defaults/loader.conf /mnt/boot/dtb /mnt/boot/firmware /mnt/boot/kernel /mnt/boot/modules /mnt/boot/zfs /mnt/boot/msdos /mnt/boot/entropy /mnt/boot/menu.rc.sample /mnt/boot/ubldr /mnt/boot/ubldr.bin /mnt/boot/brand-fbsd.4th /mnt/boot/logo-beastie.4th /mnt/boot/logo-beastiebw.4th /mnt/boot/logo-fbsdbw.4th /mnt/boot/logo-orb.4th /mnt/boot/logo-orbbw.4th /mnt/boot/loader.conf /mnt/boot/loader.efi /mnt/boot/boot1.efi /mnt/boot/boot1.efifat /mnt/boot/beastie.4th /mnt/boot/brand.4th /mnt/boot/color.4th /mnt/boot/check-password.4th /mnt/boot/delay.4th /mnt/boot/frames.4th /mnt/boot/loader.4th /mnt/boot/loader.help /mnt/boot/menu.4th /mnt/boot/menu-commands.4th /mnt/boot/menusets.4th /mnt/boot/screen.4th /mnt/boot/shortcuts.4th /mnt/boot/support.4th /mnt/boot/version.4th /mnt/boot/loader.rc /mnt/boot/efi.4th /mnt/boot/pcibios.4th /mnt/boot/menu.rc /mnt/etc /mnt/etc/fstab /mnt/COPYRIGHT /mnt/lost+found # more /mnt/etc/fstab /dev/da0p1 / ufs rw,noatime 1 1 /dev/da0p2 none swap sw 0 0 May be this is somehow special to the rpi2 or to ubldr.bin operation. (I've never managed to identify accidents from deliberately working status in this area.) >> (For my particular interest the context uses UFS, not >> ZFS.) >> >> > What is being deleted is one final step: "otherwise use the first UFS >> > partition on any drive in a random order that's usable." which used to be >> > at the end of the boot1.efi psuedo code. It's my belief that no such >> > installations actually use this due to the random factor today (plug in a >> > new USB drive and it might take over). If my belief is wrong, it's my >> > belief that efibootmgr will solve it, and failing that, the fallback >> > mechanism (for platforms that use u-boot + EFI where UEFI variables don't >> > work) will allow the two or three people that are doing this today. >> > === Mark Millard markmi at dsl-only.net _______________________________________________ freebsd-current@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"