When you want to build a Linux system for an embedded target these days, it is very unlikely that you decide to do it from scratch.
Embedded Linux build systems are really smart and efficients, and will fit almost all use cases: should you need only a simple system, buildroot should be your first choice, and if you want to include more advanced features, or even create a full distribution, Yocto is the way to go.
That said, even if these tools will do all the heavy-lifting for you, they are not perfect, and if you are using less common configurations, you may stumble upon issues that were not expected. In that case, it may be important to understand what happens behind the scenes.
In this post, I will describe step-by-step how you can build a minimal Linux system for an embedded target and boot it using QEMU.