System initialization is yet another particularity of Unix systems. As explained in Chapter 2, the kernel's last initialization action is to start the init program. This program is in charge of finalizing system startup by spawning various applications and starting some key software components. In most Linux systems, init mimics System V init and is configured much the same way. In embedded Linux systems, the flexibility of System V init is overkill since such systems are rarely run as multiuser systems.
There is no actual requirement for you to
have a standard init program, such as System V
init, on your root filesystem. The kernel itself
doesn't really care. All it needs is an application
it can start once it's done initializing the system.
For instance, you can add an
boot parameter to tell the kernel to use your
init, which could be your main application.
There are, however, drawbacks to this approach, since your
application will be the one and only application the kernel ever
starts. Your application would then be responsible for starting other
applications on the system. Furthermore, if your application
unexpectedly dies, its exit will cause a kernel panic followed by a
system reboot; as would an unexpected exit of System V
init. Though this may be the desired behavior in
some cases, in most cases, the system is most likely rendered
useless. For these reasons, it is usually much safer and useful to
actually have a real init ...