rpi-image-genni nini?
rpi-image-gen ni mfumo mwepesi, unaoweza kuandikwa wa kutengeneza picha za Raspberry Pi OS. Inachukua mfumo wa faili wa msingi wa mizizi (Raspberry Pi OS Lite au Kamili) na hutumia ubinafsishaji wa safu ili kutoa faili ya .img iliyo tayari kuangaza.
Kwa asili, ni mtiririko wa kazi wa dd unaoweza kuzalishwa - otomatiki, unaodhibitiwa na toleo, na unaoweza kusanidiwa sana.
Kwa nini utumie?
Tofauti na Yocto au Buildroot, rpi-image-gen haijengi upya vifurushi kutoka kwa chanzo. Badala yake, inatumia vifurushi vya binary vya Debian na miundombinu iliyopo ya Raspberry Pi . Hii inakuruhusu:
- Ongeza faili za usanidi, huduma, na watumiaji
- Washa au uzime vitengo vya systemd
- Sakinisha mapema programu na utegemezi
- Pachika funguo za SSH, vitambulisho vya Wi-Fi na vitambulisho vya kifaa
Ni njia ya haraka zaidi ya kutoka kwa mfano hadi uzalishaji, huku ukiweka udhibiti kamili wa usanidi wa mfumo wako.
Dhana za msingi
Mradi wa kawaida wa rpi-image-gen una vipengele vifuatavyo:
- Picha ya msingi - rasmi Raspberry Pi OS Lite
- Saraka ya kufunika - faili zako za ziada, huduma, na hati
- Ndoano za kubinafsisha - hati za sindano za mfumo wa faili kabla na baada ya faili
- Jenga usanidi - kufafanua rootfs, sehemu za boot, mpangilio, na lebo za toleo
Kwa pamoja, vipengele hivi hutoa picha thabiti, inayoweza kuwashwa ambayo iko tayari kwa utoaji.
Ufungaji
Fuata maagizo ya usakinishaji kwenye https://github.com/raspberrypi/rpi-image-gen.
Mfano
Mradi wa kawaida unaweza kuonekana kama hii:
deb12-cm5-min-desktop
├── README.md
├── config
│ └── deb12-cm5-min-desktop.yaml
├── device
│ ├── cm5-device.yaml
│ └── rootfs-overlay
│ ├── etc
│ │ ├── lightdm
│ │ └── skel
│ └── usr
│ └── local
└── layer
├── image
│ └── simple-dual-nosparse
│ ├── bdebstrap
│ ├── device
│ ├── genimage.cfg.in.btrfs
│ ├── genimage.cfg.in.ext4
│ ├── image.yaml
│ ├── mke2fs.conf
│ ├── pre-image.sh
│ └── setup.sh
└── packages.yamlFaili muhimu zaidi ni faili za usanidi wa YAML - hizi hufafanua ni vifurushi, faili na mipangilio gani imejumuishwa kwenye picha iliyozalishwa.
Mfano wa Usanidi
config/deb12-cm5-min-desktop.yaml - hufafanua vigezo vya kimataifa kama vile jina la mwenyeji, kitambulisho cha mtumiaji, saizi za kizigeu, na funguo za SSH:
device:
layer: cm5-device
hostname: cm5-dev
user1: pi
user1pass: StrongPass!1
image:
layer: image-rpios-nosparse
rootfs_type: ext4
boot_part_size: 512M
root_part_size: 4G
compression: zstd
name: deb12-cm5-min-desktop
layer:
custom: base-packages
ssh:
pubkey_user1: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB" # your custom public key
pubkey_only: ylayer/packages.yaml - huorodhesha vifurushi vya programu, faili za usanidi, na nyongeza maalum, kama vile programu ya Qt:
# METABEGIN
# X-Env-Layer-Name: base-packages
# X-Env-Layer-Desc: Installs base packages
# for sw development.
# X-Env-Layer-Version: 1.0.0
# X-Env-Layer-Requires: debian-bookworm-arm64-multi,
# rpi-debian-bookworm,
# rpi-misc-utils,
# rpi-essential-base,
# rpi-misc-skel,
# rpi-user-credentials,
# systemd-net-min,
# fake-hwclock,
# openssh-server
# METAEND
---
mmdebstrap:
setup-hooks:
- echo "hello - no setup-hooks in base-packages"
packages:
# Firmware to enable SHIFT boot manager and EEPROM maintenance
- raspberrypi-bootloader
- rpi-eeprom
- raspberrypi-ui-mods
- lightdm
- lightdm-gtk-greeter
- labwc
- wf-panel-pi
- lxsession
- lxpanel
- pcmanfm
- lxterminal
- gvfs
- xserver-xorg
- xwayland
- wayland-utils
- wlr-randr
- x11-xserver-utils
- xdg-user-dirs
- xdg-utils
- policykit-1
# helper and utilities
- bash
- sudo
- vim-tiny
- less
- nano
- network-manager
- bash-completion
# library manager
- libinput10
- libinput-bin
- libinput-dev
# sqlite
- sqlite3
- libsqlite3-0
- libsqlite3-dev
customize-hooks:
- echo "hello - customize-hooks in base-packages"
- $BDEBSTRAP_HOOKS/enable-units "$1" lightdm
- sed "s|alias ls='ls --color=auto'|alias ll='ls -al --color=auto'|" /home/$IGconf_device_user1/.bashrc > $1/home/$IGconf_device_user1/.bashrc
- uchroot $1 'mkdir -m 0700 -p ${HOME}/.config/labwc'
- cp "${IGconf_device_assetdir}/rootfs-overlay/etc/skel/.config/labwc/autostart" "$1/home/$IGconf_device_user1/.config/labwc/autostart"
- cp "${IGconf_device_assetdir}/rootfs-overlay/etc/skel/.config/labwc/environment" "$1/home/$IGconf_device_user1/.config/labwc/environment"
- cp "${IGconf_device_assetdir}/rootfs-overlay/etc/skel/.config/labwc/rc.xml" "$1/home/$IGconf_device_user1/.config/labwc/rc.xml"
- chown "${IGconf_device_user1}:${IGconf_device_user1}" "$1/home/$IGconf_device_user1/.config/labwc/autostart"
- chown "${IGconf_device_user1}:${IGconf_device_user1}" "$1/home/$IGconf_device_user1/.config/labwc/environment"
- chown "${IGconf_device_user1}:${IGconf_device_user1}" "$1/home/$IGconf_device_user1/.config/labwc/rc.xml"Kwa mfano kamili wa kufanya kazi, angalia: https://github.com/interelectronix/rpi-image-gen-projects/tree/main/deb12-cm5-min-desktop
Amri ya kujenga
Ili kujenga picha, kimbia:
rpi-image-gen build -S path-to-project-folder -c deb12-cm5-min-desktop.yamlCI / CD na uzazi
Mara tu hati zako za kujenga zinapoamua, unaweza kuunganisha rpi-image-gen kwenye bomba la CI/CD (kwa mfano, GitHub Actions, GitLab CI, Jenkins).
Kila muundo hutoa mabaki yanayoweza kufuatiliwa, yaliyotolewa, kuwezesha masasisho ya kuaminika na utatuzi rahisi - hatua muhimu kuelekea uwekaji wa kiwango cha uzalishaji.
Makala katika mfululizo huu
- Kujenga Linux Tayari kwa Uzalishaji kwa Raspberry Pi Compute Module 5
- Kutoka kwa OS ya hisa hadi jukwaa la uzalishaji
- Kubinafsisha Raspberry Pi OS na rpi-image-gen
- Uimara wa Mfumo - Kubuni Mpangilio wa Mfumo wa Faili wa Mizizi ya A/B
- Utoaji - Kuweka Boot ya Kwanza kiotomatiki na rpi-sb-provisioner
- OTA na Lifecycle - Sasisho za Programu na SWUpdate
Vyanzo
- rpi-image-gen: https://github.com/raspberrypi/rpi-image-gen
- rpi-sb-provisioner: https://github.com/raspberrypi/rpi-sb-provisioner
- SWUpdate: https://github.com/sbabic/swupdate
- swugenerator: https://github.com/sbabic/swugenerator