rpi-image-genक्या है?
rpi-image-gen Raspberry Pi OS-आधारित छवियां बनाने के लिए एक हल्का, स्क्रिप्टेबल ढांचा है। यह एक बेस रूट फाइल सिस्टम (Raspberry Pi OS लाइट या फुल) लेता है और रेडी-टू-फ्लैश .img फ़ाइल बनाने के लिए स्तरित अनुकूलन लागू करता है।
संक्षेप में, यह एक प्रतिलिपि प्रस्तुत करने योग्य डीडी वर्कफ़्लो है - स्वचालित, संस्करण-नियंत्रित और अत्यधिक कॉन्फ़िगर करने योग्य।
इसका उपयोग क्यों करें?
Yocto या Buildrootके विपरीत, rpi-image-gen स्रोत से पैकेज का पुनर्निर्माण नहीं करता है। इसके बजाय, यह डेबियन के बाइनरी पैकेज और मौजूदा Raspberry Pi बुनियादी ढांचे का लाभ उठाता है। यह आपको इसकी अनुमति देता है:
- कॉन्फ़िगरेशन फ़ाइलें, सेवाएँ और उपयोगकर्ता जोड़ें
- सिस्टमड इकाइयों को सक्षम या अक्षम करें
- एप्लिकेशन और निर्भरताएं प्रीइंस्टॉल करें
- SSH कुंजियाँ, वाई-फ़ाई क्रेडेंशियल और डिवाइस आईडी एम्बेड करें
यह आपके सिस्टम सेटअप पर पूर्ण नियंत्रण रखते हुए प्रोटोटाइप से उत्पादन तक जाने का सबसे तेज़ तरीका है।
मूल अवधारणाएं
एक विशिष्ट rpi-image-gen परियोजना में निम्नलिखित घटक होते हैं:
- आधार छवि - आधिकारिक Raspberry Pi OS लाइट
- ओवरले निर्देशिका - आपकी अतिरिक्त फ़ाइलें, सेवाएँ और स्क्रिप्ट
- अनुकूलन हुक - फ़ाइल सिस्टम इंजेक्शन स्क्रिप्ट से पहले और बाद में
- कॉन्फ़िगरेशन बनाएं - रूटएफ, बूट विभाजन, लेआउट और संस्करण टैग को परिभाषित करना
साथ में, ये तत्व एक सुसंगत, बूट करने योग्य छवि का उत्पादन करते हैं जो प्रावधान के लिए तैयार है।
इंस्टालेशन
https://github.com/raspberrypi/rpi-image-genपर इंस्टॉलेशन निर्देशों का पालन करें।
उदाहरण
एक विशिष्ट परियोजना इस तरह दिख सकती है:
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.yamlसबसे महत्वपूर्ण फाइलें YAML कॉन्फ़िगरेशन फाइलें हैं - ये परिभाषित करती हैं कि जेनरेट की गई छवि में कौन से पैकेज, फ़ाइलें और सेटिंग्स शामिल हैं।>
कॉन्फ़िगरेशन उदाहरण
config/deb12-cm5-min-desktop.yaml - होस्टनाम, उपयोगकर्ता क्रेडेंशियल्स, विभाजन आकार और एसएसएच कुंजियों जैसे वैश्विक मापदंडों को परिभाषित करता है:
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 - सॉफ़्टवेयर पैकेज, कॉन्फ़िगरेशन फ़ाइलों और कस्टम परिवर्धन को सूचीबद्ध करता है, जैसे कि 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"एक पूर्ण कार्यशील उदाहरण के लिए, देखें: <a href="https://github.com/इंटरइलेक्ट्रोनिक्स/rpi-image-gen-प्रोजेक्ट्स/ट्री/मेन/डेब12-सेमी5-मिनट-डेस्कटॉप" लक्ष्य="_blank">https://github.com/interelectronix/rpi-image-gen-projects/tree/main/deb12-cm5-min-desktop
बिल्ड कमांड
छवि बनाने के लिए, चलाएँ:
rpi-image-gen build -S path-to-project-folder -c deb12-cm5-min-desktop.yamlसीआई/सीडी और प्रतिलिपि प्रस्तुत करने योग्यता
एक बार जब आपकी बिल्ड स्क्रिप्ट नियतात्मक हो जाती है, तो आप rpi-image-gen को CI/CD पाइपलाइन (जैसे, GitHub Actions, GitLab CI, Jenkins) में एकीकृत कर सकते हैं।
प्रत्येक बिल्ड एक ट्रेस करने योग्य, संस्करणित आर्टिफैक्ट का उत्पादन करता है, जो विश्वसनीय अपडेट और आसान डिबगिंग को सक्षम करता है - उत्पादन-ग्रेड परिनियोजन की दिशा में एक महत्वपूर्ण कदम।
इस श्रृंखला में लेख
- Raspberry Pi Compute Module 5के लिए उत्पादन-तैयार Linux का निर्माण
- स्टॉक ओएस से प्रोडक्शन प्लेटफॉर्म तक
- rpi-image-genके साथ Raspberry Pi OS को अनुकूलित करना
- सिस्टम मजबूती - ए/बी रूट फाइल सिस्टम लेआउट डिजाइन करना
- Provisioning — rpi-sb-provisionerके साथ पहले बूट को स्वचालित करना
- OTA और जीवनचक्र — SWUpdateके साथ सॉफ़्टवेयर अपडेट
स्रोत
- 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: <a href="https://github.com/sbabic/swugenerator" लक्ष्य = "_blank">https://github.com/sbabic/swugenerator