Perisian Terbenam - Yocto membina Raspberry Pi 4 tangkapan skrin komputer

Yocto bina Raspberry Pi 4

dalam persekitaran docker

Yocto berjalan dalam bekas docker

Dalam dokumen yocto terdapat bab (2.2.2) untuk menubuhkan Platform CROss (CROPS) sebagai alternatif untuk menubuhkan pc linux asli. Alternatif ini menggunakan bekas docker untuk membina imej sistem tersuai contohnya untuk Raspberry Pi.

Malangnya terdapat beberapa kesilapan kecil dalam dokumentasi untuk menubuhkan persekitaran ini untuk saya di Mac OS X (Monterey).

Bekas dok persediaan untuk Mac OS X

Untuk menggunakan docker CROPS pada Linux, Windows dan Mac OS X, terdapat beberapa tetapan khas yang diperlukan. Sebelum menyediakan bekas untuk Yocto, anda mesti membuat kelantangan docker untuk menyimpan hasilnya. Juga bekas samba docker digunakan untuk menyediakan fail dalam Mac OS X.

Buat kelantangan docker

Dalam tetingkap terminal taipkan arahan berikut:

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

Buat dan jalankan bekas samba

OSX tidak akan membenarkan anda menyambung kepada perkongsian samba yang sedang berjalan secara tempatan. Oleh itu, anda perlu membuat alias terlebih dahulu untuk 127.0.0.1 daripada 127.0.0.2.

sudo ifconfig lo0 127.0.0.2 alias up

Kemudian buat bekas samba, yang membolehkan anda melihat fail dalam jumlah docker:

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

Oleh kerana anda sentiasa perlu mempunyai alias untuk menyambung ke bekas samba, anda boleh menggabungkan permulaan samba dan alias seperti berikut:

docker start samba && sudo ifconfig lo0 127.0.0.2 alias up

Kini anda boleh membuka workdir dalam pelayar fail. Dalam pencari tekan "Command-K" dan dalam kotak alamat pelayan taip "smb://127.0.0.2/workdir" dan klik "Sambung". Sekarang anda sepatutnya melihat kandungan kelantangan docker dalam finder.

Buat dan mulakan bekas Yocto

Untuk membuat dan/atau memulakan jenis kontena Yocto dalam tetingkap terminal:

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

Persekitaran binaan persediaan dalam bekas

Apabila bekas docker dimulakan, anda mempunyai gesaan terminal yang kelihatan seperti ini: "pokyuser@d4ddfe042587:/workdir".

Kini anda boleh menyediakan persekitaran binaan.

Klon versi poky

Dalam kes saya, saya menggunakan versi Yocto 3.4 dengan nama "Honister", kerana lapisan meta-raspberry tidak tersedia untuk versi poky yang lebih baru pada masa ini. Buat pertama kalinya anda perlu mengklon repositori poky:

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

Jika anda ingin mengemas kini kepada versi terkini:

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

Lapisan meta tambahan untuk Raspberry Pi

Tukar kepada "poky-honister" dan klon repositori berikut: meta-raspberry, meta-openembedded dan jika diperlukan 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

Persediaan membina konfigurasi

Biarkan direktori poky-honister, supaya anda berada dalam /workdir. Sekarang sumber persekitaran binaan dengan skrip oe-init-build-env.

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

Direktori baru "rpi-build" - anda boleh menamakannya seperti yang anda mahu - dan direktori conf dengan fail bblayers.conf, local.conf dan templateconf.cfg dicipta.

Oleh kerana tiada editor teks dipasang di dalam bekas, anda sama ada perlu mengedit fail konfigurasi dalam volum samba yang dipasang dalam Mac OS X atau perlu memasang editor teks dalam bekas. Untuk melakukan ini, anda mesti membuka tetingkap terminal kedua - semasa bekas yocto sedang berjalan - dan mulakan cangkerang bash dalam bekas dengan keistimewaan akar:

docker exec -it --user=root crops-poky bash
apt-get install nano
exit
Kemudian anda boleh mengedit fail konfigurasi dalam bekas yocto sebagai pokyuser.

Ambil perhatian

Editor tidak dipasang secara kekal. Selepas meninggalkan bekas dan masuk semula, anda perlu memasangnya semula

#### Mula-mula tambah meta-raspberry dalam fail bblayers.conf
nano conf/bblayers.conf

Tambah "/workdir/poky-honister/meta-raspberrypi " supaya kelihatan seperti

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

dan simpan.

Kedua edit tempatan.conf

Edit fail local.conf:

nano conf/local.conf

Ubah baris berikut:

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

Bergantung kepada Raspberry yang anda mahu gunakan (raspberrypi0, raspberrypi0w, raspberrypi3, raspberrypi3-64, raspberrypi4, raspberrypi4-64, dll)

Nyahcomment baris berikut:

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

Tambah baris berikut pada akhir, untuk mendapatkan sdimg untuk berkelip ke kad SD:

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

Simpan fail local.conf.

Bitbake imej pertama

Kini anda mempunyai tetapan minimum untuk membina imej pertama:

bitbake -k core-image-minimal

Dalam dokumentasi Yocto anda dapati penerangan ringkas mengenai perihalan imej yang tersedia.

Sebagai contoh:

  • teras imej-minimum: Imej kecil hanya mampu membenarkan peranti boot.
  • asas imej teras: Imej konsol sahaja yang menyokong sepenuhnya perkakasan peranti sasaran.
  • core-image-full-cmdline: Imej konsol sahaja dengan fungsi sistem Linux yang lebih lengkap dipasang.

Selepas beberapa ketika - yang boleh menjadi jam pelayan untuk kali pertama - bitbake selesai dan anda mendapati fail sdimg dalam direktori berikut:

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

Konfigurasi tambahan

Konfigurasi perkakasan Raspberry tambahan

Untuk menetapkan tetapan perkakasan tertentu, anda boleh melihat kepada extra-apps.md dan extra-build-config.md. Anda dapati fail ini juga terdapat dalam direktori meta-raspberrypi/docs.

Lapisan meta juga menyediakan konfigurasi imej "rpi-test-image" untuk digunakan dengan bitbake. Imej ini berdasarkan "asas imej teras" yang merangkumi kebanyakan pakej dalam meta-raspberrypi dan beberapa sampel media.

bitbake -k rpi-test-image

 

Konfigurasi perisian tambahan

Bergantung pada konfigurasi binaan imej yang anda gunakan, anda mungkin perlu memasang pakej perisian tambahan.

Anda boleh melakukan ini, dengan menambah beberapa tetapan ke fail local.conf.

Contohnya tambah baris berikut, untuk mengesetkan ssh-server, pi-user dan 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"

Atau tambah ular sawa:

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

Ambil perhatian

Ruang permulaan dalam " python3 python3-pip rpi-gpio raspi-gpio" adalah penting, kerana teks itu ditambah kepada konfigurasi sedia ada dan perlu dipisahkan dengan ruang ini.

Lesen Hak Cipta

Hakcipta Terpelihara © 2022 Interelectronix e.K.
Kod sumber Projek ini dilesenkan di bawah lesen GPL-3.0.

Pengiktirafan

Sumber yang digunakan untuk mencipta Arahan ini:

Terima kasih kepada semua.