Buildroot

Buildroot provides an easy way to build a complete system from scratch. François Dugast has put together on his Github page some Buildroot configurations and patches for STM32 which allow building a toolchain, U-Boot, a Linux kernel, a Busybox-based user space and OpenOCD for flashing:

Kernel/Bootloader Toolchain

Baremetal Toolchain

Userspace uClibc Toolchain

OSELAS Toolchain

Alternative Toolchains

Buildroot

Alternatively you can use Kamil Lulko's Buildroot fork which generates a uClibc toolchain.

The fork also builds a Kernel and U-boot; however, since many STM32 boards are low on resources some prefer to use AFBoot-STM32 (see below) to save space. In which case it's better to build Kernel, Bootloader and Buildroot as separate entities.

Bootloaders

AFBoot-STM32

AFBoot-STM32 has been developed by Andreas Färber and is available on his GitHub page.

The main advantage of this bootloader is its size (less than 2KB). Indeed, the STM32F429 only has 2MB internal flash for Bootloader, Kernel, Rootfs and DTB.

A fork compatible with mainline Kernel (from v4.2-rc1) is available here.