rpi-image-genਕੀ ਹੈ?
rpi-image-gen Raspberry Pi OS-ਅਧਾਰਤ ਚਿੱਤਰ ਤਿਆਰ ਕਰਨ ਲਈ ਇੱਕ ਹਲਕਾ, ਸਕ੍ਰਿਪਟੇਬਲ ਫਰੇਮਵਰਕ ਹੈ। ਇਹ ਇੱਕ ਬੇਸ ਰੂਟ ਫਾਈਲ ਸਿਸਟਮ (Raspberry Pi OS ਲਾਈਟ ਜਾਂ ਫੁੱਲ) ਲੈਂਦਾ ਹੈ ਅਤੇ ਇੱਕ ਰੈਡੀ-ਟੂ-ਫਲੈਸ਼ .img ਫਾਈਲ ਤਿਆਰ ਕਰਨ ਲਈ ਲੇਅਰਡ ਕਸਟਮਾਈਜ਼ੇਸ਼ਨ ਲਾਗੂ ਕਰਦਾ ਹੈ.
ਸੰਖੇਪ ਵਿੱਚ, ਇਹ ਇੱਕ ਪ੍ਰਜਨਨ ਕਰਨ ਯੋਗ ਡੀਡੀ ਵਰਕਫਲੋ ਹੈ - ਸਵੈਚਾਲਿਤ, ਸੰਸਕਰਣ-ਨਿਯੰਤਰਿਤ ਅਤੇ ਬਹੁਤ ਜ਼ਿਆਦਾ ਕੌਂਫਿਗਰ ਕਰਨ ਯੋਗ.
ਇਸ ਦੀ ਵਰਤੋਂ ਕਿਉਂ ਕਰੋ?
Yocto ਜਾਂ Buildrootਦੇ ਉਲਟ, rpi-image-gen ਸਰੋਤ ਤੋਂ ਪੈਕੇਜਾਂ ਨੂੰ ਦੁਬਾਰਾ ਨਹੀਂ ਬਣਾਉਂਦਾ. ਇਸ ਦੀ ਬਜਾਏ, ਇਹ ਡੈਬੀਅਨ ਦੇ ਬਾਈਨਰੀ ਪੈਕੇਜਾਂ ਅਤੇ ਮੌਜੂਦਾ Raspberry Pi ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਦਾ ਲਾਭ ਉਠਾਉਂਦਾ ਹੈ. ਇਹ ਤੁਹਾਨੂੰ ਇਹ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ:
- ਕੌਂਫਿਗਰੇਸ਼ਨ ਫਾਈਲਾਂ, ਸੇਵਾਵਾਂ ਅਤੇ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰੋ
- ਸਿਸਟਮਡ ਯੂਨਿਟਾਂ ਨੂੰ ਸਮਰੱਥ ਜਾਂ ਅਸਮਰੱਥ ਕਰੋ
- ਐਪਲੀਕੇਸ਼ਨਾਂ ਅਤੇ ਨਿਰਭਰਤਾਵਾਂ ਨੂੰ ਪਹਿਲਾਂ ਤੋਂ ਸਥਾਪਤ ਕਰੋ
- ਐਸਐਸਐਚ ਕੁੰਜੀਆਂ, ਵਾਈ-ਫਾਈ ਪ੍ਰਮਾਣ ਪੱਤਰਾਂ ਅਤੇ ਡਿਵਾਈਸ ਆਈਡੀ ਨੂੰ ਏਮਬੈੱਡ ਕਰੋ
ਇਹ ਪ੍ਰੋਟੋਟਾਈਪ ਤੋਂ ਉਤਪਾਦਨ ਤੱਕ ਜਾਣ ਦਾ ਸਭ ਤੋਂ ਤੇਜ਼ ਤਰੀਕਾ ਹੈ, ਜਦੋਂ ਕਿ ਤੁਹਾਡੇ ਸਿਸਟਮ ਸੈਟਅਪ 'ਤੇ ਪੂਰਾ ਨਿਯੰਤਰਣ ਰੱਖਦਾ ਹੈ.
ਮੂਲ ਧਾਰਨਾਵਾਂ
ਇੱਕ ਆਮ 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 — ਗਲੋਬਲ ਮਾਪਦੰਡਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਹੋਸਟਨਾਮ, ਉਪਭੋਗਤਾ ਪ੍ਰਮਾਣ ਪੱਤਰੀ, ਵੰਡ ਦੇ ਆਕਾਰ, ਅਤੇ 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 - ਸਾੱਫਟਵੇਅਰ ਪੈਕੇਜਾਂ, ਕੌਂਫਿਗਰੇਸ਼ਨ ਫਾਈਲਾਂ, ਅਤੇ ਕਸਟਮ ਐਡੀਸ਼ਨਾਂ ਦੀ ਸੂਚੀ ਦਿੰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਇੱਕ 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"ਇੱਕ ਸੰਪੂਰਨ ਕਾਰਜਸ਼ੀਲ ਉਦਾਹਰਣ ਲਈ, ਵੇਖੋ: 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 ਨੂੰ ਸੀਆਈ / ਸੀਡੀ ਪਾਈਪਲਾਈਨ ਵਿੱਚ ਏਕੀਕ੍ਰਿਤ ਕਰ ਸਕਦੇ ਹੋ (ਉਦਾਹਰਨ ਲਈ, GitHub Actions, GitLab CI, Jenkins).
ਹਰੇਕ ਬਿਲਡ ਇੱਕ ਟਰੇਸਯੋਗ, ਸੰਸਕਰਣ ਵਾਲੀ ਕਲਾਕ੍ਰਿਤੀ ਤਿਆਰ ਕਰਦਾ ਹੈ, ਭਰੋਸੇਮੰਦ ਅਪਡੇਟਾਂ ਅਤੇ ਅਸਾਨ ਡੀਬੱਗਿੰਗ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ - ਉਤਪਾਦਨ-ਗ੍ਰੇਡ ਦੀ ਤਾਇਨਾਤੀ ਵੱਲ ਇੱਕ ਮਹੱਤਵਪੂਰਣ ਕਦਮ.
ਇਸ ਲੜੀ ਦੇ ਲੇਖ
- Raspberry Pi Compute Module 5ਲਈ ਉਤਪਾਦਨ-ਤਿਆਰ Linux ਬਣਾਉਣਾ
- ਸਟਾਕ ਓਐੱਸ ਤੋਂ ਪ੍ਰੋਡਕਸ਼ਨ ਪਲੈਟਫਾਰਮ ਤੱਕ
- rpi-image-genਨਾਲ Raspberry Pi OS ਨੂੰ ਅਨੁਕੂਲਿਤ ਕਰਨਾ
- ਸਿਸਟਮ ਦੀ ਮਜ਼ਬੂਤੀ - ਏ / ਬੀ ਰੂਟ ਫਾਈਲ ਸਿਸਟਮ ਲੇਆਉਟ ਨੂੰ ਡਿਜ਼ਾਈਨ ਕਰਨਾ
- ਪ੍ਰੋਵੀਜ਼ਨਿੰਗ - 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: https://github.com/sbabic/swugenerator