mohsen8 815 ارسال شده در 22 اردیبهشت، 2017 اشتراک گذاری ارسال شده در 22 اردیبهشت، 2017 با سلام امروز ساخت کرنل را براتون آماده کردم این آموزش بیشتر بر روی گوشیهای سونی تمرکز میکند ولی میشود برای دستگاهای دیگر نیز استفاده شود آموزش بر روی سیستم اوبنتو میباشد پس نسخه به روز اوبنتو نصب باشد برای شروع نیاز به دانلود سورس کرنل می باشد از لینکهای زیر سورس کرنل را دانلود کنید اگر گوشیتون مدل دیگه ای هست با یک جستجوی ساده می تونید سورس رو پیدا کنید با دقت به فریمور گوشی خود در تنظیمات کرنل متناسب را دانلود کنید نصب کتابخانه ها و آماده سازی محیط برای شروع باید محیط سیستم عامل را آماده کنیم برای این کار ترمینال را باز کنید کد زیر را وارد کنید >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> بازم تعداد هسته را بنویسید تمام میتونید کرنل خود را تست کنید موفق باشید لینک آموزش در پرتال برای دانلود فایلها لینک ارسال
setareh724 0 ارسال شده در 29 تیر، 2018 اشتراک گذاری ارسال شده در 29 تیر، 2018 مرسی ممنونم عالی بود سپاس هتل مشهد لینک ارسال
ارسال های توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.