اوپن سورس یوکٹو پروجیکٹ گائیڈ
ڈوکر سیٹ اپ تجاویز کے ساتھ رسبیری پائی پر اپنی مرضی کے مطابق لینکس کے لئے اوپن سورس یوکٹو پروجیکٹ گائیڈ
کسی بھی ہارڈ ویئر پر اپنی مرضی کے مطابق لینکس سسٹم کے لئے یوکٹو پروجیکٹ میں غوطہ لگائیں۔ ڈویلپرز اور ایمبیڈڈ سسٹم کے شوقین افراد کے لئے بہترین. ابھی تعمیر شروع کریں!
کسی بھی ہارڈ ویئر آرکیٹیکچر کے لئے اپنی مرضی کے مطابق لینکس سسٹم بنانے کے لئے ایک اوپن سورس پہل ، یوکٹو پروجیکٹ کو تلاش کریں۔ کراس پلیٹ فارم کی ترقی کے لئے کرپس کا استعمال کرنا سیکھیں ، ڈوکر کنٹینر ترتیب دیں ، اور ایمبیڈڈ اور آئی او ٹی آلات کے لئے موزوں لینکس تصاویر بنائیں۔ ہماری گائیڈ میک او ایس پر سیٹ اپ کا احاطہ کرتی ہے ، بلڈ ماحول کو تشکیل دیتی ہے ، اور رسبیری پائی کے لئے بہتر بناتی ہے۔ چاہے آپ ایک ابتدائی یا ماہر ہوں ، اپنے لینکس پروجیکٹ کی ضروریات کے لئے بہترین طریقوں ، ٹولز اور کمیونٹی سپورٹ کو تلاش کریں۔
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 لائسنس کے تحت لائسنس یافتہ ہے۔
اعترافات
ان ہدایات کو تیار کرنے میں استعمال کیے گئے سورسز:
آپ سب کا شکریہ۔