u-boot سیٹ اپ Mender
ہم پیش رفت کے لیے Yocto Kirkstone برانچ استعمال کر رہے ہیں۔ ہم فرض کرتے ہیں کہ آپ کے پاس پہلے ہی کام کرنے والا پیش رفت کا ماحول انسٹال ہے اور جیسا کہ VisionFive - Mender - Yocto - حصہ 1 اور VisionFive - Mender - Yocto - حصہ 2 میں بیان کیا گیا ہے، اپنا ماحول سیٹ اپ کریں۔
u-boot VisionFive بورڈ
VisionFive RISC-V SBC دو بوٹ لوڈر استعمال کرتا ہے - ایک secondBoot اور u-boot۔ یہ طریقہ کار کیسے کام کرتے ہیں اسے VisionFive SBC کوئیک سٹارٹ گائیڈ میں بیان کیا گیا ہے۔
ان تقاضوں کے نظم کا مطلب یہ ہے کہ
- ہمیں u-boot کو https://github.com/starfive-tech/u-boot سے Mender کی ترتیبات کے ساتھ پیچ کرنا ہو گا
- ہمیں Yocto کے ساتھ u-boot بٹ بیک کرنا ہو گا
- ہمیں دوسرے مرحلے کے بوٹ لوڈر کے ساتھ اپ لوڈ کرنے کے لیے u-boot کو خود سے کمپائل کرنا ہو گ۔
u-boot کو پیچ کرنا
سب سے پہلے، کام کرنے کے لیے کوڈ بیس حاصل کرنے کے لیے starfive-tech سے u-boot ڈیریویٹیو کو کلون کریں۔
git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Mender کا خود کار کنفیگر کردہ پیچ
Yocto میں meta-mender-core Mender کی ضروریات کے لیے u-boot کو خودبخود پیچ کرنے کی کوشش کرتا ہے اگر 'MENDER_UBOOT_AUTO_CONFIGURE = "1" سیٹ ہو۔ زیادہ تر معاملات میں، یہ منظر نامہ بورڈ مینوفیکچررز کی ایڈجسٹمنٹ کی وجہ سے کام نہیں کرتا۔
لیکن Mender کا خود کار کنفیگر شدہ پیچ Mender کلائنٹ کے ساتھ VisionFive SOC کے لیے u-boot کو ایڈجسٹ کرنے کے لیے ایک اچھا نکتہ آغاز ہے۔
خود کار کنفیگر شدہ پیچ حاصل کرنے کے لیے، آپ کو MENDER_UBOOT_AUTO_CONFIGURE = "1" ترتیب کے ساتھ u-boot بٹ بیک کرنا ہو گا:
bitbake u-boot-visionfive
'mender_auto_configured.patch' نامی ایک پیچ فائل ڈائریکٹری 'your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0' میں بنائی گئی ہے۔
کلون شدہ u-boot پر پیچ لگائیں
اس کے بعد، ہم اس mender_auto_configured.patch کو starfive-tech سے کلون شدہ u-boot ریپوزٹری پر لاگو کرتے ہیں۔
cd u-boot-starfive
git apply path-to-patch/mender_auto_configured.patch
u-boot-starfive کو حسب ضرورت بنائیں
u-boot کو درست معلومات حاصل کرنے کے لیے Mender کے متغیرات کو جاننے کی ضرورت ہے جس سے SOC کو Mender سرور کے ساتھ نمونے کو نصب کرنے کے بعد بوٹ کرنا چاہیے۔
اس لیے ہمیں Mender متغیرات حاصل کرنے کے لیے 'u-boot-starfive/include/configs/starfive-jh7100.h' فائل کو اپنی مرضی کے مطابق بنانا ہو گا اور یہ نظم کرنا ہو گا کہ کس پارٹیشن سے بوٹ کیا جائے:
#define STARLIGHT_FEDORA_BOOTENV \
"bootdir=/boot\0" \
"bootenv2=uEnv.txt\0" \
"bootenv3=uEnv3.txt\0" \
"mmcdev=0\0" \
"mmcpart=2\0"
#define CONFIG_EXTRA_ENV_SETTINGS \
MENDER_ENV_SETTINGS \
STARLIGHT_FEDORA_BOOTENV \
"loadaddr=0xa0000000\0" \
"loadbootenv=fatload ${mender_uboot_boot} ${loadaddr} ${bootenv}\0" \
"ext4bootenv2=ext4load ${mender_uboot_root} ${loadaddr} ${bootdir}/${bootenv2}\0" \
"ext4bootenv3=ext4load ${mender_uboot_root} ${loadaddr} ${bootdir}/${bootenv3}\0" \
"importbootenv=echo Importing environment from mmc mender_uboot_dev ${mender_uboot_boot} ...; " \
"env import -t ${loadaddr} ${filesize}\0" \
"mmcbootenv=run mender_setup; " \
"echo mender_kernel_root_name ${mender_kernel_root_name} ...; " \
"echo mender_boot_part_name ${mender_boot_part_name} ...; " \
"setenv bootpart ${mender_uboot_root}; " \
"mmc dev ${mender_uboot_dev}; " \
"if mmc rescan; then " \
"run loadbootenv && run importbootenv; " \
"if test ${mender_kernel_root_name} = /dev/mmcblk0p2; then " \
"run ext4bootenv2 && run importbootenv; " \
"fi; " \
"if test ${mender_kernel_root_name} = /dev/mmcblk0p3; then " \
"run ext4bootenv3 && run importbootenv; " \
"fi; " \
"if test -n $uenvcmd; then " \
"echo Running uenvcmd ...; " \
"run uenvcmd; " \
"fi; " \
"fi\0" \
"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
BOOTENV \
BOOTENV_SF
ٹیسٹ '${mender_kernel_root_name}' پوائنٹ ہے اور پھر فیصلہ کریں کہ kernel لوڈ کرنے کے لیے کون سی uEnv-فائل لی جاتی ہے۔
اس کے بعد Yocto میں استعمال کرنے کے لیے u-boot سے ایک مکمل پیچ بنائیں:
git diff --patch > ~/Documents/Yocto/meta-interelectronix-visionfive/recipes-bsp/u-boot/files/0004-u-boot.patch
اس پیچ کو Yocto میں 'u-boot-visionfive_%.bbappend' میں شامل کریں:
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI:append = " \
file://0004-u-boot.patch \
"
بٹ بیک u-boot
'u-boot-visionfive_%.bbappend' میں MENDER_UBOOT_AUTO_CONFIGURE = "1" کو MENDER_UBOOT_AUTO_CONFIGURE = "0" میں تبدیل کریں۔
اب آپ Mender کے خود کار کنفیگر کریں فنکشن کے بغیر اور اپنی مرضی کے پیچ کے ساتھ u-boot بٹ بیک کر سکتے ہیں:
bitbake u-boot-visionfive
دوسرے مرحلے کے بوٹ لوڈر کے ساتھ اپ لوڈ کرنے کے لیے u-boot کو کمپائل کریں
اب آپ u-boot کو ڈائریکٹری 'VisionFive-build/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0/git' میں کمپائل کر سکتے ہیں، جس میں 'bitbake u-boot-visionfive' کے ساتھ شامل کردہ پیچ شامل ہیں۔
- VisionFive SOC کے لیے u-boot کو کمپائل کرنے کا طریقہ u-boot اور kernel کو کمپائل کرنا میں بیان کیا گیا ہے
- VisionFive SOC کے لیے u-boot اپ لوڈ کرنے کا طریقہ ضمیمہ B: فرم ویئر اور u-boot کو اپ ڈیٹ کرنا میں بیان کیا گیا ہے
بٹ بیک Yocto Linux
شامل کردہ Mender کلائنٹ کے ساتھ bitbake Yocto Linux:
bitbake vision-five-image-mender
Linux امیج کو SD کارڈ پر فلیش کریں اور VisionFive SOC کو بوٹ کریں۔ اگر سب کچھ ٹھیک کام کرتا ہے، تو ڈیوائس Mender سرور GUI میں زیر التواء ڈیوائس کے طور پر ظاہر ہوتی ہے۔
'DEVICES' میں، آپ اس ڈیوائس کے لیے بعد میں سافٹ ویئر اپ ڈیٹس لگانے کا نظم کرنے کے لیے اسے قبول اور شامل کر سکتے ہیں۔
Mender کے لیے نمونہ بنانے کا طریقہ VisionFive - Mender - Yocto - حصہ 4 میں دیکھیں۔
کاپی رائٹ لائسنس
کاپی رائٹ © 2022 Interelectronix eKاس پروجیکٹ کا سورس کوڈ GPL-3.0 لائسنس کے تحت لائسنس یافتہ ہے۔
مضامین کے سلسلے کا حصہ 1، Mender کلائنٹ انضمام کے ساتھ Yocto Linux بنانے کے لیے Yocto ماحول کیسے سیٹ اپ کیا جائے۔
مضامین کے سلسلے کا حصہ 2، Mender کلائنٹ انضمام کے ساتھ Yocto Linux بنانے کے لیے Yocto ماحول کیسے سیٹ اپ کیا جائے۔
مضامین کے سلسلے کا حصہ 4، Mender کلائنٹ انضمام کے ساتھ Yocto Linux بنانے کے لیے Yocto ماحول کیسے سیٹ اپ کیا جائے۔