[HOW TO?] Install and run 2nd-init for defy

demolition23

Senior Member
Dec 15, 2009
577
79
0
Oiniades
Original post HERE from r2beta0

DANGER!!! Its NOT for Defy! Needs to mobify the 2nd-init first
Hopping some devs to fix it for Defy!

Credit for koush for Droid2 Bootstrap
Credit for edgardcastro for sharing lots of information about 2nd-boot on Milestone1
Credit for Skrilax_CZ for 2nd-init and sh hijack

WARNING: Use this ONLY if you know exactly what you are doing. This guide will make major changes in the /system partition and may turn the phone inoperative. I won’t hold responsibility if you brick your phone or to any damages it may cause.


Pre-requisites: A computer with Android SDK and ADB drivers installed and working. It’s recommended to have RSD Lite 4.9 and the appropriate SBF image just in case anything goes wrong.

This guide was made using a Brazilian Motorola Milestone2 based on Brazil Retail SBF and a computer running Windows Vista 32-bits. I started it from the scratch by flashing my phone with RSD Lite 4.9 and performing a full data/cache wipe, just to make sure any changes were discarded.

Note: Commands that should be entered in command prompt will be listed as: “C:\> <command>”. Commands issued to ADB Shell will be listed as: “# <command>”.


1. Enable USB Debugging on your phone;
2. Get permanent root. I used the app z4root which can be found here on XDA;
3. Install Droid2 Bootstrap. It may be downloaded from Market to support the developer. More info here http://www.koushikdutta.com/2010/08/droid-x-recovery.html;
4. Open Droid2 Bootstrap and click “Bootstrap Recovery”;
5. Use bootstrap to reboot into Clockwork Recovery and backup your phone;
6. Reboot;
7. C:\> adb remount
8. # stop
9. # mkdir /system/etc/rootfs
10. # cp /*.rc /system/etc/rootfs
11. # mkdir /system/etc/init.d
12. # cp /system/bin/sh /system/bin/_sh
13. # cp /init_prep_keypad.sh /system/bin
14. C:\> adb push sh_hijack.sh /system/bin/
15. C:\> adb push 2nd-init /system/bin/
16. C:\> adb push sysinit /system/bin/
17. C:\> adb push sh /system/bin/
18. # chmod 755 /system/bin/sh
19. # chmod 755 /system/bin/sh_hijack.sh
20. # chmod 755 /system/bin/2nd-init
21. # chmod 755 /system/bin/sysinit
22. # ln -s /system/bin/busybox /system/xbin/mount
23. # ln -s /system/bin/busybox /system/xbin/rmdir
24. # ln -s /system/bin/busybox /system/xbin/cp
25. # ln -s /system/bin/busybox /system/xbin/umount
26. # ln -s /system/bin/busybox /system/xbin/run-parts
27. # reboot
28. At this point you should be getting into Clockwork Recovery every time, no matter how many times you have rebooted or if you’ve taken the battery of or not. THIS IS NORMAL. It means that the 2nd-boot + sh hijack is working as it should. The boots into clock recovery are caused by a conflict between sh hijack and logwrapper hijack (used by Droid2 Bootstrap). Continue the guide to fix this issue.
29. In clock recovery menu go to: mounts and storage>mount /system;
30. Open ADB Shell again (it will be available in clockwork recovery as well);
31. # cp /system/bin/logwrapper.bin /system/bin/mylogwrapper
32. C:\> adb pull /system/etc/rootfs/
33. Open init.rc and init.mapphone_umts.rc into a text editor that preserves unix end-line format (e.g.: notepad++). Find all entries of “/system/bin/logwrapper” replacing for “/system/bin/mylogwrapper”.
34. In init.mapphone_umts.rc find entry for “exec /init_prep_keypad.sh” replacing for “exec /system/bin/init_prep_keypad.sh”. Add the following text to the end of this file to be able to run all scripts in /system/etc/init.d at boot time:
Code:
service bootscripts /system/bin/sysinit
    class post-zygote_services
    disabled
    oneshot
35. Save and close.
36. C:\> adb push init.rc /system/etc/rootfs/
37. C:\> adb push init.mapphone_umts.rc /system/etc/rootfs/
38. # chmod 755 /system/etc/rootfs/init.rc
39. # chmod 755 /system/etc/rootfs/init.mapphone_umts.rc
40. Choose “Reboot system now” in clock recovery menu;

You’re all set! Now it is just a matter of changing the rc files in /system/etc/rootfs to customize your system boot.

If you want to log the system boot you may also copy the provided log-init.sh script into /system/etc/rootfs and uncomment the line “exec /log_init.sh” from my init.rc file. Doing so will create the /data/logcat.log file that may get huge in sometime.

2nd-init files and my modified *.rc files attached.

Have fun!

As r2beta0 said for defy porting:

It's very likely, since the 2 devices are very similar. Most of the files I attached are from Milestone1 and works perfectly on MS2. Though I recommend you to NOT replace your *.rc files with the attached ones since they could be not compatible. It would be better if you edit your own files. Also try it ONLY if you have a working version of ClockworkMod Recovery (or other custom recovery). You may adapt this guide for your device and post it here on XDA, just remember to mention my name on credits :)
 

Attachments

Last edited:

adlx.xda

Inactive Recognized Developer
Feb 4, 2010
1,541
1,752
0
Madrid
Thanks, that looks interesting. I'll look into it later.

Just a big WARNING: if it behaves at it is described on the Defy, DON'T DO THAT, at least not with Tenfar or Kb7sqi 's CWM recovery ports, as booting into Recovery you won't have root adb shell access.
 

Sqoerk

Senior Member
Jun 2, 2009
342
120
0
Just a big WARNING: if it behaves at it is described on the Defy, DON'T DO THAT, at least not with Tenfar or Kb7sqi 's CWM recovery ports, as booting into Recovery you won't have root adb shell access.
  • Install SD Recovery of the market
  • Disable Debugging
  • Reboot your phone to the Recovery, while plugged in to a computer
  • Check if you can use adb... I was able to yesterday

:cool:
 

fritolays

Senior Member
Dec 29, 2010
391
384
93
Great White North
So figured I would give this a shot, and well it doesnt work. Phone just sticks at moto logo.

Yes its true in clockwork you cant get root (#) - so I just pulled the .rc files I needed to edit ahead of time and pushed them to the phone before the first reboot. Thus avoiding needing to boot into clockwork after the described bootloop.

If I get time I will play around with this some more.
 

racca

Senior Member
Jun 4, 2009
247
85
0
So figured I would give this a shot, and well it doesnt work. Phone just sticks at moto logo.

Yes its true in clockwork you cant get root (#) - so I just pulled the .rc files I needed to edit ahead of time and pushed them to the phone before the first reboot. Thus avoiding needing to boot into clockwork after the described bootloop.

If I get time I will play around with this some more.
or you can just make a flashable zip, which i had no luck with.:(