Thanks for the reply!Currently init (sources in system/core/init) is patched to load different .rc files depending on bootmode argument in kernel command line. If it detects bootmode=2 or bootmode=4 it loads init.rc and recovery.rc, otherwise it loads init.rc and init.spica.rc.
This requires init.rc to contain everything common for both boot modes (including platform specific things), init.spica.rc - specific for normal boot and recovery.rc - specific for recovery (like it is done in my initramfs-3.0 repository), so standard init.rc from Android (system/core/rootdir) cannot be used, because it doesn't contain setup exclusive for Spica and is made for normal boot only.
In normal setup, default for Android, recovery kernel has just a generic init.rc for recovery and init.whatever.rc for given platform and same goes for normal kernel, where just another variant of init.rc is included.
Also the resulting kernels are smaller, because in normal kernel the recovery doesn't have to be included and in recovery kernel some things relevant only for normal boot can be removed, like WiFi module.