Cách tạo MediaTek Android Kernal từ nguồn



Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề

Nhiều người dùng Android thích cài đặt các nhân tùy chỉnh, có thể cung cấp một loạt các tinh chỉnh nâng cao hiệu suất và thời lượng pin. Nhưng nếu bạn không thể tìm thấy nhân mình thích hoặc không có nhân nào có sẵn cho thiết bị của bạn, đôi khi bạn chỉ cần xây dựng nhân của riêng mình. Hướng dẫn này sẽ tập trung vào cách tạo hạt nhân từ nguồn cho các thiết bị Mediatek.



Xin lưu ý rằng hướng dẫn này không dành cho người mới, nó dành cho những người có hiểu biết về cách tùy chỉnh ROM Android, làm việc trong các thiết bị đầu cuối Linux và chỉ có một chút kiến ​​thức tổng thể về những gì chúng tôi đang làm.



Yêu cầu:

  1. Hệ điều hành Linux
  2. Một số kiến ​​thức C cơ bản và cách làm việc với Makefiles
  3. NDK của Android

Để bắt đầu, bạn cần tải xuống các gói sau cho Linux:



  • Python
  • GNU Make
  • JDK
  • Đi

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev: i386 x11proto-core-dev libx11-dev: i386 libreadline6-dev: i386 libgl1-mesa-glx: i386 libgl1-mesa-dev g ++ - multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev: i386 git-core lzop ccache gnupg flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev: i386 libc6-dev lib32nczurs1.05 dev lib32nc2-1.05 dev lib32nczurses. x11proto-core-dev libx11-dev: i386 libreadline6-dev: i386 lib32z-dev libgl1-mesa-glx: i386 libgl1-mesa-dev g ++ - multilib mingw32 tofrodos python-markdown libxml2-utils xsltprocreadline readline6 lib lib32 -gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev: i386 libreadline6: i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bzol2-dev libsdbstocl1.2c-dev libsdtktk0.2c-dev-dev libscrush-devcrush-devlink-dev-dev libsdl1.2c. 8-dev python gcc g ++ cpp gcc-4.8 g ++ - 4.8 && sudo ln -s / usr / lib / i386-linux-gnu / mesa / li bGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Bây giờ hãy truy cập etc / udev / rules.d / 51-android.rules:

# giao thức adb về niềm đam mê (Nexus One)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e12 ″, MODE = ”0600 ″, OWNER =” ”
# giao thức fastboot cho niềm đam mê (Nexus One)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0bb4 ″, ATTR {idProduct} ==” 0fff ”, MODE =” 0600 ″, OWNER = ””
# giao thức adb trên crespo / crespo4g (Nexus S)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e22 ″, MODE = ”0600 ″, OWNER =” ”
# giao thức fastboot trên crespo / crespo4g (Nexus S)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e20 ″, MODE = ”0600 ″, OWNER =” ”
# giao thức adb trên cá đuối gai độc / cá đuối (Xoom)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”22b8 ″, ATTR {idProduct} ==” 70a9 ″, MODE = ”0600 ″, OWNER =” ”
# giao thức fastboot trên cá đuối / cá đuối (Xoom)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 708c ”, MODE =” 0600 ″, OWNER = ””
# giao thức adb trên maguro / toro (Galaxy Nexus)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”04e8 ″, ATTR {idProduct} ==” 6860 ″, MODE = ”0600 ″, OWNER =” ”
# giao thức fastboot trên maguro / toro (Galaxy Nexus)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e30 ″, MODE = ”0600 ″, OWNER =” ”
# giao thức adb trên gấu trúc (PandaBoard)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d101 ″, MODE = ”0600 ″, OWNER =” ”
# giao thức adb trên gấu trúc (PandaBoard ES)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” d002 ″, MODE = ”0600 ″, OWNER =” ”
# giao thức fastboot trên gấu trúc (PandaBoard)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d022 ″, MODE = ”0600 ″, OWNER =” ”
# giao thức usbboot trên gấu trúc (PandaBoard)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d00f ”, MODE =” 0600 ″, OWNER = ””
# giao thức usbboot trên gấu trúc (PandaBoard ES)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d010 ″, MODE = ”0600 ″, OWNER =” ”
# giao thức adb trên cá mú / cá rô phi (Nexus 7)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e42 ″, MODE = ”0600 ″, OWNER =” ”
# giao thức fastboot trên cá mú / cá rô phi (Nexus 7)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e40 ″, MODE = ”0600 ″, OWNER =” ”
# giao thức adb trên manta (Nexus 10)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee2 ″, MODE = ”0600 ″, OWNER =” ”
# giao thức fastboot trên manta (Nexus 10)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee0 ″, MODE = ”0600 ″, OWNER =” ”



Và trong bash.rc:

xuất USE_CCACHE = 1
Bây giờ cuối cùng:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Vì vậy, bây giờ chúng tôi đã sẵn sàng để thiết lập môi trường xây dựng. Trong thiết bị đầu cuối, nhập:

xuất TARGET_BUILD_VARIANT = người dùng TARGET_PRODUCT = tên thiết bị MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
Đây là những gì các lệnh này sẽ thực hiện:

BUILD_VARIANT: chỉ định hạt nhân sẽ được xây dựng để làm gì.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: cho Linux biết các tệp cụ thể của thiết bị sẽ sử dụng.
MTK_ROOT_CUSTOM: chỉ định thư mục của thư mục mediatek / custom. hãy nhớ rằng bạn gái này cũng nằm trong cùng một thư mục với nguồn hạt nhân.
PATH: đặt các tệp thực thi chuỗi công cụ của bạn thành đường dẫn của bạn.
CROSS_COMPILE: Trình biên dịch chéo là trình biên dịch có khả năng tạo mã thực thi cho một nền tảng khác với nền tảng mà trình biên dịch đang chạy. Chuỗi công cụ hỗ trợ chức năng này
ARCH = arm, ARM là một họ kiến ​​trúc tập lệnh dành cho bộ xử lý máy tính dựa trên kiến ​​trúc điện toán tập lệnh rút gọn (RISC) do công ty ARM Holdings của Anh phát triển. ARM cũng được sử dụng trong Android.

Vì vậy, khi chúng ta nhập ‘export ARCH = arm’ vào thiết bị đầu cuối, về cơ bản, chúng ta đang nói với Linux rằng chúng ta đang xây dựng kiến ​​trúc ARM.

Vì vậy, bây giờ chúng ta đã sẵn sàng để bắt đầu định cấu hình hạt nhân. Bạn cần phải cực kỳ cẩn thận, vì kernel về cơ bản là bộ điều khiển cho điện thoại của bạn. Vì vậy, chỉ cần làm theo cùng một cách cẩn thận.


Rất có thể bạn sẽ tìm thấy cấu hình cơ sở trong kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform.
Chúng tôi có thể sử dụng cấu hình cơ sở này và xây dựng nó với các yêu cầu khác nhau, ví dụ như quyền SELinux được bật hoặc tắt. Bạn luôn có thể tạo cấu hình cơ sở từ đầu, nhưng tôi thực sự không khuyên bạn nên làm như vậy.

Vì vậy, bây giờ chúng ta hãy nhập vào thiết bị đầu cuối Linux:

cd kernel_source
cp mediatek / config / devicename / autoconfig / kconfig / platform .config
làm menuconfig

Điều này sẽ tạo ra một giao diện đồ họa cho phép bạn thêm các tính năng vào hạt nhân. Ví dụ: bạn có thể điều chỉnh Lịch biểu I / O, Trình điều chỉnh CPU, Tần số GPU, v.v.
Khi bạn đã chỉnh sửa cài đặt mong muốn của mình, bạn đã sẵn sàng để biên dịch hạt nhân. Vì vậy, hãy nhập vào thiết bị đầu cuối Linux:
làm cho zImage

Và nó sẽ trả về một cái gì đó như:

Arch / arm / boot / zImage Ready

3 phút đọc