FreeBSD on Marvell Kirkwood systems

Support policies

Support for all the below is done on a volunteer basis. This port is considered mature at this time. Little new support has been added to this port. It may be removed if it falls below critical mass. It will be included in the 12.0 release, however.

Supported Boards

This port has been tested on the Dreamplug. It's believed to support the Pogoplug, Sheevaplug and Guruplug as well.

The Kirkwood boot process

Most Kirkwood systems use U-Boot as the boot program. This page documents that process.

U-Boot layout

Recent versions of U-Boot are split into a small first-stage loader called SPL and a main boot program. The following table shows SD Card layout expected by system ROM: (note: this is a lie: it's blatantly copied from Allwinner and is likely wrong)

SD Card layout






Partition table



Initial SPL loader









Free for partitions

Old blog post about how to boot the dreamplug from SD

U-boot ports

The main U-Boot program can be configured with many different options for loading a kernel from SD card, USB drives, SATA drives, or the network. When booting FreeBSD the usual process is to have U-Boot start ubldr (a version of loader(8) tailored for use with U-Boot), and ubldr loads and starts the kernel.

/!\ To use ubldr, U-Boot must be configured with the CONFIG_API option.

Recently the customized versions of U-Boot have been turned into FreeBSD ports and packages. For instance, you can simply enter pkg install u-boot-dreamplug, and all the files you will need to get U-Boot onto an SD card are installed for you in /usr/local/share/u-boot, including a README file that tells you how to install the file(s) onto the SD card.

The following U-Boot ports and packages will be available for Kirkwood systems pending

Technical note: these are all slave ports of sysutils/u-boot-master with some predefined variables.

arm/Kirkwood (last edited 2020-10-25T04:42:08+0000 by SashaVigole)