[HOW TO] Build custom stock kernel with Linaro GCC 4.9.1 - Sony Cross-Device General

I'm making AndroPlus Kernel but when you want to build custom stock kernel for Lollipop, you'll need some changes.
So I'm sharing my how to
If you want to build with other toolchain, just read ramdisk changes in 4. and cmdline changes in 7.
First of all, this official tutorial will help you a lot.
Prerequisites
You are running Linux or Mac with git commands
FTF for the version you want to build
* If your system doesn't contain commands in my tutorial, please search and install.
1. Put toolchain to your home
Download Linaro GCC 4.9.1-2014.04 Toolchains (A15) from this thread
and copy arm-cortex_a15-linux-gnueabihf-linaro_4.9.1-2014.04.tar.xz to your home,
then run these commands:
Code:
cd ~
tar Jxvf arm-cortex_a15-linux-gnueabihf-linaro_4.9.1-2014.04.tar.xz
* You can change location to everywhere you like
2. Download the kernel source
Sony has official Github but they are too slow to update kernel source...
Download kernel source from here and run these commands:
Code:
mkdir /custom_kernel && cd /custom_kernel
mkdir /final_files
mkdir /kernel_src && cd /kernel_src
bzip2 -dc 23.1.A.0.690.tar.bz2 | tar xvf -
* Change dir name and file name to extract
3. Prepare ramdisk
Make ramdisk_pack dir in home and extract kernel.sin from FTF to ramdisk_pack dir.
Download this scripts and mkbootimg,
then extract them and set 755 (rwxr-xr-x) permission.
4. Unpack ramdisk
Run runme_1unpack.sh to unpack ramdisk.
Code:
./runme_1unpack.sh
It will create kernel.sin-ramdisk dir and some files.
5. Repack ramdisk
Run runme_2repack_mod.sh.
Code:
./runme_2repack_mod.sh
This will patch and repack your ramdisk.
In my script, I'm disabling sony_ric and change some lines to fix unknown baseband.
Code:
# Disable sony_ric
sed -i -e "s/write \/sys\/kernel\/security\/sony_ric\/enable 1/# write \/sys\/kernel\/security\/sony_ric\/enable 0/g" init.sony-platform.rc
sed -i -e "s/mount securityfs securityfs \/sys\/kernel\/security nosuid nodev noexec/# mount securityfs securityfs \/sys\/kernel\/security nosuid nodev noexec/g" init.sony-platform.rc
sed -i -e "s/service ric \/sbin\/ric/service ric \/sbin\/ric\n disabled/g" init.sony-platform.rc
# Fix for Lollipop kernel
sed -i -e "s/chown tad tad \/dev\/block\/mmcblk0p1/chown root root \/dev\/block\/mmcblk0p1/g" init.sony-platform.rc
sed -i -e "s/chmod 0770 \/dev\/block\/mmcblk0p1/chmod 0777 \/dev\/block\/mmcblk0p1/g" init.sony-platform.rc
sed -i -e "s/user tad/user root/g" init.sony-platform.rc
sed -i -e "s/group tad root/group root root/g" init.sony-platform.rc
After that, you'll get [name]-ramdisk.cpio.gz.
Rename it to ramdisk.cpio.gz.
6. Prepare kernel build tools
Copy ramdisk.cpio.gz to ~/custom_kernel/final_files dir,
then download dtbToolCM from here and mkbootimg from here
and put them in ~/custom_kernel/final_files dir and set 755 (rwxr-xr-x) permission.
7. Patch some files to build with Linaro GCC 4.9.1
Open terminal in ~/custom_kernel/kernel_src, then run
Code:
git init
git remote add AndroPlus https://github.com/WedyDQ10/android_kernel_sony_msm8974ac.git
git fetch AndroPlus
git cherry-pick 3fdc1afb44e469417a9885138acfdf1ed356c8ca
git cherry-pick 488cfa625e0402e7c819a9e6240c349ed7bf5b9f
git cherry-pick b0fa0eee571e4587d0a2e256061532158b852253
git cherry-pick 116a674042845179e9ef2d7c2708db0c53e5e605
8. Build kernel
Download build script from here and set 755 (rwxr-xr-x) permission.
This script is for building Z3 (leo), so please change words
msm8974pro-ac-shinano_leo.dtb
shinano_leo_defconfig
boot_Z3.img
to something you want to build.
You can find defconfig in /arch/arm/configs.
In my script, I set cmdline
"androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x3b7 ehci-hcd.park=3 androidboot.bootdevice=msm_sdcc.1 vmalloc=300M dwc3.maximum_speed=high dwc3_msm.prop_chg_detect=Y".
This fix unknown baseband on Lollipop kernel.
After modifying script, run
Code:
./build_it4_leo
9. Done!
If build goes well, you'll get boot_Z3.img.
Flash it with
Code:
fastboot flash boot boot_Z3.img
If you get some error, please search with error message.
Credits:
Sony
DooMLoRD
Cyanogenmod
Christopher83
russel5
and other people involved

my building with GCC 4.6
work now!
the problem was with cmdline!
Thanks for sharing!
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Att GustavoRD78

Hi @AndroPlus
your build_it4_leo scripts shows that ........ramdisk ../final_files/ramdisk.cpio.gz but i got boot.img-ramdisk.gz (something) do i need to unpack and repack it to get ramdisk.cpio.gz ? or just replace ramdisk.cpio.gz with boot.img-ramdisk.gz in script ...
and one more thing i got zImage and zImage-dtb .. can u please explain what is zImage-dtb ?
Thanks

naitik2012 said:
Hi @AndroPlus
your build_it4_leo scripts shows that ........ramdisk ../final_files/ramdisk.cpio.gz but i got boot.img-ramdisk.gz (something) do i need to unpack and repack it to get ramdisk.cpio.gz ? or just replace ramdisk.cpio.gz with boot.img-ramdisk.gz in script ...
and one more thing i got zImage and zImage-dtb .. can u please explain what is zImage-dtb ?
Thanks
Click to expand...
Click to collapse
Please rename boot.img-ramdisk.cpio.gz to ramdisk,cpio.gz, or replace ramdisk,cpio.gz in script.
dtb is "Device Tree Blob" and used to make kernel more generic.
In short, zImage-dtb is device specific zImage.

AndroPlus said:
Please rename boot.img-ramdisk.cpio.gz to ramdisk,cpio.gz, or replace ramdisk,cpio.gz in script.
dtb is "Device Tree Blob" and used to make kernel more generic.
In short, zImage-dtb is device specific zImage.
Click to expand...
Click to collapse
Thanks for you help ...
i have one more question
i have compile kernel and got zImage and zImage-dtb .. if i use zImage-dtb then i dont need to create dt.img ? and what command to use to build boot.img (i think i have to only remove dt dt.img part or something )
Thanks
btw i got boot.img-ramdisk.gz it doesnt have .cpio.gz only .gz

naitik2012 said:
Thanks for you help ...
i have one more question
i have compile kernel and got zImage and zImage-dtb .. if i use zImage-dtb then i dont need to create dt.img ? and what command to use to build boot.img (i think i have to only remove dt dt.img part or something )
Thanks
btw i got boot.img-ramdisk.gz it doesnt have .cpio.gz only .gz
Click to expand...
Click to collapse
dt.img is automatically created if you use my build_it4_leo script. (Step 8)
kernel for my device (Z3) generates .cpio.gz, but maybe it's OK to use .gz for your device.

@AndroPlus
Maybe you can check if Sabermod or UBER is more batteryfriendly.

Hi @AndroPlus
need your help
I can build CM12.1 Kernel using Christopher83's latest GCC 4.9.3 for my Xperia Z1 but when i make CM12.1 kernel for my Xperia Z2 it stuck on CM logo and phone rebooted it self but i can build kernel with DooMLoRD's prebuild toolchain 4.9.1 without any issues .... tried so many times , also used justarchi's GCC 4.9.3 toolchain but same result ..
should i use this(which m using to build Z1 & Z2 Kernel) > .. /bin/arm-eabi- or this > ... bin/arm-linux-gnueabihf-
Any help would be appreciated ,,
i haven't applied any flags or anything ... everything is default .. just building from source..
Source - https://github.com/naitikshah2015/android_kernel_sony_msm8974

naitik2012 said:
Hi @AndroPlus
need your help
I can build CM12.1 Kernel using Christopher83's latest GCC 4.9.3 for my Xperia Z1 but when i make CM12.1 kernel for my Xperia Z2 it stuck on CM logo and phone rebooted it self but i can build kernel with DooMLoRD's prebuild toolchain 4.9.1 without any issues .... tried so many times , also used justarchi's GCC 4.9.3 toolchain but same result ..
should i use this(which m using to build Z1 & Z2 Kernel) > .. /bin/arm-eabi- or this > ... bin/arm-linux-gnueabihf-
Any help would be appreciated ,,
i haven't applied any flags or anything ... everything is default .. just building from source..
Source - https://github.com/naitikshah2015/android_kernel_sony_msm8974
Click to expand...
Click to collapse
Open the bin fine as u mentioned then see therir is many files which start with something. Like file 1 name - xdatool- blabla, file name 2- xdatool-bla222bla .. So the prefix should be "xdatool-"

Related

[DEV_TOOL] HTC ROM EXTRACTOR * UNRUU | DECRYPT/ENCRYPT rom.zip I REPACK system.img *

[DEV_TOOL] HTC ROM EXTRACTOR​
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Tools for working with firmware HTC in LINUX
fit Kenny Millington Source kmdm
(HOW TO)
PUSH THE BUTTON
! Requirements (libunshield v0.7 or higher):
Code:
$ sudo apt-get install automake
$ git clone https://github.com/kmdm/unshield.git
$ cd unshield/
$ git checkout -t origin/v18\_wip
$ ./bootstrap
$ ./configure --prefix=/usr
$ make
$ sudo make install
1. Extract from the zip and put the RUUXXXXXXXXX.exe to a folder with the tool;
2. Run in Terminal rom-extractor file and select the option:
MAIN MENU
u - UNRUU EXE TO ZIP - extract from the file rom.zip RUU.exe
d - DECRYPT MENU > DECRYPT MENU ROM.ZIP > OUTPUT.ZIP
r - REPACK MENU > REPACK MENU
e - ENCRYPT MENU >
c - CLEAN TOOL - Unmount and remove temporary files
x - exit
> DECRYPT MENU ROM.ZIP > OUTPUT.ZIP
1 ... 24 - decode the file rom.zip output.zip (select the target device)
> REPACK MENU
e - EXTRACT ZIP ROM - to extract the firmware from the ROM folder output.zip
m - MOUNT SYSTEM (EXT4 ONLY) - mount the partition image system.img in the folder system (you can add \ remove the firmware files)
d - DESPARSE SYSTEM.IMG (EXT4 ONLY) - uncompress the sparse image system.img (depending on the device - some zhaty, some not (determined EXPERIMENTAL)) and mount the partition image system.img in the folder system (you can add \ remove the firmware files)
s - MAKE SPARSE SYSTEM.IMG (EXT4 ONLY) - the creation of a sparse image sistem.img (you must specify the size of the partition XXXXM (device) - for example ONE X = 1280M)
n - UNMOUNT SYSTEM - dismount and delete the folder system
z - ADD SYSTEM.IMG > OUTPUT.ZIP - add new edited system.img into output.zip
> ENCRYPT MENU OUTPUT.ZIP > ROM.ZIP
1 ... 24 - create encrypt new rom.zip from output.zip
Thanks
as i9000 said:
[DEV_TOOL] HTC ROM EXTRACTOR​
Tools for working with firmware HTC in LINUX
fit Kenny Millington Source
(HOW TO)
PUSH THE BUTTON
! Requirements (libunshield v0.7 or higher):
Code:
$ git clone https://github.com/kmdm/unshield.git
$ cd unshield/
$ git checkout -t origin/v18\_wip
$ ./bootstrap
$ ./configure --prefix=/usr
$ make
$ sudo make install
1. Extract from the zip and put the firmware. Exe to a folder with the tool;
2. Run in Terminal rom-extractor file and select the option:
u - extract from the file rom.zip RUU.exe
1 ... 21 - decode the file rom.zip output.zip (select the target device)
e - to extract the firmware from the ROM folder output.zip
m - mount the partition image system.img in the folder system (you can add \ remove the firmware files)
n - dismount and delete the folder system
c - Clean all tools
x - exit
d - uncompress the sparse image system.img (depending on the device - some zhaty, some not (determined EXPERIMENTAL)) and mount the partition image system.img in the folder system (you can add \ remove the firmware files)
s - the creation of a sparse image sistem.img (you must specify the size of the partition XXXXM (device) - for example ONE X = 1280M)
Click to expand...
Click to collapse
i can not work and i can not runnig
R: [DEV_TOOL] HTC ROM EXTRACTOR extract RUU & repack system.img
lauri_ylonen said:
i can not work and i can not runnig
Click to expand...
Click to collapse
This is only for linux
Inviato dal mio GT-I9070 con Tapatalk 2
Are there plans to add the One S?
Nm. Just looked at the source.... Oops.
bedwa said:
Are there plans to add the One S?
Nm. Just looked at the source.... Oops.
Click to expand...
Click to collapse
INFO FOR ALL...
If your device is not supported and you would like it supported please open an issue in the tracker with the device name, codename and a link to the most recent hboot file for the device. (Not a link to the full RUU!)
Click to expand...
Click to collapse
Kenny Milington https://github.com/kmdm/ruuveal
anything more?..
I promise to add new binaries in my instrument as we update source
Not as all. The oops was cause I looked at the source and noticed the unpacker was One S supported. Lol.
Fixed a typo in paragraph 21
HTC One VX (tc2) > HTC One S (ville)
add
HTC_ROM-EXTRACTOR_v.0.0.3_x64
it seems that I'm doing something wrong.
[email protected]:~$ git clone https://github.com/kmdm/unshield.git
Cloning into 'unshield'...
remote: Counting objects: 569, done.
remote: Compressing objects: 100% (208/208), done.
remote: Total 569 (delta 370), reused 545 (delta 346)
Receiving objects: 100% (569/569), 116.31 KiB | 204 KiB/s, done.
Resolving deltas: 100% (370/370), done.
[email protected]:~$ cd unshield/
[email protected]:~/unshield$ git checkout -t origin/v18\_wip
Branch v18_wip set up to track remote branch v18_wip from origin.
Switched to a new branch 'v18_wip'
[email protected]:~/unshield$ ./bootstrap
Creating configure.ac...done.
+ aclocal -I m4
./bootstrap: 29: ./bootstrap: aclocal: not found
[email protected]:~/unshield$
Click to expand...
Click to collapse
can anyone help?
Maybe a more step-bystep guide,
Sorry for been noob
andrewschumi said:
it seems that I'm doing something wrong.
can anyone help?
Maybe a more step-bystep guide,
Sorry for been noob
Click to expand...
Click to collapse
sudo apt-get install automake
Added
v.o.o.4
22 - HTC One U (m7_u)
23 - HTC One UL (m7_ul)
24 - HTC Desire SV (magnids)
ADDED v.0.0.5
REBUILD TOOL
ADDED ENCRYPT MENU!!!
as i9000 said:
ADDED v.0.0.5
REBUILD TOOL
ADDED ENCRYPT MENU!!!
Click to expand...
Click to collapse
Could you please help? unruu never completes. It gives me this
Extracting temporary files...
Extracting rom zip files...
./unruu_exe: line 8: 4379 Aborted (core dumped) ./unruu ruu.exe
failed to open source zip: No such file or directory
That last line fails because decrypt is looking for a zip that was never made.
If i do ./unruu ruu.exe , I am given the following
[email protected]:~/Desktop/HTC_ROM-EXTRACTOR_v.0.0.5/tools$ ./unruu ruu.exe
Extracting temporary files...
Extracting rom zip files...
Aborted (core dumped)
Click to expand...
Click to collapse
this was done as root with the same result.
Perhaps I need to switch to all i386 binaries? Ill try that, but i was trying to avoid it, as it will break my current nvidia driver setup. ohwell
Tilde88 said:
Could you please help? unruu never completes. It gives me this
Extracting temporary files...
Extracting rom zip files...
./unruu_exe: line 8: 4379 Aborted (core dumped) ./unruu ruu.exe
failed to open source zip: No such file or directory
That last line fails because decrypt is looking for a zip that was never made.
If i do ./unruu ruu.exe , I am given the following
this was done as root with the same result.
Perhaps I need to switch to all i386 binaries? Ill try that, but i was trying to avoid it, as it will break my current nvidia driver setup. ohwell
Click to expand...
Click to collapse
Did you do this?
! Requirements (libunshield v0.7 or higher):
Code:
$ sudo apt-get install automake
$ git clone https://github.com/kmdm/unshield.git
$ cd unshield/
$ git checkout -t origin/v18\_wip
$ ./bootstrap
$ ./configure --prefix=/usr
$ make
$ sudo make install
Added version 0.0.6 x86-64
25 - HTC One WLS (m7_wls)
26 - HTC One SV (k2_u)
27 - HTC One SV (k2_plc_cl)
as i9000 said:
Did you do this?
! Requirements (libunshield v0.7 or higher):
Code:
$ sudo apt-get install automake
$ git clone https://github.com/kmdm/unshield.git
$ cd unshield/
$ git checkout -t origin/v18\_wip
$ ./bootstrap
$ ./configure --prefix=/usr
$ make
$ sudo make install
Click to expand...
Click to collapse
lol yes of course
Tilde88 said:
lol yes of course
Click to expand...
Click to collapse
OK, try to extract some different rom, may be you has problem from invalid ruu.exe..
and more, what size have your ruu.exe? - x32 systems, can't handle files largest 2GB...
as i9000 said:
OK, try to extract some different rom, may be you has problem from invalid ruu.exe..
and more, what size have your ruu.exe? - x32 systems, can't handle files largest 2GB...
Click to expand...
Click to collapse
im running x64, tried with x64 binaries, and i also tried using 32bit binaries. furthermore, my RUU is onlt 1.15GB. Also, x86 (there is not such thing as x32) can handle 3gb files.
thanks so much for the tool though, everything else workes, I juse used a script I found from another developer to get the .zip, then used your tool for all the other features.
Tilde88 said:
im running x64, tried with x64 binaries, and i also tried using 32bit binaries. furthermore, my RUU is onlt 1.15GB. Also, x86 (there is not such thing as x32) can handle 3gb files.
thanks so much for the tool though, everything else workes, I juse used a script I found from another developer to get the .zip, then used your tool for all the other features.
Click to expand...
Click to collapse
Well then stay one variant - you doesn't installed "Unshield", try run terminal and input 'unsield'
here the correct conclusion:
Code:
~$ unshield
No action provided on command line.
Syntax:
unshield [-c COMPONENT] [-d DIRECTORY] [-D LEVEL] [-g GROUP] [-i VERSION] [-GhlOrV] c|g|l|t|x CABFILE [FILENAME...]
Options:
-c COMPONENT Only list/extract this component
-d DIRECTORY Extract files to DIRECTORY
-D LEVEL Set debug log level
0 - No logging (default)
1 - Errors only
2 - Errors and warnings
3 - Errors, warnings and debug messages
-g GROUP Only list/extract this file group
-h Show this help message
-i VERSION Force InstallShield version number (don't autodetect)
-j Junk paths (do not make directories)
-L Make file and directory names lowercase
-O Use old compression
-r Save raw data (do not decompress)
-V Print copyright and version information
Commands:
c List components
g List file groups
l List files
t Test files
x Extract files
Other:
CABFILE The file to list or extract contents of
FILENAME... Optionally specify names of specific files to extract (wildcards are supported)
hi is there any chance to add the Desire HD. As i am trying to merge a Orange UK RUU for Desire DHD and they never released the last RUU with all the OTA's to make a New RUU with all the OTA's included.
I have made a Nandroid backup after all the OTA's was installed to the phone i even have all the OTA's just need a way to extract the rom.zip (easy from exe file not a issue) add the changed .img files such as radio, system, hboot recovery rcdata lib.img and make a new rom.zip and ruu.exe any way this can be done just tried with your tool and got invalid htc aes encrypted zip.
Thanks in advance

[GUIDE] How to compile any Custom ROM 4.3 for u8800pro [GUIDE]

Hello guys!! Here I am gonna explain you how to set up to compiling 4.3 Android Versions.
I am making that guide for show people who wanna compile any 4.3 Custom ROM from source like SlimBean, ParanoidAndroid, CarbonROM, Illusion... I am gonna make a post with the steps of how to compile any of them.
Also now I wanna say something to the the people which wanna try to compile any of that ROM, there are already some ROMs like CM 10.2 , BeanStalk and PAC 4.3 that are supported or compiled by some users. So I will say how to build any of them, but if that ROM is SlimBean, CM 10.2, Beanstalk 4.3 or PAC 4.3, do not release it just because they are already beeing mantained.
ROMS ALREADY MANTAINED:
SlimROM by Spacekiller (supported for Honor by desalesouche)
Cyanogenmod 10.2 by herna (supported for Honor by desalesouche)
BeanStalk 10.2 by herna (supported for Honor by desalesouche)
PAC-rom 4.3 by herna (supported for Honor by desalesouche) :
Setting up your environment for compile JB :
You need at least 70 GB of hard disk for compile one ROM and running 12.04+ 64 bits version.
-JDK 6: (recommended)
Code:
[COLOR="Black"]$ sudo apt-get install openjdk-6-jdk[/COLOR]
-Pyhton:
Code:
[COLOR="black"]$ sudo apt-get install python[/COLOR]
-Git:
Code:
[COLOR="black"]$ sudo apt-get install git-core[/COLOR]
Android SDK
Download the SDK here: http://developer.android.com/sdk/index.html
Extract the SDK and place it in your home directory.
I renamed my SDK to android-sdk to make it easier to navigate to – this tutorial assumes you've done that as well.
Go to your home folder, press Ctrl+H to show hidden files, and open up your .bashrc file.
Add these lines at the bottom of the file:
Code:
[COLOR="black"]# Android tools
export PATH=${PATH}:~/android-sdk/tools
export PATH=${PATH}:~/android-sdk/platform-tools
export PATH=${PATH}:~/bin[/COLOR]
Find your .profile file and add this at the bottom of the file:
Code:
[COLOR="black"]PATH="$HOME/android-sdk/tools:$HOME/android-sdk/platform-tools:$PATH"[/COLOR]
You have now successfully installed the Android SDK.
Install required packages. 64-bit
Code:
[COLOR="black"]$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so[/COLOR]
Code:
[COLOR="black"]$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so[/COLOR]
Install the repo:
Code:
[COLOR="black"]$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo[/COLOR]
SET UP DEPENDENCIES
Code:
cd x(x is your default ROM folder)
mkdir .repo/local_manifests
curl -L -o .repo/local_manifests/local_manifest.xml -O -L [url]https://raw.github.com/Herna1994/local_manifest/cm10.2/local_manifest.xml[/url]
repo sync -j16
After make that you will have all dependencies on good place for compile the ROM you want.​
How to compile SlimROM:
Firstly I suppost you made all steps on first post.
Syncing sources:
Code:
mkdir slim4.3 && cd slim4.3
repo init -u git://github.com/SlimRoms/platform_manifest.git -b jb4.3
mkdir .repo/local_manifests
curl -L -o .repo/local_manifests/local_manifest.xml -O -L https://raw.github.com/Herna1994/local_manifest/cm10.2/local_manifest.xml
repo sync -j16
Applying the patches:
1. Go to slim4.3/device/huawei/u8800pro/patch/external_wpa_supllicant_8 and copy the file from that photo:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
2. Then go to slim4.3/external/wpa_supplicant_8 and then paste the file, it must be like that:
3. Then open a terminal and put that:
Code:
cd slim4.3/external/wpa_supplicant_8
patch -p1 -N -i 0001-wext-use-combo-scan-to-avoid-SIOCSIWSCAN-error.patch
4. Go to slim4.3/device/huawei/u8800pro/patch/framework_av and copy the file from that photo:
5. Go to slim4.3/frameworks/av and paste the file, it must be like that:
6. Then open a terminal and put that:
Code:
cd slim4.3/frameworks/av
patch -p1 -N -i 0001-Add-support-for-huawei-devices.patch
7. Go to slim4.3/device/huawei/u8800pro/patch/libhardware_legacy and copy the file from that photo:
8. Go to slim4.3/hardware/libhardware_legacy and paste the file, it must be like that:
9. Then open a terminal and put that:
Code:
cd slim4.3/hardware/libhardware_legacy
patch -p1 -N -i 0001-Fix-Get-Mac-Address-For-Huawei-Devices-with-bcm.patch
10. Go to slim4.3/device/huawei/u8800pro/patch/audio-caf and copy the file from that photo:
11. Go to slim4.3/hardware/qcom/audio-caf and paste he file, it must be like that:
12. Then open a terminal and put that:
Code:
cd slim4.3/hardware/qcom/audio-caf
patch -p1 -N -i 0001-audio-msm7x30-Updates-for-MR2.patch
13. Now close the terminal and open new one and put:
Code:
cd slim4.3
lunch cm_u8800pro-userdebug && make bacon
How to compile CarbonROM:
Syncing sources:
Code:
mkdir carbon4.3 && cd carbon4.3
repo init -u https://github.com/CarbonDev/android.git -b jb3
mkdir .repo/local_manifests
curl -L -o .repo/local_manifests/local_manifest.xml -O -L https://raw.github.com/Herna1994/local_manifest/cm10.2/local_manifest.xml
repo sync -f
reserved
reserved too
It doesn't make you a dev if you compile 1 ROM.
I'm not a dev
Sent from my SGH-T769 using Tapatalk 4
Somcom3X said:
It doesn't make you a dev if you compile 1 ROM.
I'm not a dev
Sent from my SGH-T769 using Tapatalk 4
Click to expand...
Click to collapse
Okey, updated #1 post, hopes you like now
sources have been deleted once again...
what does always sources are disappearing?
desalesouche said:
what does always sources are disappearing?
Click to expand...
Click to collapse
Cm sources are screwed up atm
Sent from my SGH-T769 using Tapatalk 4
They are upgrading to 4.3 main branch
Somcom3X said:
Cm sources are screwed up atm
Sent from my SGH-T769 using Tapatalk 4
They are upgrading to 4.3 main branch
Click to expand...
Click to collapse
sorry i was talking about u8800pro device tree source on github....but no matter i have them all now....on github and also on cloud mediafire etc..., so if one somebody need i could give links...
Guys I need a qHD graphic.c for my Mega5.8 anyone can hook me up with qHD graphic.c?
Anyway desalesouche I would like the 4.3 tree(mediafire and git)
Sent from my GT-I9152 using Tapatalk 4
Rittik said:
Guys I need a qHD graphic.c for my Mega5.8 anyone can hook me up with qHD graphic.c?
Anyway desalesouche I would like the 4.3 tree(mediafire and git)
Sent from my GT-I9152 using Tapatalk 4
Click to expand...
Click to collapse
Here you can find graphics, you just need to modify them to get them for qHD:
https://github.com/Herna1994/android_device_huawei_msm7x30-common/tree/cm10.2/recovery
Rittik said:
Guys I need a qHD graphic.c for my Mega5.8 anyone can hook me up with qHD graphic.c?
Anyway desalesouche I would like the 4.3 tree(mediafire and git)
Sent from my GT-I9152 using Tapatalk 4
Click to expand...
Click to collapse
it is better to ask herna, for that for the moment i think... tree seem to be not ok... as i read all problem related to wifi etc... he would surely send you all what you need...
desalesouche said:
it is better to ask herna, for that for the moment i think... tree seem to be not ok... as i read all problem related to wifi etc... he would surely send you all what you need...
Click to expand...
Click to collapse
Yeah read about it. Am working on tree for Crater(GT-i9152) tree currently. Thanks though.
Sent from my GT-I9152 using Tapatalk 4

[Guide] How to build kernel from source on ubuntu 13.10...

Here are the steps to build your own kernel from source. This guide is showing you how to build your first the stock kernel on your own..... It is kick start for making things on your own way....
This guide applies to i9082/i9082L and general devices also.:laugh:
This guide assumes you have basic knowledge of linux and linux system configuration.
Prerequisites
1. Ubuntu 13.10
2. patience...lots and lots of patience.
Click to expand...
Click to collapse
Here starts the fun:-
1. Installing ubuntu 13.10.
This can be done in 3 ways and I am not gonna cover it all.
- along with windows ,i.e dual boot
- in virtualbox within windows
- as a windows application installation with "wubi" installer
For starting user i think second option, i.e installing in virtualbox is best.
here's starting tutorials
http://www.youtube.com/watch?v=tDDRFiwHujg
NOTE - you should have atleast 100 Gb partion for virtualbox.
Click to expand...
Click to collapse
2. Getting the kernel source.
Download source from http://opensource.samsung.com/
Type i9082 in search box and download "GT-I9082_SEA_JB_Opensource_Update1.zip"
After download unzip the source into new folder in home directory.
Type in terminal from you kernel directory.
Code:
unzip GT-I9082_SEA_JB_Opensource_Update1.zip
Then extract tar.
Code:
mkdir kernel
tar xzf kernel.tar.gz -C kernel
Click to expand...
Click to collapse
3. Setting up building environment.
Copied from http://soupdawg.wordpress.com/
All credits goes to
mysteriously inconspicuous
Click to expand...
Click to collapse
Initializing a fresh Android Build Environment in Ubuntu 13.10 sucks, right? The instructions at the AOSP page are outdated and inaccurate. Near as I can tell, they try to have you install 2 JDKs, the first one not even being the correct link for Saucy Salamander, and the second being OpenJDK. Which might work. But I dunno about all that, I’d rather have Oracle’s official stamp when it comes to building for Android.
Currently most of the guides are up to 12.04 LTS, which is fine and dandy, but being on the cutting edge is nice too.
This guide applies to all variations of Ubuntu 13.10 Saucy Salamander 64 bit. Do not use the 32 Bit version. Also, PAY CLOSE ATTENTION when to use “sudo” and when to not. It can make things funky if you do something as root that you shouldn’t.
Much thanks goes out to Google, ProTekk, Canonical, and everyone else that I read a random paragraph here and snippet there.
First, let’s set up the correct JDK.
Many of you probably have some kind of wrong Java installed unless you’re starting with a fresh Ubuntu base, and even then maybe.
Let’s get rid of that. Copy and paste this into a Terminal window:
Code:
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
Follow the instructions to remove OpenJDK.
If you must keep it, it’s possible. But I’m not going to tell you how to do it here. I don’t want any chance of confusion or mistake.
Now copy and paste the following into the Terminal:
Code:
sudo add-apt-repository ppa:webupd8team/java
This will add the correct PPA to your system for updated builds of Java 6 JDK that are compatible with 13.10.
No more unrecognized Java version errors! And it will update automatically with the rest of your system.
Next, we actually need to install the package. More copy-paste:
Code:
sudo apt-get update && sudo apt-get install oracle-java6-installer
Follow the on-screen instructions. You have to Accept the Licensing Agreement to complete the install. Hopefully no human centipede clauses.
Let’s make sure the correct version of Java is activated, run the following Terminal command:
Code:
java -version
You should see something like the following:
Code:
java version “1.6.0_45″
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01, mixed mode)
Ok, back to a fresh Terminal prompt. Time for installing the guts to build stuff in Ubuntu:
Code:
sudo apt-get install git-core gnupg ccache lzop flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32ncurses5 lib32z1 lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z-dev libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc readline-common libreadline6-dev libreadline6 lib32readline-gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev:i386 libreadline6:i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev libsdl1.2-dev libesd0-dev squashfs-tools pngcrush schedtool libwxgtk2.8-dev python
When that is done installing, run the following command in your Terminal window:
Code:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
That’s it on the package side of things.
You guessed it, time for more Terminal. This really is the easiest way, seriously. And it’s totally worth it when you’re basking in the glory of a bunch of people on XDA.
The binary for a program called “repo” will let you talk to git servers and download all that precious source code. That second part after the && allows it to be executable:
Code:
mkdir ~/bin && curl http://commondatastorage.googleapis.com/git-repo-downloads/repo ~/bin/repo && chmod a+x ~/bin/repo
Use your favorite text editor to open ~/.bashrc
I like nano:
Code:
sudo nano ~/.bashrc
At the very bottom, add the following line:
Code:
export PATH=~/bin:$PATH
Save it. In nano that would be Ctrl-O and then Enter. Then Ctrl-X to exit back to a prompt. Restart bash:
Code:
source ~/.bashrc
That should be everything. Now you’re ready to build Android the right way. Luck!
4. Installing toolchain
Anyway, first order of the day is to get the official arm toolchain, which I'm going to install in /usr/local/share/ since I plan to keep using it for some time:
Code:
# cd /usr/local/share/
# git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6
Cloning into 'arm-eabi-4.6'...
remote: Sending approximately 124.64 MiB ...
remote: Counting objects: 33, done
remote: Finding sources: 100% (33/33)
remote: Total 580 (delta 146), reused 580 (delta 146)
Receiving objects: 100% (580/580), 124.64 MiB | 715 KiB/s, done.
Resolving deltas: 100% (146/146), done.
Now, let's add that arm toolchain to our path:
Code:
# export PATH=$PATH:/usr/local/share/arm-eabi-4.6/bin
# arm-eabi-gcc --version
arm-eabi-gcc (GCC) 4.6.x-google 20120106 (prerelease)
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5. Compiling kernel
Now we need to set the variables that will tell the OS that we're cross compiling (again, something that you may want to do in your .profile using something like alias cross='export ARCH="arm";export SUBARCH="arm";export CROSS_COMPILE="arm-eabi-"'):
Code:
# export ARCH=arm
# export SUBARCH=arm
# export CROSS_COMPILE=arm-eabi-
Finally, we can initialize our default config and get going:
Prepare source for new compilation
Code:
make bcm28155_capri_ss_baffin_rev05_defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/lex.zconf.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
arch/arm/mach-capri/custom_boards/Kconfig:19:warning: defaults for choice values not supported
arch/arm/mach-capri/custom_boards/Kconfig:25:warning: defaults for choice values not supported
arch/arm/mach-capri/custom_boards/Kconfig:31:warning: defaults for choice values not supported
arch/arm/mach-capri/custom_boards/Kconfig:37:warning: defaults for choice values not supported
#
# configuration written to .config
#
Code:
# make -j*
(...)
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
* stands for number of cpus your computer has.like my has 4 so I will make it j4
* bcm28155_capri_ss_baffin_rev05_defconfig is stock config, for cm11 you will have diffrent config and for some cutom kernel something else.
6. Crafting an Android boot.img
The format of this Android boot images can be found in the bootimg.h of the mkbootimg tool from the android platform/system/core source. I guess we have to start somewhere, and we'll need to produce our own images, so let's start by fetching and recompiling mkbootimg then.
Code:
# git clone https://android.googlesource.com/platform/system/core bootimg-tools
Cloning into 'bootimg-tools'...
remote: Counting objects: 92, done
remote: Finding sources: 100% (92/92)
remote: Total 19302 (delta 11674), reused 19302 (delta 11674)
Receiving objects: 100% (19302/19302), 5.87 MiB | 655 KiB/s, done.
Resolving deltas: 100% (11674/11674), done.
# cd bootimg-tools/libmincrypt/
# gcc -c *.c -I../include
# ar rcs libmincrypt.a *.o
# cd ../mkbootimg
# gcc mkbootimg.c -o mkbootimg -I../include ../libmincrypt/libmincrypt.a
mkbootimg.c: In function 'main':
mkbootimg.c:245:9: warning: assignment discards 'const' qualifier from pointer target type [enabled by default]
# cp mkbootimg /usr/local/bin/
# cd ../cpio
# gcc mkbootfs.c -o mkbootfs -I../include
# cp mkbootfs /usr/local/bin/
New improved bootimg-tools can be found at.
Code:
# wget https://github.com/pbatard/bootimg-tools/archive/master.zip
lets compile from there
Code:
# cd /usr/src/android/bootimg-tools/mkbootimg/
# wget https://raw.github.com/pbatard/bootimg-tools/master/mkbootimg/unmkbootimg.c
# gcc -o unmkbootimg unmkbootimg.c
# cp unmkbootimg /usr/local/bin/
Now at last, you have the minimum of unmkbootimg, mkbootimg and mkbootfs installed in your path, and we can get going with our testing of the kernel.
I'll assume that you have a /usr/src/android/boot where you copied your boot.img, so let's get going....
Code:
# cd /usr/src/android/boot/
# ls
boot.img
# unmkbootimg -i boot.img
kernel written to 'kernel' (4738320 bytes)
ramdisk written to 'ramdisk.cpio.gz' (516287 bytes)
To rebuild this boot image, you can use the command:
mkbootimg --base 0 --pagesize 4096 --kernel_offset 0xa2008000 --ramdisk_offset 0xa3000000 --second_offset 0xa2f00000 --tags_offset 0xa2000100 --cmdline 'console=ttyS0,115200n8 [email protected] androidboot.console=ttyS0 vc-cma-mem=0/[email protected]' --kernel kernel --ramdisk ramdisk.cpio.gz -o boot.img
Code:
# ls
boot.img kernel ramdisk.cpio.gz
As an aside that you don't need to run, but since it should be elementary that this is the basic functionality you want from a proper boot image unpack tool, we can confirm that the data provided by the unpack tool will produce a boot.img that is binary identical to the original one-
Code:
# mkbootimg --base 0 --pagesize 4096 --kernel_offset 0xa2008000 --ramdisk_offset 0xa3000000 --second_offset 0xa2f00000 --tags_offset 0xa2000100 --cmdline 'console=ttyS0,115200n8 [email protected] androidboot.console=ttyS0 vc-cma-mem=0/[email protected]' --kernel kernel --ramdisk ramdisk.cpio.gz -o myboot.img
Code:
# ls
boot.img kernel myboot.img ramdisk.cpio.gz
# cmp -l boot.img myboot.img
#
Moving on. Since we just want to test a kernel, we shouldn't really have to touch the cpio image (ramdisk), but then again, my goal here is to give you as many pointers as I can, so we might as well see how we craft our own ramdisk while we're at it. What we're going to do here, as an academical exercise, is add an it_works file at the root of the filesystem, which we'll look for after we booted, to confirm that can use our modified stuff all the way through.
Code:
# mkdir ramdisk
# cd ramdisk
# gunzip -c ../ramdisk.cpio.gz | cpio -iu
1841 blocks
# ls
charger init.superuser.rc
data init.trace.rc
default.prop init.usb.rc
dev lpm.rc
file_contexts proc
fstab.capri_ss_baffin property_contexts
fstab.goldfish res
init sbin
init.bcm281x5.usb.rc seapp_contexts
init.capri_ss_baffin.rc sepolicy
init.cm.rc sys
init.environ.rc system
init.goldfish.rc ueventd.capri_ss_baffin.rc
init.log.rc ueventd.goldfish.rc
init.rc ueventd.rc
init.recovery.capri_ss_baffin.rc
# touch it-works
# ls
charger init.superuser.rc
data init.trace.rc
default.prop init.usb.rc
dev it-works
file_contexts lpm.rc
fstab.capri_ss_baffin proc
fstab.goldfish property_contexts
init res
init.bcm281x5.usb.rc sbin
init.capri_ss_baffin.rc seapp_contexts
init.cm.rc sepolicy
init.environ.rc sys
init.goldfish.rc system
init.log.rc ueventd.capri_ss_baffin.rc
init.rc ueventd.goldfish.rc
init.recovery.capri_ss_baffin.rc ueventd.rc
# find . | cpio -o -H newc | gzip > ../myramdisk.cpio.gz
1850 blocks
# cd ..
# ls
boot.img kernel myramdisk.cpio.gz ramdisk/ ramdisk.cpio.gz
We're finally set for the last part, where we copy the kernel we compiled earlier, and invoke mkbootimg with the set of parameters we got from unmkbootimg, and use both our modified kernel and cpio image:
Code:
# cp ~/kernel/arch/arm/boot/zImage .
# ls
boot.img kernel myramdisk.cpio.gz ramdisk/ ramdisk.cpio.gz zImage*
# mkbootimg --base 0 --pagesize 4096 --kernel_offset 0xa2008000 --ramdisk_offset 0xa3000000 --second_offset 0xa2f00000 --tags_offset 0xa2000100 --cmdline 'console=ttyS0,115200n8 [email protected] androidboot.console=ttyS0 vc-cma-mem=0/[email protected]' --kernel zImage --ramdisk myramdisk.cpio.gz -o myboot.img
# ls
boot.img kernel myboot.img myramdisk.cpio.gz ramdisk/ ramdisk.cpio.gz zImage*
7. testing new boot.img
Finally, a custom boot.img we can test. Let's press on by copying this myboot.img file into the directory we have adb and fastboot installed and run the following ser of commands which, unlike what many other guides seem to advise (what the heck, guys?), is NOT going to flash the kernel/boot.img but simply run it from memory. This means that, in case there's any mishap, you can simply power the "grand" off and you'll be good as new:
Code:
# ./adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
# ./adb reboot bootloader
# ./fastboot boot myboot.img
downloading 'boot.img'...
OKAY [ 0.223s]
booting...
OKAY [ 0.023s]
finished. total time: 0.246s
All in all, this looks fairly good. And a quick look to the root filesystem (through adb shell or through ssh) will also confirm that our it_works file is there, so we can also add whatever we want on the initial filesystem. Neat!
From there on, you can go ahead and tweak your kernel and initial filesystem exactly as you see fit. And after you have tested that everything works as it should, you can go ahead and flash the boot partition with your shiny custom boot.img, using:
ODIN or cwm flashable zip
This is last part...
8. making flashable files
Tar your boot.img file so it can be flashed with Odin.
tar cvf mynewkernel.tar boot.img
md5sum -t mynewkernel.tar >> mynewkernel.tar
mv mynewkernel.tar mynewkernel.tar.md5
Click to expand...
Click to collapse
Note:- myboot.img is renamed to boot.img
9.Flashing kernel through ODIN
Flash mynewkernel.tar.md5 with odin under PDA. Please follow the flashing guides found in other posts.
Hope i help few of you...
Please HIT thanks if you find this helpful.:laugh:
Thankyou k2wl for this tutorial and pls also tell how to get pawitp source code for rom and kernel from his repositries : https://github.com/pawitp/android_device_samsung_i9082
https://github.com/pawitp/android_kernel_samsung_i9082
Repo tool is not working because there is no android manifest file in his repository
Pls help me
mr.phantom said:
Thankyou k2wl for this tutorial and pls also tell how to get pawitp source code for rom and kernel from his repositries : https://github.com/pawitp/android_device_samsung_i9082
https://github.com/pawitp/android_kernel_samsung_i9082
Repo tool is not working because there is no android manifest file in his repository
Pls help me
Click to expand...
Click to collapse
run the following in terminal
$git clone https://github.com/pawitp/android_device_samsung_i9082.git
and
$ git clone https://github.com/pawitp/android_kernel_samsung_i9082.git
k2wl said:
run the following in terminal
$git clone https://github.com/pawitp/android_device_samsung_i9082.git
and
$ git clone https://github.com/pawitp/android_kernel_samsung_i9082.git
Click to expand...
Click to collapse
well i already have done that cloning for cm11 but it had only downloaded files around 200KB and i dont think so that cm11 source code would be that much small
hi
mr.phantom said:
well i already have done that cloning for cm11 but it had only downloaded files around 200KB and i dont think so that cm11 source code would be that much small
Click to expand...
Click to collapse
That's not cm11 source. For that u need another tutorial.
Meanwhile try wiki.CyanogenMod.org
It has instructions for Building for new device
Code:
unmkbootimg.c:25:21: fatal error: bootimg.h: No such file or directory
#include "bootimg.h"
^
compilation terminated.
Getting this while compiling unmkbootimg
i actually am surprises that there are many unofficial CMs in high ends with HALO IN IT.. though our developers try to make rom as close to real one as possible...what if the users want halo integration (as developers only know it :/)
help..
akiratoriyama said:
Code:
unmkbootimg.c:25:21: fatal error: bootimg.h: No such file or directory
#include "bootimg.h"
^
compilation terminated.
Getting this while compiling unmkbootimg
Click to expand...
Click to collapse
try compiling as a root.
k2wl said:
try compiling as a root.
Click to expand...
Click to collapse
How to convert zImage to boot.img
Or do I have to directly copy it ?
Sent from my GT-I9082 using Tapatalk
raghavsharmaxda said:
i actually am surprises that there are many unofficial CMs in high ends with HALO IN IT.. though our developers try to make rom as close to real one as possible...what if the users want halo integration (as developers only know it :/)
help..
Click to expand...
Click to collapse
k2wl said:
try compiling as a root.
Click to expand...
Click to collapse
akiratoriyama said:
How to convert zImage to boot.img
Or do I have to directly copy it ?
Sent from my GT-I9082 using Tapatalk
Click to expand...
Click to collapse
read the last section of post, it covers the conversion of zimage to boot.img...
seems you compiled successfully.
congrats.:victory:
But what about boot.img ?
We need a boot.img in /android/boot ?
Now at last, you have the minimum of unmkbootimg, mkbootimg and mkbootfs installed in your path, and we can get going with our testing of the kernel.
I'll assume that you have a /usr/src/android/boot where you copied your boot.img, so let's get going....
Click to expand...
Click to collapse
Hi @k2wl.For the part "make -j8",if you don't mind putting a sign for others to only compile at the amount of their CPU have otherwise it will caused some error for others who are compiling
1 CPU= make -j1 with least error
Sent from my iPad using Tapatalk
Really nice guide especially about packing the initramfs with the zimage to make boot.img.
Sent from my GT-I9082 using Tapatalk
akiratoriyama said:
But what about boot.img ?
We need a boot.img in /android/boot ?
Click to expand...
Click to collapse
take one from my stock kernel zip....
Techix18 said:
Hi @k2wl.For the part "make -j8",if you don't mind putting a sign for others to only compile at the amount of their CPU have otherwise it will caused some error for others who are compiling
1 CPU= make -j1 with least error
Sent from my iPad using Tapatalk
Click to expand...
Click to collapse
thanks for suggestion.
skullface said:
Really nice guide especially about packing the initramfs with the zimage to make boot.img.
Sent from my GT-I9082 using Tapatalk
Click to expand...
Click to collapse
thanks....will modify more..
k2wl said:
That's not cm11 source. For that u need another tutorial.
Meanwhile try wiki.CyanogenMod.org
It has instructions for Building for new device
Click to expand...
Click to collapse
ok will check it out and will you make a guide for that also??
mr.phantom said:
ok will check it out and will you make a guide for that also??
Click to expand...
Click to collapse
if people wanted it, will make cm11 compilation from source tutorial for it.
Thanks to ya k2wl
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Sent from my GT-I9082 using Tapatalk
happy developing.....glad i helped you...
keep trying for learning new features...
k2wl said:
if people wanted it, will make cm11 compilation from source tutorial for it.
Click to expand...
Click to collapse
Pls k2wl make a new tutorial which include cm11 compilation for grand from source and its kernel also
Hey @k2wl
Just wanted to say thank you for this comprehensive guide. Very detailed.
I never had any interest in tweaking a kernel. I am more of a java guy. But after reading your guide, I thought, why not?!
So I started working on it. Now I have a fully functional kernel compiled separately from the ROMs that I compile.
I even named it. Nebula Kernel.
Learning alot about kernels since I started working on it. As I am tweaking nebula for myself and i'll use this kernel as my daily driver so i'll add tweaks and governors according to me, the ones which I'll use. I like keeping things light and simple! I'll use your github for reference and help. If I face any problems, I'll ask you.
Thank you for the guide!

[GUIDE][REVISED] Build CM12.1 from Source! [NOW-CAT&GRANDMA-FRIENDLY]

Im sick of seeing guides around that tell you all about how to build a rom but never ever go into detail about the hardest part in my opinion which is obtaining device specific code, its ridiculous!? So im here to help.
Just a prior note, im no dev, ive never built from source before (hopefully this will change in few days ) and the real devs are people like Luk & Luca who built a lovely repos for us with lots of good documentation. So please go and give Luca & Luk a thanks on any one of there posts!
Also i would like to personally thank Luca for helping me when i asked for info regarding building.
Lets get started shall we!
1 - Pre-requisites
4+ GB RAM (I have 4GB)
Preferably a Quad-Core CPU (I have an i5)
At least 90GB of HDD/SSD space for the repo & ccache (SSD recommended for faster compile times, i have a 750GB HDD)
GPU - (not needed but may aswell throw it in here) GTX-740M & Intel HD 4000 (Optimus technology - not working on Linux though)
And lastly a Github account, please go make one (its free!)
2 - Installing Linux
We need a Linux based 64 bit OS, i use Lubuntu with my own tweaks
Download and install it, either dual-boot or use it as your primary OS like the bad-ass you are! (If you want help on doing this there at least +100000 guides in google and youtube alone)
3 - Grabbing build dependencies
Code:
sudo apt-get install git && cd ~/ && git clone https://github.com/DiamondBond/Scripts/ .init-scripts && cd ~/.init-scripts && ./dev_init.sh
Copy & Pasta that code above into your terminal and accept/press ok/press yes to any prompts that appear
That should get your system fit with all the necessary things to build and work with androids source, its about 900mb of a download! So sit back and relax...
4 - Preparing to download the massive source-code
I recommend downloading a small movie before doing this so you can relax while it all syncs! (just be sure to keep your eye on that sync window to make sure its still scrolling...)
Lets make a folder to hold all our stuff:
Code:
mkdir -p ~/android/titan/roms/cm && cd ~/android/titan/roms/cm
Now your inside the cm folder, you have to be in the cm directory every-time you want to start building!
Now initiate the cm repo: (one-time thing)
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-12.1
Now it might give a small error at the end stating for some email and user id stuff.
So now is the time to add your github infos (run this in terminal):
Code:
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
EG:
Code:
git config --global user.email "[email protected]"
git config --global user.name "Diamond Bond"
We havnt yet downloaded the CM source, but we will in the next part...
(source code is roughly 35GB for CM12.1 , pure AOSP is slightly smaller)
5 - Downloading & waiting
Note: Straight after syncing official CM12.1 repo this is its size: (31GB)
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
It is time!, run one of the two commands below (depending on your networking speed) to initiate the long wait of syncing!)
Code:
repo sync
Finished? sweet, lets have a rave party!
6 - Building!
Now once youve downloaded all the source code you should be able to run your first build after init!
Thanks to some nice build scripts by Luca and Luk, running builds is super duper easy!
To initialize the last thing, run:
Code:
. build/envsetup.sh
then to build run
Code:
brunch titan
to build, ive read around and on my system it should only take 1.5 to 3 hours tops, and my system is mediocre + its a laptop so take in account that it may thermally throttle, if you have a desktop it should only take around 1-2 hours with relatively decent specs!
7 - Party Time!
If you want help please leave a comment in this thread and i/others will try to help.
Also if you do get a successful build done please share it with us, we would love to be a part of your victory party!
Thanks to this guide: http://forum.xda-developers.com/chef-central/android/guide-android-rom-development-t2814763
&
Luca & Luk again!
@Pizza_Dox
Replace
Code:
mkdir ~/titan/ && cd ~/titan/ && mkdir cm12 && cd ~/titan/cm12/
With
Code:
mkdir -p ~/titan/cm12 && cd ~/titan/cm12/
Also users don't need github account to just build the rom.
I would try this, but I don't have a cat. Thanks for sharing tho
Exactly what I was looking .
Thank you for sharing.
LuK1337 said:
@Pizza_Dox
Replace
Code:
mkdir ~/titan/ && cd ~/titan/ && mkdir cm12 && cd ~/titan/cm12/
With
Code:
mkdir -p ~/titan/cm12 && cd ~/titan/cm12/
Also users don't need github account to just build the rom.
Click to expand...
Click to collapse
Thanks updated.
hippy dave said:
I would try this, but I don't have a cat. Thanks for sharing tho
Click to expand...
Click to collapse
Haha welcome
CaptainCaptcha said:
Exactly what I was looking .
Thank you for sharing.
Click to expand...
Click to collapse
Enjoy!
LuK1337 said:
@Pizza_Dox
Replace
Code:
mkdir ~/titan/ && cd ~/titan/ && mkdir cm12 && cd ~/titan/cm12/
With
Code:
mkdir -p ~/titan/cm12 && cd ~/titan/cm12/
Also users don't need github account to just build the rom.
Click to expand...
Click to collapse
Oh right i know you dont need a github account but its better to have one
Updating this soon
Sent from my Motorola Titan
I dont know why but every time i repo sync it gets stuck here for quiet a long time and after sometimes ends up in error like below.. Is it that its downloading below package file again
koradiavatsal said:
I dont know why but every time i repo sync it gets stuck here for quiet a long time and after sometimes ends up in error like below.. Is it that its downloading below package file again
Click to expand...
Click to collapse
Sent from MicroTitan
There are some tricks to before compiling.
This is just the introduction to compile Cyanogenmod
Good job @Pizza_Dox :good:
klander said:
There are some tricks to before compiling.
This is just the introduction to compile Cyanogenmod
Good job @Pizza_Dox :good:
Click to expand...
Click to collapse
And they are? Please let us know
Sent from MicroTitan
Code:
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.4.4
CM_VERSION=
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
TARGET_CPU_VARIANT=generic
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.16.0-4-amd64-x86_64-with-debian-8.0
HOST_BUILD_TYPE=release
BUILD_ID=KTU84Q
OUT_DIR=/data/deepak/titan/cm11/out
============================================
Checking build tools versions...
************************************************************
You are attempting to build with an unsupported JDK.
You use OpenJDK but only Sun/Oracle JDK is supported.
Please follow the machine setup instructions at
https://source.android.com/source/download.html
Continue at your own peril!
************************************************************
************************************************************
You are attempting to build with an unsupported version
of java.
Your version is: java version "1.7.0_75".
The correct version is: Java SE 1.6 or 1.7.
Please follow the machine setup instructions at
https://source.android.com/source/download.html
************************************************************
find: `bootable/recovery/res-720': No such file or directory
No private recovery resources for TARGET_DEVICE generic
Entire build directory removed.
Set cache size limit to 50.0 Gbytes
/tmp/hudson8243709547868758627.sh: line 13: ./resync.sh: No such file or directory
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/goldfish/vendorsetup.sh
including device/generic/mips/vendorsetup.sh
including device/generic/x86/vendorsetup.sh
including vendor/cm/vendorsetup.sh
including sdk/bash_completion/adb.bash
including vendor/cm/bash_completion/git.bash
including vendor/cm/bash_completion/repo.bash
including vendor/cm/vendorsetup.sh
ls: cannot access device/*/titan/cm.mk: No such file or directory
build/core/product_config.mk:234: *** Can not locate config makefile for product "cm_titan". Stop.
Device titan not found. Attempting to retrieve device repository from CyanogenMod Github (http://github.com/CyanogenMod).
Found repository: android_device_motorola_titan
Default revision: cm-11.0
Checking branch info
Default revision cm-11.0 not found in android_device_motorola_titan. Bailing.
Branches found:
cm-12.0
Use the ROOMSERVICE_BRANCHES environment variable to specify a list of fallback branches.
ls: cannot access device/*/titan/cm.mk: No such file or directory
build/core/product_config.mk:234: *** Can not locate config makefile for product "cm_titan". Stop.
** Don't have a product spec for: 'cm_titan'
** Do you have the right repo manifest?
No such item in brunch menu. Try 'breakfast'
real 0m17.121s
user 0m0.256s
sys 0m0.024s
Build step 'Execute shell' marked build as failure
Sending e-mails to: [email protected]
[BFA] Scanning build for known causes...
[BFA] Done. 0s
Finished: FAILURE
Can someone help please? or just list me with cm11 commands of repo initialisation and device trees?
klander said:
There are some tricks to before compiling.
This is just the introduction to compile Cyanogenmod
Good job @Pizza_Dox :good:
Click to expand...
Click to collapse
Oh okay, well thank you, ill try and add whatever more into this so more people can compile,
Quick steps for compiling cm11
I hope you dont mind adding to OP
repo init -u git://github.com/CyanogenMod/android -b cm-11.0
curl --create-dirs -L -o .repo/local_manifests/titan.xml -O -L https://raw.githubusercontent.com/motog2014devteam/roomservice/cm-11.0/manifest.xml
repo sync
Thanks @LuK1337
Sent from MicroTitan
koradiavatsal said:
Quick steps for compiling cm11
I hope you dont mind adding to OP
repo init -u git://github.com/CyanogenMod/android -b cm-11.0
curl --create-dirs -L -o .repo/local_manifests/titan.xml -O -L https://raw.githubusercontent.com/motog2014devteam/roomservice/cm-11.0/manifest.xml
repo sync
Thanks @LuK1337
Sent from MicroTitan
Click to expand...
Click to collapse
done
Great, I'll try this guide, thank you very much I was always curious about ROM development. In case, where can I ask questions about it ?
Regarding this guide : is necessary to create a bin folder in home directory ? Usually I put large binaries in /opt/. Is there any permission problem ?
davcri91 said:
Great, I'll try this guide, thank you very much I was always curious about ROM development. In case, where can I ask questions about it ?
Regarding this guide : is necessary to create a bin folder in home directory ? Usually I put large binaries in /opt/. Is there any permission problem ?
Click to expand...
Click to collapse
Thanks
Um I think its best to keep the binary as is since other things might link to it and etc... Questions can be asked here I or others will try to help! Glad this helps.
Is there a way to use these steps to similarly build a kernel? As Moto G2 lollipop kernel sources are out (http://www.androidpolice.com/2015/02/23/motorola-finally-posts-kernel-source-lollipop-2014-moto-x), I want to try building a stock kernel.
@LuK1337 Is this guide still work since titan switched to new kernel?
I get this errors while building
<code>
find: `dummy': No such file or directory
build/core/tasks/kernel.mk:130: **********************************************************
build/core/tasks/kernel.mk:131: * Kernel source found, but no configuration was defined *
build/core/tasks/kernel.mk:132: * Please add the TARGET_KERNEL_CONFIG variable to your *
build/core/tasks/kernel.mk:133: * BoardConfig.mk file *
build/core/tasks/kernel.mk:134: **********************************************************
make: *** No rule to make target 'bacon'. Stop.
</code>
koradiavatsal said:
@LuK1337 Is this guide still work since titan switched to new kernel?
I get this errors while building
<code>
find: `dummy': No such file or directory
build/core/tasks/kernel.mk:130: **********************************************************
build/core/tasks/kernel.mk:131: * Kernel source found, but no configuration was defined *
build/core/tasks/kernel.mk:132: * Please add the TARGET_KERNEL_CONFIG variable to your *
build/core/tasks/kernel.mk:133: * BoardConfig.mk file *
build/core/tasks/kernel.mk:134: **********************************************************
make: *** No rule to make target 'bacon'. Stop.
</code>
Click to expand...
Click to collapse
So
rm -rf out
rm -rf .repo/local_manifests
rm -rf build* resync.sh patches
And follow the guide
Or join irc hannel isntead of using thread xd

[GUIDE][COMPLETE] Build or Port MIUI ROM to Any Device

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Introduction:-
Hey guys! Here's a complete tutorial for building or porting MIUI to your device! I know there are already some guides for it but I felt none of them were noob-friendly and many were confusing and missing some important instructions. So I decided to share this complete guide which will teach you how to build MIUI from scratch. This is a basic guide in which I have taken building latest MIUI v7 as example. So let's start!
POST 1- Guide to build MIUI using PatchROM Sources
POST 2- Modifying boot.img
POST 3- Guide to port MIUI from another device
Basically,There are two methods by which you can build MIUI ROM for your device.
Build from source using PatchROM Method
Port manually from another device which already has MIUI
Let's start with PatchROM Method:-
Requirements:-
Ubuntu 14.04 64-bit. (Installed as virtual machine like in VMware will also work)
Base ROM for your device.
NOTE- Preferably take pure AOSP built for your device as base ROM rather than CyanogenMod. You'll get less rejects while patching MIUI framework. But CM works too! Your choice..
Apktool. You can use Advanced Apktool by BDFreak. It's easier to use.
Working brain and a lot of patience!!
Prerequisites:-
First of all, take framework-res.apk, framework.jar, framework2.jar, services.jar, android.policy.jar and telephony-common.jar from your base ROM zip.
Now using apktool, decompile all above files.
If you're using advanced apktool then go to 3-Out folder and rename the respective folders to-
PHP:
framework-res
framework.jar.out
framework2.jar.out
services.jar.out
android.policy.jar.out
telephony-common.jar.out
We'll need these folders further for MIUI framework patching.
STEP-1: Preparing build environment
Switch to Ubuntu 14.04. We'll have to prepare ROM building environment.
Next step is to setup android sdk. Follow THIS guide. (Look at 2nd answer graphical image explanation. Follow till step 5.)
Now run the following commands as superuser from terminal-
PHP:
sudo apt-get update
Then after run this-
sudo apt-get install bison build-essential curl flex git git-core gnupg gperf libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-7-jdk openjdk-7-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev unzip lib32readline-gplv2-dev lib32z1-dev make python-networkx zlib1g-dev:i386 phablet-tools
Click to expand...
Click to collapse
All the necessary packages are now installed. Now the next step is to configure repository.
In terminal,run following commands-
PHP:
mkdir -p ~/bin
PHP:
PATH=~/bin:$PATH
PHP:
cd ~/bin
PHP:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
PHP:
chmod a+x ~/bin/repo
PHP:
mkdir ~/patchrom
PHP:
cd ~/patchrom
PHP:
repo init -u git://github.com/MiCode/patchrom.git -b miui-7 -m android-4.4.4.xml
Now you'll have to configure git. Run following commands in terminal-
Code:
git config --global user.email [COLOR="Red"]ENTER_YOUR_EMAIL_ID_HERE[/COLOR]
Code:
git config --global user.name [COLOR="Red"]ENTER_YOUR_REAL_NAME_HERE[/COLOR]
Now it's time to download the MIUI source code! Run the following command in terminal-
PHP:
repo init -u git://github.com/MiCode/patchrom.git -b miui-7 -m android-4.4.4.xml
PHP:
repo sync
Now grab a cup of coffee while the MIUI source gets downloaded. Required time depends on speed of your internet connection. The MIUI source is of size about 600-700 MB (With .repo total is 1.5 GB).
After the source is downloaded,create a new directory in /home. Name it whatever you want. (Preferably codename of your device) In my case, it's taoshan.
PHP:
cd /home/stryder/
PHP:
mkdir taoshan
PHP:
cd taoshan
Now create a makefile for your device. If you want, you can make changes to this my makefile and use.
PHP:
gedit makefile
You can copy the following content in makefile (Don't forget to make changes in it according to your device) and save it.
Code:
#
# Makefile for taoshan
#
# The original zip file, MUST be specified by each product
local-zip-file := stockrom.zip
# The output zip file of MIUI rom, the default is porting_miui.zip if not specified
local-out-zip-file := MIUI7_taoshan.zip
# All apps from original ZIP, but has smali files chanded
local-modified-apps :=
local-modified-priv-apps :=
local-modified-jars :=
# All apks from MIUI
local-miui-removed-apps :=
local-miui-removed-priv-apps :=
local-miui-modified-apps :=
# All apps need to be removed from original ZIP file
local-remove-apps := Gallery2 Exchange2
# Config density for co-developers to use the aaps with HDPI or XHDPI resource,
# Default configrations are HDPI for ics branch and XHDPI for jellybean branch
local-density := XHDPI
PORT_PRODUCT := taoshan
# To include the local targets before and after zip the final ZIP file,
# and the local-targets should:
# (1) be defined after including porting.mk if using any global variable(see porting.mk)
# (2) the name should be leaded with local- to prevent any conflict with global targets
#local-pre-zip := local-pre-zip-misc
#local-after-zip:= local-put-to-phone
# The local targets after the zip file is generated, could include 'zip2sd' to
# deliver the zip file to phone, or to customize other actions
#include phoneapps.mk
include $(PORT_BUILD)/porting.mk
local-pre-zip-misc:
@echo Update boot.img
cp other/boot.img $(ZIP_DIR)/boot.img
@echo Update build.prop
cp other/build.prop $(ZIP_DIR)/system/build.prop
@echo Delete some unneeded files
rm -rf $(ZIP_DIR)/system/etc/.has_su_daemon
rm -rf $(ZIP_DIR)/system/priv-app/Dialer.apk
rm -rf $(ZIP_DIR)/system/priv-app/Keyguard.apk
rm -rf $(ZIP_DIR)/system/priv-app/SystemUI.apk
rm -rf $(ZIP_DIR)/system/priv-app/VoiceDialer.apk
rm -rf $(ZIP_DIR)/system/priv-app/Launcher3.apk
rm -rf $(ZIP_DIR)/system/priv-app/ParanoidOTA.apk
rm -rf $(ZIP_DIR)/system/priv-app/ThemeChooser.apk
rm -rf $(ZIP_DIR)/system/priv-app/ThemesProvider.apk
Explanations:-
'local-zip-file' = Name of your original Base ROM zip
'local-out-zip-file' = Name for your finished MIUI rom
'local-modified-apps' = Apps that will be modified to fit in with the framework. They need to be modified because they contact with the system
'local-remove-apps' = Apps that will be removed from the original ROM
'local-pre-zip' = Refers to code-block that should be executed before the zip is done.
'local-after-zip' = Refers to code-block executed after the zip is completed
'local-zip-misc' = The code-block just described at 'local-pre-zip'. It adds some Google Apps and a build.prop
'local-test' = Another code-block
Now, manually copy the previously decompiled framework folders to your device folder.
PHP:
framework-res
framework.jar.out
framework2.jar.out
services.jar.out
android.policy.jar.out
telephony-common.jar.out
Next,copy your Base ROM zip in your device folder.
Now move to patchrom folder.
PHP:
cd ~/patchrom
PHP:
source build/envsetup.sh
Again move to your device folder and start MIUI framework patching.
PHP:
cd /home/stryder/taoshan
PHP:
make firstpatch
Now a new folder folder temp will be created. In that you'll find the reject folder in which there will be rejects which you have to fix manually. Follow THIS excellent guide by @JavierAlonso to fix rejects. Also see THIS guide.
After fixing all the rejects, type following command to create a flashable zip of your MIUI ROM.
PHP:
make fullota
or you can also use
PHP:
make zipfile
With this, the flashable zip file is built. Now follow the tutorial from next post to modify your boot.img and include this new boot.img in your flashable MIUI ROM zip. Then flash the zip from recovery and enjoy your source built MIUI ROM!
Sometimes, your device might get stuck on bootanimation so in this case, take LOGCAT and look for the error and solve it. You can use some tools like Advanced Logcat Viewer to read the log.
Modifying boot.img
Now, let's modify the boot.img from base ROM zip to it make compatible with our MIUI ROM.
First of all, download any boot image kitchen or editor. I used Android Image Kitchen for Windows.
Assuming you're using the same kitchen, Extract the files from Android Image Kitchen in a separate folder. Copy your base ROM boot.img in that folder.
Now drag and drop the boot.img on unpackimg. The kernel files will be extracted in ramdisk and split_img folder.
We have to modify the ramdisk so move to that. In sbin folder, you'll see the extracted files.
Now there are two chances- First, Your ramdisk is already extracted with various folders and files. In that case ignore the next steps and directly modify in respective files using Notepad++.
While in second case, you'll get the ramdisk as ramdisk.cpio file. If you get this the you'll have to move to Ubuntu again for extracting it.
Now in Ubuntu, copy your ramdisk.cpio in a seperate folder (suppose in stryder folder) in your home directory.
Now, open terminal and run the following command-[No need as superuser]
PHP:
cd stryder
PHP:
cpio -i -F ramdisk.cpio
Some output will be shown in terminal as 2320 blocks or something like that!
Now in your folder, you'll see the extracted ramdisk files.
Now comes the actual modification.
First of all, download attached zip and extract the files in appropriate folders. (If the folder is not present, add that folder).
Open default.prop and edit the lines like this-
PHP:
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.adb.secure=0
ro.secure=0
ro.allow.mock.location=0
ro.debuggable=1
persist.sys.usb.config=mtp,adb
persist.service.adb.enable=1
persist.service.debuggable=1
Save the changes and open init.cm.rc (In case of CyanogenMod) or init.pa.rc (In case of AOSPA). Add # before the import line like this-
PHP:
# Superuser
#import /init.superuser.rc
Save this file and now open init.rc.
At the end of init.rc file, add these lines-
PHP:
#service for shelld
service shelld /system/xbin/shelld
class main
#service for su
service su_daemon /system/xbin/su --daemon
class main
oneshot
service lbesec /system/xbin/lbesec
class main
oneshot
Save this file and then open seapp_contexts.
In that file, add at the end-
PHP:
user=theme seinfo=platform domain=platform_app type=platform_app_data_file
user=backup seinfo=platform domain=platform_app type=platform_app_data_file
user=updater seinfo=platform domain=platform_app type=platform_app_data_file
user=theme_man domain=system_app type=system_data_file
Also modify these lines (if present) to look like this-
PHP:
user=_app domain=untrusted_app type=app_data_file
user=_app seinfo=platform domain=platform_app type=app_data_file
user=_app seinfo=shared domain=shared_app type=app_data_file
user=_app seinfo=media domain=media_app type=app_data_file
user=_app seinfo=release domain=release_app type=app_data_file
Save this file and if present, open init.qcom.rc.
And before this line (at the end)-
PHP:
on property:sys.boot_completed=1
Add these lines-
PHP:
service shelld /system/xbin/shelld
class main
Save the file. Now it's time to repack your ramdisk.
First, move your original ramdisk.cpio from the extracted folder to /home. That is, if your extracted ramdisk is in
PHP:
/home/stryder/
Move original ramdisk.cpio file to-
PHP:
/home/
After that, run this command in terminal-
PHP:
cpio -i -t -F ../ramdisk.cpio | cpio -o -H newc -O ../ramdisk_new.cpio
Now a new file ramdisk_new.cpio will be created. Take a look if it's of the same size as the original one just a few bytes difference.
Also open this ramdisk_new.cpio and make sure you have the newly added files in it. (Ex. otad in bin folder etc.)
Now move this ramdisk_new.cpio to previously extracted Android Image kitchen ramdisk/sbin/ directory.
Delete the original ramdisk.cpio from it and rename the ramdisk_new.cpio to ramdisk.cpio.
Now come back and directly run repackimg. The modified image_new will be generated. Rename it to boot and include this modified boot.img in your MIUI ROM zip. Now you can proceed to flash your MIUI ROM!
Special Thanks- @Zenamp
Port MIUI from another device
Requirements:-
7-zip, Winrar or similar software
Notepad++
Instructions:-
First of all, make 2 folders- 1. BASE ROM 2. PORT ROM
What is Base ROM: It is the ROM which is built for your device. (AOSP or CM etc.)
What is Port ROM: MIUI ROM of other device which you want to port to your device.
NOTE- It's better if the port device and your device has same CPU architecture and specifications. If you couldn't find same specification device then try the device having almost similar specification of your device.
Now extract the Base ROM zip in BASE ROM folder and Port ROM zip in PORT ROM folder.
Next, Delete addon.d (If present), app, framework, fonts, media and priv-app folder in System folder of BASE ROM.
Now copy addon.d (If present), app, framework, fonts, media and priv-app folder from system folder of PORT ROM to system folder of BASE ROM.
Now open etc folder in both ROMs folder. Go to init.d folder of PORT and copy and replace any extra files except 00banner to init.d of BASE ROM.
Now open permissions folder in etc of both ROMs and copy and replace all the permissions files from PORT ROM to your BASE ROM folder except handheld_core_hardware.xml and platform.xml. (In case of CM based BASE ROM, also don't replace org.cyanogenmod.hardware.xml).
Also copy any extra folder available in PORT ROM etc/ to BASE ROM etc/ e.g. miui_feature folder.
Now open your system_fonts.xml in etc folder of BASE ROM and copy this before </familyset> end of file
PHP:
<family>
<nameset>
<name>miui</name>
</nameset>
<fileset>
<file>Miui-Regular.ttf</file>
<file>Miui-Bold.ttf</file>
</fileset>
</family>
<family>
<nameset>
<name>miuiex</name>
</nameset>
<fileset>
<file>MiuiEx-Regular.ttf</file>
<file>MiuiEx-Bold.ttf</file>
</fileset>
</family>
<family>
<nameset>
<name>miuiex-light</name>
</nameset>
<fileset>
<file>MiuiEx-Light.ttf</file>
</fileset>
</family>
Now copy all the extra files from PORT ROM bin, lib and xbin folder to BASE ROM respective folders. Remember, DO NOT REPLACE anything. Just copy and paste and skip the files with same name.
Now, open build.prop of BASE ROM. You can change these value to anything you like-
PHP:
ro.build.id=
ro.build.display.id=
ro.build.date=
ro.build.date.utc=
ro.product.locale.language=en
ro.product.locale.region=US
ro.cm.version=
ro.modversion=
Now copy paste these values at the end of your BASE ROM build.prop. You can edit the fields but keep the structure same.You can look at PORT ROM build.prop for reference.
PHP:
ro.build.description=devicename-user 4.4.2 yourname C2104XXUCNG1 release-keys
ro.build.fingerprint=devicemanufacturer/devicemodel/device:4.4.2/yourname/C2104XXUCNG1:user/release-keys
ro.product.model=Xperia L
ro.product.device=taoshan
ro.build.characteristics=default
#MIUI_Features
ro.miui.has_real_blur=0
ro.miui.has_handy_mode_sf=1
ro.config.sms_received_sound=FadeIn.ogg
ro.config.sms_delivered_sound=MessageComplete.ogg
ro.product.manufacturer=Xiaomi
ro.config.elder-ringtone=Angel.mp3
persist.sys.mitalk.enable=true
ro.miui.ui.version.code=5
ro.miui.ui.version.name=V7
persist.sys.strictmode.disable=true
ro.product.mod_device=yourdevice
Change these fields in BASE ROM build.prop according to PORT ROM build.prop-
PHP:
ro.config.notification_sound=
ro.config.alarm_alert=
ro.config.ringtone=
If your device has On-screen buttons, then add this value at the end of BASE ROM build.prop-
PHP:
qemu.hw.mainkeys=0
Now we're done with build.prop.
Next, open META-INF/com/google/android/updater-script from BASE ROM using Notepad++ and change, compare and replace all the symlink and set_metadata lines in updater-script according to PORT ROM updater-script.If some extra lines are there in BASE ROM updater-script, keep it as it is.
NOTE:-I have attached one sample updater-script with this post. Look below. You can refer from that if you feel any difficulty.
Add these before unmount("/system"); at the end of updater-script-
PHP:
set_perm(0, 1000, 06750, "/system/xbin/shelld");
run_program("/sbin/busybox", "mount", "/data");
package_extract_dir("data", "/data");
package_extract_file("META-INF/com/miui/relink", "/tmp/relink");
set_perm(0, 0, 0555, "/tmp/relink");
run_program("/tmp/relink");
delete("/tmp/relink");
set_perm_recursive(1000, 1000, 0755, 0644, "/data/miui");
set_metadata("/system/bin/debuggerd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/bin/debuggerd_vendor", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:debuggerd_exec:s0");
set_metadata("/system/xbin/su", "uid", 0, "gid", 2000, "mode", 06755, "capabilities", 0x0, "selabel", "u:object_r:su_exec:s0");
delete_recursive("/data/miui/preinstall_apps");
delete_recursive("/data/miui/cust/preinstall_apps");
ui_print("Installation finished...Enjoy!");
unmount("/data");
Also copy META-INF/com/miui and data folder to BASE ROM from PORT ROM.
Now modify your BASE ROM boot.img using the tutorial from previous post and put that new boot.img in BASE ROM folder.
Finally, select META-INF, system, boot.img, file_contexts(If present) and data folder in BASE ROM.
Right click and select Add to Archive. Select Zip. Type the name of zip. (Don't delete ".zip" at the end!) Click OK.
Now you're ready to flash this zip from recovery.
Sometimes, your device might get stuck on bootanimation so in this case, take LOGCAT and look for the error and solve it. You can use some tools like Advanced Logcat Viewer to read the log. Look HERE for fixing bootloop.
I hope you guys understood how to build and port MIUI. I wish you good luck! If you get stuck anywhere, If you become successful building MIUI, feel free to post here. Also if you succeed, I'll appreciate if you give me credits and add link to this thread in your ROM thread on XDA.
Frequently Asked Questions
Shepard62700FR said:
The PatchROM technique (post #1 tutorial) works for Android 4.4 KitKat, meaning that you have to find a KitKat AOSP or CyanogenMod 11 ROM for your device as a base, STRYDER said that he doesn't recommend the OEM Stock ROM as a base due to vendor stuff that might cause more rejects (and I think if the stock ROM is not deodexed, it's worse).So preferably take aosp kitkat rom as base. Patchrom method won't work for Android 5.0 Lollipop and higher.
If you want to port a MIUI Lollipop/Marshmallow ROM to a Lollipop/Marshmallow based device, you will have to do the "port from other device" technique (post #3), which is to find MIUI ROM for another device with the same Android version, chipset, screen resolution and follow the port method. Use this guide for porting to qualcomm and broadcom devices preferably. For mediatek devices, I suggest following porting guides from MIUI forums. Though this guide might work as well.
Click to expand...
Click to collapse
Question:- Can I port MIUI to XXX device?
Answer:- You'll never know if you don't try!
Question:- Can you please port/help porting MIUI to XXX device?
Answer:- Sorry, I won't port. It's not possible for me to accept port requests, that's why I wrote this guide so that you can port it yourself and test it out on the device you own! About helping, post your issues/logs here in this thread. Me or any other members will help you as they can.
Its awesome bro.
Thanks for sharing with us.....
wolfmannight said:
Its awesome bro.
Thanks for sharing with us.....
Click to expand...
Click to collapse
You're welcome bro!
A perfect guide! Many Thanks!
abhatia1435 said:
A perfect guide! Many Thanks!
Click to expand...
Click to collapse
You're welcome bro! It's the most simplified guide you'll ever find...You can try porting MIUI 7 to your Xperia M!
Heyyy Bro, sorry for the noob questions but will all our Sony stuffs like XReality, DSEE HX HD audio, headphone settings will be lost or not, can we mix MIUI with Sony's stuffs
STRYDER~007 said:
You're welcome bro! It's the most simplified guide you'll ever find...You can try porting MIUI 7 to your Xperia M!
Click to expand...
Click to collapse
Yes bro. Was thinking of that only Can I use the method mentioned in 3rd post? Using XL's ROM for porting to XM? Have you released it for XL?
Black Plague said:
Heyyy Bro, sorry for the noob questions but will all our Sony stuffs like XReality, DSEE HX HD audio, headphone settings will be lost or not, can we mix MIUI with Sony's stuffs
Click to expand...
Click to collapse
Well some features may be lost but i have seen my friend @gamzekal has built MIUI with Sony stuffs HERE..So yeah..Probably we can include those stuffs..I'm not sure though!
abhatia1435 said:
Yes bro. Was thinking of that only Can I use the method mentioned in 3rd post? Using XL's ROM for porting to XM? Have you released it for XL?
Click to expand...
Click to collapse
Yeah you can use any method..I have not yet released MIUI for XL..There are some issues with RIL which I'm fixing now..But you can take any other device and port from it..Visit MIUI site and download latest v7! Try taking the device which has similar specification with your XM.. But not necessarily..I ported the one from HTC One S and it still worked!!
Sad but true, I tried to ask him about how he do that stuff but xda won't allow me to send message zzz coz his inbox if full
Black Plague said:
Sad but true, I tried to ask him about how he do that stuff but xda won't allow me to send message zzz coz his inbox if full
Click to expand...
Click to collapse
Yeah I know! Probably he's too lazy to delete his old msgs!!
@STRYDER~007 You did it again bro!!! Thanks for sharing this with us!
sebastiandg7 said:
@STRYDER~007 You did it again bro!!! Thanks for sharing this with us!
Click to expand...
Click to collapse
Happy to share bro! Enjoy!
This is a nice guide... But only for 4.4.4, correct @STRYDER~007?
repo init -u git://github.com/MiCode/patchrom.git -b miui-7 -m android-4.4.4.xml
Click to expand...
Click to collapse
I wan't to port this for eagle (D2303), but all 4.4.4 AOSP / CM / Omni roms are fuc*** up, none of them works properly to be used as base, and all devs went directly into CM12.1 / Omni 5.1.1, which work fantastic. Any ideas?
linuxct said:
This is a nice guide... But only for 4.4.4, correct @STRYDER~007?
I wan't to port this for eagle (D2303), but all 4.4.4 AOSP / CM / Omni roms are fuc*** up, none of them works properly to be used as base, and all devs went directly into CM12.1 / Omni 5.1.1, which work fantastic. Any ideas?
Click to expand...
Click to collapse
Yep.. Only for 4.4 since MIUI 7 patchrom source is based on 4.4.. Try to find base ROM which will be somewhat stable to be used as base.. There's no alternative to that!
Thanks for giving this guide bro.. I am trying your second method, I am using V7.0.5.0.KXDMICI (MIUI7) (downloaded from official site)(for Mi3) rom as a port rom, but i noticed that there is no init.d folder in the etc folder, Am i selected the wrong rom to port? or there is another problem?
dineshkumareswaran said:
Thanks for giving this guide bro.. I am trying your second method, I am using V7.0.5.0.KXDMICI (MIUI7) (downloaded from official site)(for Mi3) rom as a port rom, but i noticed that there is no init.d folder in the etc folder, Am i selected the wrong rom to port? or there is another problem?
Click to expand...
Click to collapse
For which device are you porting? What is your base rom?(You can find it in build.prop) Explain in detail..Also if there's no init.d, it doesn't matter..Go ahead with further procedure..
STRYDER~007 said:
For which device are you porting? What is your base rom?(You can find it in build.prop) Explain in detail..Also if there's no init.d, it doesn't matter..Go ahead with further procedure..
Click to expand...
Click to collapse
I am trying it for xperia L, I am using nyx rom as my base rom(if you recommend any other i can go with it), I am noob in porting (i can't find init.d in build prop, i try further steps and inform you and thanks

Categories

Resources