u-boot सेटअप Mender
हम डेवलपमेंट के लिए Yocto Kirkstone ब्रांच का इस्तेमाल कर रहे हैं। हम यह मानकर चल रहे हैं कि आपके पास पहले से ही एक कार्यशील डेवलपमेंट परिवेश इंस्टॉल किया हुआ है और आपने VisionFive - Mender - Yocto - भाग 1 और VisionFive - Mender - Yocto - Part 2 में बताए गए तरीके से अपना परिवेश सेट अप कर लिया है।
u-boot VisionFive बोर्ड
VisionFive RISC-V SBC दो बूटलोडर का इस्तेमाल करता है - पहला secondBoot और दूसरा u-boot। इसके काम करने का तरीका VisionFive SBC क्विक स्टार्ट गाइड में बताया गया है।
इन आवश्यकताओं को मैनेज करने का मतलब है कि
- हमें u-boot को https://github.com/starfive-tech/u-boot से Mender की सेटिंग के साथ पैच करना होगा
- हमें u-boot को yocto के साथ बिटबेक करना होगा
- सेकंड स्टेज बूटलोडर के साथ अपलोड करने के लिए हमें u-boot को मैन्युअल रूप से कम्पाइल करना होगा
u-boot को पैच करने का तरीका
सबसे पहले, starfive-tech से मिले u-boot डेरिवेटिव को क्लोन करें, ताकि वह कोड बेस मिल सके जिस पर हमें काम करना है।
git clone -b JH7100_upstream https://github.com/starfive-tech/u-boot.git
Mender का ऑटो-कॉन्फ़िगर्ड पैच
अगर 'MENDER_UBOOT_AUTO_CONFIGURE = "1"' सेट किया जाता है, तो Yocto का meta-mender-core Mender की आवश्यकताओं के अनुसार u-boot को ऑटोमैटिक रूप से पैच करने की कोशिश करता है। बोर्ड निर्माताओं के एडजस्टमेंट की वजह से, ज़्यादातर मामलों में यह परिदृश्य काम नहीं करता
लेकिन Mender का ऑटोकॉन्फ़िगर्ड पैच, Mender क्लाइंट वाले VisionFive SOC के लिए u-boot को एडजस्ट करने का एक अच्छा शुरुआती तरीका है।
ऑटोकॉन्फ़िगर्ड पैच हासिल करने के लिए, आपको MENDER_UBOOT_AUTO_CONFIGURE = "1" सेटिंग के साथ u-boot को बिटबेक करना होगा:
bitbake u-boot-visionfive
'your-build-directory/tmp/work/starfive_visionfive_jh7100-poky-linux/u-boot-visionfive/1_v2022.03-r0' डायरेक्टरी में 'mender_auto_configured.patch' नाम की एक पैच फ़ाइल बना दी जाती है।
क्लोन किए गए 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 को कस्टमाइज़ करें
Mender सर्वर के साथ किसी आर्टिफ़ैक्ट को डिप्लॉय करने के बाद SOC किस पार्टिशन से बूट होना चाहिए इसकी सही जानकारी हासिल करने के लिए u-boot को 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}' को टेस्ट करके देखें कि वह पॉइंट है और फिर तय करें कि केर्नल को लोड करने के लिए किस uEnv-file का इस्तेमाल किया जाए।
इसके बाद, 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' के साथ जोड़े गए पैच मौजूद हैं।
- u-boot को VisionFive SOC के लिए कम्पाइल करने का तरीका u-boot और केर्नल को कम्पाइल करना के तहत विस्तार से बताया गया है
- VisionFive SOC के लिए u-boot को अपलोड करने का तरीका परिशिष्ट B: फ़र्मवेयर और u-boot अपडेट करना के तहत विस्तार से बताया गया है
Yocto Linux को बिटबेक करें
Yocto Linux को शामिल किए गए Mender क्लाइंट के साथ बिटबेक करें:
bitbake vision-five-image-mender
Linux इमेज को SD कार्ड पर फ़्लैश करें और VisionFive SOC को बूट करें। अगर सबकुछ अच्छी तरह काम करता है, तो डिवाइस Mender सर्वर GUI में पेंडिंग डिवाइस के रूप में दिखाई देता है।
'डिवाइस' के तहत, आप इस डिवाइस के लिए बाद में आने वाले सॉफ़्टवेयर अपडेट के डिप्लॉयमेंट मैनेज करने के लिए आप इसे एक्सेप्ट और शामिल कर सकते हैं।
Mender के लिए आर्टिफ़ैक्ट बनाने का तरीका VisionFive - Mender - Yocto - भाग 4 में देखें।
कॉपीराइट लाइसेंस
कॉपीराइट © 2022 Interelectronix e.K.
प्रोजेक्ट का सोर्स-कोड GPL-3.0 लाइसेंस के तहत लाइसेंस पर दिया जाता है।
लेखों की श्रृंखला का भाग 1, Mender क्लाइंट के इंटीग्रेशन के साथ Yocto Linux बनाने के लिए Yocto परिवेश कैसे सेट अप करें।
लेखों की श्रृंखला का भाग 2, Mender क्लाइंट के इंटीग्रेशन के साथ Yocto Linux बनाने के लिए Yocto परिवेश कैसे सेट अप करें।
लेखों की श्रृंखला का भाग 4, Mender क्लाइंट के इंटीग्रेशन के साथ Yocto Linux बनाने के लिए Yocto परिवेश कैसे सेट अप करें।