Here\'s a basic dual-boot \"theory of operation\" if it helps.
The first thing that the kernel loads up is /sbin/init. Now, init can behave in different ways depending on how it\'s called. If it is the first program that is run, then it will have process id 1. In this case, it can be called with or without arguments (without means that it will use the default runlevel as specified in /etc/inittab). If it is run after the system is booted up, then it will have a PID of greater than 1, in which case it will require a command line argument (which is the run level to switch to).
So, for the dualboot setup, the replacement /sbin/init is initally loaded up, and has PID 1. It then does some stuff (i.e., mount the sd card and inspect it), and depending on what it decides it will transfer control to another copy of init (either internal, or the one on the card). But for new init to function properly in it\'s primary roll, it will need to have PID 1. Therefore, the first init script uses the \"exec\" call when it transfers control to another init so it can maintain PID 1. Otherwise the called init will behave differently (i.e., give you the \"usage...\" message).
So, to get this whole technique working on you C series, you need to make sure that (via using an \"exec\" call at each level) the final copy of init that\'s called has PID 1.
Hope this helps.
--derek