Chào mừng bạn đến Diễn Đàn ChơiMobile

Cộng đồng Mobile hàng đầu Việt Nam, Phát triển Android, iOS, Kỹ Thuật Mobile. Đăng ký ngay để tạo chủ để và cùng thảo luận !

[Thảo luận] Build Kernel cho máy Android

Thảo luận trong 'Thảo Luận - Phát Triển Rom/ Lập trình Mobile' bắt đầu bởi dokyson, 5/10/13.

  1. dokyson

    dokyson Administrator
    Thành viên BQT Administrator

    9/12/12
    18,143
    37,714
    113
    Nam
    Em mở topic này với mong muốn học hỏi, chia sẻ kinh nghiệm về build Kernel cho các máy Android, rất mong sự ủng hộ giúp đỡ và chia sẻ củ các bác.

    Đây là 1 bài hướng dẫn build kernel cho LG LTE2 của bác zcop bên lgviet em xin copy lại làm tham chiếu để anh em dựa vào đó để build ạ:

    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!:mad:

    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 :cool:
    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

    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/

    Trong tương lai sẽ không cần phải sửa dòng này nữa... mình sẽ patch lại source để kernel không check local version của các module

    Hiện nay mình chưa patch kernel source nên kernel này sẽ không load các module của LG vì local version của module và kernel không giống nhau. Trong vài ngày tới sẽ làm nốt. Hiện tại không load module wifi nên wifi không bật được


    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
    1_zps20db9763.png
     
    10 people like this.
  2. dokyson

    dokyson Administrator
    Thành viên BQT Administrator

    9/12/12
    18,143
    37,714
    113
    Nam
    4 people like this.
  3. Leo Ngo

    Leo Ngo Wanderer
    Senior Member

    1/2/13
    951
    1,217
    0
    Nam
    Audio engineer
    Australia ( past ) - Vietnam Saigon ( Present )
  4. Leo Ngo

    Leo Ngo Wanderer
    Senior Member

    1/2/13
    951
    1,217
    0
    Nam
    Audio engineer
    Australia ( past ) - Vietnam Saigon ( Present )
    Bac dang bi kẹt ở đâu và đã làm những gì :D

    Sent from LG G2 F320K
     
    2 people like this.
  5. dokyson

    dokyson Administrator
    Thành viên BQT Administrator

    9/12/12
    18,143
    37,714
    113
    Nam
    EM làm đến phần:
    ./loki_patch boot aboot boot.img boot-new.img

    thì bị mắc bởi thông báo "unsupport aboot" bác ạ
    Hay đây chính là do aboot bị khoá bootloader bác nhỉ
     
  6. dokyson

    dokyson Administrator
    Thành viên BQT Administrator

    9/12/12
    18,143
    37,714
    113
    Nam
    Cụ nào có kinh nghiệm vụ này help em với nhé
     
  7. binary

    Official Member

    18/7/13
    30
    99
    18
    Nam
    Loki chưa support cho LTE3, bác nào rãnh thì dịch ngược hoạc bác gửi aboot cho tác giả xem thử?
     
    4 people like this.
  8. dokyson

    dokyson Administrator
    Thành viên BQT Administrator

    9/12/12
    18,143
    37,714
    113
    Nam
    Vậy ạ. Để em ham hố nhờ vả tác giả xem sao, thank bác nhiều
     
  9. hanzoo1504

    Senior Member

    14/12/12
    4,523
    16,658
    0
    Nam
    Đang tìm việc
    VIETNAMESE
    Cách này có tạo được file root boot.img cho sky không nhỉ :)

    Gửi Từ IM-A890K Trên App ChoiMobile.
     
    2 people like this.
  10. happyboy28

    Official Member

    16/9/13
    37
    32
    0
    Nam
    bác nào có thể làm một bài hướng dẫn buit kernel để làm rom và nâng cấp rom được không ạ.ví dụ kernel nguồn là bản 3.0.8 của rom 4.1.giờ em muốn làm kernel 3.4.0 cho rom 4.3 thì em phải làm gì và làm như thế nào ạ.các bác giúp với được không ạ
     
  11. Thế vương

    Newbie

    23/1/14
    1
    0
    0
    Nam
    Mình không make được file config nên không buil được bác chỉ mình với
     
  12. f120ltn

    Senior Member

    5/1/13
    1,976
    1,838
    0
    Nam
    F120L không unbooot dc. nên bó tay vụ này
     
  13. dungphp

    dungphp Team SS
    Senior Member

    6/6/13
    1,003
    946
    0
    Nam
    Có ai có hứng thú về build kernel với Compile from source không nhỉ ?! Ai đã từng build kernel ? ai đã từng compile rom ?
    Anh em điểm danh phát nhỉ ! Để cùng thảo luận, chia sẻ kinh nghiệm !
     
  14. vuanhvan

    Official Member

    30/9/13
    56
    57
    0
    Nam
    @dokyson@dokyson cho mình hỏi làm sao trích xuất được Kernel từ bản rom của Mokee vậy?
     
  15. hanzoo1504

    Senior Member

    14/12/12
    4,523
    16,658
    0
    Nam
    Đang tìm việc
    VIETNAMESE
    Cuối cùng thì bài biết dừng lại tại đây.
     

Chia sẻ trang này