AddingADBRootToAnImage » History » Version 6
Denis 'GNUtoo' Carikli, 02/17/2020 11:56 PM
| 1 | 1 | Denis 'GNUtoo' Carikli | h1. AddingADB |
|---|---|---|---|
| 2 | |||
| 3 | 6 | Denis 'GNUtoo' Carikli | In this tutorial we'll add adb root support to an existing Replicant release. |
| 4 | |||
| 5 | This is valid for the following configuration: |
||
| 6 | * *Image*: replicant-6.0-0004-rc1-maguro.zip |
||
| 7 | * *Device*: Galaxy Nexus (GT-I9250) |
||
| 8 | |||
| 9 | You'll need to adapt it slightly for other devices. |
||
| 10 | |||
| 11 | 3 | Denis 'GNUtoo' Carikli | First extract the boot.img from the zip |
| 12 | 1 | Denis 'GNUtoo' Carikli | <pre> |
| 13 | $ mkdir temp |
||
| 14 | $ cd temp |
||
| 15 | $ unzip ../replicant-6.0-0004-rc1-maguro.zip |
||
| 16 | $ file boot.img |
||
| 17 | boot.img: Android bootimg, kernel, ramdisk, page size: 2048, cmdline (androidboot.hardware=tuna) |
||
| 18 | </pre> |
||
| 19 | |||
| 20 | 3 | Denis 'GNUtoo' Carikli | Then extract the kernel, and initramfs from the boot.img. Also save the infos such as the load address, etc in boot.txt: |
| 21 | 1 | Denis 'GNUtoo' Carikli | <pre> |
| 22 | $ unbootimg --kernel kernel.img --ramdisk ramdisk.cpio.gz -i boot.img | tee boot.txt |
||
| 23 | total image size: 5619712 |
||
| 24 | kernel size: 4604340 |
||
| 25 | kernel load addr: 0x80008000 |
||
| 26 | ramdisk size: 1009915 |
||
| 27 | ramdisk load addr: 0x81000000 |
||
| 28 | 2nd boot size: 0 |
||
| 29 | 2nd boot load addr: 0x80f00000 |
||
| 30 | kernel tags addr: 0x80000100 |
||
| 31 | page size: 2048 |
||
| 32 | board: `' |
||
| 33 | cmdline: `androidboot.hardware=tuna' |
||
| 34 | id: 9b90141066f527ecd3909d2ab8e383ebd995fd40000 |
||
| 35 | </pre> |
||
| 36 | |||
| 37 | 3 | Denis 'GNUtoo' Carikli | Then uncompress the initramfs |
| 38 | 1 | Denis 'GNUtoo' Carikli | <pre> |
| 39 | $ gunzip ramdisk.cpio.gz |
||
| 40 | $ file ramdisk.cpio |
||
| 41 | ramdisk.cpio: ASCII cpio archive (SVR4 with no CRC) |
||
| 42 | </pre> |
||
| 43 | |||
| 44 | 3 | Denis 'GNUtoo' Carikli | Then edit the default.props, we use sed on the raw cpio image for simplicity (we don't have permissions and username to take care of this way): |
| 45 | 1 | Denis 'GNUtoo' Carikli | <pre> |
| 46 | 4 | Denis 'GNUtoo' Carikli | $ sed 's#ro.adb.secure=1# #' -i ramdisk.cpio |
| 47 | 3 | Denis 'GNUtoo' Carikli | $ sed 's#ro.secure=1#ro.secure=0#' -i ramdisk.cpio |
| 48 | 1 | Denis 'GNUtoo' Carikli | $ sed 's#persist.sys.usb.config=none#persist.sys.usb.config=adb #' -i ramdisk.cpio |
| 49 | 2 | Denis 'GNUtoo' Carikli | </pre> |
| 50 | 1 | Denis 'GNUtoo' Carikli | |
| 51 | 3 | Denis 'GNUtoo' Carikli | Then recompress the initramfs |
| 52 | 1 | Denis 'GNUtoo' Carikli | <pre> |
| 53 | $ gzip ramdisk.cpio |
||
| 54 | 3 | Denis 'GNUtoo' Carikli | </pre> |
| 55 | |||
| 56 | We then recreate the image with the infos we saved in boot.txt. Note that the base is 0x80000000. The kernel has an offset and will be in 0x80008000: |
||
| 57 | <pre> |
||
| 58 | 1 | Denis 'GNUtoo' Carikli | $ mkbootimg --cmdline="androidboot.hardware=tuna" --kernel kernel.img --ramdisk ramdisk.cpio.gz --base 0x80000000 -o boot_new.img |
| 59 | </pre> |
||
| 60 | |||
| 61 | 3 | Denis 'GNUtoo' Carikli | Verify that we got all the arguments right: |
| 62 | 1 | Denis 'GNUtoo' Carikli | <pre> |
| 63 | $ unbootimg -i boot_new.img | tee boot_new.txt |
||
| 64 | $ diff -u boot.txt boot_new.txt |
||
| 65 | $ --- boot.txt 2020-02-18 00:39:59.890285634 +0100 |
||
| 66 | +++ boot_new.txt 2020-02-18 00:44:16.208897037 +0100 |
||
| 67 | @@ -1,7 +1,7 @@ |
||
| 68 | total image size: 5619712 |
||
| 69 | kernel size: 4604340 |
||
| 70 | kernel load addr: 0x80008000 |
||
| 71 | -ramdisk size: 1009915 |
||
| 72 | +ramdisk size: 1010280 |
||
| 73 | ramdisk load addr: 0x81000000 |
||
| 74 | 2nd boot size: 0 |
||
| 75 | 2nd boot load addr: 0x80f00000 |
||
| 76 | @@ -9,4 +9,4 @@ |
||
| 77 | page size: 2048 |
||
| 78 | board: `' |
||
| 79 | cmdline: `androidboot.hardware=tuna' |
||
| 80 | -id: 9b90141066f527ecd3909d2ab8e383ebd995fd40000 |
||
| 81 | +id: dd37b2ae1e50be62fe5c94b81b85aa56ffea17be000 |
||
| 82 | 3 | Denis 'GNUtoo' Carikli | </pre> |
| 83 | |||
| 84 | Reflash the image: |
||
| 85 | <pre> |
||
| 86 | heimdall flash --boot boot.img --recovery boot.img |
||
| 87 | 1 | Denis 'GNUtoo' Carikli | </pre> |
| 88 | 5 | Denis 'GNUtoo' Carikli | |
| 89 | Then you can use adb: |
||
| 90 | <pre> |
||
| 91 | $ adb logcat -b main |
||
| 92 | </pre> |