Panduan Projek Yocto sumber terbuka
Panduan Projek Yocto sumber terbuka untuk Linux tersuai pada Raspberry Pi dengan petua persediaan Docker
Selami Projek Yocto untuk sistem Linux tersuai pada mana-mana perkakasan. Sesuai untuk pembangun dan peminat sistem terbenam . Mula membina sekarang!
Terokai Projek Yocto, inisiatif sumber terbuka untuk mencipta sistem Linux tersuai untuk mana-mana seni bina perkakasan. Belajar menggunakan CROPS untuk pembangunan merentas platform, menyediakan bekas Docker dan membina imej Linux yang disesuaikan untuk peranti terbenam dan IoT. Panduan kami merangkumi persediaan pada macOS, mengkonfigurasi persekitaran binaan dan mengoptimumkan untuk Raspberry Pi. Sama ada anda seorang pemula atau pakar, cari amalan terbaik, alatan dan sokongan komuniti untuk keperluan projek Linux anda.
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
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.