Mục đích của topic là mỗi người sẽ tự sướng với kernel made by "tự tui"
Sẽ bổ sung các thành phần khác sau( undervolt, overclock..v..v.)
Tôi không chịu trách nhiệm về bất cứ chuyện gì xảy ra với chiếc phone của bạn khi làm theo tut này
DO IT AT YOUR OWN RISK!
Yêu cầu:
* Laptop, Desktop...
* OS: Ubuntu, Debian.. Khuyên dùng Ubuntu 12.04
* Kĩ năng copy paste
* 1 chút tiếng anh
Bước 1: Cài ubuntu - Google thần chưởng
Bước 2: Download kernel source của L,S,K đều nằm ở đây hết - Nhớ chọn kernel của android 4.1
Link: https://www.lg.com/global/support/o...tegoryId=CAT00000001&osCategoryId=CAT00000002
File có dạng LGF160*(Optimus LTE 2)_Android_JB_F160*20*.zip
Bước 3: Download Toolchain gcc 4.6
Link: https://docs.google.com/file/d/0BzQ7rwgF_0h0bnRhazB3ZkZRckU/edit?usp=sharing
Bước 4: Download dsixda kitchen
Link: https://docs.google.com/file/d/0BzQ7rwgF_0h0ZHlMRkZMV3NLQ2M/edit?usp=sharing
Bước 5: download Android SDK
Link: http://developer.android.com/sdk/index.html
Bước 6: Giải nén adt-bundle-linux-x86_64-********.zip ra /home/your_username/
Ấn chuột phải vào thư mục vừa giải nén chọn rename, đổi sang tên ngắn gọn là android
Bước 7: Giải nén LGF160*(Optimus LTE 2)_Android_JB_F160*20*.zip được 2 file nén nữa có dạng
LGF160*_JB_android.tar.gz
LGF160*_JB_kernel.tar.gz
Tiếp tục giải nén LGF160*_JB_kernel.tar.gz được 1 thư mục tên là "kernel"
Di chuyển thư mục này đến /home/your_username/android/
Bước 8: Giải nén Toolchain ra /home/your_username/android/
Bước 9: Giải nén Android-Kitchen-0.224.tar.gz ra /home/your_username/android/
Sửa lại tên thư mục là kitchen
Bước 8: Ctrl+Alt+T, cửa sổ Terminal sẽ mở ra copy lệnh sau paste rồi enter
sudo gedit .bashrc
Một cửa sổ khác mở ra, thêm các dòng sau vào cuối file
export PATH=~/bin:$PATH
export PATH=$PATH:~/android/arm-eabi-4.6/bin
export PATH=$PATH:~/android/sdk/platform-tools
export CROSS_COMPILE=arm-eabi-
Save và close gedit, không đóng cửa sổ Terminal đâu nhé. Copy paste lệnh dưới
source ~/.bashrc
sudo apt-get install ia32-libs
Bước 10 : Cắm điện thoại vào máy tính để chế độ Change only
adb devices
Nếu ra kết quả
List of devices attached
LG-F160S-10a6d25device
Goood 
Nếu hiện ra toàn dấu ???????? thì
adb kill-server
sudo ~/android/sdk/platform-tools/adb devices
Bước 11: Lấy config file từ máy đang chạy
adb pull /proc/config.gz
Giải nén được file text tên là config, đổi tên sang f160_defconfig
Mã:
Outdate/không còn đc dùng nữa( thay = bước khác)
Lấy local version
adb shell cat /proc/version
Kết quả
Linux version 3.4.0-perf-g0688679 (seungman.shin@LGEARND2B3) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #1 SMP PREEMPT Wed Jun 5 10:41:58 KST 2013
Mỗi máy khác nhau có thể sẽ có phần màu đỏ khác nhau
mở file f160_defconfig
tìm dòng
CONFIG_LOCALVERSION="-perf"
sửa lại
CONFIG_LOCALVERSION="-perf-g0688679"
Tìm và thay tất cả =m sang thành =y để build module vào trong kernel luôn( chức năng replace thì nhanh hơn)
Save và exit
Copy f160_defconfig vào android/kernel/arch/arm/configs/
Hiện nay đã fix kernel source để bỏ qua bước check vermagic, kernel sẽ load tất cả các thể loại module không trùng version
mở file android/kernel/kernel/module.c
Tìm và thay 0 sang 1 như bên dưới
Mã:
static inline int check_version(Elf_Shdr *sechdrs,
unsigned int versindex,
const char *symname,
struct module *mod,
const unsigned long *crc,
const struct module *crc_owner)
{
return 1;
}
static inline int check_modstruct_version(Elf_Shdr *sechdrs,
unsigned int versindex,
struct module *mod)
{
return 1;
}
Tìm và sửa lại như bên dưới
Mã:
static int check_modinfo(struct module *mod, struct load_info *info)
{
const char *modmagic = get_modinfo(info, "vermagic");
int err;
/* This is allowed: modprobe --force will invalidate it. */
if (!modmagic) {
err = try_to_force_load(mod, "bad vermagic");
if (err)
return err;
} else if (!same_magic(modmagic, vermagic, info->index.vers)) {
printk(KERN_WARNING "Bad module detected, ignore the check."
"I'm not responsible for any dubious code from this module.
");
}
if (!get_modinfo(info, "intree"))
add_taint_module(mod, TAINT_OOT_MODULE);
if (get_modinfo(info, "staging")) {
add_taint_module(mod, TAINT_CRAP);
printk(KERN_WARNING "%s: module is from the staging directory,"
" the quality is unknown, you have been warned.
",
mod->name);
}
/* Set up license info based on the info section */
set_license(mod, get_modinfo(info, "license"));
return 0;
}
Bước 12:
cd ~/android/kernel
make f160_defconfig
make -jn
Với n= số cpu thread. VD Core i3 n=2, i5 n=4, i7 n=8
Càng nhiều thì càng nhanh
Sau khi báo chạy lâu lâu tầm 1 cốc cafe tùy vào CPU, khi hoàn thành thì dòng cuối trong Terminal sẽ như vậy
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
Kernel nằm ở android/kernel/arch/arm/boot/
Tên là zImage
Vậy là bạn đã có kernel
Việc tiếp theo là phải xử lí anh boot image
Bước 13: Download fake-rom.zip về để xài với kitchen
Link: https://docs.google.com/file/d/0BzQ7rwgF_0h0ZGJqekZsdll2dUU/edit?usp=sharing
Copy fake-rom.zip vào android/kitchen/original_update
Trên Terminal copy paste
cd ~/android/kitchen
./menu
Chọn option: 1 - Set up working folder from ROM, enter. Enter tiếp lần nữa. ra như sau
Available ROMs:
(1) fake-rom.zip
Enter selection number (default=1, cancel=0, r=refresh):
Chọn 1, enter, sau đó nó hỏi đổi tên thư mục không, chọn y/n gì cũng đc
Nó hổi tiếp có chuyển updater-script sang update-script không chọn 2
Enter, Enter...
Quay lại Menu chọn 0 - ADVANCED OPTIONS
12 - Tools for boot image (unpack/re-pack/etc.)
Chọn w = Extract kernel+ramdisk from boot.img
Đến đây ta copy zImage của chúng ta trong thư mục android đã copy lúc nãy ghi đè vào android/kitchen/BOOT-EXTRACTED/ bằng cách:
Mở 1 cửa sổ Terminal mới
cp ~/android/kernel/arch/arm/boot/zImage ~/android/kitchen/BOOT-EXTRACTED/zImage
Đóng cửa sổ Terminal này lại
Quay về cửa sổ Terminal đang chạy DSIXDA KITCHEN chọn
b = Build boot.img from BOOT-EXTRACTED folder (for working folder)
Nó chạy xong xuôi thì exit thôi. Ta đã đc boot image mới tên là boot.img nằ trong thư mục
android/kitchen/WORKING_******_******/boot.img
ĐóngTerminal đi cũng đc
Bước 14: Download loki tool về giúp boot image vượt qua đc bootloader checksum
Link: https://docs.google.com/file/d/0BzQ7rwgF_0h0SS1ISVBSeUlPMkE/edit?usp=sharing
Giải nén ra /home/your_username/android/
Ctrl+Alt+T mở Terminal mới để build loki từ mã nguồn
cd ~/android/loki
gcc loki_patch.c -o loki_patch
Vào đây tải bản stock boot của máy
http://lgviet.com/forum/threads/kernel-stock-cho-f160k.2432/
Giải nén lấy file aboot copy vào android/loki
Copy boot image sang thư mục loki = lệnh
cp ~/android/kitchen/WORKING*/boot.img ~/android/loki/boot.img
Chạy lệnh sau để patch boot.img
cd ~/android/loki
./loki_patch boot aboot boot.img boot-new.img
boot.img mới sau khi patch là boot-new.img
Vào đây tải file zip kernel của TQ
http://lgviet.com/forum/threads/kernel-new-cho-4-1-2.2254/
Thay boot-new.img trong file zip = boot-new.img của chúng ta( kéo boot-new.img thả vào file zip là đc)
Copy qua phone và flash = recovery
Các điều cần chú ý:
Phải có recovery vĩnh viễn
Phải có bản phục hồi stock boot
Bonus cho cái hình
Chủ đề cùng chuyên mục xem nhiều nhất:
Chủ đề cùng chuyên mục mới nhất:
Trong thế giới của những người biết tận hưởng, khoái cảm không chỉ là một xúc cảm – mà là một nghệ thuật. Một bản giao hưởng tinh tế, nơi từng nhịp rung đều được tính nết như nhịp tim của sự mê say....
Nàng tưởng chỉ là trò công nghệ