We have already discussed what the important steps to take are when planning to migrate to an Embedded Linux system. Once you have gone through the process of deliberating over which Linux distribution to use, what hardware etc. and decided on the things and tools that you need, comes the next step – actually building the Embedded Linux system. Again, there is a lot of similarity between a traditional Linux and an Embedded Linux system. People who have been using Linux for many years and are well-versed with the process of building a Linux system from scratch will have little trouble migrating to Embedded Linux. As things stand today most Embedded Linux systems will need to be built piece by piece (i.e. no Anaconda-type suite).
At a high level the most important pieces are the boot-loader, followed by a Linux Kernel and a Linux file system. These are pretty much the things that are absolutely necessary for any operating system (boot-loader, kernel, file system). For day to day functioning other things such as a shell, libraries etc. will also be necessary. We look at this process step by step:
0. Getting everything together: Before beginning make sure that you have figured out all the dependencies that exist (other packages, libraries that you might need during installation). An Embedded Linux distribution may carry all necessary dependencies along with it, and an existing Linux distribution may have the required files available locally, or they can be downloaded through a package manager. The key being that you have figured this out before you begin the installation process and have already downloaded/copied the files that you need.
1. Boot-loader: It is not necessary to have a boot-loader installed, but it is always a good idea to have one as it enables you to have flexibility. You may re-build your kernel, and may need to switch between the different versions of the kernel and a boot-loader will help you do so.
2. File system: Before installing a Linux Kernel it is necessary to have space where the Linux kernel (and the rest of the Linux system) can reside. Building a file system consists first of partitioning the hard disk according to your requirements and then populating the file system.
3. Kernel: The task of the kernel is to run a hardware check and then mount the /root directory. The init process is executed from the /root partition and it is the parent process which then loads the rest of the Linux system. To install the kernel therefore it is necessary to install the kernel, the init process (an executable file on disk) and inittab, a file which links to other files that are necessary for setting up the system.
4. Login module: Once the main pieces of the Linux OS have been installed it’s a good idea to install a Login module that will allow you to administer who gets to use the system.
5. Shell: A shell makes it easy for you or someone else who is the typical user for the system to communicate with the OS, and get useful work done.
6. Libraries: Finally, you need to install all the libraries that you are likely to need. When installing a compiler you may get a set of libraries bundled with it. Nevertheless, because of space constraints you need to pick and choose what you actually need. Part of this decision making needs to have already been done during the planning, and deciding the dependencies stage.
7. Additional packages: Now you have everything that is necessary to maintain and operate the Embedded Linux system. If space permits, it makes sense to install additional packages and utilities that you may need (networking, backing-up utilities etc.). If you are not planning on rebuilding your Kernel then it may make sense to delete things that you don’t need, but beware of those dependencies before you do so.