راهنمای پروژه Yocto منبع باز
راهنمای پروژه منبع باز Yocto برای لینوکس سفارشی در Raspberry Pi با نکات راه اندازی Docker
به پروژه Yocto برای سیستم های لینوکس سفارشی روی هر سخت افزاری بپردازید. ایده آل برای توسعه دهندگان و علاقه مندان به سیستم های تعبیه شده. همین حالا شروع به ساخت کنید!
پروژه Yocto را کاوش کنید، یک ابتکار متن باز برای ایجاد سیستم های لینوکس سفارشی برای هر معماری سخت افزاری. یادگیری استفاده از CROPS برای توسعه چند پلتفرمی، راه اندازی کانتینرهای Docker و ساخت تصاویر لینوکس مناسب برای دستگاه های تعبیه شده و اینترنت اشیا راهنمای ما راه اندازی در macOS، پیکربندی محیط های ساخت و بهینه سازی برای Raspberry Pi را پوشش می دهد. چه مبتدی باشید و چه متخصص، بهترین شیوه ها، ابزارها و پشتیبانی جامعه را برای نیازهای پروژه لینوکس خود بیابید.
Yocto در یک محفظه داکر اجرا میشود
در اسناد Yocto یک فصل (2.2.2) برای راه اندازی پلتفرمهای CROss (CROPS) به عنوان جایگزینی برای راه اندازی یک کامپیوتر لینوکس نتیو وجود دارد. این راه جایگزین از محفظه داکر برای ساخت یک ایمیج سیستم سفارشی، مثلاً برای Raspberry Pi استفاده میکند.متأسفانه در مستندات اشتباهات کوچکی برای راهاندازی این محیط برای من در Mac OS X (مونتری) وجود دارد.### تنظیم محفظه داکر برای Mac OS X
برای استفاده از داکر CROPS در لینوکس، ویندوز و Mac OS X، به تنظیمات خاصی نیاز است. قبل از تنظیم محفظه برای Yocto، باید یک حجم داکر برای ذخیره نتایج ایجاد کنید. همچنین برای ارائه فایلها در Mac OS X از یک محفظه داکر سامبا استفاده میشود.
ایجاد حجم داکر
در یک پنجره ترمینال، دستورات زیر را تایپ کنید:
docker volume create --name raspberry
docker run -it --rm -v raspberry:/workdir busybox chown -R 1000:1000 /workdir
ساخت و اجرای یک محفظه سامبا
OSX به شما اجازه نمیدهد به اشتراک محلی سامبا متصل شوید. بنابراین، ابتدا باید یک نام مستعار برای 127.0.0.1 از 127.0.0.2 ایجاد کنید.
sudo ifconfig lo0 127.0.0.2 alias up
سپس محفظه سامبا را ایجاد کنید که به شما امکان میدهد فایلها را در فضای داکر مشاهده کنید:
docker create -t --expose 445 -p 127.0.0.2:445:445 --name samba -v raspberry:/workdir crops/samba
از آنجا که برای اتصال به محفظه سامبا همیشه باید نام مستعار داشته باشید، می توانید شروع سامبا و نام مستعار را این گونه ترکیب کنید:
docker start samba && sudo ifconfig lo0 127.0.0.2 alias up
اکنون می توانید workdir را در مرورگر فایل باز کنید. در فایندر روی "Command-K" کلیک کرده و در کادر آدرس سرور عبارت "smb://127.0.0.2/workdir" را تایپ کنید و روی "Connect" کلیک کنید. اکنون باید محتوای حجم داکر را در فایندر مشاهده کنید.
ایجاد و راه اندازی محفظه Yocto
برای ایجاد و/یا راهاندازی محفظه Yocto در پنجره ترمینال تایپ کنید:
docker run --rm -it --name=crops-poky -v raspberry:/workdir crops/poky:ubuntu-20.04 --workdir=/workdir
محیط ساخت را در محفظه راهاندازی کنید
هنگامی که محفظه داکر راه اندازی می شود، یک اعلان ترمینال مشابه این خواهید داشت: "pokyuser@d4ddfe042587:/workdir".
اکنون می توانید محیط ساخت را راه اندازی کنید.
کلونکردن نسخه پوکی
من از نسخه 3.4 Yocto با نام "Honister" استفاده میکنم، چون فعلاً لایههای meta-raspberry برای نسخههای جدیدتر پوکی در دسترس نیست. اولین بار باید مخزن پوکی را کلون کنید:
git clone -b honister git://git.yoctoproject.org/poky poky-honister
اگر می خواهید پوکی را به آخرین نسخه بهروزرسانی کنید:
cd poky-honister
git pull --all --prune
لایههای متای اضافی برای Raspberry Pi
به "poky-honister" تغییر دهید و این مخازن را کلون کنید: meta-raspberry، meta-openembedded و در صورت نیاز meta-qt5
cd poky-honister
git clone -b honister git://git.yoctoproject.org/meta-raspberrypi
git clone -b honister git://git.openembedded.org/meta-openembedded
git clone -b honister https://github.com/meta-qt5/meta-qt5.git
پیکربندی ساخت را تنظیم کنید
دایرکتوری poky-honister را ترک کنید تا در /workdir باشید. اکنون اسکریپت oe-init-build-env را وارد محیط بیلد کنید.
cd ..
source poky-honister/oe-init-build-env rpi-build
یک دایرکتوری جدید "rpi-build" - می توانید آن را به دلخواه نام گذاری کنید - و یک دایرکتوری conf با فایل های blayers.conf، local.conf و templateconf.cfg ایجاد می شود.
از آنجا که هیچ ویرایشگر متنی در محفظه نصب نشده است، یا باید فایل های پیکربندی را در حجم سامبای نصب شده در Mac OS X ویرایش کنید یا باید یک ویرایشگر متن را در محفظه نصب کنید. برای انجام این کار، باید پنجره ترمینال دوم را باز کنید - در حالی که محفظه yocto در حال اجرا است - و یک پوسته bash با مجوزهای روت در محفظه راه اندازی کنید:
docker exec -it --user=root crops-poky bash
apt-get install nano
exit
سپس میتوانید فایلهای پیکربندی موجود در محفظه yocto را بهعنوان pokyuser ویرایش کنید.
توجه
ویرایشگر به صورت دائمی نصب نشده است. پس از خروج از محفظه و ورود مجدد به آن، باید دوباره آن را نصب کنید
در گام اول meta-raspberry را به فایل bblayers.conf اضافه کنید
nano conf/bblayers.conf
"/workdir/poky-honister/meta-raspberrypi " را به همین شکل اضافه کرده
BBLAYERS ?= " \
/workdir/poky-honister/meta \
/workdir/poky-honister/meta-poky \
/workdir/poky-honister/meta-yocto-bsp \
/workdir/poky-honister/meta-raspberrypi \
"
و آن را ذخیره کنید.
در گام دوم local.conf را ویرایش کنید
فایل local.conf را ویرایش کنید:
nano conf/local.conf
خطوط زیر را تغییر دهید:
- MACHINE ??= "qemux86-64" -> MACHINE ??= "raspberrypi4-64"
بسته به اینکه میخواهید از کدام Raspberry استفاده کنید (raspberrypi0، raspberrypi0w، raspberrypi3، raspberrypi3-64، raspberrypi4، raspberrypi4-64، و غیره)
خطوط زیر را از حالت کامنت خارج کنید:
- DL_DIR= "${TOPDIR}/downloads"
- SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
- TMPDIR = "${TOPDIR}/tmp"
خطوط زیر را در انتها اضافه کنید تا یک sdimg برای فلش شدن به یک کارت اسدی داشته باشید:
- IMAGE_FSTYPES = "ext4.xz rpi-sdimg"
- SDIMG_ROOTFS_TYPE = "ext4.xz"
فایل local.conf را ذخیره کنید.
بیت بیک اولین ایمیج
اکنون حداقل تنظیمات برای ساخت اولین ایمیج دارید:
bitbake -k core-image-minimal
در مستندات Yocto توضیح کوتاهی از توضیحات ایمیج موجود مشاهده میکنید.
برای مثال:
- core-image-minimal: یک ایمیج کوچک که فقط می تواند به دستگاه اجازه بوت شدن را بدهد.
- core-image-base: یک ایمیج فقط-کنسول که به طور کامل از سخت افزار دستگاه مورد نظر پشتیبانی می کند.
- core-image-full-cmdline: یک ایمیج فقط-کنسول با قابلیتهای عملیاتی کاملتر و بیشتر سیستم لینوکس.
پس از مدتی - که برای اولین بار می تواند چندین ساعت باشد - کار بیت بیک تمام می شود و میتوانید فایل sdimg را در دایرکتوری زیر مشاهده کنید:
/workdir/rpi-build/tmp/deploy/images/raspberrypi4-64
پیکربندی های اضافی
پیکربندی های سخت افزاری اضافی Raspberry
برای تنظیمات سخت افزاری خاص، می توانید نگاهی به extra-apps.md و extra-build-config.md بیندازید. این فایل ها را نیز در دایرکتوری meta-raspberrypi/docs مشاهده می کنید.
لایه متا همچنین یک پیکربندی ایمیج "rpi-test-image" را برای استفاده با بیت بیک فراهم می کند. این ایمیج مبتنی بر "core-image-base" است که شامل اکثر بستههای موجود در meta-raspberrypi و برخی نمونههای رسانه می شود.
bitbake -k rpi-test-image
پیکربندیهای نرم افزاری اضافی
بسته به اینکه از چه پیکربندی ساخت ایمیجی ستفاده می کنید، ممکن است نیاز به نصب بسته های نرم افزاری اضافی داشته باشید.
می توانید این کار را با افزودن برخی تنظیمات به فایل local.conf انجام دهید.
به عنوان مثال خطوط زیر را برای تنظیم ssh-server، pi-user و systemd اضافه کنید:
## packages
IMAGE_INSTALL:append = " openssh-sftp-server sudo python3 python3-pip rpi-gpio raspi-gpio"
IMAGE_FEATURES:append = " ssh-server-openssh"
## systemd settings
DISTRO_FEATURES:append = " systemd"
VIRTUAL-RUNTIME:init_manager = "systemd"
VIRTUAL-RUNTIME:initscripts = ""
IMX_DEFAULT_DISTRO_FEATURES:append = " systemd"
یا پایتون را اضافه کنید:
IMAGE_INSTALL:append = " python3 python3-pip rpi-gpio raspi-gpio"
توجه
فضای ابتدایی در "python3 python3-pip rpi-gpio raspi-gpio " مهم است، زیرا متن به پیکربندی موجود اضافه شده است و باید با این فاصله جدا شود.
مجوز کپی رایت
کپیرایت © 2022 Interelectronix e.K.این کد منبع پروژه دارای مجوز GPL-3.0 است.
قدردانی
منابع مورد استفاده برای ایجاد این دستورالعمل:
با تشکر از همه.