תוכנה משובצת - Yocto לבנות Raspberry Pi 4 צילום מסך של מחשב

Yocto לבנות Raspberry Pi 4

בסביבת Docker

יוקטו פועל במיכל עגינה

במסמכי yocto יש פרק (2.2.2) להגדרת CROss PlatformS (CROPS) כחלופה להגדרת מחשב לינוקס מקורי. חלופה זו משתמשת בגורם מכיל Docker כדי לבנות תמונת מערכת מותאמת אישית, למשל עבור Raspberry Pi.

למרבה הצער, יש כמה טעויות קטנות בתיעוד להגדרת סביבה זו עבורי ב- Mac OS X (מונטריי).

הגדרת גורם מכיל של Docker עבור Mac OS X

עבור כדי להשתמש Docker CROPS על לינוקס, Windows ו- Mac OS X, יש כמה הגדרות מיוחדות הדרושות. לפני הגדרת הגורם המכיל עבור Yocto, עליך ליצור אמצעי אחסון Docker כדי לאחסן את התוצאות. גם מיכל סמבה Docker משמש כדי לספק את הקבצים ב- Mac OS X.

יצירת אמצעי אחסון של Docker

בחלון מסוף הקלד את הפקודות הבאות:

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

יצירה והפעלה של מיכל סמבה

OSX לא יאפשר לך להתחבר לשיתוף סמבה הפועל באופן מקומי. לכן, תחילה עליך ליצור כינוי עבור 127.0.0.1 של 127.0.0.2.

sudo ifconfig lo0 127.0.0.2 alias up

לאחר מכן צור את מיכל הסמבה, המאפשר לך לראות את הקבצים באמצעי האחסון של Docker:

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" ולחץ על "התחבר". עכשיו אתה אמור לראות את התוכן של נפח docker במוצא.

צור והפעל את הגורם המכיל של Yocto

כדי ליצור ו/או להפעיל את סוג הגורם המכיל Yocto בחלון מסוף:

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

הגדרת סביבת בנייה בגורם המכיל

כאשר הגורם המכיל של Docker מופעל, יש לך בקשת מסוף שנראית כך: "pokyuser@d4ddfe042587:/workdir".

עכשיו אתה יכול להגדיר את סביבת הבנייה.

גרסת שיבוט פוקי

במקרה שלי אני משתמש בגרסה 3.4 של Yocto עם השם "Honister", מכיוון ששכבות המטא-פטל אינן זמינות לגרסאות פוקי חדשות יותר בשלב זה. בפעם הראשונה אתה צריך לשכפל את מאגר פוקי:

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

הגדרת תצורת build

השאר את ספריית poky-honister, כך שאתה נמצא /workdir. כעת מקור סביבת הבנייה עם הסקריפט oe-init-build-env.

cd ..
source poky-honister/oe-init-build-env rpi-build

ספרייה חדשה "rpi-build" - אתה יכול שם את זה כרצונך - וספריית conf עם הקבצים bblayers.conf, local.conf ו templateconf.cfg נוצר.

מכיוון שאין עורך טקסט מותקן במיכל, עליך לערוך את קבצי התצורה באמצעי האחסון סמבה רכוב ב- Mac OS X או להתקין עורך טקסט במיכל. לשם כך, עליך לפתוח חלון מסוף שני - בזמן שמיכל yocto פועל - ולהתחיל פגז bash במיכל עם הרשאות שורש:

docker exec -it --user=root crops-poky bash
apt-get install nano
exit
אז אתה יכול לערוך את קבצי config במיכל yocto כמו pokyuser.

הערה

העורך אינו מותקן לצמיתות. לאחר עזיבת המכולה וכניסה שוב, עליך להתקין אותו שוב

#### ראשית הוסף את meta-raspberry בקובץ bblayers.conf
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" -> MACHINE ?? = "raspberrypi4-64"

תלוי באיזה פטל אתה רוצה להשתמש (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: תמונה לקונסולה בלבד עם פונקציונליות מלאה יותר של מערכת לינוקס מותקנת.

לאחר זמן מה - שיכול להיות שעות שרת בפעם הראשונה - bitbake מסיים ואתה מוצא את קובץ sdimg בספרייה הבאה:

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

תצורות נוספות

תצורות חומרה נוספות של Raspberry

כדי להגדיר הגדרות חומרה ספציפיות, באפשרותך לעיין ב- extra-apps.md וב- extra-build-config.md. אתה מוצא קבצים אלה גם בספריית meta-raspberrypi/docs.

שכבת המטא מספקת גם תצורת תמונה "rpi-test-image" לשימוש עם bitbake. התמונה מבוססת על "Core-image-base" הכולל את רוב החבילות במטא-פטל וכמה דוגמאות מדיה.

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 e.K.
קוד המקור של פרויקט זה מורשה תחת רישיון GPL-3.0*.

תודות

המקורות המשמשים ליצירת הוראות אלה:

תודה לכולם.