Skip to main content

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 ਲਾਈਟ
  • ਓਵਰਲੇਅ ਡਾਇਰੈਕਟਰੀ - ਤੁਹਾਡੀਆਂ ਵਾਧੂ ਫਾਈਲਾਂ, ਸੇਵਾਵਾਂ ਅਤੇ ਸਕ੍ਰਿਪਟਾਂ
  • ਅਨੁਕੂਲਤਾ ਹੁੱਕ - ਪ੍ਰੀ- ਅਤੇ ਪੋਸਟ-ਫਾਈਲ ਸਿਸਟਮ ਇੰਜੈਕਸ਼ਨ ਸਕ੍ਰਿਪਟ
  • ਬਿਲਡ ਕੌਂਫਿਗਰੇਸ਼ਨ - ਰੂਟਫਸ, ਬੂਟ ਪਾਰਟੀਸ਼ਨ, ਲੇਆਉਟ ਅਤੇ ਵਰਜਨ ਟੈਗਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ

rpi-image-gen ਯੋਜਨਾ

ਇਕੱਠੇ ਮਿਲ ਕੇ, ਇਹ ਤੱਤ ਇੱਕ ਇਕਸਾਰ, ਬੂਟਯੋਗ ਚਿੱਤਰ ਤਿਆਰ ਕਰਦੇ ਹਨ ਜੋ ਪ੍ਰਬੰਧ ਲਈ ਤਿਆਰ ਹੈ.

ਇੰਸਟਾਲੇਸ਼ਨ

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: y

layer/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).

ਹਰੇਕ ਬਿਲਡ ਇੱਕ ਟਰੇਸਯੋਗ, ਸੰਸਕਰਣ ਵਾਲੀ ਕਲਾਕ੍ਰਿਤੀ ਤਿਆਰ ਕਰਦਾ ਹੈ, ਭਰੋਸੇਮੰਦ ਅਪਡੇਟਾਂ ਅਤੇ ਅਸਾਨ ਡੀਬੱਗਿੰਗ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ - ਉਤਪਾਦਨ-ਗ੍ਰੇਡ ਦੀ ਤਾਇਨਾਤੀ ਵੱਲ ਇੱਕ ਮਹੱਤਵਪੂਰਣ ਕਦਮ.