با قسمت بیستم از دوره ورود به دنیای امبدد لینوکس که دوره مقدماتی آموزش امبدد لینوکس می باشد همراه ما باشید.
در قسمت قبل به بررسی کرنل لینوکس و دیوایس تری پرداختیم، همچنین کرنل را بوت کردیم اما در آخر به اروری برخورد کردیم و کرنل نیاز به سیستم روت داشت، در این قسمت از سری آموزش های امبددلینوکس به معرفی فایل سیستم در امبددلینوکس و به بررسی سیستم روت می پردازیم.
فایل سیستم روت
توی این فصل به سراغ آخرین قسمت از پازل امبدد لینوکس میریم یعنی فایل سیستم در امبددلینوکس.
اما یه خبر خوب… آخر این فصل بالاخره میتونیم وارد محیط لینوکس خودمون بشیم و برخی دستورات ساده رو اجرا کنیم یا برنامههای خودمون رو اجرا کنیم!
انواع حافظهها
حافظه یه امبدد سیستم توی خیلی چیزها مثل ثباتش، نحوه آپدیت شدنش، سرعت بوت شدنش و … تأثیر داره. انواع حافظهها دیگه تخصص ماست:) حافظههایی که توی امبدد لینوکس استفاده میشن از نوع SOLID STATE هستن.
خب بچه زرنگا چه مدلهایی میشن؟ بله NOR و NAND.
NOR فلشها گرون هستن ولی سریع، ظرفیت پایین دارن معمولاً میشه یک بایت از روشون خوند یا نوشت واسه همین میتونن توی فضای حافظه مپ بشن و بهعنوان حافظه کد ازشون شاید توی پروژهها تون استفاده کرده باشین.
NAND فلشها ارزونتر هستن و با ظرفیتهای خیلی بیشتر ولی خب استفاده ازشون دردسرهای نرمافزاری و سختافزاری زیادی داره و توی این مقاله ما اصلاً سمتشون نمیریم! چون عملاً دیگه استفاده نمیشن واسه طراحیهای جدید.
در حال حاضر عموم حافظههایی که برای امبدد لینوکس استفاده میشه از نوع NAND فلش مدیریت شده هستن. یعنی یه NAND فلش داریم و کنارش یه کنترلر و پردازنده ما با اون کنترلر در ارتباط هست نه با NAND FLASH، متداولترین و شناخته شده ترین این حافظهها هم SD کارتها و eMMC هستن، به جز این دو مدل SPI FLASH ها هم توی امبدد سیستمهایی که کارهای خیلی محدودی انجام میدن و نیاز به فضای زیادی ندارن استفاده میشن.
چون شما بچه زرنگهای سختافزار و الکترونیک بودین که اومدین سراغ امبددلینوکس من خیلی توضیحات نمیدم در مورد این حافظهها!
انواع فایل سیستمها
متداولترین فایل سیستم در لینوکس xtended filesystem هست که الان نسخه چهار اون یعنی ext4 در حال استفاده هست. برای حافظههای مدیریتشده از همین فایل سیستم برای روت استفاده میکنیم، یه وقتهایی برای بعضی از پردازندهها و قسمت بوت لودرشون مثل همین رزبریپای جان باید از یه درایو با فرمت FAT32 هم استفاده کنیم.
فایل سیستم دیگهای که بد نیست اسمش رو بشنوید Flash-Friendly File System یا F2FS هست که توسط سامسونگ نوشتهشده و اکثر دیوایسهای اندرویدی از اون استفاده میکنن ولی هنوز توی دنیای امبدد لینوکس جایی نداره. در خصوص حافظههای مدیریت نشده داستان خیلی متفاوت هست!
این حافظهها معمولاً توی پیکربندی پیشفرض کرنل پشتیبانی نمیشن و باید زیرسیستم Memory Technology Device رو فعال کنیم. فایل سیستمهای مخصوص به خودشون رو دارن که صرفاً جهت آشناییتون از کتاب جدید کریس این توضیحات رو داشته باشید
بعد از کرنل
توی فصل قبل آخرین چیزی که روی سریال دیدیم کرنل پنیک بود. برای گذار از راه اندازی اولیهی کرنل و ورد به فضای کاربری لینوکس کرنل نیاز به فایل سیستم روت و اجرای یک برنامه از اون رو داره. اگه ramdisk داشته باشیم کرنل میره و /init رو اجرا میکنه و اگه پیداش نکرد بنا به هر دلیلی با توجه به مقدار متغیر root= که در پارامتر کامندلاین، بوت لودر بش پاس داده، اول میره فایل سیستم رو مونت میکنه و بعد به ترتیب دنبال برنامههای زیر میگرده و هر کدوم رو که بود همون رو اجرا میکنه و سراغ بعدی دیگه نمیره:
/sbin/init
/etc/init
/bin/init
/bin/sh
در پرانتز: این برنامه با استفاده از کامندلاین و متغیر rdinit= یا init= قابل تغییر هست. پس اولین چیزی که باید توی محتویات روت ما باشه همین برنامه init هست.
محتویات روت
توی بخش قبلی گفتیم که اولین چیز همون برنامه init هست اما به جز اون برنامه و فایلهای دیگه ای هم هست که حتماً باید باشن. این لیست کاملی از چیزهایی هست که باید توی روت ما باشه و کرنل به اونا نیاز داره.
ساختار فولدربندی روت
برای لینوکس مهم نیست که چه ساختاری داره روت ما، اینرو میتونید با مقایسه روت اندروید و یه لینوکس دسکتاپ متوجه بشین که کاملاً باهم متفاوت هستن. اما خیلی از برنامههای لینوکس انتظار دارن یه سری فایل توی یه جاهای خاصی باشه واسه همین اکثر سیستمهای لینوکسی از این ساختار استفاده میکنن.
حالا بریم باهم بسازیم این فولدرها و بعد پرشون کنیم.
1 2 3 4 5 6 7 | cd ~/EmbeddedLinux/RPI3BP/rootfs/ mkdir bin dev etc home lib proc sbin sys tmp usr var mkdir usr/bin usr/lib usr/sbin mkdir -p var/log |
حالا ببنیم چطوری شد؟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | tree -d . ├── bin ├── dev ├── etc ├── home ├── lib ├── proc ├── sbin ├── sys ├── tmp ├── usr │ ├── bin │ ├── lib │ └── sbin └── var └── log 15 directories |
گفتیم اولین چیزی که میخوایم init هست و بعدش یه شل، حالا اینارو از کجا بیاریم؟ 🙁 نگران نباشید چاقوی سویسی به کمک ما میاد!
در این قسمت به معرفی فایل سیستم در امبددلینوکس پرداختیم و در قسمت بعدی به معرفی بیشتر ساختار فولدربندی روت میپردازیم.
یادتون نره سیسوگ رو به دوستانتون معرفی کنین و نظراتتون رو درباره این مقاله با ما به اشتراک بگذارید.
خیلی خوب توضیح دادید
لذت بردم
سلام وقتتون بخیر
خواهش میکنم و ممنون از همراهی شما
یعنی با لذت هر چه تمام تر دنبال میکنم و سپاسگزارم!!
امیدوارم موفق و موید باشید.
خدا قوت
منتظر قسمت های بعدی هستم.
نظر لطف شماست
بله دنبال کنندهی سری آموزشی امبددلینوکس هر چهارشنبه باشید.
یادتون نره، سیسوگ رو به دوستانتون معرفی کنید.