با سلام امروز ساخت کرنل را براتون آماده کردم
این آموزش بیشتر بر روی گوشیهای سونی تمرکز میکند ولی میشود برای دستگاهای دیگر نیز استفاده شود
آموزش بر روی سیستم اوبنتو میباشد پس نسخه به روز اوبنتو نصب باشد
برای شروع نیاز به دانلود سورس کرنل می باشد از لینکهای زیر سورس کرنل را دانلود کنید
نصب کتابخانه ها و آماده سازی محیط
برای شروع باید محیط سیستم عامل را آماده کنیم
برای این کار ترمینال را باز کنید
کد زیر را وارد کنید
sudo apt-get install -y build-essential kernel-package libncurses5-dev bzip2
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
mkdir android
سورس کرنلی که دانلود کردید را به پوشه اندروید کپی کنید(توسط کد آخری این پوشه درست می شود)
کد زیر را وارد کنید
cd android
tar -xjvf Source Name
در کد بالا بجای Source Name نام سورسی که دانلود کردید را وارد کنید
آماده سازی ابزارtoolchain
برای گوشیهای سونی می توانید toolchain را دانلود کنید تا تغییرات را راحت در کرنل بدهید
برای دانلود کامل ابزار DoomLord کد زیر را وارد کنید
cd android
cd kernel
git clone git://github.com/DooMLoRD/android_prebuilt_toolchains.git toolchains
یا اگر برای اندروید 4.4.3 میسازید فقط این لینک را دانلود و در روت home استخراجش کنید
اضافه کردن قابلیت به کرنل بصورت اتوماتیک
برای اینکه بصورت اتوماتیک اینکار را بکنید از ابزار toolchain استفاده کنید
برای اجرای toolchain کدهای زیر را وارد کنید
cd android
cd kernel
ARCH=arm CROSS_COMPILE=~/arm-eabi-4.4.3/bin/arm-eabi- make Device Name
make ARCH=arm CROSS_COMPILE=~/arm-eabi-4.4.3/bin/arm-eabi- menuconfig
بجای Device Name نامی که در Source/arch/arm/configs هست بگذارید
در something_DeviceCodename_user_defconfig نوشته شده است
منوی مانند عکس زیر پدیدار می شود،قابلیتهای که می خواهید را اضافه کنید
برای اضافه کردن دستی نیز ار آموزش زیر استفاده کنید
اضافه کردن قابلیت به کرنل بصورت دستی
اضافه کردن Governors
خود CPU یک فایل C می باشد که در سورس کرنل هر توسعه دهنده ای پیدا می شود
اگر از github نتوانستید فایل governor را از کرنل استوک خود استخراج کنید
از مسیر Kernel Source/drivers/cpufreq/cpufreq_performance.c آن را بردارید
فایل Copy cpufreq_performance.c را یکجا کپی و با یرایشگر متن بازش کنید
تمام خطها را پاک کنید و فایلهای governor را از github اضافه کنید
فایل governor C را به مسیر KernelSource/drivers/cpufreq کپی کنید
فایل Kconfig را باز کنید
کدهای زیر را اضافه کنید
config CPU_FREQ_GOV_GOVNAMEHERE tristate "'gov_name_lowercase' cpufreq governor" depends on CPU_FREQ help governor' - a custom governor!
برای BadAss
config CPU_FREQ_DEFAULT_GOV_BADASS bool "badass" select CPU_FREQ_GOV_BADASS help Use the CPUFreq governor 'BADASS' as default
endchoice را پیدا کنید
کدهای زیر را در زیر استفاده کنید
config CPU_FREQ_GOV_BADASS tristate "'badass' cpufreq governor" depends on CPU_FREQ help 'badass' - This driver adds a dynamic cpufreq policy governor. The governor does a periodic polling and changes frequency based on the CPU utilization. The support for this governor depends on CPU capability to do fast frequency switching (i.e, very low latency frequency transitions).
فایل Makefile را باز کنید
کدهای زیر را طبق Governor اضافه کنید
obj-$(CONFIG_CPU_FREQ_GOV_BADASS) += cpufreq_badass.o
فایل Kernel Source/include/linux.* را باز کنید
کد زیر را اضافه کنید
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_badass) extern struct cpufreq_governor cpufreq_gov_badass; #define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_badass)
اضافه کردن زمانبندی I/O
فایل I/O .c را مانند فایل Governor کپی کنید در مسیر Kernel Source/block
فایل Kconfig.iosched را باز کنید
config IOSCHED_SIO tristate "Simple I/O scheduler" default y ---help--- The Simple I/O scheduler is an extremely simple scheduler, based on noop and deadline, that relies on deadlines to ensure fairness. The algorithm does not do any sorting but basic merging, trying to keep a minimum overhead. It is aimed mainly for aleatory access devices (eg: flash devices). And we will add the I/O Scheduler VR Below it like:
کد VR را در زیر اضافه میکنیم
config IOSCHED_VR tristate "V(R) I/O scheduler" default y ---help--- Requests are chosen according to SSTF with a penalty of rev_penalty for switching head direction. Let's assume that we saw SIO (But in different way)
config DEFAULT_SIO
bool "sio" if IOSCHED_SIO=y
در زیر VR نیز اضافه میکنیم
config DEFAULT_VR bool "V(R)" if IOSCHED_VR=y
default "sio" if DEFAULT_SIO
default "vr" if DEFAULT_VR
اکنون Makefile را باز کنید
obj-$(CONFIG_IOSCHED_SIO) += sio-iosched.o
[obj-$(CONFIG_IOSCHED_VR) += vr-iosched.o
برای overclock نیز در کرنلها بخاطر فرکانسها متفاوت هست
در مسیر KernelSource/arch/arm/mach-msm/acpuclock-XxXX.c دو فایل هستند
acpuclock-7×30.c
acpuclock-8×50.c
که فایلی که .c و .o می باشد باید ویرایش کنید برای اورکلاک
کامپایل
در آخر برای کامپایل
cd android
cd kernel
export ARCH=arm
export CROSS_COMPILE=~/android/kernel/arm-eabi-4.4.3/bin/arm-eabi-
برای اضافه کردن کمی ویرایش
make <your_config_name>_defconfig
به جای <your_config_name> نامی که در Source/arch/arm/configs هست را وارد کنید
make menuconfig
make -j<cpucore>
به جای <cpucore> تعداد هسته گوشی را بنویسید
make clean
make oldconfig
make -j<cpucore>
بازم تعداد هسته را بنویسید
تمام میتونید کرنل خود را تست کنید موفق باشید
هر گونه کپی برداری از متن بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد
سلام محسن جان حالت خوبه
میخواستم cm 14 مدل lenovo a5000
برای huawei honor3c h30u10
پورت کنم
مشخصاتشون کاملا یکی هست بجز رم که مدل لنوو یک گیگه مال هواوی دو گیگه
مدل لنوو اندروید 7.1.1 سیانوژن داره ولی هواوی من نداره میتونم این رام رو پورت کنم؟
مبشه کرنل براش درست کرد؟
ممنون میشم راهنمایی کنی
داخل ویندوز میشه کاراشو انجام داد چون مک ندارم
سلام دوست عزیز
به غیر از مشخصاتو برای پورت ورژن نسخه اندروید هم باید یکی باشه…بخوایید کرنل سیانوژن بسازید باید رام رو کلا از منبع بسازید فقط هم روی لینوکس جوابگو هست آموزشهای توسعه رام رو باید دنبال کنید که میشه مشکلترین قسمت توسعه دهندگی هم هستن
سپاس فراوان
فرمودید ساخت کرنل سیانوژن
چون برای گوشیم سیانوژن سیزده اومده
میتونم از کرنل اون برای سیانوژن چهارده استفاده کنم؟ یا باید کرنل تازه بسازم؟
من با برنامه نویسی آشنایی ندارم
امکانش هست بتونم کرنل بسازم؟
سلام
کرنل اندروید 6 که به 7 نمیخوره پس نمیشه کرنل سیانوژن 13 رو روی 14 استفاده کرد
ساخت کرنل رو لینوکس با ساخت رام هستش که گفتم بهتون حداقلش باید مسلط به دستورات یونیکس باشید برای کار تا با مشکلات زیادی که پیش میاد بتونید لاقل رفع کنید بتونید این کار و کامل انجام بدید میشید یه توسعه دهنده حرفه ای رام کلا