I'm using an omap3evm board together with the rowboat gingerbread stack. As I read somewhere that rowboat does not support the standard recovery mechanism, I wanted to implement a recovery solution launched from the ramdisk.
At first, boot is done from SD-card. So I have a u-boot.bin, uImage as kernel and now also created a ramdisk called uInitrd.I've created that by the " ./mkimage -A arm -O linux -T ramdisk -d ramdisk.img ..." command. In u-boot, I've loaded both uImage and uInitrd which seems to be ok. So kernel boots up and start the init process from the ramdisk. This seems all working fine. The standard android ramdisk does not contain much, but it contains adb in the sbin directory and also this seems to launch correctly.
To make things easier I wanted to add the shell to the ramdisk, which would make things easier for development. And this is where it goes wrong.I copied sh to the ramdisk from the android_rootfs folder in the out/target/product/[product_name] and added the following lines to the init.rc:
service console /system/bin/sh
console
When I now boot up, it will launch still the adb but the shell will not be started. Instead it gives the following error:
init: cannot execve('/system/bin/sh'): No such file or directory
This apparently means that the sh binary exist on /system/bin/ (otherwise it should say: init: cannot find '/system/bin/sh') but it looks it cannot start it properly.
Any ideas what could be the issue?