ওপেন সোর্স ইয়োক্টো প্রকল্প গাইড
ডকার সেটআপ টিপস সহ রাস্পবেরি পাইতে কাস্টম লিনাক্সের জন্য ওপেন সোর্স ইয়োক্টো প্রকল্প গাইড
যে কোনও হার্ডওয়্যারে কাস্টম লিনাক্স সিস্টেমের জন্য ইয়োক্টো প্রকল্পে ডুব দিন। ডেভেলপার এবং এমবেডেড সিস্টেম উত্সাহীদের জন্য উপযুক্ত। এখনই নির্মাণ শুরু করুন!
ইয়োক্টো প্রকল্পটি অন্বেষণ করুন, যে কোনও হার্ডওয়্যার আর্কিটেকচারের জন্য কাস্টম লিনাক্স সিস্টেম তৈরির জন্য একটি ওপেন সোর্স উদ্যোগ। ক্রস-প্ল্যাটফর্ম বিকাশের জন্য ক্রপস ব্যবহার করতে শিখুন, ডকার পাত্রে সেট আপ করুন এবং এম্বেডেড এবং আইওটি ডিভাইসের জন্য উপযুক্ত লিনাক্স চিত্র তৈরি করুন। আমাদের গাইড ম্যাকোজে সেটআপ, বিল্ড পরিবেশ কনফিগার করা এবং রাস্পবেরি পাইয়ের জন্য অপ্টিমাইজ করা কভার করে। আপনি শিক্ষানবিস বা বিশেষজ্ঞ হোন না কেন, আপনার লিনাক্স প্রকল্পের প্রয়োজনের জন্য সর্বোত্তম অনুশীলন, সরঞ্জাম এবং সম্প্রদায় সমর্থন সন্ধান করুন।
ডকার কনটেইনারে Yocto চলছে
এই yocto docs - এ একটি নেটিভ লিনাক্স পিসি সেট আপ করার বিকল্প হিসাবে CROss PlatformS (CROPS) সেট আপ করার জন্য একটি অধ্যায় (2.2.2) আছে। এই বিকল্পটি একটি কাস্টমাইজড সিস্টেম ইমেজ তৈরি করতে ডকার কন্টেইনার ব্যবহার করে যেমন Raspberry Pi - এর জন্য।
কিন্তু দুর্ভাগ্যবশত, Mac OS X (Monterey) এ আমার ক্ষেত্রে এই পরিবেশ সেট আপ করার ডকুমেন্টেশন - এর ভেতরে কিছু ছোট-খাটো ভুল আছে।
Mac OS X এর জন্য ডকার কন্টেইনার সেটআপ করুন
Linux, Windows এবং Mac OS X-এ CROPS ডকার ব্যবহার করার জন্য, কিছু বিশেষ সেটিংস প্রয়োজন। 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.2 এর 127.0.0.1 এর জন্য একটি ছদ্মনাম তৈরি করতে হবে।
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"।
এখন আপনি বিল্ড এনভায়রনমেন্ট সেটআপ করতে পারেন।
ক্লোন পোকি ভার্সন
আমার ক্ষেত্রে আমি "Honister" নামের Yocto ভার্সন 3.4 ব্যবহার করি, কারণ এই সময়ে আরও নতুন পোকি ভার্সনগুলির জন্য 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" - আপনি এটিকে আপনার ইচ্ছামতো নাম দিতে পারেন - এবং bblayers.conf, local.conf এবং templateconf.cfg ফাইলগুলির সাথে একটি conf ডিরেক্টরি তৈরি হয়।
যেহেতু কন্টেইনারে কোনো টেক্সট এডিটর ইনস্টল করা নেই, তাই আপনাকে হয় Mac OS X-এ বসানো সাম্বা ভলিউমে কনফিগার ফাইলগুলি এডিট করতে হবে অথবা কন্টেইনারে একটি টেক্সট এডিটর ইনস্টল করতে হবে। এটি করার জন্য, আপনাকে অবশ্যই একটি দ্বিতীয় টার্মিনাল উইন্ডো খুলতে হবে - যখন yocto কন্টেইনার চলছে - এবং রুট বিশেষ অধিকার সহ কন্টেইনারে একটি ব্যাশ শেল শুরু করুন:
docker exec -it --user=root crops-poky bash
apt-get install nano
exit
তারপর আপনি pokyuser হিসাবে yocto কন্টেইনারে config ফাইলগুলি এডিট করতে পারেন।
দ্রষ্টব্য
এডিটর স্থায়ীভাবে ইনস্টল করা হয় না। কন্টেইনারটি ছেড়ে চলে যাবার পরে আবার প্রবেশ করার সময়, আপনাকে এটি আবার ইনস্টল করতে হবে
প্রথমে 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
নিম্নলিখিত লাইনগুলি পরিবর্তন করুন:
- MACHINE??= "qemux86-64" -> MACHINE ??= "raspberrypi4-64"
আপনি কোন রাস্পবেরি ব্যবহার করতে চান তার উপর নির্ভর করে (raspberrypi0, raspberrypi0w, raspberrypi3, raspberrypi3-64, raspberrypi4, raspberrypi4-64 ইত্যাদি)
নিচের লাইনগুলোকে আনকমেন্ট করুন:
- DL_DIR?= "${TOPDIR}/downloads"
- SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
- TMPDIR = "${TOPDIR}/tmp"
একটি SD-কার্ডে ফ্ল্যাশ করার জন্য একটি sdimg পেতে শেষে নিম্নলিখিত লাইনগুলি যোগ করুন:
- 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 সিস্টেম কার্যকারিতা সমেত একটি কনসোল-ওনলি ইমেজ ইনস্টল করা আছে।
কিছুক্ষণ পরে - যা প্রথমবারের ক্ষেত্রে কয়েক ঘন্টা হতে পারে - বিটবেক শেষ হয়ে যাবে এবং আপনি নিম্নলিখিত ডিরেক্টরিতে sdimg ফাইলটি খুঁজে পাবেন:
/workdir/rpi-build/tmp/deploy/images/raspberrypi4-64
অতিরিক্ত কনফিগারেশন
অতিরিক্ত Raspberry হার্ডওয়্যার কনফিগারেশন
নির্দিষ্ট হার্ডওয়্যার সেটিংস সেট করতে, আপনি extra-apps.md এবং extra-build-config.md দেখতে পারেন। আপনি এই ফাইলগুলি meta-raspberrypi/docs directory -তেও খুঁজে পাবেন।
এছাড়ও মেটা লেয়ারটি বিটবেকের সাথে ব্যবহার করার জন্য একটি ইমেজ কনফিগারেশন "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 eKএই প্রোজেক্ট সোর্স-কোডটি GPL-3.0 লাইসেন্সের অধীনে লাইসেন্সকৃত।
স্বীকৃতি
এই নির্দেশাবলী তৈরি করতে ব্যবহৃত উৎস:
সবাইকে ধন্যবাদ।