Related
I Get This Problem Please Help Me...
[email protected]:~/kernel$ ARCH=arm CROSS_COMPILE=/opt/arm-2011.09/bin/arm-none-eabi make
make: /opt/arm-2011.09/bin/arm-none-eabigcc: Command not found
CHK include/linux/version.h
make[1]: `include/asm-arm/mach-types.h' is up to date.
CHK include/linux/utsrelease.h
SYMLINK include/asm -> include/asm-arm
CC kernel/bounds.s
/bin/sh: /opt/arm-2011.09/bin/arm-none-eabigcc: not found
make[1]: *** [kernel/bounds.s] Error 127
make: *** [prepare0] Error 2
i think u missing some libraries. u on 64 bit ? maybe u need install 32 libraries
what kind of linux u have?
ChaosFirZen said:
[email protected]:~/kernel$ ARCH=arm CROSS_COMPILE=/opt/arm-2011.09/bin/arm-none-eabi make
Click to expand...
Click to collapse
You forgot about export:
Code:
export ARCH=arm
export CROSS_COMPILE=/opt/arm-2011.09/bin/arm-none-eabi
and double check if CROSS_COMPILE should be arm-none-eabi or arm-none-eabi- (with a minus at the end)
denisl78 said:
i think u missing some libraries. u on 64 bit ? maybe u need install 32 libraries
what kind of linux u have?
Click to expand...
Click to collapse
Im on 32bit ubuntu..
Sent from my LT18i using XDA App
This What Shows and it doesnt reponse at
export ARCH=arm
export CROSS_COMPILE=/opt/arm-2011.09/bin/arm-none-eabi
Click to expand...
Click to collapse
[email protected]:~$ cd kernel
[email protected]:~/kernel$ export ARCH=arm
[email protected]:~/kernel$ export CROSS_COMPILE=/opt/arm-2011.09/bin/arm-none-eabi
[email protected]:~/kernel$ setprop persist.world.domination 1
setprop: command not found
[email protected]:~/kernel$ ARCH=arm CROSS_COMPILE=/opt/arm-2011.09/bin/arm-none-eabi- make
make: /opt/arm-2011.09/bin/arm-none-eabi-gcc: Command not found
scripts/kconfig/conf -s arch/arm/Kconfig
make: /opt/arm-2011.09/bin/arm-none-eabi-gcc: Command not found
CHK include/linux/version.h
make[1]: `include/asm-arm/mach-types.h' is up to date.
CHK include/linux/utsrelease.h
SYMLINK include/asm -> include/asm-arm
CC kernel/bounds.s
/bin/sh: /opt/arm-2011.09/bin/arm-none-eabi-gcc: not found
make[1]: *** [kernel/bounds.s] Error 127
make: *** [prepare0] Error 2
[email protected]:~/kernel$ export ARCH=arm CROSS_COMPILE=/opt/arm-2011.09/bin/arm-none-eabi make
[email protected]:~/kernel$ export ARCH=arm CROSS_COMPILE=/opt/arm-2011.09/bin/arm-none-eabi- make
[email protected]:~/kernel$ cd
[email protected]:~$ cd
[email protected]:~$ cd
[email protected]:~$ cd
[email protected]:~$ cd
[email protected]:~$ cd
[email protected]:~$ cd
[email protected]:~$ cd kernel
[email protected]:~/kernel$ export ARCH=arm
[email protected]:~/kernel$ export CROSS_COMPILE=/opt/arm-2011.09/bin/arm-none-eabi make
[email protected]:~/kernel$ export CROSS_COMPILE=/opt/arm-2011.09/bin/arm-none-eabi- make
[email protected]:~/kernel$ export arm-none-eabi=/opt/arm-2011.09/bin/arm-none-eabi- make
bash: export: `arm-none-eabi=/opt/arm-2011.09/bin/arm-none-eabi-': not a valid identifier
[email protected]:~/kernel$
what u get with :
Code:
file /opt/arm-2011.09/bin/arm-none-eabi-gcc
?
do u installed all build packages ?
i not fluent with deb distributions (more rpm), but maybe
Code:
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool
may help
and
Code:
export ARCH=arm
export CROSS_COMPILE=/opt/arm-2011.09/bin/arm-none-eabi
export KERNEL_DIR=/full/path/to/kernel
make
ChaosFirZen said:
[email protected]:~/kernel$ setprop persist.world.domination 1
setprop: command not found
Click to expand...
Click to collapse
OMGLOL, it's my signature (setprop is android specific)
Anyway, if any packages would be missing make would whine about them first. Just to be sure check official docs
As for exports- I use envsetup.sh-s like this one:
Code:
export ARCH=arm
export CC=arm-spica-linux-uclibcgnueabi-gcc
export CXX=arm-spica-linux-uclibcgnueabi-gcc
export CROSS_COMPILE=arm-spica-linux-uclibcgnueabi-
export PATH=$PATH:${HOME}/x-tools/bin:${HOME}/x-tools/arm-spica-linux-uclibcgnueabi/bin
(this one is for crosstools-ng, you have to adjust names and paths for your environment)
usage:
Code:
. ./envsetup.sh
Please give Me The Full View Of The Script On Your terminal ..
ChaosFirZen said:
Please give Me The Full View Of The Script On Your terminal ..
Click to expand...
Click to collapse
What do you mean by 'full view'?
Command
Code:
. ./envsetup.sh
does not produse any visible output, script just sets variables
tapatalked from Desire
Error During Cross compile
Sir after giving the bellow cmd
make ARCH=arm CROSS_COMPILE=/home/digvijay/Desktop/5-4-12/toolchain/arm-2011.03/bin/arm-none-linux-gnueabi-
I am getting folloeing error
#
# configuration written to .config
#
include/config/auto.conf:15:warning: symbol value 'arch/x86/configs/x86_64_defconfig' invalid for ARCH_DEFCONFIG
include/config/auto.conf:106:warning: symbol value 'elf64-x86-64' invalid for OUTPUT_FORMAT
make: execvp: /home/digvijay/Desktop/5-4-12/toolchain/arm-2011.03/bin/arm-none-linux-gnueabi-gcc: Permission denied
CHK include/linux/version.h
UPD include/linux/version.h
CHK include/generated/utsrelease.h
UPD include/generated/utsrelease.h
Generating include/generated/mach-types.h
CC kernel/bounds.s
/bin/sh: /home/digvijay/Desktop/5-4-12/toolchain/arm-2011.03/bin/arm-none-linux-gnueabi-gcc: Permission denied
make[1]: *** [kernel/bounds.s] Error 1
make: *** [prepare0] Error 2
Please help me out.. pleas its urgent. ASAP
It seems that you don't have ARM config, make still tries to build x86.
Do exports and 'make menuconfig' first to check if config is correct
tapatalked from Xperia Arc S
Hey all, i get the same error
I close the terminal and re-open it and i get rid of this but now i've foud another error
>ARCH=arm CROSS_COMPILER=$CCOMPILER make
scripts/kconfig/conf -s arch/arm/Kconfig
arch/arm/mach-msm/Kconfig:1509:warning: multi-line strings not supported
CHK include/linux/version.h
UPD include/linux/version.h
CHK include/generated/utsrelease.h
UPD include/generated/utsrelease.h
Generating include/generated/mach-types.h
CC kernel/bounds.s
cc1: erreur: unrecognized command line option ‘-mlittle-endian’
cc1: erreur: unrecognized command line option ‘-mno-thumb-interwork’
kernel/bounds.c:1:0: erreur: unknown ABI (aapcs-linux) for -mabi= switch
kernel/bounds.c:1:0: erreur: bad value (armv5t) for -march= switch
make[1]: *** [kernel/bounds.s] Erreur 1
make: *** [prepare0] Erreur 2
cc1: erreur: unrecognized command line option ‘-mlittle-endian’
cc1: erreur: unrecognized command line option ‘-mno-thumb-interwork’
Can someone help me ?
arc_u said:
Hey all, i get the same error
I close the terminal and re-open it and i get rid of this but now i've foud another error
>ARCH=arm CROSS_COMPILER=$CCOMPILER make
Click to expand...
Click to collapse
IIRC it should be: make ARCH=arm [...] (make first, then arguments)
arc_u said:
scripts/kconfig/conf -s arch/arm/Kconfig
arch/arm/mach-msm/Kconfig:1509:warning: multi-line strings not supported
CHK include/linux/version.h
UPD include/linux/version.h
CHK include/generated/utsrelease.h
UPD include/generated/utsrelease.h
Generating include/generated/mach-types.h
CC kernel/bounds.s
cc1: erreur: unrecognized command line option ‘-mlittle-endian’
cc1: erreur: unrecognized command line option ‘-mno-thumb-interwork’
kernel/bounds.c:1:0: erreur: unknown ABI (aapcs-linux) for -mabi= switch
kernel/bounds.c:1:0: erreur: bad value (armv5t) for -march= switch
make[1]: *** [kernel/bounds.s] Erreur 1
make: *** [prepare0] Erreur 2
Click to expand...
Click to collapse
You have errors in kernel config
-kernel is NOT compiled for arm
-cpu is armv7, not armv5t
Do exports and
Code:
make menuconfig
before you try to compile
>make menuconfig
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] Erreur 1
make: *** [menuconfig] Erreur 2
EDIT: installed the libncurses5-dev and it seems to work now, i've to configure now
But what config i've to do
ARCH=arm CROSS_COMPILE=/opt/arm-2010q1/bin/arm-none-eabi- make semc_anzu_defconfig
or
make menuconfig (and what i have to do exactly in menuconfig?)
arc_u said:
EDIT: installed the libncurses5-dev and it seems to work now, i've to configure now
But what config i've to do
ARCH=arm CROSS_COMPILE=/opt/arm-2010q1/bin/arm-none-eabi- make semc_anzu_defconfig
or
make menuconfig (and what i have to do exactly in menuconfig?)
Click to expand...
Click to collapse
1. Do required exports
2. make semc_anzu_defconfig (this will create kernel config required for make- copy of semc_anzu_defconfig)
3. If you want to make any changes (drivers/options/modules/whatever) in config- make menuconfig
4. make
A lot of thanks for your help
I do the following export
export ARCH=arm
export CROSS_COMPILE=/usr/bin/arm-linux-gnueabi-
then
make semc_anzu_defconfig
make
make
CHK include/linux/version.h
make[1]: « include/asm-arm/mach-types.h » est à jour.
CHK include/linux/utsrelease.h
SYMLINK include/asm -> include/asm-arm
CC kernel/bounds.s
GEN include/linux/bounds.h
CC arch/arm/kernel/asm-offsets.s
GEN include/asm/asm-offsets.h
CALL scripts/checksyscalls.sh
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/modpost.o
scripts/mod/modpost.c: In function ‘get_markers’:
scripts/mod/modpost.c:1562:12: attention : ignoring return value of ‘asprintf’, declared with attribute warn_unused_result [-Wunused-result]
scripts/mod/modpost.c: In function ‘add_marker’:
scripts/mod/modpost.c:1982:10: attention : ignoring return value of ‘asprintf’, declared with attribute warn_unused_result [-Wunused-result]
HOSTCC scripts/mod/sumversion.o
HOSTLD scripts/mod/modpost
HOSTCC scripts/kallsyms
scripts/kallsyms.c: In function ‘read_symbol’:
scripts/kallsyms.c:112:9: attention : ignoring return value of ‘fgets’, declared with attribute warn_unused_result [-Wunused-result]
HOSTCC scripts/conmakehash
HOSTCC scripts/bin2c
CC init/main.o
In file included from include/linux/mempolicy.h:62:0,
from init/main.c:52:
include/linux/pagemap.h: In function ‘fault_in_pages_readable’:
include/linux/pagemap.h:415:16: erreur: variable ‘c’ set but not used [-Werror=unused-but-set-variable]
cc1: all warnings being treated as errors
make[1]: *** [init/main.o] Erreur 1
make: *** [init] Erreur 2
very disappointed
arc_u said:
very disappointed
Click to expand...
Click to collapse
This needs to be added in Makefile :
Code:
# This warning generated too much noise in a regular build.
KBUILD_CFLAGS += $(call cc-option, -Wno-unused-but-set-variable)
By default the toolchain stops compiling on all errors.
I know a lot of this has been posted before in other locations, but recently I have found some of that data to be incomplete when I was building a custom kernel for my GNex, so just bear with me.
--The Build Environment--
Operating System: Xubuntu 12.04 x86 (I haven't tested it on the x64 version yet)
Dependencies: (using sudo-apt get install)
Code:
git git-core gnupg flex bison gperf build-essential zip hexdump gedit \
curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 gcc \
libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib \
mingw32 tofrodos
Other Files Needed:
unpack-mkbootimg - Which I have forked from work4blue@github.
You can grab the modified version from: https://github.com/ClimberTy/unpack-mkbootimg.git
The mkbootimg.c has been modified to fix the default load addresses of the kernel with the GNex (See below for more details).
Android SDK - You just need the Android Debug Bridge (ADB) from the SDK.
Or you can grab a toolkit from here: http://forum.xda-developers.com/showthread.php?t=1848036 for a script that will get you the files you need (Internet connection required).
Needed:
Samsung Galaxy Nexus Prime (I9250)
The GNex Bootloader to be Unlocked (http://www.android.gs/how-to-unlock-galaxy-nexus-bootloader/)
Kernel files (See Kernel Source area for locations)
ADB and Fastboot
ARM Cross Compiler - grab from here. NOTE: You'll need the ARM EABI Release. You can also get the ARM Cross Compiler by following the "Downloading a prebuilt gcc" instructions from Google as well.
Place either of these ARM Compilers in the folder you are using to build your KERNELSOURCE.
Linux USB Driver Rules:
Open Terminal and type:
Code:
$ vim /etc/udev/rules.d/70-android.rules
You can use gEdit if you prefer.
Paste in (Ensuring that <username> is the name of your Linux profile):
Code:
# adb protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>"
# fastboot protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>"
# adb protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>"
# fastboot protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>"
# adb protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>"
# fastboot protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>"
# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>"
# fastboot protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>"
# adb protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>"
# fastboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>"
# usbboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>"
# usbboot protocol on panda (PandaBoard ES)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>"
# adb protocol on grouper/tilapia (Nexus 7)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0600", OWNER="<username>"
# fastboot protocol on grouper/tilapia (Nexus 7)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0600", OWNER="<username>"
# adb protocol on manta (Nexus 10)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0600", OWNER="<username>"
# fastboot protocol on manta (Nexus 10)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0600", OWNER="<username>"
Kernel Source:
It is important that you make separate folders to put everything in. Keeping the DEV area organized will help out in the long run.
Code:
$ mkdir -p ~/Documents/Kernel/Source
CyanogenMod 10.1 Kernel from GitHub
Google's Android Kernel (See Downloading Android Kernel section below for more details)
Downloading the Android Kernel:
To download the kernel directly from Google enter in these commands.
Code:
$ git clone https://android.googlesource.com/kernel/omap.git
$ cd omap/
$ git branch -a
What you'll see in response:
Code:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/android-omap-3.0
remotes/origin/android-omap-panda-3.0
remotes/origin/android-omap-steelhead-3.0-ics-aah
remotes/origin/android-omap-tuna-3.0
remotes/origin/android-omap-tuna-3.0-ics-mr1
remotes/origin/android-omap-tuna-3.0-jb-mr0
remotes/origin/android-omap-tuna-3.0-jb-mr1
remotes/origin/android-omap-tuna-3.0-jb-mr1.1
remotes/origin/android-omap-tuna-3.0-jb-pre1
remotes/origin/android-omap-tuna-3.0-mr0
remotes/origin/android-omap-tuna-3.0-mr0.1
remotes/origin/linux-omap-3.0
remotes/origin/master
remotes/origin/sph-l700-fh05
To grab the (at this time) latest Jellybean source:
Code:
$ git checkout remotes/origin/android-omap-tuna-3.0-jb-mr1.1
Otherwise just use:
Code:
$ git clone https://github.com/CyanogenMod/android_kernel_samsung_tuna.git
--Building the Kernel--
In the ~/Documents/Kernel/KERNELSOURCE (varies depending on which kernel you downloaded. For this build I used android_kernel_samsung_tuna-jb as my source directory. The ARM Cross Compiler that I downloaded from the CodeSourcery site is located inside this folder.
In the terminal type:
Code:
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=/home/user/Documents/Kernel/KERNELSOURCE/arm-2011.03/bin/arm-none-eabi-
$ make tuna_defconfig
$ make
NOTE: The [...]/arm-none-eabi- is how it is supposed to be.
Now go grab some lunch or drink a beer or two, it could take about 30-45 mins to compile. You'll know when it is finished when you see:
Code:
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
AS arch/arm/boot/compressed/head.o
GZIP arch/arm/boot/compressed/piggy.gzip
AS arch/arm/boot/compressed/piggy.gzip.o
CC arch/arm/boot/compressed/misc.o
CC arch/arm/boot/compressed/decompress.o
SHIPPED arch/arm/boot/compressed/lib1funcs.S
AS arch/arm/boot/compressed/lib1funcs.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
Building modules, stage 2.
MODPOST 4 modules
CC crypto/ansi_cprng.mod.o
LD [M] crypto/ansi_cprng.ko
CC drivers/rpmsg/rpmsg_client_sample.mod.o
LD [M] drivers/rpmsg/rpmsg_client_sample.ko
CC drivers/rpmsg/rpmsg_server_sample.mod.o
LD [M] drivers/rpmsg/rpmsg_server_sample.ko
CC drivers/scsi/scsi_wait_scan.mod.o
LD [M] drivers/scsi/scsi_wait_scan.ko
The zImage is what we need because it is the compressed Linux kernel. Note the path of where the zImage is located. We also need the *.ko files (Kernel Modules). Remember their paths because you'll need to create those same paths later when you rebuild the kernel. Probably best to move these files to a new folder, I have used /home/user/Documents/Kernel/CompiledKernel/.
--Backing Up the Original Kernel--
It is important that we save a backup of the original kernel just in case there are errors in the kernel you are creating and we need to revert. Each device has their images saved in somwhat similar spots but they can change depending on device or OS.
Before these images were located on /proc/mnt location but with this model/OS they are stored elsewhere. Your phone will most likely need to be rooted prior to this operation. So either push the SuperUser app to your phone or grab Koushik Dutta's version from ROM Manager in ClockworkMod (http://download.clockworkmod.com/test/superuser-2.zip).
How to grab the images:
Code:
$ adb shell
$ su
$ ls -l /dev/block/platform/omap/omap_hsmmc.0/by-name
Result:
Code:
lrwxrwxrwx root root 2013-02-20 06:38 boot -> /dev/block/mmcblk0p7
lrwxrwxrwx root root 2013-02-20 06:38 cache -> /dev/block/mmcblk0p11
lrwxrwxrwx root root 2013-02-20 06:38 dgs -> /dev/block/mmcblk0p6
lrwxrwxrwx root root 2013-02-20 06:38 efs -> /dev/block/mmcblk0p3
lrwxrwxrwx root root 2013-02-20 06:38 metadata -> /dev/block/mmcblk0p13
lrwxrwxrwx root root 2013-02-20 06:38 misc -> /dev/block/mmcblk0p5
lrwxrwxrwx root root 2013-02-20 06:38 param -> /dev/block/mmcblk0p4
lrwxrwxrwx root root 2013-02-20 06:38 radio -> /dev/block/mmcblk0p9
lrwxrwxrwx root root 2013-02-20 06:38 recovery -> /dev/block/mmcblk0p8
lrwxrwxrwx root root 2013-02-20 06:38 sbl -> /dev/block/mmcblk0p2
lrwxrwxrwx root root 2013-02-20 06:38 system -> /dev/block/mmcblk0p10
lrwxrwxrwx root root 2013-02-20 06:38 userdata -> /dev/block/mmcblk0p12
lrwxrwxrwx root root 2013-02-20 06:38 xloader -> /dev/block/mmcblk0p1
We need to backup the boot and recovery images.
Copying the Android Images:
Code:
cat /dev/block/mmcblk0p7 > /sdcard/boot
cat /dev/block/mmcblk0p8 > /sdcard/recovery
Pulling the Images Off the Device:
Code:
$ dab pull /sdcard/IMAGE_NAME ~/Documents/Kernel/OriginalKernel/
NOTE: This assumes you have this folder already created.
--Unpacking the Kernel--
Splitting the Image:
Using the unpack-mkbootimg-master kit you can split the image by using the ./unpackbootimg binary. The command is:
Code:
$ ./unpackbootimg -i ~/Documents/Kernel/OriginalKernel/boot
The results should be similar to this:
Code:
BOARD_KERNEL_CMDLINE
BOARD_KERNEL_BASE 80000000
BOARD_OAGE_SIZE 2048
The output files in your unpack-mkbootimg-master folder should be similar to this:
Code:
drwxrwxr-x 4 user user 4.0K Mar 3 11:22 .
drwxr-xr-x 3 user user 4.0K Mar 3 11:15 ..
-rw-rw-r-- 1 user user 9 Mar 3 11:22 boot-base
-rw-rw-r-- 1 user user 1 Mar 3 11:22 boot-cmdline
-rw-rw-r-- 1 user user 2.9K Feb 28 18:00 bootimg.h
-rw-rw-r-- 1 user user 5 Mar 3 11:22 boot-pagesize
-rw-rw-r-- 1 user user 344K Mar 3 11:22 boot-ramdisk.gz
-rw-rw-r-- 1 user user 4.0M Mar 3 11:22 boot-zImage
drwxrwxr-x 2 user user 4.0K Mar 3 11:15 libmincrypt
-rw-rw-r-- 1 user user 7.3K Mar 3 11:15 libmincrypt.a
-rwxr-xr-x 1 user user 622 Feb 28 18:00 Makefile
drwxrwxr-x 2 user user 4.0K Feb 28 18:00 mincrypt
-rwxrwxr-x 1 user user 789K Mar 3 11:15 mkbootimg
-rw-rw-r-- 1 user user 7.4K Feb 28 18:00 mkbootimg.c
-rw-rw-r-- 1 user user 8.5K Mar 3 11:15 mkbootimg.o
-rw-rw-r-- 1 user user 1.1K Feb 28 18:00 README
-rwxrwxr-x 1 user user 789K Mar 3 11:15 unpackbootimg
-rw-rw-r-- 1 user user 3.9K Feb 28 18:00 unpackbootimg.c
-rw-rw-r-- 1 user user 6.6K Mar 3 11:15 unpackbootimg.o
NOTE: This is for the Samsung Galaxy Nexus (Maguro & Tuna, possibly Toro & Toroplus)
A simple hexdump (using "hex dump -n 40") of the boot image from the GNex phone should give us the results of:
Code:
0000000 41 4e 44 52 4f 49 44 21 68 54 3f 00 00 80 00 80
0000010 4d 5c 05 00 00 00 00 81 00 00 00 00 00 00 f0 80
0000020 00 01 00 80 00 08 00 00
0000028
Results may vary between Android versions. These numbers will help us in verifying that your kernel that you're creating is indeed correct.
What is needed to be taken away from this is the so called "Android Magic" which are the first four bytes of data in the hex dump.
Code:
Android Magic = 4e41 5244 494f 2144
The next two bytes are the kernel size, in this case (0x5468 0x003f).
The rest of the byes are as follows:
Code:
Kernel Base = 8000 8000
Ramdisk Address = 8100 0000
Secondary Address = 80f0 0000
Tags Address = 8000 0100
These values are what I had to change in the mkbootimg application in the unpack-mkbootimg-master. Otherwise the kernel images would be off and they would not load correctly on the device. Look at https://github.com/ClimberTy/unpack-mkbootimg/blob/master/mkbootimg.c for more details.
Splitting the Ramdisk
For organizations sake move the boot-* files to a new folder. From here we need to open the boot-ramdisk.gz.
Code:
$ mkdir UnpackedKernel
$ mv boot-* UnpackedKernel/
$ cd UnpackedKernel/
$ gunzip -c boot-ramdisk.gz | cpio -i
This splits open the boot-ramdisk.gz file so we can place our newly created kernel modules (anything listed as .KO) in their appropriate folders or make modifications to any of the other files in the UnpackedKernel/ folder.
Remember these, we'll need them later.
--Rebuilding the Kernel--
After making the modifications and placing the kernel modules in the UnpackedKernel/ folders . Again you may need to create the directories for these kernel module locations. See your compiled kernel printout for the correct paths. Now that everything is in place you need to rebuild the boot-ramdisk.gz:
Code:
$ pwd
[…]/UnpackedKernel/
$ find . | cpio -o -H newc | gzip > ../newramdisk.cpio.gz
$ cd ..
Now copy in the /CompiledKernel/zImage into the /unpack-mkbootimg-master/ folder and run this command to build the kernel:
Code:
$ ./mkbootimg --kernel zImage --ramdisk newramdisk.cpio.gz --base 80000000 --pagesize 2048 -o newKernel.img
Now to verify that the compiled kernel is right on par with the original kernel you need to do a hexdump.
Code:
$ hex dump -n 40 newKernel.img
Should print out results similar to this:
Code:
0000000 4e41 5244 494f 2144 cee4 0044 8000 8000
0000010 3e08 004b 0000 8100 0000 0000 0000 80f0
0000020 0100 8000 0800 0000
0000028
And as you can see all the addresses line up as they should, the only thing that should have changed is the kernel size which is expected.
--Test Flashing to the Device--
Move your newKernel.img image file into its own folder (e.g. ~/Documents/Kernel/NewKernel/) then put your device into the recovery mode to test and see if it boots, if it doesn't then "wash, rinse, and repeat".
To put your device into recovery mode, first power it off then power it back on and immediately hold down the POWER, VOLUME UP and VOLUME DOWN buttons. Select RECOVERY from the menu and press POWER to enter.
Code:
$ fastboot flash boot ~/Documents/Kernel/NewKernel/newKernel.img
$ fastboot reboot
Wait a few seconds till it boots up. If you don't receive any device response after a minute or so then put your phone back into recovery and flash the original kernel. If it works then, congratulations! If not try, try rebuilding it again and verifying you have the correct addresses or all the kernel modules installed properly.
Could not be explained better .... thanks a lot ... have included the link to your guide into my thread. :good:
Amazing job dude! Thanks for the TUT. Maybe one time in my free life time... I will try something :good:
Seems very good (because Anarkia sad it :victory: ) ... but my english is bad ...
COULD YOU translate it in german language, please ?
JOOOOKE :laugh:
Thank you for you work :good: :highfive:
Thanks for this great tutorial... Just opening a thread with all that useful info and such excellently organized need a lot of time...
Sent from my Galaxy Nexus using Tapatalk 2
salahmed said:
Thanks for this great tutorial... Just opening a thread with all that useful info and such excellently organized need a lot of time...
Sent from my Galaxy Nexus using Tapatalk 2
Click to expand...
Click to collapse
Thanks I just got tired of trying to outsource my info through so many different sites, not to mention the conflicting or out of date information.
bvt-1 said:
JOOOOKE :laugh:
Click to expand...
Click to collapse
Good show ol' chap!
anarkia1976 said:
Could not be explained better .... thanks a lot ... have included the link to your guide into my thread. :good:
Click to expand...
Click to collapse
Thanks, I appreciate the work you guys are doing as well. Maybe one day I'll step up and do some ROM development and write a better tutorial about that as well. But for now I am happy just doing the kernel work.
Great guide , all the info I need in one thread , I got this one tagged
Sent from my Galaxy Nexus using Xparent Cyan Tapatalk 2
Climber Ty said:
Thanks, I appreciate the work you guys are doing as well. Maybe one day I'll step up and do some ROM development and write a better tutorial about that as well. But for now I am happy just doing the kernel work.
Click to expand...
Click to collapse
I think a tutorial for create a modded ROM step by step will be a great job for xda community. :thumbup:
Sent from my Galaxy Nexus using xda app-developers app
I always get the same error, no matter which toolchain I try
Any suggestions?
See screenshot..
t0wlie said:
I always get the same error, no matter which toolchain I try
Any suggestions?
See screenshot..
Click to expand...
Click to collapse
Your path is wrong.
Wrote "export" on terminal and verify.
Copy complete link from export and do:
ll <complite link>
If there is an error your path is wrong.
[email protected]:~/Dokumente/Kernel/maguro/omap$ make
make: /home/marc/Dokumente/Kernel/maguro/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Kommando nicht gefunden
CHK include/linux/version.h
CHK include/generated/utsrelease.h
make[1]: »include/generated/mach-types.h« ist bereits aktualisiert.
CC kernel/bounds.s
/bin/sh: 1: /home/marc/Dokumente/Kernel/maguro/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: not found
make[1]: *** [kernel/bounds.s] Fehler 127
make: *** [prepare0] Fehler 2
[email protected]:~/Dokumente/Kernel/maguro/omap$ ll /home/marc/Dokumente/Kernel/maguro/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
-rwxr-xr-x 1 marc marc 323104 Dez 4 10:58 /home/marc/Dokumente/Kernel/maguro/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc*
[email protected]:~/Dokumente/Kernel/maguro/omap$
t0wlie said:
I always get the same error, no matter which toolchain I try
Any suggestions?
See screenshot..
Click to expand...
Click to collapse
t0wlie said:
[email protected]:~/Dokumente/Kernel/maguro/omap$ make
make: /home/marc/Dokumente/Kernel/maguro/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Kommando nicht gefunden
CHK include/linux/version.h
CHK include/generated/utsrelease.h
make[1]: »include/generated/mach-types.h« ist bereits aktualisiert.
CC kernel/bounds.s
/bin/sh: 1: /home/marc/Dokumente/Kernel/maguro/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: not found
make[1]: *** [kernel/bounds.s] Fehler 127
make: *** [prepare0] Fehler 2
[email protected]:~/Dokumente/Kernel/maguro/omap$ ll /home/marc/Dokumente/Kernel/maguro/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
-rwxr-xr-x 1 marc marc 323104 Dez 4 10:58 /home/marc/Dokumente/Kernel/maguro/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc*
[email protected]:~/Dokumente/Kernel/maguro/omap$
Click to expand...
Click to collapse
Can you post export command please.
You can try to modify:
/arm-linux-androideabi-gcc
to
/arm-linux-androideabi-
I tried (on antoher user)
export PATH=/home/marc/Dokumente/Kernel/maguro/prebuilt/linux-x86/bin:$PATH
export CROSS_COMPILE=/home/marc/Dokumente/Kernel/maguro/prebuilt/linux-x86/bin/arm-linux-androideabi-
make: /home/marc/Dokumente/Kernel/maguro/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Kommando nicht gefunden
CHK include/linux/version.h
CHK include/generated/utsrelease.h
make[1]: »include/generated/mach-types.h« ist bereits aktualisiert.
CC kernel/bounds.s
/bin/sh: 1: /home/marc/Dokumente/Kernel/maguro/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: not found
make[1]: *** [kernel/bounds.s] Fehler 127
make: *** [prepare0] Fehler 2
Try using the CodeSourcery ARM Compilers instead of the prebuilts (http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/). The version you want are the EABI release under the ARM Processors section. These compilers haven't failed me once since I've used them. Let me know if that works for you.
Thank you so much for this guide! I've been compiling my own ROM for a while now, and I feel like taking another step in development, by building my own kernel. I'm running into the following make error(s) though. I'm completely new to kernel development, so I figured I'd fire out my questions here, and hope that you guys can help me out. Below is my entire build environment (as far as I could get) - from the 'mkdir' commands to the *make* errors I'm experiencing... As you'll see, I haven't gotten very far, so I'm clearly doing something wrong at an elementary level. Any help would be appreciated. :good:
Code:
[email protected]:~$ mkdir Blowfish
[email protected]:~$ cd Blowfish
[email protected]:~/Blowfish$ mkdir kernel
[email protected]:~/Blowfish$ cd kernel
[email protected]:~/Blowfish/kernel$ mkdir source
[email protected]:~/Blowfish/kernel$ cd kerne
bash: cd: kerne: No such file or directory
[email protected]:~/Blowfish/kernel$ cd kernel
bash: cd: kernel: No such file or directory
[email protected]:~/Blowfish/kernel$ git clone https://android.googlesource.com/kernel/omap.git
Cloning into 'omap'...
remote: Sending approximately 439.05 MiB ...
remote: Counting objects: 64780, done
remote: Finding sources: 100% (18264/18264)
remote: Getting sizes: 100% (2126/2126)
remote: Compressing objects: 99% (26370/26371)
remote: Total 2138198 (delta 1785247), reused 2137592 (delta 1785041)
Receiving objects: 100% (2138198/2138198), 446.32 MiB | 340 KiB/s, done.
Resolving deltas: 100% (1786095/1786095), done.
[email protected]:~/Blowfish/kernel$ cd omap
[email protected]:~/Blowfish/kernel/omap$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/android-omap-3.0
remotes/origin/android-omap-panda-3.0
remotes/origin/android-omap-steelhead-3.0-ics-aah
remotes/origin/android-omap-tuna-3.0
remotes/origin/android-omap-tuna-3.0-ics-mr1
remotes/origin/android-omap-tuna-3.0-jb-mr0
remotes/origin/android-omap-tuna-3.0-jb-mr1
remotes/origin/android-omap-tuna-3.0-jb-mr1.1
remotes/origin/android-omap-tuna-3.0-jb-pre1
remotes/origin/android-omap-tuna-3.0-mr0
remotes/origin/android-omap-tuna-3.0-mr0.1
remotes/origin/glass-omap-xrr02
remotes/origin/glass-omap-xrr35
remotes/origin/glass-omap-xrr64b
remotes/origin/linux-omap-3.0
remotes/origin/master
remotes/origin/sph-l700-fh05
[email protected]:~/Blowfish/kernel/omap$ git checkout remotes/origin/android-omap-tuna-3.0-jb-pre1
Checking out files: 100% (37659/37659), done.
Note: checking out 'remotes/origin/android-omap-tuna-3.0-jb-pre1'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at e8de0e2... video: sii9234: dynamically register and unregister input device
[email protected]:~/Blowfish/kernel/omap$ export ARCH=arm
[email protected]:~/Blowfish/kernel/omap$ export SUBARCH=arm
[email protected]:~/Blowfish/kernel/omap$ export CROSS_COMPILE='/home/jjhiza/Blowfish/arm-2013.05-23-arm-none-eabi.bin'
[email protected]:~/Blowfish/kernel/omap$ make tuna_deconfig
HOSTCC scripts/basic/fixdep
make[1]: *** No rule to make target `tuna_deconfig'. Stop.
make: *** [tuna_deconfig] Error 2
[email protected]:~/Blowfish/kernel/omap$ make
make: /home/jjhiza/Blowfish/arm-2013.05-23-arm-none-eabi.bingcc: Command not found
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
scripts/kconfig/conf --silentoldconfig Kconfig
***
*** Configuration file ".config" not found!
***
*** Please run some configurator (e.g. "make oldconfig" or
*** "make menuconfig" or "make xconfig").
***
make[2]: *** [silentoldconfig] Error 1
make[1]: *** [silentoldconfig] Error 2
make: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'. Stop.
[email protected]:~/Blowfish/kernel/omap$
jjhiza said:
Code:
[email protected]:~/Blowfish/kernel/omap$ git checkout remotes/origin/android-omap-tuna-3.0-jb-pre1
Checking out files: 100% (37659/37659), done.
Note: checking out 'remotes/origin/android-omap-tuna-3.0-jb-pre1'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at e8de0e2... video: sii9234: dynamically register and unregister input device
[email protected]:~/Blowfish/kernel/omap$ export ARCH=arm
[email protected]:~/Blowfish/kernel/omap$ export SUBARCH=arm
[email protected]:~/Blowfish/kernel/omap$ export CROSS_COMPILE='/home/jjhiza/Blowfish/arm-2013.05-23-arm-none-eabi.bin'
[email protected]:~/Blowfish/kernel/omap$ make tuna_deconfig
HOSTCC scripts/basic/fixdep
make[1]: *** No rule to make target `tuna_deconfig'. Stop.
make: *** [tuna_deconfig] Error 2
[email protected]:~/Blowfish/kernel/omap$ make
make: /home/jjhiza/Blowfish/arm-2013.05-23-arm-none-eabi.bingcc: Command not found
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
scripts/kconfig/conf --silentoldconfig Kconfig
***
*** Configuration file ".config" not found!
***
*** Please run some configurator (e.g. "make oldconfig" or
*** "make menuconfig" or "make xconfig").
***
make[2]: *** [silentoldconfig] Error 1
make[1]: *** [silentoldconfig] Error 2
make: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'. Stop.
[email protected]:~/Blowfish/kernel/omap$
Click to expand...
Click to collapse
I have run into this issue before, and I believe what I did to solve this was delete all the files in the build directory and re-git them from a specific branch. For example building ICS I used:
Code:
$ git branch -a
$ git checkout remotes/origin/android-omap-tuna-3.0-ics-mr1
Try it and see if that works for your JB files. I think for you it's:
Code:
$ git checkout remotes/origin/android-omap-tuna-3.0-jb-mr1.1
jjhiza said:
Thank you so much for this guide! I've been compiling my own ROM for a while now, and I feel like taking another step in development, by building my own kernel. I'm running into the following make error(s) though. I'm completely new to kernel development, so I figured I'd fire out my questions here, and hope that you guys can help me out. Below is my entire build environment (as far as I could get) - from the 'mkdir' commands to the *make* errors I'm experiencing... As you'll see, I haven't gotten very far, so I'm clearly doing something wrong at an elementary level. Any help would be appreciated. :good:
Code:
[email protected]:~$ mkdir Blowfish
[email protected]:~$ cd Blowfish
[email protected]:~/Blowfish$ mkdir kernel
[email protected]:~/Blowfish$ cd kernel
[email protected]:~/Blowfish/kernel$ mkdir source
[email protected]:~/Blowfish/kernel$ cd kerne
bash: cd: kerne: No such file or directory
[email protected]:~/Blowfish/kernel$ cd kernel
bash: cd: kernel: No such file or directory
[email protected]:~/Blowfish/kernel$ git clone https://android.googlesource.com/kernel/omap.git
Cloning into 'omap'...
remote: Sending approximately 439.05 MiB ...
remote: Counting objects: 64780, done
remote: Finding sources: 100% (18264/18264)
remote: Getting sizes: 100% (2126/2126)
remote: Compressing objects: 99% (26370/26371)
remote: Total 2138198 (delta 1785247), reused 2137592 (delta 1785041)
Receiving objects: 100% (2138198/2138198), 446.32 MiB | 340 KiB/s, done.
Resolving deltas: 100% (1786095/1786095), done.
[email protected]:~/Blowfish/kernel$ cd omap
[email protected]:~/Blowfish/kernel/omap$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/android-omap-3.0
remotes/origin/android-omap-panda-3.0
remotes/origin/android-omap-steelhead-3.0-ics-aah
remotes/origin/android-omap-tuna-3.0
remotes/origin/android-omap-tuna-3.0-ics-mr1
remotes/origin/android-omap-tuna-3.0-jb-mr0
remotes/origin/android-omap-tuna-3.0-jb-mr1
remotes/origin/android-omap-tuna-3.0-jb-mr1.1
remotes/origin/android-omap-tuna-3.0-jb-pre1
remotes/origin/android-omap-tuna-3.0-mr0
remotes/origin/android-omap-tuna-3.0-mr0.1
remotes/origin/glass-omap-xrr02
remotes/origin/glass-omap-xrr35
remotes/origin/glass-omap-xrr64b
remotes/origin/linux-omap-3.0
remotes/origin/master
remotes/origin/sph-l700-fh05
[email protected]:~/Blowfish/kernel/omap$ git checkout remotes/origin/android-omap-tuna-3.0-jb-pre1
Checking out files: 100% (37659/37659), done.
Note: checking out 'remotes/origin/android-omap-tuna-3.0-jb-pre1'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at e8de0e2... video: sii9234: dynamically register and unregister input device
[email protected]:~/Blowfish/kernel/omap$ export ARCH=arm
[email protected]:~/Blowfish/kernel/omap$ export SUBARCH=arm
[email protected]:~/Blowfish/kernel/omap$ export CROSS_COMPILE='/home/jjhiza/Blowfish/arm-2013.05-23-arm-none-eabi.bin'
[email protected]:~/Blowfish/kernel/omap$ make tuna_deconfig
HOSTCC scripts/basic/fixdep
make[1]: *** No rule to make target `tuna_deconfig'. Stop.
make: *** [tuna_deconfig] Error 2
[email protected]:~/Blowfish/kernel/omap$ make
make: /home/jjhiza/Blowfish/arm-2013.05-23-arm-none-eabi.bingcc: Command not found
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
scripts/kconfig/conf --silentoldconfig Kconfig
***
*** Configuration file ".config" not found!
***
*** Please run some configurator (e.g. "make oldconfig" or
*** "make menuconfig" or "make xconfig").
***
make[2]: *** [silentoldconfig] Error 1
make[1]: *** [silentoldconfig] Error 2
make: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'. Stop.
[email protected]:~/Blowfish/kernel/omap$
Click to expand...
Click to collapse
If you haven't had luck figuring out the problem , you need to add a hyphen at the end of your toolchain , so it would be
" export CROSS_COMPILE=~/home/jjhiza/Blowfish/arm-2013.05-23-arm-none-eabi- "
that just tells it to use all the binary files that start with eabi-
Sent from my Galaxy Nexus using Tapatalk
Climber Ty said:
I know a lot of this has been posted before in other locations, but recently I have found some of that data to be incomplete when I was building a custom kernel for my GNex, so just bear with me.
Click to expand...
Click to collapse
Dude, this tutorial is f'king amazing.
For some odd reason, my kernel will boot and run just fine temporarily using the "fastboot boot" command, but I get write errors when trying to "fastboot flash" it, and flashing the new kernel fails. I've tried in xubuntu 12.04 x86, Windows 7 x64 using command line and Windows x64 using Wug's Nexus toolkit.
Any ideas?
I tried repacking the ROM that I'm using (Shiny 4.3 10/11/13 build) with my kernel and reflashing it, but no joy. I'm sure there's more to making kernel into a flashable .zip than I realize...
I am kinda new to kernel development. I need to rebuild the kernel I'm using ((http://forum.xda-developers.com/showthread.php?t=2480353) Compulsion Kernel) with loadable module support. I have also tried other kernels. I also tried using the "-i" flag on make, but the errors kept getting worse, until the whole compilation output was errors...
I keep getting errors from the console output. For example:
Code:
net/bluetooth/hci_conn.c: In function 'hci_le_ltk_reply':
net/bluetooth/hci_conn.c:406:28: warning: argument to 'sizeof' in 'memcpy' call is the same pointer type '__u8 *' as the destination; expected '__u8' or an explicit length [-Wsizeof-pointer-memaccess]
error, forbidden warning: hci_conn.c:406
make[2]: [net/bluetooth/hci_conn.o] Error 1
-Wsizeof-pointer-memaccess errors pop up very often.
There are also file not found errors:
Code:
arm-eabi-ld: error: cannot open net/bluetooth/hci_conn.o: No such file or directory
make[2]: [net/bluetooth/bluetooth.o] Error 1
LD net/bluetooth/built-in.o
arm-eabi-ld: error: cannot open net/bluetooth/bluetooth.o: No such file or directory
make[2]: [net/bluetooth/built-in.o] Error 1
CC net/bridge/br_input.o
Heres another example:
Code:
CC net/bridge/br_ioctl.o
arch/arm/mach-msm/board-8974-sec.c:569:13: warning: 'modem_power_off' defined but not used [-Wunused-function]
error, forbidden warning: board-8974-sec.c:569
make[1]: [arch/arm/mach-msm/board-8974-sec.o] Error 1
LD arch/arm/mach-msm/built-in.o
CC drivers/gpu/ion/ion_cma_heap.o
arm-eabi-ld: error: cannot open arch/arm/mach-msm/bam_dmux.o: No such file or directory
arm-eabi-ld: error: cannot open arch/arm/mach-msm/board-8974-sec.o: No such file or directory
System information:
I attached my .config file. It is the default from the Compulsion kernel.
Compile commands (in order):
Code:
export VARIANT_DEFCONFIG=msm8974_sec_defconfig ##I added this because it wont generate .config if this variable is empty...
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=/home/julian/android-toolchain-eabi/bin/arm-eabi-
git pull
make clean
make msm8974_sec_defconfig
make -j4
Operating system: Fresh install of Linux Mint 16 (Petra)
Build-related packages I installed with apt: git-core, gnupg, flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev, build-essential, zip, curl, libncurses5-dev, zlib1g-dev, ia32-libs, lib32z1-dev, lib32ncurses5-dev, gcc-multilib, g++-multilib, and Adb
Toolchain:
Tried linaro, the android NDK from Google's website, and various other toolchains. Same error.
Output of "echo $PATH"
Code:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/julian/android-toolchain-eabi/bin:/home/julian/androidkernel/N900T_Kernel
I think thats all the needed information
Thank you!
Your command for the configuration is incomplete. You need to type a command for the other files as well. Type this command "make msm8974_sec_defconfig VARIANT_DEFCONFIG=msm8974_sec_hltetmo_defconfig DEBUG_DEFCONFIG= SELINUX_DEFCONFIG=selinux_defconfig SELINUX_LOG_DEFCONFIG=selinux_log_defconfig TIMA_DEFCONFIG=tima_defconfig".
djintrigue808 said:
Your command for the configuration is incomplete. You need to type a command for the other files as well. Type this command "make msm8974_sec_defconfig VARIANT_DEFCONFIG=msm8974_sec_hltetmo_defconfig DEBUG_DEFCONFIG= SELINUX_DEFCONFIG=selinux_defconfig SELINUX_LOG_DEFCONFIG=selinux_log_defconfig TIMA_DEFCONFIG=tima_defconfig".
Click to expand...
Click to collapse
Still can't compile
No more file not found errors, but still getting:
Code:
arch/arm/mach-msm/bam_dmux.c: In function 'show_waketime':
arch/arm/mach-msm/bam_dmux.c:2440:29: warning: argument to 'sizeof' in 'snprintf' call is the same expression as the destination; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]
error, forbidden warning: bam_dmux.c:2440
make[1]: *** [arch/arm/mach-msm/bam_dmux.o] Error 1
make: *** [arch/arm/mach-msm] Error 2
make: *** Waiting for unfinished jobs....
My compile script (easier then entering commands...)
#!/bin/bash
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=arm-eabi-
if [[ "$PATH" == *"/home/julian/android-toolchain-eabi/bin"* ]]; then
echo "PATH Contains toolchain"
else
export PATH=$PATH:/home/julian/android-toolchain-eabi/bin
echo "Toolchain added to PATH!"
fi
git pull
make clean -j4
echo "Building config..."
sleep 2
make msm8974_sec_defconfig VARIANT_DEFCONFIG=msm8974_sec_hltetmo_defconfig DEBUG_DEFCONFIG= SELINUX_DEFCONFIG=selinux_defconfig SELINUX_LOG_DEFCONFIG=selinux_log_defconfig TIMA_DEFCONFIG=tima_defconfig -j4
sleep 1
read -p "Customize config? (Y/N): " yesno
if [ "$yesno" == "Y" ]; then
make menuconfig -j4
make -j4
else
make -j4
fi
Thank you!
Julian90090 said:
Still can't compile
No more file not found errors, but still getting:
Code:
arch/arm/mach-msm/bam_dmux.c: In function 'show_waketime':
arch/arm/mach-msm/bam_dmux.c:2440:29: warning: argument to 'sizeof' in 'snprintf' call is the same expression as the destination; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]
error, forbidden warning: bam_dmux.c:2440
make[1]: *** [arch/arm/mach-msm/bam_dmux.o] Error 1
make: *** [arch/arm/mach-msm] Error 2
make: *** Waiting for unfinished jobs....
My compile script (easier then entering commands...)
#!/bin/bash
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=arm-eabi-
if [[ "$PATH" == *"/home/julian/android-toolchain-eabi/bin"* ]]; then
echo "PATH Contains toolchain"
else
export PATH=$PATH:/home/julian/android-toolchain-eabi/bin
echo "Toolchain added to PATH!"
fi
git pull
make clean -j4
echo "Building config..."
sleep 2
make msm8974_sec_defconfig VARIANT_DEFCONFIG=msm8974_sec_hltetmo_defconfig DEBUG_DEFCONFIG= SELINUX_DEFCONFIG=selinux_defconfig SELINUX_LOG_DEFCONFIG=selinux_log_defconfig TIMA_DEFCONFIG=tima_defconfig -j4
sleep 1
read -p "Customize config? (Y/N): " yesno
if [ "$yesno" == "Y" ]; then
make menuconfig -j4
make -j4
else
make -j4
fi
Thank you!
Click to expand...
Click to collapse
Ok so I was messing around and decided to fix the -Wsizeof-pointer-memaccess errors. I opened bam_dmux.c and changed the line
Code:
return snprintf(buf, sizeof(buf), "%u\n", wakelock_timeout);
to
Code:
return snprintf(buf, (int)sizeof(buf), "%u\n", wakelock_timeout);
The kernel compiles now, but when I flash it to my device (mkbootimg), I get a ODIN message saying regular boot failed...
MORE UPDATES:
Tried flashing plain zImage in tar with ODIN, got a "unsupport dev_type" error on the device.
I fixed all the compile errors. I changed cross compilers to arm linux gnueabihf 4.7. There is still the task of getting the kernel on the device though... Thanks in advance!
EDIT AGAIN: Still can't get it to boot. Tried compiling stock kernel, leankernel, and Saber kernel. All same result after packing zImage and flashing with flashable zip...
Using repack-zImage.sh, I get a "gunzip result is oscillating between 'too small' and 'too large' at size: 7836575 7836576 7836577 7836578" error. There are no compile errors with any of the kernels. I attached my "finished" stock kernel flashable zip (doesn't work). I heard something about a mismatch between gzip and lzop... *feeling determined*
Any ideas?
EDIT:
Compile warnings about swp{b} although swp emulation is enabled in config. I still can't figure out how to get the zImage to work correctly on my device. I swapped the zImage out of the Saber kernel install zip boot.img and put my own in, flashed with TWRP, device doesn't boot until I go back and install the original kernel.
Julian90090 said:
Still can't compile
No more file not found errors, but still getting:
Code:
arch/arm/mach-msm/bam_dmux.c: In function 'show_waketime':
arch/arm/mach-msm/bam_dmux.c:2440:29: warning: argument to 'sizeof' in 'snprintf' call is the same expression as the destination; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]
error, forbidden warning: bam_dmux.c:2440
make[1]: *** [arch/arm/mach-msm/bam_dmux.o] Error 1
make: *** [arch/arm/mach-msm] Error 2
make: *** Waiting for unfinished jobs....
My compile script (easier then entering commands...)
#!/bin/bash
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=arm-eabi-
if [[ "$PATH" == *"/home/julian/android-toolchain-eabi/bin"* ]]; then
echo "PATH Contains toolchain"
else
export PATH=$PATH:/home/julian/android-toolchain-eabi/bin
echo "Toolchain added to PATH!"
fi
git pull
make clean -j4
echo "Building config..."
sleep 2
make msm8974_sec_defconfig VARIANT_DEFCONFIG=msm8974_sec_hltetmo_defconfig DEBUG_DEFCONFIG= SELINUX_DEFCONFIG=selinux_defconfig SELINUX_LOG_DEFCONFIG=selinux_log_defconfig TIMA_DEFCONFIG=tima_defconfig -j4
sleep 1
read -p "Customize config? (Y/N): " yesno
if [ "$yesno" == "Y" ]; then
make menuconfig -j4
make -j4
else
make -j4
fi
Thank you!
Click to expand...
Click to collapse
Please ignore if irrelevant or ignorant. I'm in my infancy and still grasping the basics.
My environment is quite different than yours, on a Mac and using a Sprint note 3, but I came across this thread with the same compiler error using the 4.8 tools in the NDK. If I use 4.6 gcc I make it pretty far into the compilation process before error (failing @net/netfilter/xt_TCPMSS.c). However, using 4.8 gave me the same error as you:
Code:
arch/arm/mach-msm/bam_dmux.c: In function 'show_waketime':
arch/arm/mach-msm/bam_dmux.c:2440:29: warning: argument to 'sizeof' in 'snprintf' call is the same expression as the destination; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]
error, forbidden warning: bam_dmux.c:2440
make[1]: *** [arch/arm/mach-msm/bam_dmux.o] Error 1
make: *** [arch/arm/mach-msm] Error 2
Here's the layout of my toolchains folder and my broken build file (looks like yours)
Code:
z:toolchains anon$ pwd
/Volumes/android/ndk/toolchains
z:toolchains anon$ ls arm-linux-androideabi-4.*/prebuilt/darwin-x86_64/arm-linux-androideabi/bin
arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/arm-linux-androideabi/bin:
ar c++ gcc ld.bfd ld.mcld objcopy ranlib
as g++ ld ld.gold nm objdump strip
arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/arm-linux-androideabi/bin:
ar c++ gcc ld.bfd ld.mcld objcopy ranlib
as g++ ld ld.gold nm objdump strip
Broken Make file edit:
Code:
CROSS_COMPILE ?= /Volumes/android/ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-
Change to 4.6 for new compile error:
Code:
CROSS_COMPILE ?= /Volumes/android/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-
Made is a helluva lot father in the compilation process, but still won't compile correctly.
Code:
net/netfilter/xt_TCPMSS.c:50:8: warning: 'struct xt_tcpmss_info' declared inside parameter list [enabled by default]
error, forbidden warning: xt_TCPMSS.c:50
make[2]: *** [net/netfilter/xt_TCPMSS.o] Error 1
make[1]: *** [net/netfilter] Error 2
make: *** [net] Error 2
Got my NDK from here:
Code:
http://dl.google.com/android/ndk/android-ndk-r9c-darwin-x86_64.tar.bz2
I don't, yet, understand the differences between the versions. Not sure if this will be helpful, samsungs open source community page sure isn't very friendly.
Julian90090 said:
Ok so I was messing around and decided to fix the -Wsizeof-pointer-memaccess errors. I opened bam_dmux.c and changed the line
Code:
return snprintf(buf, sizeof(buf), "%u\n", wakelock_timeout);
to
Code:
return snprintf(buf, (int)sizeof(buf), "%u\n", wakelock_timeout);
The kernel compiles now, but when I flash it to my device (mkbootimg), I get a ODIN message saying regular boot failed...
MORE UPDATES:
Tried flashing plain zImage in tar with ODIN, got a "unsupport dev_type" error on the device.
I fixed all the compile errors. I changed cross compilers to arm linux gnueabihf 4.7. There is still the task of getting the kernel on the device though... Thanks in advance!
EDIT AGAIN: Still can't get it to boot. Tried compiling stock kernel, leankernel, and Saber kernel. All same result after packing zImage and flashing with flashable zip...
Using repack-zImage.sh, I get a "gunzip result is oscillating between 'too small' and 'too large' at size: 7836575 7836576 7836577 7836578" error. There are no compile errors with any of the kernels. I attached my "finished" stock kernel flashable zip (doesn't work). I heard something about a mismatch between gzip and lzop... *feeling determined*
Click to expand...
Click to collapse
I dunno if it is still relevant to you, but in your code change this
Code:
return snprintf(buf, sizeof(buf), "%u\n", wakelock_timeout);
to this
Code:
return snprintf(buf, sizeof([COLOR="Red"]*[/COLOR]buf), "%u\n", wakelock_timeout);
Do that for all the files you get error in.
This error is because the toolchain you are using is higher version than GCC 4.8.*
Use any lower GCC version toolchain and those changes are not needed.
If you want the newer cross compiler, You need to make the cnanges. I hope this helps...
Cheers!!!
daxgirl said:
I dunno if it is still relevant to you, but in your code change this
Code:
return snprintf(buf, sizeof(buf), "%u\n", wakelock_timeout);
to this
Code:
return snprintf(buf, sizeof([COLOR="Red"]*[/COLOR]buf), "%u\n", wakelock_timeout);
Do that for all the files you get error in.
This error is because the toolchain you are using is higher version than GCC 4.8.*
Use any lower GCC version toolchain and those changes are not needed.
If you want the newer cross compiler, You need to make the cnanges. I hope this helps...
Cheers!!!
Click to expand...
Click to collapse
I did the same thing; i.e. I added (int) to the line also. The compiler seems to be ok with it, but I have not installed it on a device yet. I actually see a number of these errors. Do you think there should be another fix for it perhaps? Did you findout anything else about this? I appreciate a reply.
sansari123 said:
I did the same thing; i.e. I added (int) to the line also. The compiler seems to be ok with it, but I have not installed it on a device yet. I actually see a number of these errors. Do you think there should be another fix for it perhaps? Did you findout anything else about this? I appreciate a reply.
Click to expand...
Click to collapse
Yeah there is another fix. You add flags to your makefile for the cross cimpiler to basically accept those. Since they are not errors. Than you can use any chain. I managed to compile on sabermod 4.10 a kernel for s5, which was giving me the same trouble. Once I upload my sources I will send you a link to the repo so you can tweak your makefile accordingly ?
Sent from my SM-G900F using Tapatalk
Thanks. The latest message I get is the following:
Code:
drivers/cpufreq/cpufreq_interactive.c: In function 'show_target_loads':
drivers/cpufreq/cpufreq_interactive.c:813:6: warning: operation on 'ret' may be undefined [-Wsequence-point]
error, forbidden warning: cpufreq_interactive.c:813
make[2]: *** [drivers/cpufreq/cpufreq_interactive.o] Error 1
make[1]: *** [drivers/cpufreq] Error 2
make: *** [drivers] Error 2
But this one is a warning also. I guess there is a flag for ignoring warning(s)? I'll wait to hear back from you.
daxgirl said:
Yeah there is another fix. You add flags to your makefile for the cross cimpiler to basically accept those. Since they are not errors. Than you can use any chain. I managed to compile on sabermod 4.10 a kernel for s5, which was giving me the same trouble. Once I upload my sources I will send you a link to the repo so you can tweak your makefile accordingly ?
Sent from my SM-G900F using Tapatalk
Click to expand...
Click to collapse
@daxgirl - I like to learn how to modify the flags. Did you find out which flags to modify by reading the Makefile documentation? I would really appreciate it if you tell me how I can learn which flags to modify and do it myself vs. copy your Makefile.
I'm trying to build Lineage 14.1 for serranoltexx (for 5 days now).
When I started the compilation using "breakfast serranoltexx" an error appears after the 7 percent mark (~2minutes).
I followed this guide: wiki.lineageos. org/devices/serranoltexx/build
with a fresh Ubuntu 17.04 VM Box installation two times but that error always appears.
The only thing I still could mention is that pulled the proprietary blobs using my phone as stated in the instructions not with the stock Rom but Lineage 14.1 already installed.
Full console output:
(error at line #321) pastebin. com/vC06fV36
Error:
Code:
make: Leaving directory '/home/mrglue/android/lineage/kernel/samsung/msm8930-common'
[ 7% 2535/34256] Building Kernel
FAILED: /bin/bash -c "(make -j4 CFLAGS_MODULE=\"-fno-pic\" -C kernel/samsung/msm8930-common O=/home/mrglue/android/lineage/out/target/product/serranoltexx/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=\"/home/mrglue/android/lineage/prebuilts/misc/linux-x86/ccache/ccache arm-linux-androidkernel-\" zImage ) && (if grep -q 'CONFIG_OF=y' /home/mrglue/android/lineage/out/target/product/serranoltexx/obj/KERNEL_OBJ/.config ; then echo \"Building DTBs\" ; make -j4 CFLAGS_MODULE=\"-fno-pic\" -C kernel/samsung/msm8930-common O=/home/mrglue/android/lineage/out/target/product/serranoltexx/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=\"/home/mrglue/android/lineage/prebuilts/misc/linux-x86/ccache/ccache arm-linux-androidkernel-\" dtbs ; else echo \"DTBs not enabled\" ; fi ) && (if grep -q 'CONFIG_MODULES=y' /home/mrglue/android/lineage/out/target/product/serranoltexx/obj/KERNEL_OBJ/.config ; then echo \"Building Kernel Modules\" ; make -j4 CFLAGS_MODULE=\"-fno-pic\" -C kernel/samsung/msm8930-common O=/home/mrglue/android/lineage/out/target/product/serranoltexx/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=\"/home/mrglue/android/lineage/prebuilts/misc/linux-x86/ccache/ccache arm-linux-androidkernel-\" modules && make -j4 CFLAGS_MODULE=\"-fno-pic\" -C kernel/samsung/msm8930-common O=/home/mrglue/android/lineage/out/target/product/serranoltexx/obj/KERNEL_OBJ INSTALL_MOD_PATH=../../system ARCH=arm CROSS_COMPILE=\"/home/mrglue/android/lineage/prebuilts/misc/linux-x86/ccache/ccache arm-linux-androidkernel-\" modules_install && mdpath=\`find /home/mrglue/android/lineage/out/target/product/serranoltexx/system/lib/modules -type f -name modules.order\`; if [ \"\$mdpath\" != \"\" ];then mpath=\`dirname \$mdpath\`; ko=\`find \$mpath/kernel -type f -name *.ko\`; for i in \$ko; do arm-linux-androidkernel-strip --strip-unneeded \$i; mv \$i /home/mrglue/android/lineage/out/target/product/serranoltexx/system/lib/modules/; done; fi && mdpath=\`find /home/mrglue/android/lineage/out/target/product/serranoltexx/system/lib/modules -type f -name modules.order\`; if [ \"\$mdpath\" != \"\" ];then mpath=\`dirname \$mdpath\`; rm -rf \$mpath; fi ; else echo \"Kernel Modules not enabled\" ; fi )"
hello! I am writing through google translator. I built kernel 5.18.4, but I don't see image.gz-dtb in /arch/arm64/boot/.
Here is what I did:
Code:
wget "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.18.14.tar.xz"
tar -xvf "linux-5.18.14.tar.xz"
cd linux-5.18.14
make clean
make mrproper
make onclite-perf_defconfig CC=clang-11 ARCH=arm64 SUBARCH=arm64 CROSS_COMPILE=/mnt/sdc1/pub/dev/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- O=/mnt/sdc1/dev/onc5
make[1]: Entering directory '/mnt/sdc1/pub/dev/onc5'
GEN Makefile
#
# configuration written to .config
#
make[1]: Leaving directory '/mnt/sdc1/pub/dev/onc5'
make -j5 O=/mnt/sdc1/pub/dev/onc5 CC=clang-11 ARCH=arm64 SUBARCH=arm64 CROSS_COMPILE=/mnt/sdc1/pub/dev/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- O=/mnt/sdc1/dev/onc5
.....
the kernel built successfully and there were files
Image
Image.gz
but there was no image.gz-dtb file
best regards, Vadim