วิธีการสร้าง MediaTek Android Kernal จากที่มา

ผู้ใช้ Android จำนวนมากสนุกกับการติดตั้งเคอร์เซอร์ที่ปรับแต่งเองซึ่งสามารถนำเสนอประสิทธิภาพการทำงานต่างๆและการปรับแต่งแบตเตอรี่ให้ยาวนานขึ้น แต่ถ้าคุณไม่สามารถหาเคอร์เนลที่ต้องการได้หรือไม่มีอุปกรณ์ใดที่พร้อมใช้งานสำหรับอุปกรณ์ของคุณบางครั้งคุณอาจต้องสร้างเค้กของคุณเอง คู่มือนี้จะเน้นวิธีการสร้างเคอร์เนลจากแหล่งที่มาสำหรับอุปกรณ์ Mediatek

โปรดรับคำแนะนำว่าคู่มือนี้ไม่ใช่สำหรับมือใหม่ แต่ก็มีไว้สำหรับผู้ที่มีความเข้าใจเกี่ยวกับการปรับแต่งรอม Android การทำงานในเทอร์มินัลลินุกซ์และความรู้เกี่ยวกับสิ่งที่เรากำลังทำอยู่

ที่ต้องการ:

  1. ระบบปฏิบัติการ Linux
  2. ความรู้เบื้องต้นเกี่ยวกับ C และวิธีการทำงานกับ Makefiles
  3. Android NDK

ในการเริ่มต้นคุณจะต้องดาวน์โหลดแพ็คเกจต่อไปนี้สำหรับ Linux:

  • หลาม
  • GNU Make
  • JDK
  • Git

sudo apt-get ติดตั้ง git gnupg flex bison gperf build-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 สร้างจำเป็น zip curl zlib1g-dev zlib1g-dev: i386 libc6-dev lib32ncurses5 lib32z1 lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev: i386 libreadline6-dev: i386 lib32z-dev libgl1-mesa-glx: i386 libgl1-mesa-dev g ++ - มัลติเลิฟ mingw32 tofrodos python-markdown libxml2-utils xsltproc readline-common libreadline6-dev libreadline6 lib32readline -gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev: i386 libreadline6: i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev libsdl1.2-dev libesd0-dev เครื่องมือสคริปส์ pngcrush schedtool libwxgtk2. 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

ไปที่ etc / udev / rules.d / 51-android.rules:

# adb protocol on passion (Nexus One)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e12", MODE = 0600 "OWNER =
โปรโตคอล # fastboot เกี่ยวกับความหลงใหล (Nexus One)
SUBSYSTEM == usb, ATTR {idVendor} == 0bb4 ", ATTR {idProduct} == 0fff, MODE = 0600" OWNER =
# adb protocol บน crespo / crespo4g (Nexus S)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e22", MODE = 0600 "OWNER =
โปรโตคอล # fastboot บน crespo / crespo4g (Nexus S)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e20", MODE = 0600 "OWNER =
โปรโตคอล # adb เกี่ยวกับปลากระเบน / wingray (Xoom)
SUBSYSTEM == usb, ATTR {idVendor} == 22b8 ", ATTR {idProduct} == 70a9", MODE = 0600 "OWNER =
โปรโตคอล # fastboot บนเรือกระเบน / wingray (Xoom)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 708c, MODE = 0600" OWNER =
# adb protocol on maguro / toro (Galaxy Nexus)
SUBSYSTEM == usb, ATTR {idVendor} == 04e8 ", ATTR {idProduct} == 6860", MODE = 0600 "OWNER =
โปรโตคอล # fastboot บน maguro / toro (Galaxy Nexus)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e30", MODE = 0600 "OWNER =
# adb protocol บนแพนด้า (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {idProduct} == d101", MODE = 0600 "OWNER =
# adb protocol บนแพนด้า (PandaBoard ES)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == d002", MODE = 0600 "OWNER =
โปรโตคอล # fastboot บนแพนด้า (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {idProduct} == d022", MODE = 0600 "OWNER =
# usbboot protocol บนแพนด้า (PandaBoard)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {idProduct} == d00f, MODE = 0600" OWNER =
# usbboot protocol บนแพนด้า (PandaBoard ES)
SUBSYSTEM == usb, ATTR {idVendor} == 0451 ", ATTR {idProduct} == d010", MODE = 0600 "OWNER =
# adb โปรโตคอลเกี่ยวกับปลากะรัง / ปลานิล (Nexus 7)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e42", MODE = 0600 "OWNER =
โปรโตคอล # fastboot เกี่ยวกับปลากะรัง / ปลานิล (Nexus 7)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4e40", MODE = 0600 "OWNER =
# adb protocol on manta (Nexus 10)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4ee2", MODE = 0600 "OWNER =
โปรโตคอล # fastboot บน manta (Nexus 10)
SUBSYSTEM == usb, ATTR {idVendor} == 18d1 ", ATTR {idProduct} == 4ee0", MODE = 0600 "OWNER =

PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่

และใน bash.rc:

ส่งออก USE_CCACHE = 1
ตอนนี้สุดท้าย:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
ตอนนี้เราพร้อมที่จะสร้างสภาพแวดล้อมการสร้างแล้ว ในเทอร์มินัลให้พิมพ์:

ส่งออก TARGET_BUILD_VARIANT = ผู้ใช้ TARGET_PRODUCT = devicename MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
นี่คือสิ่งที่คำสั่งเหล่านี้จะทำ:

BUILD_VARIANT: ระบุว่าเคอร์เนลจะถูกสร้างขึ้นมาสำหรับ
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: บอก Linux ว่าควรใช้ไฟล์เฉพาะอุปกรณ์ใด
MTK_ROOT_CUSTOM: ระบุไดเร็กทอรีของโฟลเดอร์ mediatek / custom จำ mide นี้จะอยู่ในไดเรกทอรีเดียวกันเป็นแหล่งเคอร์เนลเช่นกัน
PATH: ตั้งค่า executables toolchain ของคุณไปยังเส้นทางของคุณ
CROSS_COMPILE: คอมไพเลอร์ข้ามคือคอมไพเลอร์ที่สามารถสร้างโค้ดที่ปฏิบัติการได้สำหรับแพลตฟอร์มอื่นที่ไม่ใช่คอมไพเลอร์ที่รันอยู่ toolchain อำนวยความสะดวกในการทำงานนี้
แขน ARCH = ARM เป็นตระกูลของสถาปัตยกรรมชุดคำสั่งสำหรับโปรเซสเซอร์คอมพิวเตอร์โดยอิงจากสถาปัตยกรรมคอมพิวเตอร์ RISC (RISC) ซึ่งพัฒนาขึ้นโดย บริษัท ARM Holdings ของอังกฤษ ARM ใช้ในแอนดรอยด์

ดังนั้นเมื่อเราพิมพ์ 'ARCH ARCH = arm' ลงในเทอร์มินัลเราจะบอก Linux ว่าเรากำลังสร้างสถาปัตยกรรม ARM

ตอนนี้เราพร้อมที่จะเริ่มต้นการกำหนดค่าเคอร์เนลแล้ว คุณจำเป็นต้องระมัดระวังเป็นพิเศษเนื่องจากเคอร์เนลเป็นตัวควบคุมสำหรับโทรศัพท์ของคุณ ดังนั้นเพียงแค่ปฏิบัติตามอย่างระมัดระวัง


คุณอาจจะหาคอนฟิกูเรชันพื้นฐานใน kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform
เราสามารถใช้ config ฐานนี้และสร้างด้วยความต้องการที่แตกต่างกันตัวอย่างเช่นสิทธิ์ SELinux เปิดหรือปิดใช้งาน คุณสามารถสร้างฐาน config ได้ตั้งแต่เริ่มต้น แต่จริงๆแล้วผมไม่แนะนำให้ใช้

ตอนนี้เรามาพิมพ์ลงในลินุกซ์เทอร์มินัล:

cd kernel_source
cp mediatek / config / devicename / autoconfig / kconfig / platform .config
ทำให้ menuconfig

นี้จะสร้างส่วนติดต่อแบบกราฟิกที่จะช่วยให้คุณสามารถเพิ่มคุณสมบัติในเคอร์เนล ตัวอย่างเช่นคุณสามารถปรับแต่ง I / O Schedule, CPU Governors, GPU Frequency เป็นต้น
เมื่อคุณปรับแต่งการตั้งค่าที่ต้องการแล้วคุณก็พร้อมที่จะคอมไพล์เคอร์เนล เพื่อพิมพ์ลงใน terminal Linux:
ทำ zImage

และควรกลับสิ่งที่ชอบ:

arch / arm / boot / zImage Ready

PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่

Facebook Twitter Google Plus Pinterest