Guest zelea2 Posted May 29, 2013 Report Posted May 29, 2013 (edited) First you need an original boot.img file. Extract its components with the abootimg program. $ abootimg -x boot.img writing boot image config in bootimg.cfg extracting kernel in zImage extracting ramdisk in initrd.img Search for the first "1F 8B 08" bytes in zImage (that's the signature of a gzip file); make a new file starting from there and gunzip it. This will create your Image kernel (decompressed) In the new file search again "1F 8B 08" and make a new file out of that and gunzip it. This will be your kernel config file. Alternatively you can do 'zcat /proc/config.gz' on your runnig phone to achieve the same result. For convinience I've already edited out the CONFIG_ACER_SECURE_MOUNT define and you can grab the file here. Install your ARM cross-compiler and toolchain from your favorite place. grab the kernel sources opensrc_Acer_AV051_S500_RV04RC09_WW_GEN1-20130322.tar.gz or newer; untargz them. Edit the file ./drivers/gpu/msm/adreno.c and change in function adreno_iommu_setstate the 'unsigned int link[250];' to 240 otherwise you'll have a frame overflow error. Also in scripts/Makefile.lib change this line (if you want) -cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -n -f -9 > $@) || \ +cmd_gzip = (cat $(filter-out FORCE,$^) | 7z a $@ -tgzip -mx=9 -si) || \ because the 7z can also make gzip files but with much better compression. Finally after you've copied the '.config' in the kernel tree $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage ... and wait. After a while you'll have yout new zImage file. Now the ramdisk: make a 'work' directory and cd to it. $ zcat ../initrd.img | cpio -i edit the default.prop file to 'ro.secure=0' and 'ro.debuggable=1' and then convert back to compressed cpio: $ find . ! -name "." | cpio -o -H newc | 7z a ../initrd.img -tgzip -mx=9 -si now 'cd ..' and put everything back together $ abootimg --create boot.img -k zImage -r initrd.img look at the new size of your boot.img modify in bootimg.cfg the bootsize value (in hex) to reflect this new size and run again with the -f parameter $ abootimg --create boot.img -f bootimg.cfg -k zImage -r initrd.img Done. Here is my compiled version. Edited May 30, 2013 by zelea2
Guest razvankim Posted June 6, 2013 Report Posted June 6, 2013 So this is a kernel ? Mount RW/RO works with this kernel ? What this kernel contains ? What gouvernors? And what did you modified ?
Guest bobbes Posted June 17, 2013 Report Posted June 17, 2013 (edited) Thanks for your tutorial zelea2!! It helped me a lot with building my own kernel. I did a few things in an alternative way: In adb shell on the device I did: cat /proc/config.gz > /external_sd/config.gz Then in shell I did: adb pull /external_sd/config.gz[/code] to transfer the file to the current directory. Then I did a [code]gunzip config.gz[/code] to unzip the config file. After modifying the config file (just modified the CONFIG_ACER_SECURE_MOUNT from n to y) I build the kernel. I did not modify anything else!! I did get an error while repacking the ramdisk when using your command. To succesfully repack I used [code]find . | cpio -o -H newc | gzip > ../initrd.img[/code] After creating a boot.img it runs perfectly. I get the same benchmark results with my own compiled kernel as with the original (even slightly better!) What do you mean with the frame overflow buffer? Without modification my kernel seems to run fine or am I missing something? Do you also know how I can make the S500 let accept a [CODE]adb remount[/code] command? Thanks in advance! Edited June 17, 2013 by bobbes
Guest DopT1 Posted June 22, 2013 Report Posted June 22, 2013 Would it be unwise to change other stuff in the build.prop? I'm thinking things like lcd density ( value up or down?), acer shell, ...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now