Related
Hi,
The installed boot-image has 0x100 bytes of data before the tag "ANDROID!", whereas usual boot-images start with that tag. Does anybody know about it?
The problem is, that unpackbootimg tool doesn't work on that image. I could help my self by installing first the BinDroid kernel. Based on that boot-image, I could bring my kernel to the device.
Additionally, I'm confused about the kernel base address. The .config file defines "0x00200000" and the unpackbootimg tool returns "0x14400000". Usually they are the same numbers. It works with "0x14400000".
Thanks,
Adrian
Hi,
Could anybody tell me which are the bare minimum sources needed to compile a working cyoanogenmod 9 kernel boot.img?
I'm currently trying to compile one on my own but I can't afford to download the whole CM9 source due to the internet contract i have.
Thanks
Nobody? Ok then... May someone please copy and paste their makefile inside the root directory of his Android tree? (the one from wich they issue the command "make -j4 out/target/product/galaxysmtd/boot.img").
Maybe you could try cloning the android_build project and the teamhacksung buildscript project as well. Then adjust the buildscripts to point to the correct toolchain directory...
Boot.img contains the kernel. Therefore you need the kernel sources since at cm9 the kernel is build while compiling cm. You can find that sources at github (in project kernel_samsung_aries or something). You need to put this directory to your root directory of your android build system (there you have the device dir, frameworks, vendor etc). Rename it into kernel/samsung/aries. Then you should be able to build. It has worked like this for i9001, and it should also for i9000
You could also look at the kernel source of semaphore/devil. They use their own build script which does not require the full cm9 source, but only the kernel source. I made an adapted version of their scripts to build my own kernel...
Verstuurd van mijn GT-I9000
I think he already has:
__Pol__ said:
Nobody? "make -j4 out/target/product/galaxysmtd/boot.img"
Click to expand...
Click to collapse
Thanks everybody!
Sorry if the first two posts misled you.
I already have the kernel source. What I need are some instructions in order to build the boot.img from them. I can't download the whole source branch because I'm on a data diet .
Also a copy paste of the main make file is accepted.
I think this could help you:
http://forum.xda-developers.com/showthread.php?p=28096022
It's again for i9001 (sorry, but I own one ), but should also work
I think this could help you:
http://forum.xda-developers.com/show...php?p=28096022
It's again for i9001 (sorry, but I own one ), but should also work
Click to expand...
Click to collapse
Thanks. I've already tried the split_bootimg.pl but it did not work. According to sbuild.sh from semaphore kernel what i need to do is just "cp bzImage boot.img". I had already done it before but my phone did not boot up. It showed the bootloader logo but then nothing so something is wrong with the initramfs. Is the one included with the kernel sources correct or am I missing something?
So you can build the kernel? And just copying the kernel image to boot.img won't work. As you can see in the splitted boot.img from arco or anyone else, there are some other things needed.
I think you need to split it, replace the kernel image (zImage I thinl) and put all files again together (including the other files from the working boot.img).
No warranty on that, but that's what I understood
hahnjo said:
So you can build the kernel? And just copying the kernel image to boot.img won't work. As you can see in the splitted boot.img from arco or anyone else, there are some other things needed.
I think you need to split it, replace the kernel image (zImage I thinl) and put all files again together (including the other files from the working boot.img).
No warranty on that, but that's what I understood
Click to expand...
Click to collapse
Actually I can't split the boot.img because split_bootimg.pl does not work. The problem is in the initramfs and that is why I was asking for some advice about the sources needed. The auto-generated initramfs does not work.
__Pol__ said:
Actually I can't split the boot.img because split_bootimg.pl does not work. The problem is in the initramfs and that is why I was asking for some advice about the sources needed. The auto-generated initramfs does not work.
Click to expand...
Click to collapse
When I tried it, it worked... Are you sure that you have Pearl installed. Which OS do you use?
How do you generate initramfs?
I'm running Debian wheezy, pearl is installed. The script says it has not found android magic. The initramfs is automatically generated by the kernel source. I fear some files are missing here: https://github.com/CyanogenMod/android_kernel_samsung_aries
Do I need to get *bootimg from here?
https://github.com/CyanogenMod/android_device_samsung_aries-common
If yes how do I use these 2 scripts?
Sorry they're not two scripts but a script and a make file. From where does that makefile obtain the variables?
For splitting, did you use a running boot.img, e.g. from CM9 for your device?
You have two possibilities for building a running boot.img:
1) It is builded if you compile CM or AOSP or another ROM from Source (therefore you would need the complete sources)
2) You only build the Kernel and put it in an existing boot.img (for your phone of course) by just replacing the kernel.
For second you need to split an existing boot.img
Hi
Sent from my GT-S5830 using xda app-developers app
hahnjo said:
For splitting, did you use a running boot.img, e.g. from CM9 for your device?
You have two possibilities for building a running boot.img:
1) It is builded if you compile CM or AOSP or another ROM from Source (therefore you would need the complete sources)
2) You only build the Kernel and put it in an existing boot.img (for your phone of course) by just replacing the kernel.
For second you need to split an existing boot.img
Click to expand...
Click to collapse
Well, actually there's a third method. I need the initramfs source, the kernel source and the recovery source. After building I need to pack them together. Until yesterday I had only the sources for kernel and initramfs (?). Now I'll head for some sources for the recovery but I still need the main makefile (inside the Android directory) to know what commands I have to issue.
Sorry guys if I stil can't explain my problem to you. I really appreciate your patience and your helpful tips though.
You could look at devil/semaphore, as they use a complete initramfs, including recovery (both have a slightly different implementation).
Verstuurd van mijn GT-I9000
kasper_h said:
You could look at devil/semaphore, as they use a complete initramfs, including recovery (both have a slightly different implementation).
Verstuurd van mijn GT-I9000
Click to expand...
Click to collapse
Yep! I had a look there and I understood I was missing the recovery. Semaphore uses a custom amde initramfs and recovery whith load of scripts I don't need. I downloaded the CWM source from cyanogenmod git. There is only an Android.mk that obviously won't work. The question still remains: has anybody here downloaded the whole cyanogenmod source? If yes, may they post the makefile here please?
I have the whole CM sources, CM7 and CM9. Atm I can't access them because I'm on travel. I will return next week, maybe then.
Though, I think that it is impossible to extract the needed Makefiles. The Main-Makefile includes another makefile, but from then on several files are included which include again files. I stopped trying to understand it after the first 3 files...
With the Note 3 using device tree (dtb) files, what is the new process to create a bootable kernel image without having to build the entire Android stack along with it? I'm working on porting kexec-hardboot to the CyanogenMod hlte kernel. I've compiled my kernel and it produces a zImage and a zImage-dtb. It also provides several msm8974-sec-hlte-r0X.dtb files in the arch/arm/boot directory which I assume are the compiled device tree images for the various HLTE revisions. I extracted a working kernel using the tools here: https://bitbucket.org/itsmikeramsay/mkbootimg/src and examined the extracted dt.img in a hex editor to find that it appears to contain all of these dtb files together. What tool is used to build this combined dtb image? I tried repacking the kernel I extracted with only my new initramfs (containing the kexecboot binary) and that worked, but repacking it with my new kernel (zImage) along with the old dt.img did not.
EDIT 1: I found this: http://forum.xda-developers.com/showthread.php?t=2469510 Looks like it could be what I'm after.
below, good luck
CalcProgrammer1 said:
With the Note 3 using device tree (dtb) files, what is the new process to create a bootable kernel image without having to build the entire Android stack along with it? I'm working on porting kexec-hardboot to the CyanogenMod hlte kernel. I've compiled my kernel and it produces a zImage and a zImage-dtb. It also provides several msm8974-sec-hlte-r0X.dtb files in the arch/arm/boot directory which I assume are the compiled device tree images for the various HLTE revisions. I extracted a working kernel using the tools here: https://bitbucket.org/itsmikeramsay/mkbootimg/src and examined the extracted dt.img in a hex editor to find that it appears to contain all of these dtb files together. What tool is used to build this combined dtb image? I tried repacking the kernel I extracted with only my new initramfs (containing the kexecboot binary) and that worked, but repacking it with my new kernel (zImage) along with the old dt.img did not.
EDIT 1: I found this: http://forum.xda-developers.com/showthread.php?t=2469510 Looks like it could be what I'm after.
Click to expand...
Click to collapse
I struggled with this for like a month. Download me
This is an updated version of the mkbootimg tools with support for device tree images. I think this is exactly what your looking for. You should be able to just overwrite the zImage and proper headers and it'll boot. Good luck! Message me if you have any issues. The older mkbootimg has issues parsing the device tree tables since it doesn't recognize them.
I got it working. The tools I posted work as well (not sure if they're the same or not, didn't check). My problem was not my build process but that my kernel/ramdisk made boot.img too large (>11.0MB) which made it fail to boot. I enabled XZ compression instead of LZMA and that took 3MB off my kernel size and allowed my build to fit, then it worked fine.
How to use the tools suggested
I was able to use xiaolu/mkbootimg_tools to create a recovery image, and flash my phone successfully. I want to know how to create a boot.img with code that I have compiled myself. I created my own dt.img, thanks to Xiaolu, and placed it in the recovery image mentioned above. I am trying to port a compiled code into my phone.
Whatever I do, my custom build kernels fail to boot. There's the ZUK logo very briefly, then device drops to bootloader screen. I'm out of ideas what I'm doing wrong, maybe someone here can give me a hint. :good:
I've tried with current AEX kernel git snapshot and also stock kernel sources. Building using the AEX_defconfig goes ok, I have Image.gz, replace it in previously extracted "stock" boot image and use mkbootimg.py to rebuild the new image. Offsets etc. are all correct (I think), like this: (from AEX)
Code:
kernel=kernel
ramdisk=ramdisk
page_size=4096
kernel_size=9101281
ramdisk_size=2671109
base_addr=0x80000000
kernel_offset=0x00008000
ramdisk_offset=0x01000000
tags_offset=0x00000100
cmd_line='androidboot.hardware=qcom ehci-hcd.park=3 lpm_levels.sleep_disabled=1 [email protected] buildvariant=userdebug'
board=""
format=gzip
But the damn new image won't boot, like described above. There has to be something (probably very stupid) I'm missing...
If I replace my own Image.gz with the originally extracted one and mkboot and so on, it's ok. So I guess it has something to do with my kernel build and/or environment. Are there any subsequent steps needed to do with the compiled kernel Image.gz? Or is it just my kernel config which is wrong? But I'm using the AEX defconfig (n7x-caf_z2_row_defconfig, to be exactly) so this should be fine, no?
Ok, I've got it. I had forgottten (=didn't know about at all) to append the device tree blob (arch\arm64\boot\dts\qcom\msm8996-v3-pmi8996-mtp.dtb) to kernel zImage... Simply cat'ing these together works!
Goodluck bro.
void23 said:
Ok, I've got it. I had forgottten (=didn't know about at all) to append the device tree blob (arch\arm64\boot\dts\qcom\msm8996-v3-pmi8996-mtp.dtb) to kernel zImage... Simply cat'ing these together works!
Click to expand...
Click to collapse
please explain .. what exactly i need to do with that file..
For SM-T285 users that want to build Lineage OS for their own device I have posted a complete build guide here:
https://github.com/lineage-gtexslte/build_guide
jedld said:
For SM-T285 users that want to build Lineage OS for their own device I have posted a complete build guide here:
https://github.com/lineage-gtexslte/build_guide
Click to expand...
Click to collapse
Thanks for the ROM update!
I started from scratch and when I compiled, I got this error:
fixdep: error opening config file: ../../../../../../kernel/samsung/gtexslte/scripts/genksyms/parse.tab.c: No such file or directory
I have had this error before and had to copy the file from another folder, but I should not have to do this.
So, I copied the file to folder where it was missing.
New error:
target Prebuilt: am (/home/gcrutchr/taba/out/target/product/gtexslte/obj/EXECUTABLES/am_intermediates/am)
Symlink: /home/gcrutchr/taba/out/target/product/gtexslte/system/bin/app_process -> app_process32
clang++: error: unable to execute command: Aborted (core dumped)
clang++: error: linker command failed due to signal (use -v to see invocation)
gcrutchr said:
Thanks for the ROM update!
I started from scratch and when I compiled, I got this error:
fixdep: error opening config file: ../../../../../../kernel/samsung/gtexslte/scripts/genksyms/parse.tab.c: No such file or directory
I have had this error before and had to copy the file from another folder, but I should not have to do this.
So, I copied the file to folder where it was missing.
New error:
target Prebuilt: am (/home/gcrutchr/taba/out/target/product/gtexslte/obj/EXECUTABLES/am_intermediates/am)
Symlink: /home/gcrutchr/taba/out/target/product/gtexslte/system/bin/app_process -> app_process32
clang++: error: unable to execute command: Aborted (core dumped)
clang++: error: linker command failed due to signal (use -v to see invocation)
Click to expand...
Click to collapse
What's your gcc version? might need to use gcc 6
jedld said:
What's your gcc version? might need to use gcc 6
Click to expand...
Click to collapse
gcc version 8.1.1 20180712 (Red Hat 8.1.1-5) (GCC)
gcrutchr said:
gcc version 8.1.1 20180712 (Red Hat 8.1.1-5) (GCC)
Click to expand...
Click to collapse
later versions of gcc may not work with lineage 14.1, I had to downgrade mine, though for another project.
you can do:
Code:
sudo apt-get install gcc-6 g++-6 g++-6-multilib
sudo update-alternatives --install
inform me if this works and I'll update my guide. Might consider making a docker based build if issues like this happen often.
jedld said:
later versions of gcc may not work with lineage 14.1, I had to downgrade mine, though for another project.
you can do:
Code:
sudo apt-get install gcc-6 g++-6 g++-6-multilib
sudo update-alternatives --install
inform me if this works and I'll update my guide. Might consider making a docker based build if issues like this happen often.
Click to expand...
Click to collapse
Actually, I am on Fedora Linux (uses less resources) and have been using gcc 8xx for some time. I compile LineageOS 14.1 for Note 3 (ha3g) and the Note Pro 12.3 (v1a3g) and have no problems. But, I will investigate further.
Ok...so I had issues building the kernel...could not find some include files.
So...I decided to use build_kernel.sh script to to make boot.img. The resultant file is about 1.4 MB smaller, there is no init file in the ramdisk folder and the boot.img-ramdisk.cpio.gz in the split_img folder is about 1/2 the size of your recent boot.img file.
Not sure when to go from here.
Okay, so I followed the instructions - after upgrading Fedora to v29 - but, this time I used Docker. Had to make some script changes for Fedora, but got most everything installed. The "work" directory is empty. I was able to make a working system.img that installed with the built .zip file. The kernel would not boot - hung on the logo screen. I restored the 10/17 boot.img and the system booted up. Now, I will work on the boot.img file. I did notice this time that the boot.img file was about the same size as the 10/17 boot.img file I downloaded. So, that's an improvement. I just finished modifying the build_kernel.sh file. So, I installed the kernel I made and it still hung on the logo screen. So, back to square 1 regarding the kernel.
gcrutchr said:
Okay, so I followed the instructions - after upgrading Fedora to v29 - but, this time I used Docker. Had to make some script changes for Fedora, but got most everything installed. The "work" directory is empty. I was able to make a working system.img that installed with the built .zip file. The kernel would not boot - hung on the logo screen. I restored the 10/17 boot.img and the system booted up. Now, I will work on the boot.img file. I did notice this time that the boot.img file was about the same size as the 10/17 boot.img file I downloaded. So, that's an improvement. I just finished modifying the build_kernel.sh file. So, I installed the kernel I made and it still hung on the logo screen. So, back to square 1 regarding the kernel.
Click to expand...
Click to collapse
Were you able to obtain a logcat with the failed boot? Possible issue is that the external kernel modules did not get compiled
jedld said:
Were you able to obtain a logcat with the failed boot? Possible issue is that the external kernel modules did not get compiled
Click to expand...
Click to collapse
Actually, not sure how I got it to compile. Having problems with docker. Cannot run python or any other dev command. Stuck as root user. So am trying to learn about docker. I do not think I was in docker when it compiled. Will get back to you after I figure this whole mess out.
27 October 2018
After reading the Docker documentation and playing with Docker, I removed it from Fedora. It is just too complicated to use even though it sounds simple. After removing Docker, I did a make clean and a make mrproper in the kernel folder. I ran 'brunch gtexslte'. The compile completed after I copied mkbootimg to the out folder - for some reason it is not getting copied there during the make process. This time the boot.img was over 9mb. It still will not boot. I will get log files today. I will also check to make sure the system files work with the good boot.img.
Question how do I update the system folder to the latest builds of lineage 14.1?
Your repo xml file restricts the source to your repo.
Okay!
Fixed boot.img not booting.
If you unpack boot.img, the file 'boot.img-imgtype' has an invalid image type. In the file, it says 'AOSP-PXA'.
It should say 'AOSP'.
I do not know where this is getting added. I have done a grep and could not find it.
As a side note, I used the build_kernel.sh script to make the kernel.
Question: How do I apply the security updates without manually following the (-) (+) in the diff file?
I am now able to do a complete make and install using the generated .zip file.
Here are the steps:
1. Setup your environment - I am using Fedora, but these instructions will work for any flavor of linux
2. Make sure you have the linaro gcc toolchain (32-bit) installed, and you have modified kernel/samsung/gtexslte/build_kernel.sh
3. Run: build/envsetup.sh, then brunch gtexslte
4. If the brunch stops near the end, copy mkbootimg from system/core/mkbootimg to out/host/linux-x86/bin
......or you can write a shell script to copy the file, as I did, before starting the build
5. After the build completes, cd into kernel/samsung/gtexslte
6. Run make mrproper, to clean the kernel folders
7. Run build_kernel.sh
8. After the kernel (zImage) is built, you need to make the boot.img
9. @jedld has posted how to do this in his build instructions
10. Now that you have a boot.img, you need to modify it.
11. Unpack boot.img
12. In the file 'boot.img-imgtype' , you need to change 'AOSP-PXA' to 'AOSP' - without the quotes
13. Repack boot.img
14. Replace boot.img in the lineage*.zip file with the one you just modified
15. Copy the lineage*.zip to you Tab-A, reboot into recovery and install it.
Here is my script for copying the mkbootimg file into the out folder, BEFORE I run brunch gtexslte:
if [ ! -d "out/host" ]; then
mkdir out/host
mkdir out/host/linux-x86
mkdir out/host/linux-x86/bin
fi
cp system/core/mkbootimg/mkbootimg out/host/linux-x86/bin
@jedld
Update on normal kernel build:
The reason the boot.img - when building via brunch gtexslte - will not boot is a bad zImage. If I replace the zImage from a bootable boot.img, the bad boot.img will boot okay.
Now I need to figure out what the problem is.
you can get the incremental diffs from linux.org
jedld said:
you can get the incremental diffs from linux.org
Click to expand...
Click to collapse
Is this for kernel changes or security patches?
gcrutchr said:
Is this for kernel changes or security patches?
Click to expand...
Click to collapse
My mistake, I meant kernel.org not linux.org. The incremental diffs contain changes to the mainline kernel which can contain security fixes and/or bug fixes. This is different from android specific patches which google releases separately as kernel patches. The kernel started out from the stock sources provided by samsung on 5.1.1 and then I added google's N and Oreo patches on it (patches related to selinux and oreo binder enhancements). I also added incremental diffs from kernel.org, it started out at 3.10.58 and then I applied incremental diffs until I got to 3.10.107. Unfortunately 3.10 is EOL now, upgrading the kernel to the 4.10 series will take a lot of work.
The SM-T285 Lineage OS is excellent. Is it possible to get the FM radio working? I have tried everything but can't get it to work. I would appreciate your help.
akasarf said:
The SM-T285 Lineage OS is excellent. Is it possible to get the FM radio working? I have tried everything but can't get it to work. I would appreciate your help.
Click to expand...
Click to collapse
It's probably not implemented in the kernel.
Just downloaded Radio FM from PlayStore and installed it. It works!!
I meant if there is a working FM radio tuner app that works without the internet on Lineage
gcrutchr said:
It's probably not implemented in the kernel.
Just downloaded Radio FM from PlayStore and installed it. It works!!
Click to expand...
Click to collapse