Fairly minimal sdcard content for booting kernel and world on an RPI2 V1.1 from a USB SSD instead of from the sdcard

Mark Millard markmi at dsl-only.net
Fri Dec 15 09:21:17 UTC 2017


For the following the sdcard can be removed
after the kernel starts to load from the
USB drive (in my context a USB SSD stick).

From gpart show (sdcard plugged in someplace
else via USB):

=>      63  62521281    da4  MBR  (30G)
        63    102375  da4s1  !12  [active]  (50M)
    102438  56623098  da4s2  freebsd  (27G)
  56725536   5795808         - free -  (2.8G)

=>       0  56623098   da4s2  BSD  (27G)
         0        90          - free -  (45K)
        90  56623008  da4s2a  freebsd-ufs  (27G)

(I did not bother to shrink the ufs partition on s2a
or s2 itself. But little space is needed.)

For /media being where I mounted s1
in order to show it:

# du -Asm /media/*
1       /media/BOOTCODE.BIN
1       /media/CONFIG.TXT
1       /media/FIXUP.DAT
1       /media/FIXUP_CD.DAT
1       /media/FIXUP_X.DAT
1       /media/LICENCE.broadcom
1       /media/README
3       /media/START.ELF
1       /media/START_CD.ELF
4       /media/START_X.ELF
1       /media/U-BOOT.BIN
1       /media/fixup_db.dat
5       /media/start_db.elf
1       /media/ubldr.bin

So. . .
Ports based:
sysutils/rpi-firmware content
sysutils/u-boot-rpi2 content

installworld copy based:
boot/ubldr.bin copy

# du -Asm /usr/local/share/rpi-firmware /usr/local/share/u-boot/u-boot-rpi2
12      /usr/local/share/rpi-firmware
1       /usr/local/share/u-boot/u-boot-rpi2

(I do not repeat the port instructions here.)

For /mnt being where I mounted s2a
in order to show it:

# du -Asm /mnt/*/*
1       /mnt/boot/beastie.4th
1       /mnt/boot/boot1.efi
1       /mnt/boot/boot1.efifat
1       /mnt/boot/brand-fbsd.4th
1       /mnt/boot/brand.4th
1       /mnt/boot/check-password.4th
1       /mnt/boot/color.4th
1       /mnt/boot/defaults
1       /mnt/boot/delay.4th
3       /mnt/boot/dtb
1       /mnt/boot/efi.4th
1       /mnt/boot/entropy
1       /mnt/boot/firmware
1       /mnt/boot/frames.4th
1       /mnt/boot/loader.4th
1       /mnt/boot/loader.conf
1       /mnt/boot/loader.efi
1       /mnt/boot/loader.help
1       /mnt/boot/loader.rc
1       /mnt/boot/logo-beastie.4th
1       /mnt/boot/logo-beastiebw.4th
1       /mnt/boot/logo-fbsdbw.4th
1       /mnt/boot/logo-orb.4th
1       /mnt/boot/logo-orbbw.4th
1       /mnt/boot/menu-commands.4th
1       /mnt/boot/menu.4th
1       /mnt/boot/menu.rc
1       /mnt/boot/menu.rc.sample
1       /mnt/boot/menusets.4th
1       /mnt/boot/modules
1       /mnt/boot/msdos
1       /mnt/boot/pcibios.4th
1       /mnt/boot/screen.4th
1       /mnt/boot/shortcuts.4th
1       /mnt/boot/support.4th
1       /mnt/boot/ubldr
1       /mnt/boot/ubldr.bin
1       /mnt/boot/version.4th
1       /mnt/boot/zfs
1       /mnt/etc/fstab

(I'll not list all the dtb files in the
dtb directory.)

# df -m /mnt
Filesystem  1M-blocks Used Avail Capacity  Mounted on
/dev/da4s2a     26763    5 24617     0%    /mnt

(So not much space needed.)

# more /mnt/etc/fstab
/dev/da0p1      /               ufs     rw,noatime      1 1
/dev/da0p2      none            swap    sw              0 0

fstab used notation for the root file system
that ubldr.bin could interpret on its own.

Of course, for the /dev/da0p1 and /dev/da0p2
notation for the USB SSD, it can be important
that other USB drives not be plugged in yet
or the paths needed might be different.

As for populating boot/ above:

Having done an installkernel and installworld locally
in order to copy selectively to the sdcard's s2a UFS
partition:

# du -Asm /usr/obj/DESTDIRs/clang-armv7-installworld/boot/* /usr/obj/DESTDIRs/clang-armv7-installkernel/boot/dtb | more
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/beastie.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/boot1.efi
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/boot1.efifat
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/brand-fbsd.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/brand.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/check-password.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/color.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/defaults
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/delay.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/dtb
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/efi.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/firmware
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/frames.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/kernel
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/loader.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/loader.efi
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/loader.help
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/loader.rc
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/logo-beastie.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/logo-beastiebw.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/logo-fbsdbw.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/logo-orb.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/logo-orbbw.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/menu-commands.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/menu.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/menu.rc
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/menusets.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/modules
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/pcibios.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/screen.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/shortcuts.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/support.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/ubldr
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/ubldr.bin
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/version.4th
1       /usr/obj/DESTDIRs/clang-armv7-installworld/boot/zfs
3       /usr/obj/DESTDIRs/clang-armv7-installkernel/boot/dtb

Copy (my paths are just examples):

cp -ax /usr/obj/DESTDIRs/clang-armv7-installworld/boot /mnt/
cp -ax /usr/obj/DESTDIRs/clang-armv7-installkernel/boot/dtb /mnt/boot/

(Updates may mean cleaning out older directory/file names.)
(A more selective copy should be possible but gets into
tracking potential changes in what files are required more
carefully.)

[For UFS the mounts presume endian matching, here little endian.]

[In my context, the USB SSD stick is on a powered hub that is
plugged into the RPI2-B V1.1 .]

===
Mark Millard
markmi at dsl-only.net



More information about the freebsd-arm mailing list