Building Android [kernel] from source
This thread has been written anymore here.
This is my old thread >> forum.xda-developers.com/showthread.php?t=1334658 <<
Cz there no gio forum at past time.
Hehe.
So, I wrote there before.
Sry, I forgot to write that here
Ok, let's see!!
May this can help y.......
Building kernel tools :
git
ARM Compiler Toolchain
Kernel Source Code
Python
Valgrin
Java
*git : $ sudo apt-get install git
*java : $ apt-get install java (choose either of java version) and, type this command :
$ sudo apt-get install *java-version
*valgrin : $ sudo apt-get install valgrin
*python : $ sudo apt-get install python
*ARM toolchain :
Do a web search on code.google.com
or
u can use this (For Gioers)
*Kernel source code :
download from github.com
(For Gioers, u can download on here (Hyriand's source code) or here, (Phiexz's source code)
here
or my source code
U can download kernel source code by typing this command on terminal :
---------------------------
SKIP THIS STEP IF YOU JUST WANNA BUILD KERNEL---------------------
And, u need to repo first.
U can type these commands to do :
[example for GB, ICS source has been released. Just type command like this below for ICS :
Code:
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
CM GB :
Code:
repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
CM ICS :
Code:
repo init -u git://github.com/CyanogenMod/android.git -b ics
*Choose your name & e-mail, and colour.
after u're done,
type this command :
Code:
repo sync -j2 ( for bandwidth min 10kbps max 20kbps )
repo sync -j4 ( for bandwidth min 20kbps max 40kbps )
repo sync -j8 ( for badnwitdh min 40kbps max 60kbps )
repo sync -j16 ( for bandwidth min 60kbps max 80kbps )
repo sync -j32 & -j64 ( for fast bandwidth )
or u can this repo mirror command :
Code:
mkdir -p ~/bin
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
mkdir android-repo
cd android-repo
repo init -u https://android.googlesource.com/platform/manifest --mirror
then, type repo sync like I've said before
Wait till done.
---------------------------------------------------------------------------------------------------------------
JUST CONTINUE DIRECTLY TO THIS BELOW STEP
--------------------------------------------------------------------------------------------------------------------------------------------------------
And, u do next steps (For Gioers):
Code:
mkdir android
mkdir sources
mkdir .Galaxy_Gio_Sources
And if ya have downloaded all tools that they're needed,
u can do these steps :
Hold ctrl+H on your home.
Move your kernel source code to folder u created that it named .Galaxy_Gio_Sources
And, copas your ARM toolchain to source code folder.
Before do to the next step, u find the following lines on "Makefile" in source code folder :
Code:
#ARCH?= $(SUBARCH)
CROSS_COMPILE=
change them to
Code:
#ARCH?= arm
CROSS_COMPILE= ./arm-2009q3/bin/arm-none-linux-gnueabi-
After that,
type these commands :
Code:
cd android
cd sources
Then, type command on terminal :
Code:
ln -s /home/*name of your desktop/.Galaxy_Gio_Sources/android_kernel_samsung_galaxygio
Code:
#Pull kernel config from running phone
adb pull /proc/config.gz ~android/sources/android_kernel_samsung_galaxygio/arch/arm/configs
cd ~android/sources/android_kernel_samsung_galaxygio/arch/arm/configs
gunzip config.gz
and name it to be gio_rev03_defconfig
[/CODE]
or
Code:
U can grab config.gz on your HH with root explorer.
location >> proc/*config.gz
copas to sdcard.
Move to /android/sources/android_kernel_samsung_galaxygio/arch/arm/configs
or
Code:
copy boot.img or zImage which wanna be extracted its config to root folder kernel sourse tree.
and type this command from kernel source tree:
./scripts/extract-ikconfig boot.img > gio_rev03_defconfig
Command before do compile :
Code:
export CCOMPILER=~/arm-2009q3/bin/arm-none-linux-gnueabi-
or
Code:
export CCOMPILER=/home/*name of your desktop/android/sourcesarm-2009q3/bin/arm-none-linux-gnueabi-
next,
Code:
make ARCH=arm CROSS_COMPILE=$CCOMPILER gio_rev03_defconfig
then,
Code:
make ARCH=arm CROSS_COMPILE=$CCOMPILER
or directly w/o use export commands. Like these :
Code:
cd android
cd sources
cd android_kernel_samsung_galaxygio
chmod ugo+rwx bin
then,
Code:
make menuconfig
make ARCH=arm CROSS_COMPILE=/home/delano/android/sources/android_kernel_samsung_galaxygio/arm-2009q3/bin/arm-none-linux-gnueabi- [Example}
or,
Code:
make menuconfig
make ARCH=arm CROSS_COMPILE=/home/delano/android/sources/android_kernel_samsung_galaxygio/arm-2009q3/bin/arm-none-linux-gnueabi- -j8 [Example}
Here's an example while I was compiling :
Code:
CC kernel/bounds.s
GEN include/generated/bounds.h
CC arch/arm/kernel/asm-offsets.s
GEN include/generated/asm-offsets.h
CALL scripts/checksyscalls.sh
CC scripts/mod/empty.o
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/mod/sumversion.o
HOSTLD scripts/mod/modpost
CC init/main.o
CHK include/generated/compile.h
CC init/version.o
CC init/do_mounts.o
CC init/do_mounts_rd.o
CC init/do_mounts_initrd.o
LD init/mounts.o
CC init/initramfs.o
CC init/calibrate.o
LD init/built-in.o
AS usr/initramfs_data.o
LD usr/built-in.o
CC arch/arm/kernel/compat.o
CC arch/arm/kernel/elf.o
AS arch/arm/kernel/entry-armv.o
AS arch/arm/kernel/entry-common.o
CC arch/arm/kernel/irq.o
CC arch/arm/kernel/process.o
CC arch/arm/kernel/ptrace.o
CC arch/arm/kernel/return_address.o
CC arch/arm/kernel/setup.o
CC arch/arm/kernel/signal.o
CC arch/arm/kernel/sys_arm.o
CC arch/arm/kernel/stacktrace.o
CC arch/arm/kernel/time.o
CC arch/arm/kernel/traps.o
CC arch/arm/kernel/armksyms.o
CC arch/arm/kernel/module.o
CC arch/arm/kernel/sched_clock.o
CC arch/arm/kernel/sys_oabi-compat.o
CC arch/arm/kernel/pmu.o
CC arch/arm/kernel/perf_event.o
CC arch/arm/kernel/io.o
LD arch/arm/kernel/built-in.o
AS arch/arm/kernel/head.o
CC arch/arm/kernel/init_task.o
LDS arch/arm/kernel/vmlinux.lds
CC arch/arm/mm/dma-mapping.o
CC arch/arm/mm/extable.o
CC arch/arm/mm/fault.o
CC arch/arm/mm/init.o
CC arch/arm/mm/iomap.o
CC arch/arm/mm/fault-armv.o
CC arch/arm/mm/flush.o
CC arch/arm/mm/ioremap.o
CC arch/arm/mm/mmap.o
CC arch/arm/mm/pgd.o
CC arch/arm/mm/mmu.o
CC arch/arm/mm/vmregion.o
CC arch/arm/mm/proc-syms.o
CC arch/arm/mm/alignment.o
AS arch/arm/mm/abort-ev6.o
AS arch/arm/mm/pabort-v6.o
AS arch/arm/mm/cache-v6.o
CC arch/arm/mm/copypage-v6.o
CC arch/arm/mm/context.o
AS arch/arm/mm/tlb-v6.o
AS arch/arm/mm/proc-v6.o
CC arch/arm/mm/cache-l2x0.o
LD arch/arm/mm/built-in.o
CC arch/arm/common/clkdev.o
LD arch/arm/common/built-in.o
CC [M] arch/arm/common/cpaccess.o
CC arch/arm/mach-msm/io.o
CC arch/arm/mach-msm/dma.o
CC arch/arm/mach-msm/memory.o
CC arch/arm/mach-msm/clock.o
CC arch/arm/mach-msm/clock-voter.o
CC arch/arm/mach-msm/modem_notifier.o
CC arch/arm/mach-msm/cpufreq.o
CC arch/arm/mach-msm/nohlt.o
CC arch/arm/mach-msm/clock-debug.o
CC arch/arm/mach-msm/proc_comm.o
CC arch/arm/mach-msm/clock-pcom.o
CC arch/arm/mach-msm/internal_power_rail.o
CC arch/arm/mach-msm/vreg.o
CC arch/arm/mach-msm/mpp.o
CC arch/arm/mach-msm/pmic_debugfs.o
CC arch/arm/mach-msm/drop_caches.o
CC arch/arm/mach-msm/acpuclock.o
CC arch/arm/mach-msm/timer.o
CC arch/arm/mach-msm/irq-vic.o
AS arch/arm/mach-msm/idle-v6.o
CC arch/arm/mach-msm/smem_log.o
CC arch/arm/mach-msm/smd.o
CC arch/arm/mach-msm/smd_debug.o
CC arch/arm/mach-msm/remote_spinlock.o
CC arch/arm/mach-msm/socinfo.o
CC arch/arm/mach-msm/nand_partitions.o
CC arch/arm/mach-msm/pmic.o
CC arch/arm/mach-msm/rpc_hsusb.o
CC arch/arm/mach-msm/rpc_pmapp.o
CC arch/arm/mach-msm/rpc_fsusb.o
CC arch/arm/mach-msm/smd_tty.o
CC arch/arm/mach-msm/smd_qmi.o
CC arch/arm/mach-msm/smd_pkt.o
CC arch/arm/mach-msm/smd_nmea.o
CC arch/arm/mach-msm/smd_rpcrouter.o
CC arch/arm/mach-msm/smd_rpcrouter_device.o
CC arch/arm/mach-msm/smd_rpc_sym.o
CC arch/arm/mach-msm/smd_rpcrouter_servers.o
CC arch/arm/mach-msm/smd_rpcrouter_clients.o
CC arch/arm/mach-msm/smd_rpcrouter_xdr.o
CC arch/arm/mach-msm/rpcrouter_smd_xprt.o
CC arch/arm/mach-msm/ping_mdm_rpc_client.o
CC arch/arm/mach-msm/proc_comm_test.o
CC arch/arm/mach-msm/ping_apps_server.o
CC arch/arm/mach-msm/oem_rapi_client.o
CC arch/arm/mach-msm/rpc_server_dog_keepalive.o
CC arch/arm/mach-msm/rpc_server_time_remote.o
CC arch/arm/mach-msm/qdsp5/adsp.o
CC arch/arm/mach-msm/qdsp5/adsp_driver.o
CC arch/arm/mach-msm/qdsp5/adsp_info.o
CC arch/arm/mach-msm/qdsp5/adsp_rm.o
CC arch/arm/mach-msm/qdsp5/adsp_video_verify_cmd.o
CC arch/arm/mach-msm/qdsp5/adsp_videoenc_verify_cmd.o
CC arch/arm/mach-msm/qdsp5/adsp_jpeg_verify_cmd.o
CC arch/arm/mach-msm/qdsp5/adsp_jpeg_patch_event.o
CC arch/arm/mach-msm/qdsp5/adsp_vfe_verify_cmd.o
CC arch/arm/mach-msm/qdsp5/adsp_vfe_patch_event.o
CC arch/arm/mach-msm/qdsp5/adsp_lpm_verify_cmd.o
CC arch/arm/mach-msm/qdsp5/audio_out.o
CC arch/arm/mach-msm/qdsp5/audio_in.o
CC arch/arm/mach-msm/qdsp5/audio_mp3.o
CC arch/arm/mach-msm/qdsp5/audmgr.o
CC arch/arm/mach-msm/qdsp5/audpp.o
CC arch/arm/mach-msm/qdsp5/audrec.o
CC arch/arm/mach-msm/qdsp5/audio_evrc.o
CC arch/arm/mach-msm/qdsp5/audio_qcelp.o
CC arch/arm/mach-msm/qdsp5/audio_amrnb.o
CC arch/arm/mach-msm/qdsp5/audio_aac.o
CC arch/arm/mach-msm/qdsp5/audio_amrnb_in.o
CC arch/arm/mach-msm/qdsp5/audio_wma.o
CC arch/arm/mach-msm/qdsp5/audio_voicememo.o
CC arch/arm/mach-msm/qdsp5/audio_pcm.o
CC arch/arm/mach-msm/qdsp5/audio_amrwb.o
CC arch/arm/mach-msm/qdsp5/audio_wmapro.o
CC arch/arm/mach-msm/qdsp5/snd.o
CC arch/arm/mach-msm/qdsp5/snd_adie.o
LD arch/arm/mach-msm/qdsp5/built-in.o
CC arch/arm/mach-msm/pm2.o
arch/arm/mach-msm/pm2.c:1597: warning: type defaults to 'int' in declaration of 'what_clk'
arch/arm/mach-msm/pm2.c:1598: warning: type defaults to 'int' in declaration of 'req_clk'
CC arch/arm/mach-msm/keypad-surf-ffa.o
CC arch/arm/mach-msm/board-msm7x27.o
In file included from arch/arm/mach-msm/board-msm7x27.c:16:
arch/arm/mach-msm/board-gio.c: In function 'msm_fb_lcdc_power_save':
arch/arm/mach-msm/board-gio.c:994: warning: no return statement in function returning non-void
In file included from arch/arm/mach-msm/board-msm7x27.c:16:
arch/arm/mach-msm/board-gio.c: In function 'msm7x2x_init_mmc':
arch/arm/mach-msm/board-gio.c:2727: warning: ISO C90 forbids mixed declarations and code
arch/arm/mach-msm/board-msm7x27.c: At top level:
arch/arm/mach-msm/board-gio.c:938: warning: 'msm_fb_lcdc_vreg' defined but not used
arch/arm/mach-msm/board-gio.c:942: warning: 'msm_fb_lcdc_vreg_rev02' defined but not used
arch/arm/mach-msm/board-gio.c:1377: warning: 'i2c_devices' defined but not used
arch/arm/mach-msm/board-gio.c:1465: warning: 'mus_i2c_devices' defined but not used
arch/arm/mach-msm/board-gio.c:2212: warning: 'sdcc_gpio_init' defined but not used
CC arch/arm/mach-msm/devices-msm7x27.o
CC arch/arm/mach-msm/msm_vibrator.o
arch/arm/mach-msm/msm_vibrator.c: In function 'vibrator_enable':
arch/arm/mach-msm/msm_vibrator.c:273: warning: unused variable 'flags'
arch/arm/mach-msm/msm_vibrator.c: At top level:
arch/arm/mach-msm/msm_vibrator.c:181: warning: 'vibe_set_pwm_freq' defined but not used
arch/arm/mach-msm/msm_vibrator.c:202: warning: 'set_pmic_vibrator' defined but not used
CC arch/arm/mach-msm/gpiomux-7x27.o
CC arch/arm/mach-msm/gpiomux-v1.o
CC arch/arm/mach-msm/gpiomux.o
CC arch/arm/mach-msm/gpio.o
LD arch/arm/mach-msm/built-in.o
CC [M] arch/arm/mach-msm/reset_modem.o
CC [M] arch/arm/mach-msm/dma_test.o
CC arch/arm/vfp/vfpmodule.o
AS arch/arm/vfp/entry.o
AS arch/arm/vfp/vfphw.o
CC arch/arm/vfp/vfpsingle.o
CC arch/arm/vfp/vfpdouble.o
LD arch/arm/vfp/vfp.o
LD arch/arm/vfp/built-in.o
CC arch/arm/perfmon/perf-function-hooks.o
LD arch/arm/perfmon/built-in.o
CC kernel/sched.o
kernel/sched.c: In function 'sched_init':
kernel/sched.c:7524: warning: ISO C90 forbids mixed declarations and code
kernel/sched.c:7525: warning: initialization from incompatible pointer type
CC kernel/fork.o
CC kernel/exec_domain.o
CC kernel/panic.o
CC kernel/printk.o
CC kernel/cpu.o
CC kernel/exit.o
CC kernel/itimer.o
CC kernel/time.o
CC kernel/softirq.o
CC kernel/resource.o
CC kernel/sysctl.o
CC kernel/sysctl_binary.o
CC kernel/capability.o
CC kernel/ptrace.o
CC kernel/timer.o
CC kernel/user.o
CC kernel/signal.o
CC kernel/sys.o
CC kernel/kmod.o
CC kernel/workqueue.o
CC kernel/pid.o
CC kernel/rcupdate.o
CC kernel/extable.o
CC kernel/params.o
CC kernel/posix-timers.o
CC kernel/kthread.o
CC kernel/wait.o
CC kernel/kfifo.o
CC kernel/sys_ni.o
CC kernel/posix-cpu-timers.o
CC kernel/mutex.o
CC kernel/hrtimer.o
CC kernel/rwsem.o
CC kernel/nsproxy.o
CC kernel/srcu.o
CC kernel/semaphore.o
CC kernel/notifier.o
CC kernel/ksysfs.o
CC kernel/pm_qos_params.o
CC kernel/sched_clock.o
CC kernel/cred.o
CC kernel/async.o
CC kernel/range.o
CC kernel/groups.o
CC kernel/freezer.o
CC kernel/profile.o
CC kernel/stacktrace.o
CC kernel/irq/handle.o
CC kernel/irq/manage.o
CC kernel/irq/spurious.o
CC kernel/irq/resend.o
CC kernel/irq/chip.o
CC kernel/irq/devres.o
CC kernel/irq/autoprobe.o
CC kernel/irq/proc.o
CC kernel/irq/pm.o
LD kernel/irq/built-in.o
CC kernel/power/main.o
CC kernel/power/console.o
CC kernel/power/process.o
CC kernel/power/suspend.o
CC kernel/power/nvs.o
CC kernel/power/wakelock.o
CC kernel/power/portlist.o
CC kernel/power/userwakelock.o
CC kernel/power/earlysuspend.o
CC kernel/power/consoleearlysuspend.o
CC kernel/power/poweroff.o
LD kernel/power/built-in.o
CC kernel/time/timekeeping.o
CC kernel/time/ntp.o
CC kernel/time/clocksource.o
CC kernel/time/jiffies.o
CC kernel/time/timer_list.o
CC kernel/time/timecompare.o
CC kernel/time/timeconv.o
CC kernel/time/clockevents.o
CC kernel/time/tick-common.o
CC kernel/time/tick-oneshot.o
CC kernel/time/tick-sched.o
CC kernel/time/timer_stats.o
LD kernel/time/built-in.o
CC kernel/trace/trace_clock.o
CC kernel/trace/ring_buffer.o
LD kernel/trace/built-in.o
CC kernel/futex.o
CC kernel/rtmutex.o
CC kernel/up.o
CC kernel/uid16.o
CC kernel/module.o
CC kernel/kallsyms.o
CC kernel/cgroup.o
CC kernel/cgroup_freezer.o
CC kernel/configs.o
CC kernel/res_counter.o
CC kernel/softlockup.o
CC kernel/rcutree.o
CC kernel/relay.o
CC kernel/utsname_sysctl.o
CC kernel/elfcore.o
CC kernel/slow-work.o
CC kernel/perf_event.o
LD kernel/built-in.o
CC mm/bootmem.o
CC mm/filemap.o
CC mm/mempool.o
CC mm/oom_kill.o
CC mm/fadvise.o
CC mm/maccess.o
CC mm/page_alloc.o
CC mm/page-writeback.o
CC mm/readahead.o
CC mm/swap.o
CC mm/truncate.o
CC mm/vmscan.o
CC mm/shmem.o
CC mm/prio_tree.o
CC mm/util.o
CC mm/mmzone.o
CC mm/vmstat.o
CC mm/backing-dev.o
CC mm/page_isolation.o
CC mm/mm_init.o
CC mm/mmu_context.o
CC mm/fremap.o
CC mm/highmem.o
CC mm/madvise.o
CC mm/memory.o
CC mm/mincore.o
CC mm/mlock.o
CC mm/mmap.o
CC mm/mprotect.o
CC mm/mremap.o
CC mm/msync.o
CC mm/rmap.o
CC mm/vmalloc.o
CC mm/pagewalk.o
CC mm/init-mm.o
CC mm/page_io.o
CC mm/swap_state.o
CC mm/swapfile.o
CC mm/thrash.o
CC mm/dmapool.o
CC mm/ashmem.o
CC mm/slab.o
CC mm/percpu_up.o
LD mm/built-in.o
CC fs/open.o
CC fs/read_write.o
CC fs/file_table.o
CC fs/super.o
CC fs/char_dev.o
CC fs/stat.o
CC fs/exec.o
CC fs/pipe.o
CC fs/namei.o
CC fs/fcntl.o
CC fs/ioctl.o
CC fs/readdir.o
CC fs/select.o
CC fs/fifo.o
CC fs/dcache.o
CC fs/inode.o
CC fs/attr.o
CC fs/bad_inode.o
CC fs/file.o
CC fs/filesystems.o
CC fs/namespace.o
CC fs/seq_file.o
CC fs/xattr.o
CC fs/libfs.o
CC fs/fs-writeback.o
CC fs/pnode.o
CC fs/drop_caches.o
etc
compiled kernel location >
Code:
arch/arm/boot/*zimage
And, if u wanna know how to repack your kernel image (zImage), go check to this thread!
just change a kernel image (boot.img-kernel) with your kernel image (zImage).
wanna clean?
try this command
:
Code:
$ make ARCH=arm
CROSS_COMPILE=~/android/sources/cm-kernel/CodeSourcery/Sourcery_G++/bin/arm-none-eabi-
clean
and you'll get log like these
Code:
CLEAN arch/arm/boot/compressed
CLEAN arch/arm/boot
CLEAN /home/delano/android/sources/cm-kernel
CLEAN arch/arm/kernel
CLEAN drivers/char
CLEAN kernel
CLEAN lib
CLEAN usr
CLEAN .tmp_versions
CLEAN vmlinux System.map .tmp_kallsyms1.o .tmp_kallsyms1.S
.tmp_kallsyms2.o .tmp_kallsyms2.S .tmp_vmlinux1 .tmp_vmlinux2
.tmp_System.map
Thx to
Hyriand for his kernel source code
Andika Edo Prabowo,
Waqas, tj_styles
and
Yanuar Harry for their support
Sent from my GT-S5660 using Tapatalk