[Galaxy S 4 Mini General] proxuser:
Welcome to Kernel build guide.

WITH THIS METHOD YOU WILL GET installable zip for your kernel.

My english is not best but i think you all will understand this guide :cowboy:. I write this guide because i dont own S4 Mini anymore and unfortunally i cant build kernels or roms anymore for s4 mini.

this is my kernel build method. you will have everything (tools) for build a kernel for s4 mini device. if you have questions, then ask it here. this kernel method is working only aosp based kernel (not tested for tw kernel but it may also work but you need ramdisk of tw kernel)

be sure you have packages installed for build something like this, or edit or clone a github source. look at cm kernel build guides.

1. Download build-s4-mini-kernel.zip [here]

extract it to root of your user directory (my is /home/proxuser/)

2. We need toolchain 4.7.4 by Christopher83 original thread [here]

download

arm-unknown-linux-gnueabi-linaro_4.7.4-2013.07-build_2013_07_12.tar.bz2

extract arm-unknown-linux-gnueabi-linaro_4.7.4-2013.07 folder to toolchains folder (home/yourusername/toolchains) and name it linaro_4.7.4

Download Build scripts from my source here

download:

- abooteur_3g.img

- abooteur_lte.img

- build_all.sh

- build_eur_3g.sh

- build_eur_lte.sh

- build_master.sh

- mkbootfs

- mkbootimg

and put them to your kernel folder "root folder of your kernel".

if you want clone a kernel source: example CyanogenMod's cm-10.2 kernel then

open Terminal, and be in user root folder /home/yourusername (just open terminal and your there)

git clone https://github.com/CyanogenMod/android_kernel_samsung_msm8930-common.git -b cm-10.2

if you want clone my Kartal kernel then

git clone https://github.com/proxuser/kartal.git -b master

it will named "if you cloned cyanogenmod kernel android_kernel_samsung_msm8930-common" if you clone my kernel then it will named "kartal"

you can rename kernel folder, its not problem.

if you want change of kernel name(example kartal), then go yourkernel/arch/arm/configs/kartal_defconfig and edit CONFIG_LOCALVERSION="-Kartal" change only "Kartal" for your kernel's name. if you want change defconfig example "kartal_defconfig" to "yourkernel_defconfig" then you need change it in build_master.sh too that it builds with your config file.

if you downloaded your kernel source and your build tools are there then lets start

Open terminal

type

cd yourkernelfolder

for build both phones i9195 & i9190

./build_all.sh

if it denies access for build_all.sh then type

chmod 777 build_all.sh

you can give all files access with this command.

for build i9195

./build_eur_lte.sh

for build i9190

./build_eur_3g.sh

finally it will start building. it will done within 4-5 min. depend your pc speed.

after it builds succesfully, your kernel will be in your /home/yourusername/Packages/ folder

IF YOU WANT add new changes from CM or other kernel to your kernel

then open Terminal

cd yourkernelfolder

git remote add CyanogenMod https://github.com/CyanogenMod/android_kernel_samsung_msm8930-common.git

git fetch CyanogenMod

this will fetch CyanogenMod kernel changes but it will not apply to your kernel. you will add changes step by step yourself. copy commits SHA from CyanogenMod kernel and

open Terminal

git cherry-pick 2108e6c3109ae126590a81876145a1f17d6771b5

if you get success on pick a commit then you will get a message like this

proxuser@proxuser-PCDO5U7:~/kernel$ git cherry-pick a41564437a0eb910d0347d274456f3f0116c3c77
[master 5dd0694] net-fixes: flow_dissector: prevent an infinite loop (CVE-2013-4348)
Author: Eric Dumazet <edumazet@google.com>
1 file changed, 3 insertions(+), 1 deletion(-)

if you get an error like this

proxuser@proxuser-PCDO5U7:~/kernel$ git cherry-pick 63ee35463ea3ec5d4e8f2c60ad0f70abd8463733
error: could not apply 63ee354... ARM: 7809/1: perf: fix event validation for software group leaders
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

thats mean it is not applied to your files. just type "git status" to see what files are not modified.

then type: git reset --hard for go to your last commit.

this will make changes of error commit back.

Work always with git because with this way you can save a lot your changes and you can restore anything anytime.

Credits:

XDA Community

Christopher83 for toolchain

ktoonsez for build scripts

arco68 for s4 mini kernel development

cyanogenmod