Programu Iliyopachikwa - Yocto kujenga Raspberry Pi 4 picha ya skrini ya kompyuta

Yocto kujenga Raspberry Pi 4

Katika mazingira ya docker

Mwongozo wa Mradi wa Yocto wa chanzo wazi

kuanzisha vidokezo maalum Linux kwenye Raspberry Pi na Docker

Fungua chanzo Yocto Mwongozo wa Mradi wa Linux maalum kwenye Raspberry Pi na vidokezo vya usanidi wa Docker

Dive kwenye Mradi wa Yocto kwa mifumo maalum ya Linux kwenye maunzi yoyote. Kamili kwa watengenezaji na wapenzi wa mifumo iliyopachikwa . Anza ujenzi wa sasa!

Chunguza Mradi wa Yocto, mpango wa chanzo huria wa kuunda mifumo maalum ya Linux kwa usanifu wowote wa maunzi. Jifunze kutumia CROPS kwa ukuzaji wa jukwaa la msalaba, sanidi vyombo vya Docker, na ujenge picha za Linux zilizolengwa kwa vifaa vilivyopachikwa na IoT. Mwongozo wetu unashughulikia usanidi kwenye macOS, kusanidi mazingira ya ujenzi, na kuboresha Raspberry Pi. Iwe wewe ni mwanzoni au mtaalam, pata mazoea bora, zana, na usaidizi wa jamii kwa mahitaji yako ya mradi wa Linux.

Yocto mbio katika kontena docker

Katika hati za yocto kuna sura (2.2.2) ya kuanzisha Jukwaa la CROss (CROPS) kama mbadala wa kuanzisha pc ya asili ya linux. Njia hii mbadala hutumia chombo cha docker kujenga picha ya mfumo iliyoboreshwa kwa mfano kwa Raspberry Pi.

Kwa bahati mbaya kuna makosa kidogo katika nyaraka za kuanzisha mazingira haya kwangu kwenye Mac OS X (Monterey).

Setup docker container kwa Mac OS X

Ili kutumia docker ya CROPS kwenye Linux, Windows na Mac OS X, kuna mipangilio maalum inayohitajika. Kabla ya kuanzisha chombo cha Yocto, lazima uunda kiasi cha docker kuhifadhi matokeo. Pia chombo cha docker samba kinatumika kutoa faili katika Mac OS X.

Unda kiasi cha docker

Katika dirisha la terminal andika amri zifuatazo:

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

Unda na endesha chombo cha samba

OSX haitakuruhusu kuunganisha kwenye sehemu ya samba inayoendesha ndani. Kwa hiyo, kwanza lazima uunde lakabu kwa 127.0.0.1 ya 127.0.0.2.

sudo ifconfig lo0 127.0.0.2 alias up

Kisha unda chombo cha samba, ambacho hukuruhusu kuona faili katika kiasi cha docker:

docker create -t --expose 445 -p 127.0.0.2:445:445 --name samba -v raspberry:/workdir crops/samba

Kwa kuwa utahitaji kila wakati kuwa na lakabu kuungana na chombo cha samba, unaweza kuchanganya mwanzo wa samba na lakabu kama hivyo:

docker start samba && sudo ifconfig lo0 127.0.0.2 alias up

Sasa unaweza kufungua workdir katika kivinjari cha faili. Katika kitafutaji hit "Command-K" na katika aina ya sanduku la anwani ya seva "smb://127.0.0.2/workdir" na ubofye "Unganisha". Sasa unapaswa kuona maudhui ya kiasi cha docker katika finder.

Unda na uanze chombo cha Yocto

Ili kuunda na / au kuanza aina ya kontena la Yocto kwenye dirisha la terminal:

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

Kuweka mazingira ya kujenga katika chombo

Wakati chombo cha docker kimeanzishwa, una kidokezo cha terminal ambacho kinaonekana kama hii: "pokyuser@d4ddfe042587:/workdir".

Sasa unaweza kuweka mazingira ya kujenga.

Toleo la poky ya Clone

Kwa upande wangu ninatumia toleo la Yocto 3.4 na jina "Honister", kwa sababu tabaka za meta-raspberry hazipatikani kwa matoleo mapya ya poky kwa wakati huu. Kwa mara ya kwanza unapaswa kuunda hazina ya poky:

git clone -b honister git://git.yoctoproject.org/poky poky-honister

Ikiwa unataka kusasisha poky kwa toleo la hivi karibuni:

cd poky-honister
git pull --all --prune

Tabaka za ziada za meta kwa Raspberry Pi

Badilisha kuwa "poky-honister" na utengeneze hazina zifuatazo: meta-raspberry, meta-openembedded na ikiwa inahitajika 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

Usanidi wa kujenga usanidi

Acha saraka ya poky-honister, ili uwe kwenye /workdir. Sasa chanzo mazingira ya ujenzi na hati oe-init-build-env.

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

Saraka mpya "rpi-build" - unaweza kuiita kama unavyotaka - na saraka ya conf na faili bblayers.conf, local.conf na templateconf.cfg imeundwa.

Kwa kuwa hakuna mhariri wa maandishi aliyesakinishwa kwenye chombo, lazima uhariri faili za usanidi katika sauti ya samba iliyowekwa katika Mac OS X au lazima usakinishe kihariri cha maandishi kwenye chombo. Ili kufanya hivyo, lazima ufungue dirisha la terminal la pili - wakati chombo cha yocto kinaendeshwa - na uanze ganda la bash kwenye chombo na marupurupu ya mizizi:

docker exec -it --user=root crops-poky bash
apt-get install nano
exit
Kisha unaweza kuhariri faili za usanidi kwenye chombo cha yocto kama pokyuser.

Kumbuka

Mhariri hajasakinishwa kabisa. Baada ya kuondoka kwenye chombo na kuingia tena, lazima uisanidi tena

#### Kwanza ongeza meta-raspberry kwenye faili ya bblayers.conf
nano conf/bblayers.conf

Ongeza "/workdir/poky-honister/meta-raspberrypi " ili ionekane kama

BBLAYERS ?= " \
  /workdir/poky-honister/meta \
  /workdir/poky-honister/meta-poky \
  /workdir/poky-honister/meta-yocto-bsp \
  /workdir/poky-honister/meta-raspberrypi \
  "

na kuiokoa.

Hariri ya pili ya ndani.conf

Hariri faili ya ndani.conf:

nano conf/local.conf

Badilisha mistari ifuatayo:

-MASHINE?? = "qemux86-64" -> MASHINE ?? = "raspberrypi4-64"

Kulingana na Raspberry unayotaka kutumia (raspberrypi0, raspberrypi0w, raspberrypi3, raspberrypi3-64, raspberrypi4, raspberrypi4-64, nk)

Ondoa mistari ifuatayo:

  • DL_DIR ?= "${TOPDIR}/downloads"
  • SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
  • TMPDIR = "${TOPDIR}/tmp"

Ongeza mistari ifuatayo mwishoni, ili kupata sdimg ili kuangaza kwa kadi ya SD:

  • IMAGE_FSTYPES = "ext4.xz rpi-sdimg"
  • SDIMG_ROOTFS_TYPE = "ext4.xz"

Hifadhi faili ya local.conf.

Bitbake picha ya kwanza

Sasa una mipangilio ndogo ya kujenga picha ya kwanza:

bitbake -k core-image-minimal

Katika nyaraka za Yocto unapata maelezo mafupi ya maelezo ya picha yanayopatikana.

Kwa mfano:

  • msingi-picha-minimal: Picha ndogo tu uwezo wa kuruhusu kifaa kuwasha.
  • msingi-picha-msingi: Picha ya kiweko pekee ambayo inasaidia kikamilifu maunzi ya kifaa lengwa.
  • msingi-picha-full-cmdline: Picha ya koni-tu iliyo na utendaji kamili zaidi wa mfumo wa Linux uliosakinishwa.

Baada ya muda - ambayo inaweza kuwa masaa ya seva kwa mara ya kwanza - bitbake inamaliza na unapata faili ya sdimg kwenye saraka ifuatayo:

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

Usanidi wa ziada

Usanidi wa vifaa vya ziada vya Raspberry

Ili kuweka mipangilio maalum ya maunzi, unaweza kuangalia extra-apps.md na extra-build-config.md. Unapata faili hizi pia kwenye saraka ya meta-raspberrypi/docs.

Safu ya meta pia hutoa usanidi wa picha "rpi-test-picha" kutumia na bitbake. Picha hiyo inategemea "msingi wa picha-msingi" ambayo inajumuisha vifurushi vingi katika meta-raspberrypi na sampuli zingine za media.

bitbake -k rpi-test-image

 

Usanidi wa programu ya ziada

Kulingana na muundo wa picha unayotumia, unaweza kuhitaji kusakinisha vifurushi vya ziada vya programu.

Unaweza kufanya hivyo, kwa kuongeza mipangilio fulani kwenye faili ya local.conf.

Kwa mfano ongeza mistari ifuatayo, kuweka ssh-server, mtumiaji wa pi na 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"

Au ongeza python:

IMAGE_INSTALL:append = " python3 python3-pip rpi-gpio raspi-gpio"

Kumbuka

Nafasi ya mwanzo katika " python3 python3-pip rpi-gpio raspi-gpio" ni muhimu, kwa sababu maandishi yamepangwa kwa usanidi uliopo na inahitaji kutengwa na nafasi hii.

Leseni ya Hakimiliki

Copyright © 2022 Interelectronix e.K.
Msimbo huu wa chanzo cha Mradi una leseni chini ya leseni ya GPL-3.0.

Kukiri

Vyanzo vinavyotumika kuunda Maagizo haya:

- https://github.com/crops/poky-container- https://docs.yoctoproject.org/index.html

Shukrani kwa wote.