With growing single board computers aka hackerboards there is a never before demand for creating a working Linux OS. A complete Linux OS consists of Linux kernel and a Root filesystem. The Linux kernel is available from kernel.org which is called vanilla kernel, apart from that the hardware manufacturer release their own kernel. The next part is the root filesystem. The kernel boots and finds root partition and mounts it then it execute init process. This init process is the parent process and depending on the rootfs/distribution/os whatever we call it, takes its shape. There are plenty of ways to build this root filesystem and I will list them below.

Readymade rootfs:

This solution is quick and easy solution. All you have to do is just download the rootfs image from the respective website and install on your sd card or flash as per boards instruction.

Debian rootfs – www.armbian.com

Ubuntu and Debian – http://www.armhf.com/download/

Alpine Linux – https://alpinelinux.org/downloads/

Arch Linux – https://archlinuxarm.org/about/downloads

Diet Debian – http://www.dietpi.com/

Rootfs Builder:

In general a Rootfs builder is a software that downloads either the source and compile locally or the binary and extract to the image. There are many types of rootfs builder

Buildroot: https://buildroot.uclibc.org/

Buildroot is a set of Makefiles and patches that simplifies and automates the process of building a complete and bootable Linux environment for an embedded system, while using cross-compilation to allow building for multiple target platforms on a single Linux-based development system.

Source: https://en.wikipedia.org/wiki/Buildroot

OpenEmbedded: http://www.openembedded.org/wiki/Main_Page

OpenEmbedded is a software framework used for creating Linux distributions aimed for, but not restricted to, embedded devices. The build system is based on BitBake recipes,[2] which behave like Gentoo Linux ebuilds.

Source: https://en.wikipedia.org/wiki/OpenEmbedded

Yocto: https://www.yoctoproject.org/

The Yocto Project is a Linux Foundation workgroup whose goal is to produce tools and processes that will enable the creation of Linux distributions for embedded software that are independent of the underlying architecture of the embedded software itself. The project was announced by the Linux Foundation in 2010.The project aligned itself with OpenEmbedded, an existing framework with similar goals, with the result being The OpenEmbedded-Core Project.

Source: https://en.wikipedia.org/wiki/Yocto_Project

Elbe: https://elbe-rfs.org/

The Embedded Linux Build Environment (elbe) is a system to generate Debian root-filesystems for embedded devices.

ElDK: https://www.denx.de/wiki/ELDK-5/WebHome

The Embedded Linux Development Kit (ELDK) includes the GNU cross development tools, such as the compilers, binutils, gdb, etc., and a number of pre-built target tools and libraries necessary to provide some functionality on the target system.

OpenWRT: https://www.openwrt.org/

OpenWrt is an embedded operating system based on Linux, primarily used on embedded devices to route network traffic. The main components are Linux, util-linux, uClibc or musl, and BusyBox. All components have been optimized for size, to be small enough for fitting into the limited storage and memory available in home routers.

Source: https://en.wikipedia.org/wiki/OpenWrt

LEDE: https://lede-project.org

The Linux Embedded Development Environment (LEDE) project is founded as a fork of the OpenWrt project and shares many of the same goals.

Source: https://en.wikipedia.org/wiki/LEDE

This is just a collection and there can be many more in the list, if you find this interesting or if you know any software which I missed or any feedback or comment then feel free to comment below.