AddingADBRootToAnImage » History » Version 4
Denis 'GNUtoo' Carikli, 02/17/2020 11:54 PM
fix typo
| 1 | 1 | Denis 'GNUtoo' Carikli | h1. AddingADB |
|---|---|---|---|
| 2 | |||
| 3 | 3 | Denis 'GNUtoo' Carikli | First extract the boot.img from the zip |
| 4 | 1 | Denis 'GNUtoo' Carikli | <pre> |
| 5 | $ mkdir temp |
||
| 6 | $ cd temp |
||
| 7 | $ unzip ../replicant-6.0-0004-rc1-maguro.zip |
||
| 8 | $ file boot.img |
||
| 9 | boot.img: Android bootimg, kernel, ramdisk, page size: 2048, cmdline (androidboot.hardware=tuna) |
||
| 10 | </pre> |
||
| 11 | |||
| 12 | 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: |
| 13 | 1 | Denis 'GNUtoo' Carikli | <pre> |
| 14 | $ unbootimg --kernel kernel.img --ramdisk ramdisk.cpio.gz -i boot.img | tee boot.txt |
||
| 15 | total image size: 5619712 |
||
| 16 | kernel size: 4604340 |
||
| 17 | kernel load addr: 0x80008000 |
||
| 18 | ramdisk size: 1009915 |
||
| 19 | ramdisk load addr: 0x81000000 |
||
| 20 | 2nd boot size: 0 |
||
| 21 | 2nd boot load addr: 0x80f00000 |
||
| 22 | kernel tags addr: 0x80000100 |
||
| 23 | page size: 2048 |
||
| 24 | board: `' |
||
| 25 | cmdline: `androidboot.hardware=tuna' |
||
| 26 | id: 9b90141066f527ecd3909d2ab8e383ebd995fd40000 |
||
| 27 | </pre> |
||
| 28 | |||
| 29 | 3 | Denis 'GNUtoo' Carikli | Then uncompress the initramfs |
| 30 | 1 | Denis 'GNUtoo' Carikli | <pre> |
| 31 | $ gunzip ramdisk.cpio.gz |
||
| 32 | $ file ramdisk.cpio |
||
| 33 | ramdisk.cpio: ASCII cpio archive (SVR4 with no CRC) |
||
| 34 | </pre> |
||
| 35 | |||
| 36 | 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): |
| 37 | 1 | Denis 'GNUtoo' Carikli | <pre> |
| 38 | 4 | Denis 'GNUtoo' Carikli | $ sed 's#ro.adb.secure=1# #' -i ramdisk.cpio |
| 39 | 3 | Denis 'GNUtoo' Carikli | $ sed 's#ro.secure=1#ro.secure=0#' -i ramdisk.cpio |
| 40 | 1 | Denis 'GNUtoo' Carikli | $ sed 's#persist.sys.usb.config=none#persist.sys.usb.config=adb #' -i ramdisk.cpio |
| 41 | 2 | Denis 'GNUtoo' Carikli | </pre> |
| 42 | 1 | Denis 'GNUtoo' Carikli | |
| 43 | 3 | Denis 'GNUtoo' Carikli | Then recompress the initramfs |
| 44 | 1 | Denis 'GNUtoo' Carikli | <pre> |
| 45 | $ gzip ramdisk.cpio |
||
| 46 | 3 | Denis 'GNUtoo' Carikli | </pre> |
| 47 | |||
| 48 | 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: |
||
| 49 | <pre> |
||
| 50 | 1 | Denis 'GNUtoo' Carikli | $ mkbootimg --cmdline="androidboot.hardware=tuna" --kernel kernel.img --ramdisk ramdisk.cpio.gz --base 0x80000000 -o boot_new.img |
| 51 | </pre> |
||
| 52 | |||
| 53 | 3 | Denis 'GNUtoo' Carikli | Verify that we got all the arguments right: |
| 54 | 1 | Denis 'GNUtoo' Carikli | <pre> |
| 55 | $ unbootimg -i boot_new.img | tee boot_new.txt |
||
| 56 | $ diff -u boot.txt boot_new.txt |
||
| 57 | $ --- boot.txt 2020-02-18 00:39:59.890285634 +0100 |
||
| 58 | +++ boot_new.txt 2020-02-18 00:44:16.208897037 +0100 |
||
| 59 | @@ -1,7 +1,7 @@ |
||
| 60 | total image size: 5619712 |
||
| 61 | kernel size: 4604340 |
||
| 62 | kernel load addr: 0x80008000 |
||
| 63 | -ramdisk size: 1009915 |
||
| 64 | +ramdisk size: 1010280 |
||
| 65 | ramdisk load addr: 0x81000000 |
||
| 66 | 2nd boot size: 0 |
||
| 67 | 2nd boot load addr: 0x80f00000 |
||
| 68 | @@ -9,4 +9,4 @@ |
||
| 69 | page size: 2048 |
||
| 70 | board: `' |
||
| 71 | cmdline: `androidboot.hardware=tuna' |
||
| 72 | -id: 9b90141066f527ecd3909d2ab8e383ebd995fd40000 |
||
| 73 | +id: dd37b2ae1e50be62fe5c94b81b85aa56ffea17be000 |
||
| 74 | 3 | Denis 'GNUtoo' Carikli | </pre> |
| 75 | |||
| 76 | Reflash the image: |
||
| 77 | <pre> |
||
| 78 | heimdall flash --boot boot.img --recovery boot.img |
||
| 79 | 1 | Denis 'GNUtoo' Carikli | </pre> |