Beagleboard:U-boot partitioning layout 2.0
Goal: to create a more distro friendly default bootloader installed on the BeagleBone Black eMMC.
Based on: https://wiki.linaro.org/Platform/DeviceTreeConsolidation
Starting with u-boot: v2014.07/v2014.10/v2015.01 this will be default:
BeagleBone/BeagleBone Black:
BeagleBoard:
PandaBoard:
omap5_uevm:
Contents
Partition layout
Boot Partition (omap3)
Usually Partition 1, for bootrom's that can only read fat partitions.
xMb fat16 (unmounted usually shared as a usb gadget) /MLO (MLO might be hidden) /u-boot.img (u-boot.img might be thrown into ext4) /uEnv.txt (priority 1) (Optional) /boot.scr (priority 2) (Optional, For: debian-installer: flash-kernel) /boot/boot.scr (priority 3) (Optional, For: debian-installer: flash-kernel)
Boot Partition (omap4+ (am335x))
MLO/u-boot: dd'ed to drive:
dd if=MLO of=/dev/sdX count=1 seek=1 conv=notrunc bs=128k dd if=u-boot.img of=/dev/sdX count=2 seek=1 conv=notrunc bs=384k
Boot:
xMb fat16/ext2 (unmounted usually shared as a usb gadget) /uEnv.txt (priority 1) (Optional) /boot.scr (priority 2) (Optional, For: debian-installer: flash-kernel) /boot/boot.scr (priority 3) (Optional, For: debian-installer: flash-kernel)
Rootfs Partition
This can be partition 1 -> 7
rootfs: / (ext2/ext3/ext4) (btrfs supported in u-boot v2018.03+ (with both compression options)) /boot/uEnv.txt (priority 4) /boot/vmlinuz-$(uname -r) /boot/initrd.img-$(uname -r) (optional, but needed for uuid cases) /boot/dtbs/$(uname -r)/*.dtb (or one of the 7 locations below)
u-boot dtb search order
(1) Mainline: /boot/dtbs/$(uname -r)/*.dtb (2) Debian: /usr/lib/linux-image-$(uname -r)/*.dtb (3) Ubuntu: /lib/firmware/$(uname -r)/device-tree/*.dtb (4) Fedora: /boot/dtb-$(uname -r)/*.dtb (5) archlinux: /boot/dtbs/*.dtb (6) openSUSE: /boot/dtb/*.dtb (7) OpenEmbedded: /boot/*.dtb
uEnv.txt Boot Partition /uEnv.txt
set "uenvcmd" and you have full control
nfs support
https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt
set "client_ip" and nfsboot will be ran
Other Defaults:
server_ip=192.168.1.100 gw_ip=192.168.1.1 netmask=255.255.255.0 hostname= device=eth0 autoconf=off root_dir=/home/userid/targetNFS nfs_options=,vers=3 nfsrootfstype=ext4 rootwait fixrtc
uEnv.txt Rootfs Partition /boot/uEnv.txt
Simple:
uname_r = $(uname -r)
Optional:
dtb = force "other" *.dtb file (Just the file name "device.dtb" no path...) cmdline = stuff passed to command line "quiet" uuid = (needs initrd.img-$(uname -r) in most cases) rootfstype = default(ext4) optargs = default(blank)
Kernel Updates
When installing kernel updates, /etc/kernel/postinst.d/zz-uenv_txt will update /boot/uEnv.txt
https://github.com/RobertCNelson/omap-image-builder/blob/master/target/other/zz-uenv_txt
Example:
sudo apt-get install linux-image-3.8.13-bone60 <...> Setting up linux-image-3.8.13-bone60 (1wheezy) ... update-initramfs: Generating /boot/initrd.img-3.8.13-bone60 zz-uenv_txt: Updating /boot/uEnv.txt [uname_r=3.8.13-bone60]