Building Linux (uClinux)
This application note explains how to build a bootable Linux image (rootfs.uImage
). A bootable Linux image can be booted to the target via TFTP (refer to https://voxelbotics.atlassian.net/wiki/spaces/DOC/pages/302088273 ).
Linux images are built on the cross-development host. Make sure that you activate the cross development environment as described in https://voxelbotics.atlassian.net/wiki/spaces/DOC/pages/303169537 .
In the Emcraft software distribution, Linux images are built from "project" directories. A project defines a concrete Linux configuration ready for installation to the target. Each project is defined by the following files:
${MCU}_defconfig
- kernel configuration for the project;<project>.dts.${MCU}
- kernel configuration for the project;<project>.busybox
-busybox
configuration for the project;<project>.initrams
- spec file for the project root filesystem (initramfs
).
When you run make from the project directory (for instance, from projects/rootfs
), the build system builds project-specific versions of the Linux kernel and busybox
, then creates an initramfs filesystem containing the newly built busybox binary as well as other target files defined by the initramfs
filesystem specification file, and finally wraps it all up into a single Linux image (rootfs.uImage
) ready for download to the target.
To sum it up, to build a Linux project do the following:
Activate the cross development environment:
-bash-3.2$ . ./ACTIVATE.sh
Change to the project directory, for instance:
-bash-3.2$ cd projects/rootfs
Run
make
:-bash-3.2$ make
The make
will create the project rootfs.uImage
ready for load to the target.