Booting a virtual host is little different from a desktop or server host. Booting an embedded system almost always requires the use of device-specific boot methods, various types of bootloaders that tend not to be x86 desktop/server friendly, and often use memory technology not found on fully equipped systems. You might get a little closer to the target if you use virtualization such as qemu
. Still, you won't be able to make your system actually do
much, which is really the essence of embedded systems.
It is probably quite instructive to figure out how to compose a very lean root filesystem, either from scratch, or based on some existing package. Use a target size of less than 20 MB for the filesystem, and let it run from RAM. Figure out how to minimize boot times; targeting less than 5 seconds to application launch.
Figure out how a bootloader works, and the role it plays with launching the kernel. Learn how to customize the bootloader configuration to optimize the functions of your system, and to configure the system pre-boot or diagnose pre-boot problems.
Learn how to create and use a cross toolchain to permit optimal use of a powerful build host, while minimizing resource usage of the target host. This is also good practice for the purpose of code management, revision control, and team oriented software development. Learn how debuggers work, especially remote debugging of target hosts.