Related
I'm trying to figure out how to unpack and repack the evo's boot image. I found the "HOWTO: Unpack, Edit, and Repack Boot Images" thread in another forum using the search function but when I tried to use the scripts to unpack the boot.img file I received an error as follows:
Found a secondary file after the ramdisk image. According to the spec (mkbootimg.h) this file can exist, but this script is not designed to deal with this scenario.
The HOWTO thread I found mentioned that this was likely a second stage loader but indicated that it has not been seen on any system to date. This second stage loader had apparently only been defined in the mkbootimg.h file but not implemented as of the time this how to was written.
Can anyone provide a link to instructions on how to extract and repack the boot.img for the EVO? I'd like to make a few changes to the default.prop in the ramdisk of the default boot.img file and instructions would be greatly appreciated.
I use dsixda's kitchen
http://forum.xda-developers.com/showthread.php?t=633246
that allowed me to unpack it. I remember the error you speak of but I forget what script I was using
elegantai said:
I use dsixda's kitchen
http://forum.xda-developers.com/showthread.php?t=633246
that allowed me to unpack it. I remember the error you speak of but I forget what script I was using
Click to expand...
Click to collapse
This worked for me perfectly.
Thanks very much for the pointer!
Hi,
I have a branded Desire which have been first unbranded (goldcard), OTA updated to latest Htc froyo update, and then Unrevoked 3.21+S-off 1.5 by alpharev.
Now, i want to make my own kernel from htc sources.
I know linux (using Gentoo for years), but process to flash a new kernel on an android device is not clear for me.
Is this link ok for Desire?
http://htcevohacks.com/htc-evo-hacks/how-to-build-your-own-htc-evo-4g-android-kernel/
Regards.
Sent from my HTC Desire using XDA App
I followed Cyanogen wiki for building the HTC Kernel as I found the toolchain from Codesourcery threw errors when trying to compile.
Obviously with the CyanogenMod guide, I don't clone the kernel from their git, instead I untar the HTC source.
I would be interested in hearing your findings, if you do try and compile with that toolchain.
As for flashing the Kernel, I just use koush's AnyKernel - drop the zImage into the kernel folder and then compress and sign, to make a flashable zip.
Mekrel said:
I followed Cyanogen wiki for building the HTC Kernel as I found the toolchain from Codesourcery threw errors when trying to compile.
Obviously with the CyanogenMod guide, I don't clone the kernel from their git, instead I untar the HTC source.
I would be interested in hearing your findings, if you do try and compile with that toolchain.
As for flashing the Kernel, I just use koush's AnyKernel - drop the zImage into the kernel folder and then compress and sign, to make a flashable zip.
Click to expand...
Click to collapse
Yeah, basically this. It's pretty straightforward, it can just be a bit finicky sometimes.
Hi,
Thanks for answers.
Mekrel:
For the Sourcery compiler, I have same results as yours: errors and does not compile.
I believe HTC are working with the "google" toolchain, so their sources are not veryfied to work with another compiler.
Using the Cyanogen compile way ( with "google" toolchain), it does compile fine.
I'm happy to see this option in the kernel (Change Cpu Policy While Screen is ON/OFF), but I wonder why it is not activated by default... :
http://img833.imageshack.us/img833/3668/desiredefault.jpg
With changes made:
http://img145.imageshack.us/img145/3707/desiremodified.jpg
It would certainly be better than using SetCpu for me ( I'm using it just to force cpu at 245MHz when screen is off), and not need to hack HTC performance lock feature since I don't want to underclock or overclock my Cpu.
Now I just have to test it...but I do have few questions before doing that:
I can use koush's AnyKernel tool to flash my new zImage, but in case all goes wrong? How to revert back?
-->Can I save my actual boot.img in sdcard, and in case flash process goes wrong revert back to my actual boot.img?
Please help if possible with detailed process (or a web link but I have not being able to find a detailed process for Desire).
Regards.
Edit: Seems for me that Kouch's tool will not reuse my ramdisk, but another one?
-->I just want being able to modify my kernel, so I prefer to reuse ramdisk which is actually in my boot.img if possible.
-->I have tried this way: http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack%2C_Edit%2C_and_Re-Pack_Boot_Images, but script provided on this link gave me error because my boot.img has a "Second Stage".
Judge584 said:
Hi,
Thanks for answers.
Mekrel:
For the Sourcery compiler, I have same results as yours: errors and does not compile.
I believe HTC are working with the "google" toolchain, so their sources are not veryfied to work with another compiler.
Using the Cyanogen compile way ( with "google" toolchain), it does compile fine.
I'm happy to see this option in the kernel (Change Cpu Policy While Screen is ON/OFF), but I wonder why it is not activated by default... :
http://img833.imageshack.us/img833/3668/desiredefault.jpg
With changes made:
http://img145.imageshack.us/img145/3707/desiremodified.jpg
It would certainly be better than using SetCpu for me ( I'm using it just to force cpu at 245MHz when screen is off), and not need to hack HTC performance lock feature since I don't want to underclock or overclock my Cpu.
Now I just have to test it...but I do have few questions before doing that:
I can use koush's AnyKernel tool to flash my new zImage, but in case all goes wrong? How to revert back?
-->Can I save my actual boot.img in sdcard, and in case flash process goes wrong revert back to my actual boot.img?
Please help if possible with detailed process (or a web link but I have not being able to find a detailed process for Desire).
Regards.
Edit: Seems for me that Kouch's tool will not reuse my ramdisk, but another one?
-->I just want being able to modify my kernel, so I prefer to reuse ramdisk which is actually in my boot.img if possible.
-->I have tried this way: http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack%2C_Edit%2C_and_Re-Pack_Boot_Images, but script provided on this link gave me error because my boot.img has a "Second Stage".
Click to expand...
Click to collapse
You can backup via:
Code:
cat /dev/mtd/mtd2 > /sdcard/mtd2.img
Then you can use fastboot to flash boot:
Code:
fastboot flash boot mtd2.img
The guide you linked to doesn't recommend trying to split the boot.img from your phone (in this example, mtd2.img) due to possible corruption issues, which is why I went for Koush' AnyKernel.
So what you're saying is you can't get the ramdisk from your boot.img via:
Code:
% mkdir ramdisk
cd ramdisk
gzip -dc ../boot.img-ramdisk.gz | cpio -i
as this is the part that throws the error?
no, errors came from the perl scripts posted on the link http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images
So to resume:
Code:
cat /dev/mtd/mtd2 > /sdcard/mtd2.img
will backup my boot.img but it may be corrupted
Code:
fastboot flash boot mtd2.img
will restore it but if it's corrupted then it's useless.
Why can it be corrupted?
Why not possible to flash this way, without the hassle of dealing with boot.img?:
Code:
fastboot flash zimage zImage
Edit:
OK, I have done some search: please confirm this procedure to be safe to flash a modified kernel:
1°)Make an Nandroid Backup
2°)Since my Desire is rooted and S-OFFed it does not need any-more signed files, so for me I just have to put my new wifi kernel module (bcm4329.ko) to /system/lib/modules/bcm4329.ko (via adb push)
3°And then flash the new kernel zImage in fastboot using this command:
Code:
fastboot flash zimage zImage
4°)Once done: I will have to power off my Desire.
5°)Then, Power it on again in bootloader mode, wait for 3 seconds and then go to fastboot: the zImage should now start flashing automaticaly.
6°)Once done: reboot to test my new kernel.
7°)In case something goes wrong, all I will have to do is to restore boot via my Nandroid backup and all will be fine.
If someone can confirm this procedure to be right and safe, thank you.
Best Regards.
Ok, my new kernel is ready.
Does someone can confirm that step 1 to 7 in previous post are corrects?
Sent from my HTC Desire using XDA App
The 7 steps you posted look about right - I'm not entirely sure about #3, I don't have much experience in fastboot flashing. You might be better off using AnyKernel and flashing that in recovery.
It works good!
Thanks a lot.
Sent from my HTC Desire using XDA App
We have the Ava-Froyo 2.2 ROM with stock kernel (I think).
We got the source for the new kernel and re-compiled it with a flag we need.
We are trying to flash the kernel using "fastboot zimage c:\zImage" and "fastboot kernel c:\zImage" but neither work. We keep getting sending 'zimage'... OKAY then writing 'zimage'... FAILED (remote: not allowed)
We can't figure it out.
I ran unrevoked3 latest and set S-OFF and bootloader confirms it is S-OFF.
Why can't I write to flash/kernel??
How else can I flash a custom kernel?
I have ClockWork Mod 2.5.0.1 installed.
I only found one thing which said something about unrevoked's method makes you lose some of the advanced fastboot functions????
You can flash kernels from the clockwork recovery just like you would flash a rom. Just do it after you flash the rom of choice.
Sent from my PC36100 using XDA App
OK, but it looks like I can't just drop zImage on the SD and get CWM to flash it. It looks like I have to put it in an update.zip or something. Any ideas how to make one for my new zImage file?
Any other thoughts on how I could fastboot flash zimage w/out it complaining of out of memory or whatever?
Thanks in advance!!
why in the world are you doing it this way? simply create a flashable zip and flash it like you would a ROM
t3project said:
why in the world are you doing it this way? simply create a flashable zip and flash it like you would a ROM
Click to expand...
Click to collapse
+1 I agree with this guy. just create a flashable zip and voila.
Is this how you guys do that?
Step 7 - http://forum.androidcentral.com/htc...how-build-your-own-kernel-package-source.html
1. You probably don't have the eng bootloader that allows you to use fastboot.
2. Get any custom kernel in zip package, open it, delete everything you don't need and insert your zimage where the custom kernels zimage is. Keep the "kernel" and "META" directory and just replace your zimage in the kernel directory in the zip.
At the risk of sounding like an I ass I have to ask, how do you not know how to use fastboot or make an update.zip yet you managed to recompile the kernel? That one just goes over my head.
Well I didn't recompile the kernel, BUT I have re/compiled kernels for ~16 years so I know that part pretty well.
I just expected fastboot to work. I think my comment about unrEVOked borking fastboot is accurate then if you agree about the Eng loader.
I will grab a kernel zip and put that in. I saw these kernel scripts in one of them so I was thinking it is a lot of work to make that put, but what should my kernel script look like or do I really need one (this is in the .zip I update)..
IPvFletch said:
Well I didn't recompile the kernel, BUT I have re/compiled kernels for ~16 years so I know that part pretty well.
I just expected fastboot to work. I think my comment about about unrEVOked borking fastboot is accurate then if you agree and the eng loader.
I will grab a kernel zip and put that in. I saw these kernel scripts in one of them so I was thinking it is a lot of work to make that put, but what should my kernel script look like or do I really need one (this is in the .zip I update)..
Click to expand...
Click to collapse
I said it was at the risk of sounding like an ass and at least you came through and said you have re/compiled kernels before.
ENG bootloader would be my best guess as to why your fastboot is not working. I rooted with unrevo.forever and my fastboot works AFTER I replaced the bootloader.
If you use a zip package from a custom kernel like netarchy or kingklick the script is already there along with the scripts needed to install the kernel. You just have to place your zimage where that kernels zimage is and the scripts handle everything.
EDIT: I didn't make the zip but it should help you in the "write" direction (pun intended).
Examine the contents and the updater-script file.
How did you replace the bootloader after?
Ok so I got the HTC stock kernel 3.26 zip and I pulled out boot.img and replaced it with my zImage file renamed to boot.img. The update-script looks like it has no other major dependencies, the module is in the zip still, that stock one is Ok for me.
Code:
assert compatible_with("0.2") == "true"
show_progress 0.1 0
format BOOT:
copy_dir PACKAGE:system SYSTEM:
set_perm_recursive 0 0 0755 0755 SYSTEM:lib/modules
write_raw_image PACKAGE:boot.img BOOT:
show_progress 0.1 0
So.... here goes (via CWM Recovery)...
Crap what did I do wrong. It won't boot now, it goes into bootloader all the time.
Here's the zip I just tried...
IPvFletch said:
Crap what did I do wrong. It won't boot now, it goes into bootloader all the time.
Here's the zip I just tried...
Click to expand...
Click to collapse
Check my last post before this. You're problem is you tried to install it as a boot.img file and the boot.img file holds the system image as well as the kernel.
To install a kernel alone it has to be a zimage file and installed differently.
I pushed the original htc-froyo-stock-kernel-signed.zip kernel update just now and it is booting again.
Gonna guess something to do with the signed zip yet unsigned kernel boot.img?
How can I fix my zip with my new zImage?
lovethyEVO said:
Check my last post before this. You're problem is you tried to install it as a boot.img file and the boot.img file holds the system image as well as the kernel.
To install a kernel alone it has to be a zimage file and installed differently.
Click to expand...
Click to collapse
OK I kind of thought that but didn't know. I know boot.img is the whole boot partition not just the kernel image. doh. :]
Ok back to YOUR/koush kernel installer .zip...
The update-script has no mention of zImage though, so do I need to do more than just dump my zImage into this zip? EDIT: Guess so got error 6 it aborted.
IPvFletch said:
OK I kind of thought that but didn't know. I know boot.img is the whole boot partition not just the kernel image. doh. :]
Ok back to YOUR/koush kernel installer .zip...
The update-script has no mention of zImage though, so do I need to do more than just dump my zImage into this zip? EDIT: Guess so got error 6 it aborted.
Click to expand...
Click to collapse
Check the updater-script. You will see what happens in the process.
If anything, send me your files and I can test install them onto my system.
OK so it dumps system and kernel into temp folders. For kernel it goes through the entire folder and sets perms 4 of the 5 files (excluding zImage) and then runs dump_image. This I guess is smart enough to pick up zImage and dumps it all into a new boot.img. Then eventually it runs mkbootimg which takes zImage and the new boot image ramdisk and creates a new shell. Then it runs that shell.
I don't see why it fails though. I didn't put any modules in there but it looks like it doesn't need me to. I already have the latest versions of those kernel module files anyways.
lovethyEVO: Post 11, thanks!
So if I understand correctly, in post 11 you renamed the zimage to boot.img?
Just making sure so I know how to test it.
LOL oh yes that is that zip HAHA sorry.
No go through zip. Gave me status error 6 and because I use fastboot mostly I'm not sure how to correct it.
Flashed it through fastboot:
fastboot flash boot zImage.img = FAILED <remote: image error! <BootMagic check fail>
fastboot flash system zImage.img = OK but stuck at splash screen which I expected.
But now you have a general idea of what's going. It's possibly your kernel and maybe not just the zip file.
Can someone just put this zImage in a kernel flash zip for me? I will try later as well but clearly I'm not good at this.. :]
The zImage is in a .zip file attached. Thanks!
I would like to learn how to build stuff for my tmobile s2. I figured I should try to build the stock kernel first to get my hands dirty. I have been following this guide here: http://forum.xda-developers.com/showthread.php?t=1442870
Unfortunately it is for the Epic Touch 4G, but I think a lot is similar. I have several questions regarding building a kernel for the T989:
1) How can I extract the initramfs from a stock boot.img?
2) The guide from the link above tars a zimage file. Does this need to be boot.img for the T989?
Thanks.
Below I have posted what I have done so far in trying to compile a kernel for the T989, in case anyone else is also learning like me.
I am using Ubuntu 10.10 32-bit
1) Download T989 source code from here: https://opensource.samsung.com/reception/receptionSub.do?method=search&searchValue=SGH-T989 (download the T989 version for TMobile)
2) unzip SGH-T989_GB_Opensource.zip
3) extract SGH-T989_Kernel.tar.gz
4) next you need to get a version of the initramfs. I got it off of my phone using clockworkmod backup (boot.img file) and following this guide to extract the initramfs: http://www.freeyourandroid.com/guide/extract-edit-repack-boot-img-windows
5) Download arm toolchain here (I use version 2010.09): https://sourcery.mentor.com/sgpp/li...09-51-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
6) extract toolchain
7) Setup cross compile script (run before doing compiles) (change CROSS_PATH for your setup):
cross-compile.sh:
BINVERSION=arm-2010.09
export ARCH=arm
export CROSS_PATH=~/android/toolchains/${BINVERSION}/bin/
export CROSS_NAME=arm-none-eabi-
export CROSS_COMPILE=${CROSS_PATH}${CROSS_NAME}
export CC=${CROSS_NAME}gcc
export CXX=${CROSS_NAME}g++
export LD=${CROSS_NAME}ld
export STRIP=${CROSS_NAME}strip
PATH=${CROSS_PATH}:$PATH
8) Compile script (modify CONFIG_INITRAMFS_SOURCE to point to your initramfs) :
source ../scripts/cross-compile.sh
cd kernel
make clean
make mrproper
make msm8660_celox_usa_tmo_defconfig
make modules
make -j5 CONFIG_INITRAMFS_SOURCE=../initramfs
9) The kernel image is in "arch/arm/boot/zimage"
10) *** Question: How do I make the zimage "odin" compatible
This is still not complete (Steps 10 is unsolved). I need to make the build image odin compatible.
If anyone knows of a kernel building guide that exists for the T989 please post here.
Thanks.
You should pm the devs that posted their kernels in the dev section. Im sure they would love to help. Even exchage google talk or google + with each other to get quicker answers.
sent from the Dark §¡3€
I noticed you hit up the e4gt thread so I came here to see If I can help. If you have Irc I can walk you thru It all the way. I lost all my data today so my machine is down for building. im on freenode #evervolv ...
interloper, thanks for the kind offer. Please let me know when your machine is up and running. Hope to hear from you. Thanks again.
This is the script you want to use to extract the initramfs http://forum.xda-developers.com/wiki/Extract_initramfs_from_zImage
It works for the E4GT without modification so it should work for you guys without modification.
dtm_stretch,
Thanks for the extract script. The script does not work when I try to extract the initramfs from a boot.img I got from doing a backup with clockworkmod. It only manage to extract two empty folders: "dev" and "root"
However, the script does work when I tried it on a zImage I built myself. With the kernel I built I used the initramfs provided at: https://github.com/bubby323/anomaly_kernel_platform_SGH-T989/tree/master/initramfs
I know I can use the initramfs at the github but I really would like to learn how to get it myself so I can apply to other phones later. The knowledge is more important to me.
Thanks.
I was able to extract the initramfs from the boot.img (cwm backup of my phone) using the tools at this site: http://www.freeyourandroid.com/guide/extract-edit-repack-boot-img-windows
Now my only problem is making a odin compatible (flashable) kernel from the compiled zImage. Is it as simple as renaming zImage to boot.img and then put it in a tar to flash with odin? The only reason why I am not certain is my zImage is only about 5megs while the boot.img is 10megs. It seems like the boot.img is a disk copy of the flash partition for the boot on the phone. Do I need to use dd to copy my zImage into boot.img?
I know I make no sense. Hopefully with this last step I have it all down (at least for creating a kernel, rom is next). Please help a noob. Thanks.
datzstr8 said:
I was able to extract the initramfs from the boot.img (cwm backup of my phone) using the tools at this site: http://www.freeyourandroid.com/guide/extract-edit-repack-boot-img-windows
Now my only problem is making a odin compatible (flashable) kernel from the compiled zImage. Is it as simple as renaming zImage to boot.img and then put it in a tar to flash with odin? The only reason why I am not certain is my zImage is only about 5megs while the boot.img is 10megs. It seems like the boot.img is a disk copy of the flash partition for the boot on the phone. Do I need to use dd to copy my zImage into boot.img?
I know I make no sense. Hopefully with this last step I have it all down (at least for creating a kernel, rom is next). Please help a noob. Thanks.
Click to expand...
Click to collapse
Sorry for not replying sooner, but if you want to create a flashable tar in terminal
Code:
# cd /where/your/zimage/is/located
# tar cvf whateveryouwanttocallyourkernel.tar zImage
or you can just use a zip that already flashes a kernel and swap out the zimages.
I was able to successfully build my kernel and flash it to my phone. I needed to use mkbootfs and mkbootimg to combine my zImage and ramdisk to make boot.img. I will post a tutorial up in the development section and will link it here when I am done. Hopefully it will help all the noobs like me get their feet wet. Stay tuned.
update:
here is the link to the guide: http://forum.xda-developers.com/showthread.php?p=22941057#post22941057
ODIN .tar
I advise all of you to learn bash scripting. With bash scripting or pearl you can automate this entire process. Also create a cheat sheet text document with long but common commands, git command reminders and things like that. These commands should create your ODIN .tar file. First cd to the directory the junk is in then:
Code:
tar -H ustar -c factoryfs.rfs cache.rfs modem.bin zImage boot.bin recovery.bin param.lfs sbl.bin > myOdin.tar
That makes the tarball
Then:
Code:
md5sum -t myOdin.tar >> myOdin.tar
That does the MD5 sum
Then:
Code:
mv myOdin.tar myOdin.tar.md5
That sign the tarball with the MD5 sum
You should be able to ODIN that .tar. Now, for the first command you can replace whatever files you want tarred with what I put. If you only want the modem.bin specify that only, etc.
Another word of advice is to find helpful helpful Nautilus scripts to ad to the right click context menu for time saving simple operation. Google it and you find several good resources. Also, if you look, there are Nautilus scripts that can be added to zip and sign .zip and .apk files to make that faster and easier.
Be careful out there and good luck.
Hello to all!
I'm an heavy oneplus user, currently with Nord, but i'm try to use my old but Gold Oneplus 3 to run Klipper+Moonraker+Fluidd.
Klipper side everything is perfect, still remains one big issue: there is no kernel compiled for OP3 which has USB_SERIAL_CH341 driver enabled.
I'm trying to build but without success. Here is what i've done under Linux Mint latest version.
First of all i've installed a lot of packages, i cant remember all because i used various guides since initially i was not able neither of finish compilation.
Then i've downloaded:
kernel source: https://github.com/lin16-microg/android_kernel_oneplus_msm8996/tree/lin-16.0-mse2
from this ROM thread, which is the rom im still using: https://forum.xda-developers.com/t/...ened-lineageos-16-0-for-oneplus-3-3t.4034869/
initially i've tried to use EVAgcc toolchain, but it was impossible to finish to build. Then i switched to AOSP toolchains:
32bit: https://android.googlesource.com/pl...inux-androideabi-4.9/+/refs/heads/pie-release
64bit: https://android.googlesource.com/pl...64-linux-android-4.9/+/refs/heads/pie-release
With Them i was able to compile from source, but before doing i modified the file called "lineageos_oneplus3_defconfig" by adding "USB_SERIAL_CH341=y" just under the "USB_SERIAL=y" in order to have the serial driver compiled and loader (if i have understood right?).
to build i've used from inside kernel source cloned directory:
>make clean
>make mrproper
>ARCH=arm64 SUBARCH=arm64 CROSS_COMPILE=googletoolpath/bin/aarch64-stuffs- CROSS_COMPILE_ARM32=googletoolpath/bin/arm-stuffs- make O=out lineageos_oneplus3_defconfig
>ARCH=arm64 SUBARCH=arm64 CROSS_COMPILE=googletoolpath/bin/aarch64-stuffs- CROSS_COMPILE_ARM32=googletoolpath/bin/arm-stuffs- make O=out Image -j2
in this way i've obtained an Image (not a zimage since with zimage returned error).
Then i unpacked the stock boot.img with Android Image Kitchen, substituted boot.img-kernel file (which is an archive..?) with the compiled image renamed.
Finally i repacked everything.
Tried to flash the repacked boot img but no boot, the phone returns to fastboot screen.
I've noticed that my newboot.img is around 25mb insted of around 12mb like the stock one present in the Rom.zip
Probably the error resides in how i've managed to unpack and repack the kernel image..
Do someone see some heavy error which can cause the problem? What can i try?
From a side, as automation engineer, i want to learn and try to do it by myself, but on the other side, if someone is able to compile it for me with serial CH341 driver enabled a beer is assured.
Thanks all to have read up to now and for any advice
not sure that's important but you forgot to gzip kernel before repacking. I recommend to compile with configuration of running kernel from device /proc/config.gz first.
alecxs said:
not sure that's important but you forgot to gzip kernel before repacking. I recommend to compile with configuration of running kernel from device /proc/config.gz first.
Click to expand...
Click to collapse
I've to try because it is not gzipped by default, the problem is that I don't found all in one scripts or config file as the one mentioned by you. I would never thought that rebuild a kernel were so tricky.