I'm trying to boot my Nexus 10 with your linux-kvm-arm kernel version 3.13... - Nexus 10 Q&A, Help & Troubleshooting

Hello to everyone,
I'm trying to boot my Nexus 10 with another kind of kernel version,because I'm not interested to use the Android kernel,but the Ubuntu pure kernel. I've chosen to use the linux-kvm-arm kernel version 3.13 :
These are the commands that I have used :
git clone git://github.com/virtualopensystems/linux-kvm-arm.git
cd linux-kvm-arm
git checkout origin/chromebook-3.13 -b chromebook-3.13
curl http://www.virtualopensystems.com/downloads/guides/kvm_on_chromebook/config > .config
and then I've added these lines to the .config file :
CONFIG_ANDROID=y
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ASHMEM=y
CONFIG_ANDROID_LOGGER=y
CONFIG_ANDROID_PERSISTENT_RAM=y
CONFIG_ANDROID_RAM_CONSOLE=y
CONFIG_ANDROID_TIMED_OUTPUT=y
CONFIG_ANDROID_TIMED_GPIO is not set
CONFIG_ANDROID_LOW_MEMORY_KILLER=y
CONFIG_ANDROID_SWITCH is not set
CONFIG_ANDROID_INTF_ALARM is not set
CONFIG_FB_TILEBLITTING=y
CONFIG_PHONE is not set
CONFIG_USB_WPAN_HCD is not set
CONFIG_WIMAX_GDM72XX is not set
CONFIG_ARM_PLATFORM_DEVICES=y
CONFIG_ARM_CHROMEOS_FIRMWARE=y
CONFIG_CHROMEOS=y
CONFIG_CHROMEOS_VBC_BLK=y
CONFIG_CHROMEOS_VBC_EC=y
CONFIG_CHROMEOS_RAMOOPS_RAM_START=0x41f00000
CONFIG_CHROMEOS_RAMOOPS_RAM_SIZE=0x00100000
CONFIG_CHROMEOS_RAMOOPS_RECORD_SIZE=0x00020000
CONFIG_CHROMEOS_RAMOOPS_DUMP_OOPS=0x1
CONFIG_CLKDEV_LOOKUP=y
and then I did :
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make uImage dtbs
from here I've followed the tutorial that I've found here :
http://forum.xda-developers.com/showthread.php?t=1981788
and here :
http://forum.xda-developers.com/showthread.php?t=1981788&page=2
mkdir -p newkernel
cd newkernel
wget -c https://dl.google.com/dl/android/aosp/mantaray-kot49h-factory-174ba74f.tgz
tar xvzf mantaray-kot49h-factory-174ba74f.tgz
cd mantaray-kot49h
unzip image-mantaray-kot49h.zip
wget -c http://android-serialport-api.googlecode.com/files/getramdisk.py
chmod +x getramdisk.py
./getramdisk.py boot.img --> ramdisk.img
wget -c http://android-serialport-api.googlecode.com/files/android_bootimg_tools.tar.gz
tar xvf android_bootimg_tools.tar.gz
./mkbootimg --kernel ../../linux-kvm-arm/arch/arm/boot/zImage --ramdisk ramdisk.img --cmdline bootimg.cfg -o new-boot.img
fastboot flash boot new-boot.img
I think that something is wrong here,because it is not able to boot....I see a black screen and nothing else happens...

Hi,
probably too simple, but:
How does your .config look?
Did the curl actually work? (I ask because I tried your URL and it didn't work for me).
Did you actually compile a guest kernel too and boot it?
Special ChromeOS suupport does not exist in that branch.

Keep up the work, if you succeed booting linux, I got a prize for you.
Don't take it wrong, I'm just too bored of the tablet as it is now.
Wejgomi

Related

[HELP]Re-create bootable blob with init.rc changes

Good evening all!!
Well after two days of hitting my head against the wall I decided to ask for help.. typical guy here!!
Problem: when using the blobtools to create a boot blob it soft bricks my transformer. No idea why.
Objective: Create a bootable boot blob with init.rc changes
Steps token to create the boot blob:
::Tools Used::
- BlobTools created by RaYmAn
- BootTools created by RaYmAn
::Blob used:: Stock kernel provided by clemsyn ( h t t p : / / w w w . megaupload.com/?d=GSIHUPJ6 ) kernelblob
1. After compiling blobtools I used "blobunpack" to unpack my blob
Code:
./blobunpack /home/mike/Android/kernelblob
Once done it produced "kernelblob.HEADER" and "kernelblob.LNX"
2. After compiling boottools I used "bootunpack" to unpack "kernelblob.LNX"
Code:
./bootunpack /home/mike/Android/kernelblob.LNX
Which produced "kernelblob.LNX-kernel.gz" and "kernelblob.LNX-ramdisk.cpio.gz"
3. Then I uncompressed "kernelblob.LNX-ramdisk.cpio.gz"
Code:
gunzip -c /home/mike/Android/kernelblob.LNX-ramdisk.cpio.gz | cpio -i
Which produced the initramfs. Made my changes to init.rc
4. Re-created ramdisk using this command
Code:
find . | cpio -o -H newc | gzip > ../newkernelblob.LNX-ramdisk.cpio.gz
5. Then re-create kernelblob.LNX (boot.img) with mkbootimg
Code:
mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel kernelblob.LNX-kernel.gz --ramdisk newkernelblob.LNX-ramdisk.cpio.gz -o newkernelblob.LNX
6. re-created blob using blobpack
Code:
./blobpack kernelblob.HEADER boot_blob LNX newkernelblob.LNX
Example provided by RaYmAn
Code:
./blobpack blobname.HEADER outputfile LNX boot.img
Then I try to flash the new boot_blob but after I reboot it just gets stuck on the ASUS screen...
Thanks for taking the time to read this and help me!!!! Hope this will help others
Just to note:: Even if I do not make changes to init.rc it still does not boot which tells me it might have something to do with the way I'm repacking the blob..... Thanks again for anyones help!!!
Anyone?????
trying to keep the thread alive.... I've tried with the offical blob too. No luck!
I am running ubuntu 64-bit with jdk installed!
The problem is the fact that you pass a cmdline to the mkbootimg command.
On most tegra2 based devices, the cmdline is passed by the bootloader UNLESS the boot.img has a cmdline. Your cmdline is obviously wrong for a tegra2 device, so it never boots.

<Making Progress> Compile 2013 Nexus 7 – Flash to device – Stuck a Google boot screen

<Making Progress> Compile 2013 Nexus 7 – Flash to device – Stuck a Google boot screen
I am using the following device: 2013 Nexus 7
Android version: 4.3
Kernel version: [email protected]__ #1
Build number: JSS15Q
The problem:
When I try to flash a new boot.img file that contains my own recompiled kernel I am unable to boot the system – it sticks at the Google boot screen (and does not make it to the color X screen)
Below I have detailed out the steps I have taken. Please take a look and tell me if you notice if I am doing something wrong.
The following step were taken while running Ubuntu 12.04 LTS
*******************************************************************************************
Unlocking the 2013 Nexus 7 (Flo=wifi)
Rooting the 2013 Nexus 7 (Flo=wifi)
*** Compile/Recompile the kernel ***
*** Create a new boot.img file ***
….. contains instructions for getting root access
*** Flashing a new boot.img file ***
*******************************************************************************************
Unlocking the 2013 Nexus 7 (Flo=wifi)
Open a terminal and make sure that your system can see the Nexus 7, run:
$ ./adb devices
If you see the Nexus 7, run:
$. /adb reboot bootloader
When the bootloader screen has reappeared, run:
$ sudo ./fastboot devices
-If you can see the Nexus 7, run:
$ sudo ./fastboot oem unlock
-Look at the Nexus 7, a screen should appear asking you if you want to “Unlock the bootloader” – choose Yes.
You will need to use volume up/down to choose a response and press the power button to select.
- The device will flash a new image and exit to prompt
Next, reboot the device:
$ sudo ./fastboot reboot
The device is now unlocked.
*******************************************************************************************
Rooting the 2013 Nexus 7 (Flo=wifi)
*** Compile/Recompile the kernel ***
In the following steps you will be compiling/recompileing a kernel for the Nexus 7.
*Make sure that libncurses5-dev is installed (needed for make menuconfig)
Starting out I am at the following location
[email protected]:/home/user $
In your home directory create a folder named “Razor_Flo”:
$ mkdir Razor_Flo
Move into the new folder:
$ cd Razor_Flo
You should be here – [email protected]:/home/user/Razor_Flo $
In the Razor_Flo directory, create a sub directory named “Kernel”:
$ mkdir Kernel
Move into the new folder:
$ cd Kernel
You should be here – [email protected]:/home/user/Razor_Flo/Kernel $
[----------------- For the next steps, I used the following website to determine what files I needed -----------------]
__http__://source.android.com/source/building-kernels.html
Figuring out which kernel to build
[----------------------------------------------------------------------------------------------------------------------------------------------]
In the Kernel folder, download the following files:
$ git clone __https__://android.googlesource.com/device/asus/flo-kernel
$ cd flo-kernel
You should be here – [email protected]:/home/user/Razor_Flo/Kernel/flo-kernel $
$ git log --max-count=1 kernel
-- Log information will be displayed, under the “flo: prebuilt kernel” you will see a set of numbers and letters that will look like 365a6e0, note that number for future use.
Back out of the flo-kernel folder
$ cd ..
You should be here – [email protected]:/home/user/Razor_Flo/Kernel $
Once you are in the Kernel folder, download the following files:
$ git clone __https__://android.googlesource.com/kernel/msm.git
-- This command will create an msm directory
Move into the msm folder
$ cd msm
You should be here – [email protected]:/home/user/Razor_Flo/Kernel/msm $
[---------------------- For the next step, I used the following website to acquire the files I needed --------------------]
__http__://source.android.com/source/building-kernels.html
On a linux host, if you don't have an Android source tree, you can download the prebuilt toolchain from:
$ git clone __https__://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6
[-----------------------------------------------------------------------------------------------------------------------------------------------]
Export the path to the prebuilt gcc files
$ export PATH=$PATH: <link to files>
Additional exports
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
Checkout the correct kernel files
$ git checkout 365a6e0 <-- the number you noted above
Make the Kernel
$ make flo_defconfig
* At this point you can use “make menuconfig” to make any changes to the .config file you need (i.e. kernel modifications)
$ make
* When the make is complete a file named zImage will be created here:
.../arch/arm/boot/zImage <-- Note this, you will need the file later
The kernel compile/recompile is now complete
*** Create a new boot.img file ***
In the following steps you will be taking apart the “Factory boot.img” so that you can create a “Modified boot.img” which will contain your modified and rooted kernel.
You should be here – [email protected]:/home/user/Razor_Flo/Kernel/msm $
Move up two directories
$ cd ../../
You should be here – [email protected]:/home/user/Razor_Flo $
[------------------------------------------------------- Tools need for next step -------------------------------------------------------]
You will need to download the following files.
-- split_bootimg.pl
__http__://code.google.com/p/zen-droid/downloads/detail?name=split_bootimg.pl
-- mkbootimg
__http__://code.google.com/p/zen-droid/downloads/detail?name=mkbootimg
-- 2013 Nexus Factory Images
__https__://dl.google.com/dl/android/aosp/razor-jss15q-factory-4f77b811.tgz
* You will need to copy this file to a unique location so that you can extract the “boot.img” that is located with it.
[------------------------------------------------------------------------------------------------------------------------------------------------]
Create a new folder named Workspace
$ mkdir Workspace
Enter the Workspace directory
You should be here – [email protected]:/home/user/Razor_Flo/Workspace $
Make two new folders in this directory
$ mkdir Original
$ mkdir Hacked
Move into the Hacked folder
You should be here – [email protected]:/home/user/Razor_Flo/Workspace/Hacked $
Create a new folders named Hacked_ramdisk
$ mkdir Hacked_ramdisk
Move up two directories – to the Workspace folder
$ cd ../../
You should be here – [email protected]:/home/user/Razor_Flo/Workspace $
Copy the 2013 Nexus 7 factory boot.img file into the ..Workspace/Original folder
-- can be found within the factory tgz file:
Copy the split_bootimg.pl file to the ..Workspace/Original folder
Copy the mkbootimg file to the ..Workspace/Hacked folder
Move the zIamge file to the ..Workspace/Hacked folder
Move to the Hacked folder
You should be here – [email protected]:/home/user/Razor_Flo/Workspace/Hacked $
Rename the zImage file to boot.img-kernel
Move up one directory - to the Workspace folder
You should be here – [email protected]:/home/user/Razor_Flo/Workspace $
Move to the Original folder
You should be here – [email protected]:/home/user/Razor_Flo/Workspace/Original $
Run the following command:
$ ./split_bootimg.pl boot.img
This will create two files, copy the boot.img-kernel and boot.img-ramdisk.gz
Copy the boot.img-ramdisk.gz file to the “Hacked/Hacked_ramdisk” folder
Move to the Hacked/Hacked_ramdisk folder
You should be here – [email protected]:/home/user/Razor_Flo/Workspace/Hacked/Hacked_ramdisk $
Run the following command:
$ sudo gzip -cd boot.img-ramdisk.gz | cpio -i
This will extract all the files with in the boot.img-ramdisk.gz file.
Delete the original boot.img-ramdisk.gz file that you just extracted the files from.
Edit the default.prop file
change ro.secure=1 to ro.secure=0
change ro.adb.secure=1 to ro.adb.secure=0
Save changes and close the file.
Run the following command :
$ find .| cpio -o -H newc | gzip > insecure_boot.img-ramdisk.gz
This will create a new file named insecure_boot.img-ramdisk.gz.
Rename the insecure_boot.img-ramdisk.gz. file to boot.img-ramdisk.gz and copy it up one folder in the hierarchy to the “Hacked” folder.
Move up one directory - ../Workspace/Hacked
You should be here – [email protected]:/home/user/Razor_Flo/Workspace/Hacked $
List the files in the ../Workspace/Hacked directory, there should be three files:
(1) boot.img-kernel, (2) boot.img-ramdisk.gz, & (3) mkbootimg
Run the following command from within the “Hacked” folder
$ ./mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel boot.img-kernel --ramdisk boot.img-ramdisk.gz -o mynewimage.img
Rename mynewimage.img to boot.img and flash on the device.
The new boot image is now complete and ready to flash.
*** Flashing a new boot.img file ***
[------------------------------------------------------- Tools need for next step -------------------------------------------------------]
You will need to download the following file.
-- 2013 Nexus Factory Images
__https__://dl.google.com/dl/android/aosp/razor-jss15q-factory-4f77b811.tgz
* You will need to copy this file to a unique location so that you can extract the “system.img” file that is located with it.
--- Android SDK (I used the 64-bit version)
__http__://dl.google.com/android/android-sdk_r22.0.5-linux.tgz
[------------------------------------------------------------------------------------------------------------------------------------------------]
You will need to use both the adb and fastboot utilites that come in the Android SDK application.
You will need two image to complete this task
1. boot.img <--file you just created, located in the ../Workspace/Hacked directory
2. system.img <-- can be found within the factory tgz file:
Starting out I am at the following location
[email protected]:/home/user/android-sdk/platform-tools $
Place both the boot.img and system.img files into the same folder as the adb and fastboot utilites.
Verify that you can see the Nexus 7 device that you are about to flash
$ sudo ./adb devices
*if you cannot see the device, make sure that you have checked the “enable USB Debugging” in the developer options.
Run the following commands
$ sudo ./adb reboot bootloader
$ sudo ./fastboot flash boot boot.img
$ sudo ./fastboot flash system system.img
$ sudo ./fastboot format cache
$ sudo ./fastboot format userdata
$ sudo ./fastboot restart
At this point the system should be unlocked and rooted.
Bump - still looking for help
Post your zImage.
Sent from my Nexus 4 using Tapatalk 4
Here is the zImage I created
Here is the zImage that I created.
I have rename it to chad.img
Thanks
jassycliq said:
Post your zImage.
Sent from my Nexus 4 using Tapatalk 4
Click to expand...
Click to collapse
Hi All
I am still looking for feedback - if anyone has any.
Thanks
Chad
Chady said:
Hi All
I am still looking for feedback - if anyone has any.
Thanks
Chad
Click to expand...
Click to collapse
I used this and I got it working:
http://source.android.com/source/initializing.html
I created the msm directory inside the flo-kernel directory as a place to put the kernel source. I don't know if that is right, or if it even matters, but it works for me. Then I had to move the zImage to out/product/target/flo/kernel before doing the make on the framework. Don't forget to do the "source build/envsetup.sh" and "lunch" before making the framework. Before compiling the kernel, be sure to set ARCH, SUBARCH and CROSS_COMPILE environment variables and make sure your PATH includes the prebuilt cross-compiler.
Making headway
Ok, So I made some headway lastnight.
I have not figured out how to compile the kernel on my own however, I am able to compile and boot an AOSP image for the 2013 Nexus 7
My problem getting the image to boot once compiled centered around drivers. I was under the impression that Android would work like Linux and Windows... meaning that if you did not have device drivers installed the OS would still boot - I was wrong. After installing the drivers (via the provided install .sh files) I then compiled the OS, flashed the device, and the system boot.
Now I am off to figure out how to get a custom kernel running.
Chad
for the benifit of others
Chady said:
Ok, So I made some headway lastnight.
I have not figured out how to compile the kernel on my own however, I am able to compile and boot an AOSP image for the 2013 Nexus 7
My problem getting the image to boot once compiled centered around drivers. I was under the impression that Android would work like Linux and Windows... meaning that if you did not have device drivers installed the OS would still boot - I was wrong. After installing the drivers (via the provided install .sh files) I then compiled the OS, flashed the device, and the system boot.
Now I am off to figure out how to get a custom kernel running.
Chad
Click to expand...
Click to collapse
For the benefit of others who might look at this forum in the future.
This is what is required to be done.
source.android.com/source/building-devices.html#obtaining-proprietary-binaries
I faced the same problem and took time to figure out what it really meant.
Also if it is in an infinite loop after the above procedure. Try doing fastboot flashall -w
-w option did the magic for me when I was stuck in an infinite loop after the above procedure.

[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!

Miui 8

Miui 8 patch rom release, can someone port it for Nexus 4?
https://github.com/MiCode/patchrom/tree/marshmallow
I need it too...
You should contact to miui support forum or XDA devs, I hope they can build miui 8 for nexus 4
@Trickster22
Install Ubuntu.
Install Java
Guide to configure android SDK
Guide to configure repository:
Open terminal
Code:
mkdir -p ~/bin
Code:
PATH=~/bin:$PATH
Code:
cd ~/bin
Code:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
Code:
chmod a+x ~/bin/repo
Code:
mkdir ~/patchrom
Code:
cd ~/patchrom
Code:
repo init -u git://github.com/MiCode/patchrom.git -b marshmallow
Now you'll have to configure git. Run following commands in terminal
Code:
git config --global user.email ENTER_YOUR_EMAIL_ID_HERE
Code:
git config --global user.name ENTER_YOUR_REAL_NAME_HERE
Code:
repo init -u git://github.com/MiCode/patchrom.git -b marshmallow
Code:
repo sync
Wait......
after, Install the latest version of Fake nexus (marshmallow), reboot to device in mode recovery (TWRP).
PS.: After you finish generating the stockrom.zip of fake nexus, do the same for cm-13.0-20160820-SNAPSHOT-ZNH5YAO0J5-mako.zip
Reboot your device for recovery, use this comand to gerate stockrom.zip and metadata folder:
Code:
/home/"YOUR-USER-NAME-UBUNTU"/patchrom/tools/releasetools/ota_target_from_phone -r
Sende me stockrom.zip and metadata folder
Source: http://forum.xda-developers.com/android/software/guide-build-port-miui-rom-to-device-t3250984
Dio_S said:
@Trickster22
Install Ubuntu.
Install Java
Guide to configure android SDK
Guide to configure repository:
Open terminal
Code:
mkdir -p ~/bin
Code:
PATH=~/bin:$PATH
Code:
cd ~/bin
Code:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
Code:
chmod a+x ~/bin/repo
Code:
mkdir ~/patchrom
Code:
cd ~/patchrom
Code:
repo init -u git://github.com/MiCode/patchrom.git -b marshmallow
Now you'll have to configure git. Run following commands in terminal
Code:
git config --global user.email ENTER_YOUR_EMAIL_ID_HERE
Code:
git config --global user.name ENTER_YOUR_REAL_NAME_HERE
Code:
repo init -u git://github.com/MiCode/patchrom.git -b marshmallow
Code:
repo sync
Wait......
after, Install the latest version of Fake nexus (marshmallow), reboot to device in mode recovery (TWRP).
PS.: After you finish generating the stockrom.zip of fake nexus, do the same for cm-13.0-20160820-SNAPSHOT-ZNH5YAO0J5-mako.zip
use this comand to gerate stockrom.zip and metadata folder:
Code:
/home/"YOUR-USER-NAME-UBUNTU"/patchrom/tools/releasetools/ota_target_from_phone -r
Sende me stockrom.zip and metadata folder
Source: http://forum.xda-developers.com/android/software/guide-build-port-miui-rom-to-device-t3250984
Click to expand...
Click to collapse
Thank you sir for this valuable info/guide but I have a weak machine for Ubuntu like only 2 GB ram. This is why I was requesting others to build miui.
Trickster22 said:
Thank you sir for this valuable info/guide but I have a weak machine for Ubuntu like only 2 GB ram. This is why I was requesting others to build miui.
Click to expand...
Click to collapse
You should just generate the stockrom.zip + metadata and send me, I can do it, because I do not have the device
what ıs thıs ?
hasanben35 said:
what ıs thıs ?
Click to expand...
Click to collapse
For me to compile miui, I need the stockrom.zip plus the metadata folder generated by the patchrom, this guide shows how.
Sorry mt english
hım how long does it take
hasanben35 said:
hım how long does it take
Click to expand...
Click to collapse
This process should take around 1 hour if you already have Ubuntu installed and configured
multı rom nıtrogen os 7.1.1 and flyme ınstalled flyme remove ubuntu ınstall after _?
hasanben35 said:
mult? rom n?trogen os 7.1.1 and flyme ?nstalled flyme remove ubuntu ?nstall after _?
Click to expand...
Click to collapse
Ubuntu in PC "Desktop"
oh my god no no no waıtıng rom sorry ubuntu ınstall pc no
Okay, I'll make those files. Where should I send it?

Kernel building error

I try to compile kernel for Samsung SM-A510F. I got source from Samsung Open source.
My steps:
1.Create folder in home directory and extract kernel.tar.gz there.
2.Create another folder in home directory and download compiler
$ mkdir bin
$ cd bin
$ git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9
3.
$ cd aarch64-linux-android-4.9
$ export SUBARCH=arm64
$ export ARCH=arm64
$ export CROSS_COMPILE=~/bin/aarch64-linux-android-4.9/bin/aarch64-linux-android-
4.
make menuconfig. Save default settings just to make .config file
5.
In kernel folder
$ make clean
$ make mrproper
$ make ARCH=arm64 exynos7580-a5xelte_defconfig
$ make -j 8
I received compiler patch error and other errors. Maybe I used wrong guide? Please, point me to right direction!
.

Categories

Resources