A minature bootloader that is called from the original kernel and boots custom one.
It consist from:
- small kernel module, for creating device for booting/controlling boot
- small userspace program, which give for module boot image and flags
- tiny bootloader making space for subsequent kernel boot (kexec like)
It's derived from collaborative work of yakk and dimichxp for creating bootloader for older Motorola phones (Freescale based), before their RSA signature protection have been bypassed.
As of 11/10/2012, czechop created a patch to keep Wrigley 3G modem working under the child kernel (when called at “sh hijack” time). Now the only issue on Motorola Milestone is sluggishness for cca. 10 - 20 minutes after the boot until the kernel suspends, after which it operates normally.
You will need UART debugging for development of hboot binary and kernel: Debugging
Current development for MS is on https://github.com/nadlabak/2ndboot
- You need kernel sources for that from Motorola
- You need special arm toolchain for that
- Build you module of 2ndboot
You can find all info about compilation of kernel, toolchain and 2ndboot here
Latest attempt: Yakk patched 2nd-boot to make it work on the Milestone, but his source code remains partly unpublished at this time. Status: boots another kernel, which Yakk has also patched to get serial output over the USB connector (using custom hardware to connect to it). Currently the booted kernel has some problems with USB and fails to initialize the phone's modem so it crashes. All current development of 2ndboot now going here When GSM is disabled this kexec module is able to boot the system with the recompiled kernel, but it is not really useful as a phone then. WiFi works fine, though. Yakk is now trying to use 2ndboot to start a patched version of mbm, which should be able to initialize the modem and then pass control to a custom Linux kernel. This is still under development, so don't get too excited. We'll keep you posted.
mount -t debugfs none_debugs /sys/kernel/debug cat /sys/kernel/debug/usbmon/1t