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সবচেয়ে গুরুত্বপূর্ণ ফাইলগুলি হ'ল ওয়াইএমএল কনফিগারেশন ফাইলগুলি - এগুলি সংজ্ঞায়িত করে যে উত্পন্ন চিত্রটিতে কোন প্যাকেজ, ফাইল এবং সেটিংস অন্তর্ভুক্ত রয়েছে।
কনফিগারেশন উদাহরণ
কনফিগ / 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: y- লেয়ার / packages.yaml - সফ্টওয়্যার প্যাকেজ, কনফিগারেশন ফাইল এবং কাস্টম সংযোজনগুলি যেমন কিউটি অ্যাপ্লিকেশনের তালিকা করে:
# 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 কাস্টমাইজ করা
- সিস্টেম দৃঢ়তা - একটি A/B রুট ফাইল সিস্টেম লেআউট ডিজাইন করা
- প্রভিশনিং - 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