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
Sat Dec 16 03:18:44 UTC 2017


[The sdcard does not need the *.dtb files
in the UFS file system's boot/dtb/ .]

On 2017-Dec-15, at 1:21 AM, Mark Millard <markmi at dsl-only.net> wrote:

> 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.)

The dtb files are not needed.

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

So, less space used in the UFS file system:

# df -m /mnt
Filesystem  1M-blocks  Used  Avail Capacity  Mounted on
/dev/da4s2a     26763     2  24619     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

/usr/obj/DESTDIRs/clang-armv7-installkernel/boot/dtb does not
need to be copied to the sdcard's UFS file system. So, imagine
it was not listed above.

> Copy (my paths are just examples):
> 
> cp -ax /usr/obj/DESTDIRs/clang-armv7-installworld/boot /mnt/

Only the above copy is needed, not the below one.

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

So, both dtb/ and kernel/ can be empty on the sdcard's
file system.

> (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