ایمبیڈڈ سافٹ ویئر - یوکٹو راسپبیری پائی 4 کو کمپیوٹر کا اسکرین شاٹ بناتا ہے

Yocto بلڈ Raspberry Pi 4

docker ماحول میں

Yocto docker کنٹینر میں چل رہا ہے

yocto دستاویزات میں ایک مقامی linux کمپوٹر کو سیٹ کرنے کے متبادل کے طور پر CROss PlatformS (CROPS) کو سیٹ کرنے کے طریقہ کار کے متعلق ایک باب (2.2.2) موجود ہے۔ یہ متبادلات ایک حسب ضرورت سسٹم تصویر بنانے کے لیے docker کنٹینر کا استعمال کرتے ہیں جیسے Raspberry Pi کے لیے۔

بدقسمتی سے Mac OS X (Monterey) پر میرے لیے اس ماحول کو سیٹ کرنے کے لیے دستاویزات میں کچھ معمولی غلطیاں ہیں۔

Mac OS X کے لیے docker کنٹینر سیٹ کریں

Linux، Windows اور Mac OS X پر CROPS docker کو استعمال کرنے کے لیے، کچھ خاص سیٹنگز درکار ہوتی ہیں۔ Yocto کے لیے کنٹینر کو سیٹ کرنے سے پہلے، آپ کو نتائج کو اسٹور کرنے کے لیے ایک docker والیوم بنانا ہوگا۔ نیز Mac OS X میں فائلیز فراہم کرنے کے لیے ایک docker samba کنٹینر استعمال کیا جاتا ہے۔

docker والیوم بنائیں

ایک ٹرمینل ونڈو میں درج ذیل کمانڈز ٹائپ کریں:

docker volume create --name raspberry
docker run -it --rm -v raspberry:/workdir busybox chown -R 1000:1000 /workdir

ایک samba کنٹینر بنائیں اور اسے چلائیں

OSX آپ کو ایک مقامی طور پر چلنے والے samba شیئر کے ساتھ کنیکٹ نہیں ہونے دے گا۔ اس لیے، آپ کو پہلے 127.0.0.1 کے 127.0.0.2 کے لیے ایک فرضی نام بنانا ہوگا۔

sudo ifconfig lo0 127.0.0.2 alias up

پھر samba کنٹینر بنائیں، جو آپ کو docker والیوم میں فائلوں کو دیکھنے کی اجازت دیتا ہے:

docker create -t --expose 445 -p 127.0.0.2:445:445 --name samba -v raspberry:/workdir crops/samba

چونکہ آپ کو samba کنٹینر کے ستھ کنیکٹ ہونے کے لیے ہمیشہ ہی کسی فرضی نام کی ضرورت ہوگی، اس لیے آپ samba اور فرضی نام کے ابتدائی حروف کو کچھ اس طرح سے جوڑ سکتے ہیں:

docker start samba && sudo ifconfig lo0 127.0.0.2 alias up

اب آپ فائل براؤزر میں workdir کو کھول سکتے ہیں۔ فائنڈر میں "Command-K" لکھ کر دبائیں اور سرور ایڈریس والے خانے میں "smb://127.0.0.2/workdir" ٹائپ کریں اور "کنیکٹ کریں" پر کلک کریں۔ اب آپ کو فائنڈر میں docker والیوم کا مواد نظر آ جانا چاہیے۔

Yocto کنٹینر بنائیں اور شروع کریں

Yocto کنٹینر کو بنانے اور/یا شروع کرنے کے لیے ٹرمینل ونڈو میں یہ ٹائپ کریں:

docker run --rm -it --name=crops-poky -v raspberry:/workdir crops/poky:ubuntu-20.04 --workdir=/workdir

کنٹینر میں بلڈ ماحول کو سیٹ کریں

جب docker کنٹینر شروع ہوتا ہے، تو آپ کو ایک ٹرمینل پرامپٹ نظر آئے گا جو کچھ ایسا ہوتا ہے: "pokyuser@d4ddfe042587:/workdir"۔

اب آپ بلڈ ماحول کو سیٹ کر سکتے ہیں۔

poky ورژن کو کلون کریں

میرے معاملے میں، میں "Honister" نام کے ساتھ Yocto ورژن 3.4 استعمال کرتا ہوں، کیونکہ meta-raspberry لیئرز فی الحال نئے پوکی ورژنز کے لیے دستیاب نہیں ہیں۔ پہلی مرتبہ کے لیے آپ کو poky ریپوزیٹری کو کلون کرنا ہوگا:

git clone -b honister git://git.yoctoproject.org/poky poky-honister

اگر آپ poky کو تازہ ترین ورژن میں اپ ڈیٹ کرنا چاہتے ہیں:

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" - آپ اسے اپنی مرضی کے مطابق نام دے سکتے ہیں - اور bblayers.conf، local.conf اور templateconf.cfg فائلز کے ساتھ ایک conf ڈائریکٹری بنائی جاتی ہے۔

چونکہ کنٹینر میں کوئی بھی ٹیکسٹ ایڈیٹر انسٹال شدہ نہیں ہے، اس لیے آپ کو یا تو Mac OS X میں نصب شدہ samba والیوم میں کنفیگریشن فائلز کو ایڈٹ کرنا ہوگا یا پھر کنٹینر میں کوئی ٹیکسٹ ایڈیٹر انسٹال کرنا ہوگا۔ ایسا کرنے کے لیے، آپ کو ایک دوسری ٹرمینل ونڈو کھولنی ہوگی - جب کہ yocto کنٹینر چل رہا ہو - اور کنٹینر میں رُوٹ مراعات کے ساتھ ایک bash شیل شروع کرنا ہوگا:

docker exec -it --user=root crops-poky bash
apt-get install nano
exit

پھر آپ yocto کنٹینر میں کنفیگریشن فائلوں میں pokyuser کے طور پر ترمیم کر سکتے ہیں۔

نوٹ

ایڈیٹر مستقل طور پر انسٹال شدہ نہیں ہے۔ کنٹینر سے باہر نکلنے اور دوبارہ داخل ہونے کے بعد، آپ کو اسے دوبارہ انسٹال کرنا ہوگا

پہلے bblayers.conf فائل میں meta-raspberry کو شامل کریں

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

مندرجہ ذیل لائنوں کو تبدیل کریں:

  • مشین ؟؟= "qemux86-64" -> مشین ؟؟= "raspberrypi4-64"

یہ اس پر منحصر ہے کہ آپ کون سی Raspberry استعمال کرنا چاہتے ہیں (raspberrypi0, raspberrypi0w, raspberrypi3, raspberrypi3-64, raspberrypi4, raspberrypi4-64, وغیرہ)

درج ذیل لائنز کو غیر تبصرہ والی بنائیں:

  • DL_DIR؟= "${TOPDIR}/downloads"
  • SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
  • TMPDIR = "${TOPDIR}/tmp"

sdimg کو SD کارڈ پر فلیش کرنے کے لیے، آخر میں درج ذیل لائنیں شامل کریں:

  • IMAGE_FSTYPES = "ext4.xz rpi-sdimg"
  • SDIMG_ROOTFS_TYPE = "ext4.xz"

local.conf فائل کو محفوظ کریں۔

پہلی تصویر کو Bitbake کریں

اب آپ کے پاس اپنی پہلی تصویر بنانے کے لیے دستیاب کم سے کم سیٹنگز موجود ہیں:

bitbake -k core-image-minimal

Yocto دستاویزات میں آپ کو دستیاب تصویری وضاحتوں کی ایک مختصر تفصیل مل جاتی ہے۔

مثال کے طور پر:

  • core-image-minimal: ایک چھوٹی تصویر جو کسی ڈیوائس کو بُوٹ کرنے میں مدد کرنے کے قابل ہے۔
  • core-image-base: ایک صرف کنسول والی تصویر جو ٹارگٹ ڈیوائس ہارڈویئر کو مکمل طور پر سپورٹ کرتی ہے۔
  • core-image-full-cmdline: ایک صرف کنسول والی تصویر جس میں زیادہ مکمل خصوصیات والے Linux سسٹم کی فعالیت انستال ہوتی ہے۔

کچھ دیر بعد - جو پہلی متربہ کئی گھنٹے بھی ہو سکتے ہیں - bitbake ختم ہوتا ہے اور آپ کو درج ذیل ڈائریکٹری میں sdimg فائل مل جاتی ہے:

/workdir/rpi-build/tmp/deploy/images/raspberrypi4-64

اضافی کنفیگریشنز

Raspberry ہارڈویئر کی اضافی کنفیگریشنز

مخصوص ہارڈ ویئر سیٹنگز سیٹ کرنے کے لیے، آپ extra-apps.md اور extra-build-config.md پر ایک نظر ڈال سکتے ہیں۔ آپ کو یہ فائلیں meta-raspberrypi/docs ڈائریکٹری میں بھی مل سکتی ہیں۔

میٹا لیئر bitbake کے ساتھ استعمال کرنے کے لیے ایک تصویری کنفیگریشن"rpi-test-image" بھی فراہم کرتی ہے۔ تصویر "core-image-base" پر مبنی ہوتی ہے جس میں meta-raspberrypi کے زیاردہ تر پیکجز اور میڈیا کے کچھ نمونے شامل ہوتے ہیں۔

bitbake -k rpi-test-image

سافٹ ویئر کی اضافی کنفیگریشنز

آپ جو امیج بلڈ کنفیگریشن استعمال کر رہے ہیں اس کے مطابق، آپ کو اضافی سافٹ ویئر پیکجز انسٹال کرنے کی ضرورت پڑ سکتی ہے۔

آپ local.conf فائل میں کچھ سیٹنگز شامل کر کے ایسا کر سکتے ہیں۔

مثال کے طور پر ssh-سرور، pi-صارف اور 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"

یا python شامل کریں:

IMAGE_INSTALL:append = " python3 python3-pip rpi-gpio raspi-gpio"

نوٹ

"python3 python3-pip rpi-gpio raspi-gpio" میں ابتدائی خالی جگہ کافی اہم ہے، کیونکہ ٹیکسٹ کو موجودہ کنفیگریشن میں شامل کیا گیا ہے اور اسے اس خالی جگہ کے ساتھ علیحدہ کرنے کی ضرورت ہے۔

کاپی رائٹ لائسنس

کاپی رائٹ © 2022 Interelectronix eKاس پروجیکٹ کا سورس کوڈ GPL-3.0 لائسنس کے تحت لائسنس یافتہ ہے۔

اعترافات

ان ہدایات کو تیار کرنے میں استعمال کیے گئے سورسز:

آپ سب کا شکریہ۔