سیستم عامل لینوکس مبتنی بر ARM

  • نویسنده موضوع Alma
  • تاریخ شروع

Alma

مدیر
پرسنل مدیریت
یکی از سیستم عامل های کاربردی و محبوب لینوکس هست که در زیمنه های مختلف استفاده میشه
اینجا قراره توضیحات مختصری از روش پورت نسخه ای از این سیستم عامل رو روی انواع ارم توضیح بدیم
در بیشتر موارد برای سخت افزار های مختلف ایمیج های اماده ای اراعه میشه ولی اطلاعاتی مبنی بروش ایجاد این ایمیج به صورت جامع و کاربردی به زمان فارسی وجود ندارد


upload_2020-1-16_20-16-24.png

این سیتم عامل نسخه های مختلفی داره که نسبت به پروسسور ها و سخت افزار های مختلف بهینه و اماده میشه میتونه مبتنی بر لایه گرافیکی باشه یا بر پایه کامند لاین باشه میتونه روی حافظه های چند مگی باشه یا نه روی هارد های چند گیگا بایتی با پردازنده های خیلی قویتر باشه

اول از همه ایمیج چیه ؟؟؟
فایلی کامپایل شده و به صورت باینری هست که میتوان از اون برای بالا اوردن سیستم عامل لینوکس با استفاده از انواع حافظه های متداول مثل هارد و مموری یا ایسی های فلش و یا حتی رم بهره برد
این فایل رو با استفاده از ابزار مناسب میشه روی مموری یا ایسی فلش رایت کرد که با این کار میکروی ما میتونه از اون حافظه بوت شده و سیستم عامل بالا بیاد
این فایل معمولا از چند قسمت مختلف تشکیل میشه که معمولا اولین قسمت اون بوت هست بعد کرنل و نهایتا دایرکتوری روت البته میتونه بین اینها قسمت های دیگه هم باشه که به مرور به اونها پرداخته خواهد شد ولی هر سیستم عامل لینوکسی حتما به این سه تا مورد نیاز داره

بوت :
بوت اولین قسمت نرم افزاری ما هست که میتونه سخت افزار رو شناسایی کرده و تنظیمات لازم رو اعمال کنه و در صورت نیاز تست کنه و ارتباط بین کرنل و سخت افزار رو برقرار کنه

کرنل :
خود سیستم عامل هست

دایرکتوری روت :
پوشه ها و فایل های نصب شده در سیستم عامل هست برای مثال همه برنامه های نصب شده پیش فرض گوشی یا لینوکس شما که بعد از نصب در اون هست از جمله این قسمت هست


upload_2020-1-16_20-22-10.png

در پست های بعدی روش دانلود کردن و بخش تنظیمات و روش کامپایل کردن تک تک موارد فوق اموزش داده خواهد شد و نهایتا بعد از کامپایل از اونها استفاده میکنیم تا در سخت افزاری که داریم لینوکس رو اجرا کنیم
 

Alma

مدیر
پرسنل مدیریت
برای شروع کار همونطوری که توضیح داده شد میریم سراغ بوت لودر
اینجا قراره uboot استفاده کنیم

من توی سیتم عامل لینوکس اوبونتو کار میکنم پس اموزش هایی که میدم طبق اون خواهد بود البته میشه همه این کارارو با سییتم عامل های دیگه و وندوز هم انجام بدید

برای شروع کارباید تولچین یا کامپایلر مورد نیاز رو دانلود کنیم این لینک تولچین هست
توجه داشته باشید که این کامپایلر مخصوص لینوکس هست و برای سیستم عامل های دیگه مثل ویندوز باید تولیچین مخصوص سیستم عامل خودتونو دانلود کنید توصیه میکنم از همین ورژن استفاده کنید
میتونید از این دستورات برای دانلود و اکسترکت استفاده کنید

کد:
wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz

tar -vxJf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz
sudo cp -r ./gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi /opt/
upload_2020-1-28_19-23-30.png
حالا با استفاده از دستور nano یا دیتور های دیگه فایل bash.bashrc رو باز میکنیم و در اخرین خط اون عبارت زیر رو اضافه کرده و ذخیره میکنیم این کار رو میتونید با این دستورات انجام بدید

کد:
sudo nano /etc/bash.bashrc
به اخرین خط فایل رفته عبارت زیر رو اضافه میکنیم
PATH="$PATH:/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin"
ذخیره کرده و و فایل رو میبنیدم
برای اعمال تغییرات دستور زیر رو وارد میکنیم
source /etc/bash.bashrc

upload_2020-1-28_19-28-22.png

حالا از این لینک سورس بوت لودر uboot رو به صورت دستی دانلود میکنیم یا با دستور زیر این کارو میکنیم
مبتونید فایل های تولچین و بوت و ... رو از گوگل درایومون هم دانلود کنید اینجا ا\لود کردم که بعدا مشکل ورژن و ... نداشته باشیم

کد:
git clone -b nano-v2018.01 https://github.com/Lichee-Pi/u-boot.git

upload_2020-1-29_0-20-47.png

اگر دستور git نصب نبود میتونیم با دستور زیر اول git رو نصب کنیم بعد دستور بالا رو وارد کنیم

کد:
sudo apt-get install git
upload_2020-1-28_19-30-16.png
در صورتی که اسم پوشه u-boot نباشه اونو تغییر میدیم و وارد پوشه u-boot میشیم
حالا با استفاده از دستور زیر میتونیم ابوت لودر رو کامپایل کنیم
توجه داشته باشید که قبل از کامپایل باید تنظیمات لازم رو نسبت به سخت افزار خود یا نسبت به نیازی که داریم تنظیم کنیم برای این کار باید وارد محیط menuconfig بشیم برای این کار میتونیم از این دستور استفاده کنیم

کد:
make ARCH=arm menuconfig

upload_2020-1-29_0-23-31.png

یه در صورتی که مشخصات فایل تنظیمات پیش فرض اونو میدونیم به این صورت وارد کنیم
توجه داشته باشید که برای اکثر برد ها و سخت افزار های معروف تنظیمات قبلا در قالب یک فایل اماده شده که میتونید از اونها استفاده کنید برای مثال وارد پوشه configs بشید همونطوری که مشاهده میکنید بیشتر از 1000 نوع مختلف از سخت افزار های متفاوت رو اماده کردن
برای مثال برای اعمال تنظیمات برد nanopi m1 از فایل nanopi_m1_defconfig که توی پوشه هست به این صورت عمل کنید

کد:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- nanopi_m1_defconfig

upload_2020-1-28_21-58-46.png

این دستور تنظیمات لازم رو برای این برد انجام میده ولی باز میتونیم با دستور قبلی وارد محیط menuconfig شده و شخصی سازی کنیم

بعد از اتمام کار تنظیمات باید کامپایل کنیم برای این کار از دستور زیر استفاده کنید

کد:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8

upload_2020-1-29_0-34-2.png
در صورتی که خطایی نداشته باشیم باید فایل u-boot.bin در پوشه u-boot ایجاد بشه

upload_2020-1-29_0-34-46.png

برای کلین کردن یا پاک کردن فایل های ایجاد شده بعد از کامپایل میتونید از دستور زیر استفاده کنید

کد:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- mrproper

upload_2020-1-29_0-35-24.png
 

Alma

مدیر
پرسنل مدیریت
توی این پست قراره خود کرنل یا لینوکس رو کامپایل کنیم
اولین کاری که باید بکنیم دانلود کرنل هست
برای دانلود از این لینک میتونید استفاده کنید یا دستور زیر رو در ترمینال وارد کنید

کد:
wget https://github.com/steward-fu/lichee-nano/releases/download/v1.0/kernel.tar.gz
بعد از دانلود با با دستورهای زیر اون رو اکسترکت میکنیم و وارد پوشه kernel میشیم

کد:
tar xvf kernel.tar.gz
cd kernel

upload_2020-2-11_19-21-7.png
میتونید این کارو توی محیط گرافیکی هم انجام بدید به این صورت که روی فایل فشرده راست کلیک کرده و گذینه اکسترکت رو انتخاب کنید بعد از اتمام کار وارد پوشه کرنل شده و در یه جای خالی راست کلیک کرده و ترمینال رو انتخاب میکنیم تا پنجره ترمینال باز بشه


upload_2020-2-11_19-21-58.png

در صورتی که کرنل رو قبلا کامپایل کردیم میتونیم با استفاده از دستور زیر اطلاعات تولید شده رو پاک کنیم

کد:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- mrproper
در قدم بعدی مشابه بوت لودر باید تنظیمات پیش فرض رو اعمال کنیم
برای مثال اینجا قراره برای برد mini2440 کرنل رو کامپایل کنیم پس از فایل تنظیمات پیش فرض این برد یعنی فایل mini2440_defconfig استفاده میکنیم برای این کار دستور زیر رو در ترمینال وارد میکنیم

کد:
make ARCH=arm mini2440_defconfig

upload_2020-2-11_19-22-53.png

باز میتونیم با استفاده از دستور زیر وارد محیط menuconfig شده و شخصی سازی های بیشتری رو اعمال کنیم

کد:
make ARCH=arm menuconfig

در پست های بعدی در خصوص منوهای مهم و تنظیماتی که میتونه در این محیط به دردمون بخوره تا جایی که بتونم توضیحاتی خواهم داد فعلا فقط قراره کامپایلش کنیم

برای کامپایل کردن فقط کافیه دستور زیر رو در ترمینال وارد کنید

کد:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4
همونطوری که در تصویر های زیر مشاهده میکنید بدون مشکل کامپایل میشه
توجه داشته باشید که این پروسه ممکنه چند دقیقه طول بکشه پس صبور باشید تا کار کامپایل تموم بشه

upload_2020-2-11_19-24-56.png
upload_2020-2-11_19-26-55.png
دستور بالا فایل zImage و اینیستال رو ایجاد میکنه ولی درصورتی که بخواید تک تک این کارهارو انجام بدید میتونید از دستورات زیر مطابق تصویر استفاده کنید
کد:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 zImage modules
upload_2020-2-11_19-32-15.png

کد:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 INSTALL_MOD_PATH=out modules_install

upload_2020-2-11_19-34-36.png
upload_2020-2-11_19-34-54.png
همونطوری که مشاهده میکنید فایل zImage در پوشه arch/arm/boot ایجاد شده

upload_2020-2-11_19-29-36.png

 

Alma

مدیر
پرسنل مدیریت
مرحله سوم کار و البته سخت ترین مرحله کامپایل پوشه روت هست
فایل های مورد نیاز این کار حجم خیلی کمی داره ولی نسبت به تنظیماتی که انجام میدین میتونه تا چند گیگ نیاز به دانلود سورس های برنامه های نصب شده پیش فرض داشته باشه
نکته دیگه این که پروسه کامپایل این بخش شاید بیشتر از یک یا چند ساعت طول بکشه که بستگی به سیستم شما و سرعت دانلود داره پس باید صبور باشیم

برای شروع کار باید فایل buildroot رو از این لینک دانلود کنیم و بعد از اکسترکت اون وارد پوشه میشیم

کد:
git clone https://github.com/buildroot/buildroot.git
cd buildroot

upload_2020-3-6_2-50-4.png

این بخش هم مثل قسمت های قبلی که توضیح داده شد محیط تنظیمات داره که میتونیم مثل قبل با وارد کردن دستورات زیر به محیط تنظیمات دسترسی پیدا کنیم یا اگر اسم دیوایس مورد نظر رو میدونیم مستقیما ازش استفاده کنیم

برای مشاهده لیست دیوایس هایی که قبلا تنظیمات اونها اماده شده وارد پوشه configs میشیم و از فایل های داخل پوشه دیوایس مورد نظرمون رو پیدا میکنیم برای مثال فایل nanopi_m1_defconfig برای برد nanopi_m1 هست که اینجا قراره پوشه روت رو برای این برد ایجاد کنیم

کد:
make ARCH=arm nanopi_m1_defconfig

upload_2020-3-6_3-9-4.png

و البته برای اعمال تنظیمات بیشتر و شخصی سازی میتونیم با دستور زیر واد محیط تنظیمات شده و تغییرات مورد نیاز رو انجام بدیم
توجه داشته باشید که ممکنه به علت تنظیماتی نادرستی که اعمال میکنید پروسه کامپایل به درستی انجام نشه و خطا به وجود بیاد پس از تغییر قسمت هایی که از اون ها اطلاعات کافی ندارید خود داری کنید

کد:
make ARCH=arm menuconfig

upload_2020-3-6_3-9-51.png

بعد از اتمام کار تنظیمات برای کامپایل دستور زیر رو وارد میکنیم و منتظر میمونیم تا کار کامپایل تموم بشه همونطوری که قبلا هم عرض کردم این پروسه ممکنه زمان زیادی طول بکشه که بستگی به سرعت سیستم و اینترنت شما داره

کد:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4
بعد از کامپایل در صورتی که خطایی نباشه میتونید فایل های ایجاد شده rootfs.jffs2 و rootfs.tar رو در پوشه output\images پیدا کنید این فایل ها ممکنه بسته به تنظیماتی که انجام میدید اسم یا فرمت دیگری داشته باشند

upload_2020-3-6_3-33-9.png
 
بالا پایین