From 08c0200fdad15d2d866554f33656ddf7f129a1d5 Mon Sep 17 00:00:00 2001 From: Bryan Date: Tue, 28 Jun 2022 21:57:57 -0400 Subject: [PATCH] readme updates, script changes --- README.md | 12 +- Rocky8_Rpi4.ks => Rocky8_Rpi.ks | 0 ...8_Rpi4_mkimage.sh => createRocky8_Image.sh | 31 +- logs/LOGFILE | 383 ++++++++++++++++++ logs/create_image220628.log | 0 readme.image.txt | 2 +- 6 files changed, 412 insertions(+), 16 deletions(-) rename Rocky8_Rpi4.ks => Rocky8_Rpi.ks (100%) rename Rocky8_Rpi4_mkimage.sh => createRocky8_Image.sh (53%) create mode 100644 logs/LOGFILE create mode 100644 logs/create_image220628.log diff --git a/README.md b/README.md index 3593aab..4f2b947 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Scripts and kickstarts for building Rocky Linux for Raspberry Pi ## Purpose of this Repo -This repository contains kickstart scripts and commands for producing your own Rocky Linux 8 image for the Raspberry Pi. It's intended mostly for developers or other technical users. If you are simply interested in using Rocky on your Pi, it's much easier to grab the latest image from (currently): https://rocky.lowend.ninja/RockyRpi/RockyRpi_Images/ +This repository contains kickstart scripts and commands for producing your own Rocky Linux 8 image for the Raspberry Pi. It's intended mostly for developers or other technical users. If you are simply interested in using Rocky on your Pi, it's much easier to grab the latest image from (currently): https://dl.rockylinux.org/pub/rocky/8/rockyrpi/aarch64/images/ The readme.image.txt file has information and instructions for those interested in downloading and using the ready-made image. @@ -13,7 +13,9 @@ The readme.image.txt file has information and instructions for those interested Producing the Rpi Image requires: * A Fedora or EL-based distribution (Rocky/CentOS/RHEL/etc.) **running on aarch64 hardware** -* git +* Packages + * git + * EPEL repo enabled (extra packages for enterprise linux) * The appliance-creator program from appliance-tools package ( ```sudo dnf install appliance-tools``` ) @@ -23,7 +25,7 @@ The included script to create the image is quite simple. Simply run it (with su For example: -`sudo ./Rocky8_Rpi4_mkimage.sh /home/myhomefolder/Rocky8_image/` +`sudo ./createRocky8_Image.sh /home/myhomefolder/Rocky8_image/` The kickstart/image build process takes approximately 10 minutes on a Raspberry Pi 4 with a decently fast internet connection. @@ -31,9 +33,7 @@ The kickstart/image build process takes approximately 10 minutes on a Raspberry ## Customizing the Kickstart -All the setup logic for the image is contained within the kickstart file (Rocky8_Rpi4.ks). It is intended to be readable and well documented, and you can of course change it anyway you please to produce custom images yourself. - -Additionally, the mkimage script is very simple, and you can certainly customize it (or just run your own command) if you need to change the appliance-creator settings. +All the setup logic for the image is contained within the kickstart file (Rocky8_Rpi.ks). It is intended to be readable and well documented, and you can of course change it anyway you please to produce custom images yourself. # Contributing diff --git a/Rocky8_Rpi4.ks b/Rocky8_Rpi.ks similarity index 100% rename from Rocky8_Rpi4.ks rename to Rocky8_Rpi.ks diff --git a/Rocky8_Rpi4_mkimage.sh b/createRocky8_Image.sh similarity index 53% rename from Rocky8_Rpi4_mkimage.sh rename to createRocky8_Image.sh index b899dee..ef2b0ea 100755 --- a/Rocky8_Rpi4_mkimage.sh +++ b/createRocky8_Image.sh @@ -1,28 +1,41 @@ #!/bin/bash - # Simple script that runs a Rocky Raspberry pi creation (via appliance-creator), then inserts a UUID to the kernel boot line of the image # after-the-fact # # Usage: ./Rocky8_Rpi4_mkimage.sh /path/to/outputfolder/ # -# # Needs to be run in the same directory as the rocky rpi kickstart, as it relies on it! # - # Exit with error if we don't have an output directory: -OUTDIR=$1 -if [[ -z "$OUTDIR" ]]; then +OUTDIR=$1 +LOGDIR="logs" +LOGFILE="/create_image`date +"%y%m%d"`.log" +LOGFILE2="create_image`date +"%y%m%d"`.log.2" + +if [[ -z "${OUTDIR}" ]]; then echo "Need to run this script with a path to output directory. Like: ${0} /path/to/output/" exit 1 fi -mkdir -p "${OUTDIR}" +if [[ -d ${LOGDIR} ]]; then + echo "$LOGDIR exists..." +else + mkdir -p "${LOGDIR}" + touch $LOGDIR/$LOGFILE +fi +if [[ -d ${OUTDIR} ]]; then + echo "$OUTDIR exists..." +else + mkdir -p "${OUTDIR}" +fi # Actually create the image. Our kickstart data should be in the same git repo as this script: # (This takes a while, especially building on an rpi. Patience!) -appliance-creator -v -c ./Rocky8_Rpi4.ks -n RockyRpi --version=`date +"%Y%m%d"` --release=1 --vmem=2048 --vcpu=2 --no-compress -o "${OUTDIR}" - -chown -R $SUDO_USER. "${OUTDIR}" +appliance-creator -v -c ./Rocky8_Rpi4.ks -n RockyRpi \ + --version=`date +"%Y%m%d"` --release=1 \ + -d --logfile $LOGDIR/LOGFILE \ + --vmem=2048 --vcpu=2 --no-compress -o "${OUTDIR}" +#chown -R $SUDO_USER. "${OUTDIR}" diff --git a/logs/LOGFILE b/logs/LOGFILE new file mode 100644 index 0000000..08e5953 --- /dev/null +++ b/logs/LOGFILE @@ -0,0 +1,383 @@ +No --ondisk specified in partition line of ks file; assuming 'sda' +No --ondisk specified in partition line of ks file; assuming 'sda' +No --ondisk specified in partition line of ks file; assuming 'sda' +Adding disk sda as /var/tmp/imgcreate-ou850k2r/tmp-trsoldnz/RockyRpi-sda.raw +WARNING! grub package not found. +Extending sparse file /var/tmp/imgcreate-ou850k2r/tmp-trsoldnz/RockyRpi-sda.raw to 3787456512 +Losetup add /dev/loop11 mapping to /var/tmp/imgcreate-ou850k2r/tmp-trsoldnz/RockyRpi-sda.raw +Formatting disks +Initializing partition table for /dev/loop11 with msdos layout +Assigning partitions to disks +Assigned /boot to sda1 at 4 at size 300 +Assigned swap to sda2 at 304 at size 512 +Assigned / to sda3 at 816 at size 2800 +Creating partitions +Add primary part at 4 of size 300 +Part fstype: vfat, effective fstype fat32 +Add primary part at 304 of size 512 +Part fstype: swap, effective fstype linux-swap +Add primary part at 816 of size 2800 +Part fstype: ext4, effective fstype ext2 +Dev loop11p1: /dev/loop111 -> /dev/mapper/loop11p1 +Creating symlink from /dev/loop111 to /dev/mapper/loop11p1 +Dev loop11p2: /dev/loop112 -> /dev/mapper/loop11p2 +Creating symlink from /dev/loop112 to /dev/mapper/loop11p2 +Dev loop11p3: /dev/loop113 -> /dev/mapper/loop11p3 +Creating symlink from /dev/loop113 to /dev/mapper/loop11p3 +Adding partx mapping for /dev/loop11 +Mount order: ['/', '/boot', 'swap'] +Unmount order: ['swap', '/boot', '/'] +Formating ext4 filesystem on /dev/loop113 +Formating args: ['mkfs.ext4', '-F', '-L', '_/', '-m', '1', '-b', '4096', '/dev/loop113'] +mke2fs +1.45.6 +(20-Mar-2020) +Discarding +device +blocks: +4096/683644 +done +Creating +filesystem +with +683644 +4k +blocks +and +171024 +inodes +Filesystem +UUID: +f5f54810-2e01-48aa-8e3d-8fd98f3ee664 +Superblock +backups +stored +on +blocks: +32768, +98304, +163840, +229376, +294912 +Allocating +group +tables: +0/21 +done +Writing +inode +tables: +0/21 +done +Creating +journal +(16384 +blocks): +done +Writing +superblocks +and +filesystem +accounting +information: +0/21 +done +Tuning filesystem on /dev/loop113 +tune2fs +1.45.6 +(20-Mar-2020) +Setting +maximal +mount +count +to +-1 +Setting +interval +between +checks +to +0 +seconds +Mounting /dev/loop113 at /var/tmp/imgcreate-ou850k2r/install_root/ +Setting boot flag on in /boot +Formating vfat filesystem on /dev/loop111 +Formating args: ['mkfs.vfat', '/dev/loop111'] +mkfs.fat +4.1 +(2017-01-24) +Creating mount point /var/tmp/imgcreate-ou850k2r/install_root/boot +Mounting /dev/loop111 at /var/tmp/imgcreate-ou850k2r/install_root/boot +Writing mkinitrd config /var/tmp/imgcreate-ou850k2r/install_root/etc/sysconfig/mkinitrd +Skipping (/sys/fs/selinux,/sys/fs/selinux) because source doesn't exist. +User-Agent: constructed: 'libdnf (Rocky Linux 8.6; generic; Linux.x86_64)' +Unknown configuration option: failovermethod = priority in /var/tmp/imgcreate-ou850k2r/dnf.conf-oiw1oagp +repo: downloading from remote: rockyrpi +rockyrpi: using metadata from Wed 22 Jun 2022 02:01:30 PM EDT. +repo: downloading from remote: rockyextras +rockyextras: using metadata from Wed 22 Jun 2022 02:01:30 PM EDT. +repo: downloading from remote: BaseOS +BaseOS: using metadata from Wed 22 Jun 2022 02:01:28 PM EDT. +repo: downloading from remote: AppStream +AppStream: using metadata from Wed 22 Jun 2022 02:01:29 PM EDT. +repo: downloading from remote: PowerTools +PowerTools: using metadata from Wed 22 Jun 2022 02:01:28 PM EDT. +User-Agent: constructed: 'libdnf (Rocky Linux 8.6; generic; Linux.x86_64)' +Modular dependency problems: + + Problem 1: nothing provides requested module(ant:1.10:8030020210429121623) + Problem 2: nothing provides requested module(container-tools:rhel8:8060020220510152704) + Problem 3: nothing provides requested module(container-tools:rhel8:8060020220515162200) + Problem 4: nothing provides requested module(freeradius:3.0:8060020220510152642) + Problem 5: nothing provides requested module(gimp:2.8:8030020210427153901) + Problem 6: nothing provides requested module(go-toolset:rhel8:8060020220510152643) + Problem 7: nothing provides requested module(httpd:2.4:8060020220510175152) + Problem 8: nothing provides requested module(httpd:2.4:8060020220622141024) + Problem 9: nothing provides requested module(idm:client:8060020220510152717) + Problem 10: nothing provides requested module(inkscape:0.92.3:8060020220510152652) + Problem 11: nothing provides requested module(javapackages-runtime:201801:8030020210427015850) + Problem 12: nothing provides requested module(jmc:rhel8:8050020211109115703) + Problem 13: nothing provides requested module(llvm-toolset:rhel8:8060020220510152650) + Problem 14: nothing provides requested module(log4j:2:8060020220513010955) + Problem 15: nothing provides requested module(mailman:2.1:8050020211202160117) + Problem 16: nothing provides requested module(mariadb:10.3:8050020220426183223) + Problem 17: nothing provides requested module(maven:3.5:8060020220510152744) + Problem 18: nothing provides requested module(maven:3.5:8060020220530151437) + Problem 19: nothing provides requested module(mercurial:4.8:8030020210428123809) + Problem 20: nothing provides requested module(mysql:8.0:8040020210921213001) + Problem 21: nothing provides requested module(nginx:1.14:8040020210610090123) + Problem 22: nothing provides requested module(nodejs:10:8030020210426100849) + Problem 23: nothing provides requested module(perl:5.26:8050020211109115414) + Problem 24: nothing provides requested module(perl-App-cpanminus:1.7044:8060020220513152155) + Problem 25: nothing provides requested module(perl-DBD-MySQL:4.046:8060020220513012802) + Problem 26: nothing provides requested module(perl-DBD-Pg:3.7:8060020220513012759) + Problem 27: nothing provides requested module(perl-DBD-SQLite:1.58:8060020220513012746) + Problem 28: nothing provides requested module(perl-DBI:1.641:8060020220513010556) + Problem 29: nothing provides requested module(perl-FCGI:0.78:8060020220513014001) + Problem 30: nothing provides requested module(perl-IO-Socket-SSL:2.066:8060020220513050719) + Problem 31: nothing provides requested module(perl-YAML:1.24:8060020220513063607) + Problem 32: nothing provides requested module(perl-libwww-perl:6.34:8060020220513153220) + Problem 33: nothing provides requested module(php:7.2:8040020210530192442) + Problem 34: nothing provides requested module(postgresql:10:8060020220510152838) + Problem 35: nothing provides requested module(postgresql:10:8060020220530151217) + Problem 36: nothing provides requested module(python27:2.7:8060020220510152758) + Problem 37: nothing provides requested module(python36:3.6:8050020211109130820) + Problem 38: nothing provides requested module(python38:3.8:8060020220510152755) + Problem 39: nothing provides requested module(python39:3.9:8060020220510152857) + Problem 40: nothing provides requested module(redis:5:8050020211020202418) + Problem 41: nothing provides requested module(rhn-tools:1.0:8030020210429021554) + Problem 42: nothing provides requested module(ruby:2.5:8050020220224171137) + Problem 43: nothing provides requested module(rust-toolset:rhel8:8060020220510152804) + Problem 44: nothing provides requested module(satellite-5-client:1.0:8030020210428035500) + Problem 45: nothing provides requested module(scala:2.10:8030020210428133748) + Problem 46: nothing provides requested module(squid:4:8060020220510152801) + Problem 47: nothing provides requested module(subversion:1.10:8040020210530192448) + Problem 48: nothing provides requested module(subversion:1.10:8060020220516012116) + Problem 49: nothing provides requested module(swig:3.0:8040020210530171044) + Problem 50: nothing provides requested module(varnish:6:8050020220203164257) + Problem 51: nothing provides requested module(virt:rhel:8060020220510231111) +Adding packages from group 'core': {, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , } +selected group: core +selected package: 'NetworkManager-wifi' +Unable to create appliance : Failed to find package 'vim' : No match for argument: vim +umount: +/var/tmp/imgcreate-ou850k2r/install_root/var/cache/dnf: +target +is +busy. +Unmounting directory /var/tmp/imgcreate-ou850k2r/install_root/boot +Unmounting directory /var/tmp/imgcreate-ou850k2r/install_root/ +Removing compat symlinks +Unmapping /dev/loop11 +Losetup remove /dev/loop11 +No --ondisk specified in partition line of ks file; assuming 'sda' +No --ondisk specified in partition line of ks file; assuming 'sda' +No --ondisk specified in partition line of ks file; assuming 'sda' +Adding disk sda as /var/tmp/imgcreate-_dz_plxo/tmp-9cr7u0t5/RockyRpi-sda.raw +WARNING! grub package not found. +Extending sparse file /var/tmp/imgcreate-_dz_plxo/tmp-9cr7u0t5/RockyRpi-sda.raw to 3787456512 +Losetup add /dev/loop11 mapping to /var/tmp/imgcreate-_dz_plxo/tmp-9cr7u0t5/RockyRpi-sda.raw +Formatting disks +Initializing partition table for /dev/loop11 with msdos layout +Assigning partitions to disks +Assigned /boot to sda1 at 4 at size 300 +Assigned swap to sda2 at 304 at size 512 +Assigned / to sda3 at 816 at size 2800 +Creating partitions +Add primary part at 4 of size 300 +Part fstype: vfat, effective fstype fat32 +Add primary part at 304 of size 512 +Part fstype: swap, effective fstype linux-swap +Add primary part at 816 of size 2800 +Part fstype: ext4, effective fstype ext2 +Dev loop11p1: /dev/loop111 -> /dev/mapper/loop11p1 +Creating symlink from /dev/loop111 to /dev/mapper/loop11p1 +Dev loop11p2: /dev/loop112 -> /dev/mapper/loop11p2 +Creating symlink from /dev/loop112 to /dev/mapper/loop11p2 +Dev loop11p3: /dev/loop113 -> /dev/mapper/loop11p3 +Creating symlink from /dev/loop113 to /dev/mapper/loop11p3 +Adding partx mapping for /dev/loop11 +Mount order: ['/', '/boot', 'swap'] +Unmount order: ['swap', '/boot', '/'] +Formating ext4 filesystem on /dev/loop113 +Formating args: ['mkfs.ext4', '-F', '-L', '_/', '-m', '1', '-b', '4096', '/dev/loop113'] +mke2fs +1.45.6 +(20-Mar-2020) +Discarding +device +blocks: +4096/683644 +done +Creating +filesystem +with +683644 +4k +blocks +and +171024 +inodes +Filesystem +UUID: +a51f2cce-3be4-4c79-a312-435a8c075aa5 +Superblock +backups +stored +on +blocks: +32768, +98304, +163840, +229376, +294912 +Allocating +group +tables: +0/21 +done +Writing +inode +tables: +0/21 +done +Creating +journal +(16384 +blocks): +done +Writing +superblocks +and +filesystem +accounting +information: +0/21 +done +Tuning filesystem on /dev/loop113 +tune2fs +1.45.6 +(20-Mar-2020) +Setting +maximal +mount +count +to +-1 +Setting +interval +between +checks +to +0 +seconds +Mounting /dev/loop113 at /var/tmp/imgcreate-_dz_plxo/install_root/ +Setting boot flag on in /boot +Formating vfat filesystem on /dev/loop111 +Formating args: ['mkfs.vfat', '/dev/loop111'] +mkfs.fat +4.1 +(2017-01-24) +Creating mount point /var/tmp/imgcreate-_dz_plxo/install_root/boot +Mounting /dev/loop111 at /var/tmp/imgcreate-_dz_plxo/install_root/boot +Writing mkinitrd config /var/tmp/imgcreate-_dz_plxo/install_root/etc/sysconfig/mkinitrd +Skipping (/sys/fs/selinux,/sys/fs/selinux) because source doesn't exist. +User-Agent: constructed: 'libdnf (Rocky Linux 8.6; generic; Linux.x86_64)' +Unknown configuration option: failovermethod = priority in /var/tmp/imgcreate-_dz_plxo/dnf.conf-nzft8zq5 +repo: downloading from remote: rockyrpi +rockyrpi: using metadata from Wed 22 Jun 2022 02:01:30 PM EDT. +repo: downloading from remote: rockyextras +rockyextras: using metadata from Wed 22 Jun 2022 02:01:30 PM EDT. +repo: downloading from remote: BaseOS +BaseOS: using metadata from Wed 22 Jun 2022 02:01:28 PM EDT. +repo: downloading from remote: AppStream +AppStream: using metadata from Wed 22 Jun 2022 02:01:29 PM EDT. +repo: downloading from remote: PowerTools +PowerTools: using metadata from Wed 22 Jun 2022 02:01:28 PM EDT. +User-Agent: constructed: 'libdnf (Rocky Linux 8.6; generic; Linux.x86_64)' +Modular dependency problems: + + Problem 1: nothing provides requested module(ant:1.10:8030020210429121623) + Problem 2: nothing provides requested module(container-tools:rhel8:8060020220510152704) + Problem 3: nothing provides requested module(container-tools:rhel8:8060020220515162200) + Problem 4: nothing provides requested module(freeradius:3.0:8060020220510152642) + Problem 5: nothing provides requested module(gimp:2.8:8030020210427153901) + Problem 6: nothing provides requested module(go-toolset:rhel8:8060020220510152643) + Problem 7: nothing provides requested module(httpd:2.4:8060020220510175152) + Problem 8: nothing provides requested module(httpd:2.4:8060020220622141024) + Problem 9: nothing provides requested module(idm:client:8060020220510152717) + Problem 10: nothing provides requested module(inkscape:0.92.3:8060020220510152652) + Problem 11: nothing provides requested module(javapackages-runtime:201801:8030020210427015850) + Problem 12: nothing provides requested module(jmc:rhel8:8050020211109115703) + Problem 13: nothing provides requested module(llvm-toolset:rhel8:8060020220510152650) + Problem 14: nothing provides requested module(log4j:2:8060020220513010955) + Problem 15: nothing provides requested module(mailman:2.1:8050020211202160117) + Problem 16: nothing provides requested module(mariadb:10.3:8050020220426183223) + Problem 17: nothing provides requested module(maven:3.5:8060020220510152744) + Problem 18: nothing provides requested module(maven:3.5:8060020220530151437) + Problem 19: nothing provides requested module(mercurial:4.8:8030020210428123809) + Problem 20: nothing provides requested module(mysql:8.0:8040020210921213001) + Problem 21: nothing provides requested module(nginx:1.14:8040020210610090123) + Problem 22: nothing provides requested module(nodejs:10:8030020210426100849) + Problem 23: nothing provides requested module(perl:5.26:8050020211109115414) + Problem 24: nothing provides requested module(perl-App-cpanminus:1.7044:8060020220513152155) + Problem 25: nothing provides requested module(perl-DBD-MySQL:4.046:8060020220513012802) + Problem 26: nothing provides requested module(perl-DBD-Pg:3.7:8060020220513012759) + Problem 27: nothing provides requested module(perl-DBD-SQLite:1.58:8060020220513012746) + Problem 28: nothing provides requested module(perl-DBI:1.641:8060020220513010556) + Problem 29: nothing provides requested module(perl-FCGI:0.78:8060020220513014001) + Problem 30: nothing provides requested module(perl-IO-Socket-SSL:2.066:8060020220513050719) + Problem 31: nothing provides requested module(perl-YAML:1.24:8060020220513063607) + Problem 32: nothing provides requested module(perl-libwww-perl:6.34:8060020220513153220) + Problem 33: nothing provides requested module(php:7.2:8040020210530192442) + Problem 34: nothing provides requested module(postgresql:10:8060020220510152838) + Problem 35: nothing provides requested module(postgresql:10:8060020220530151217) + Problem 36: nothing provides requested module(python27:2.7:8060020220510152758) + Problem 37: nothing provides requested module(python36:3.6:8050020211109130820) + Problem 38: nothing provides requested module(python38:3.8:8060020220510152755) + Problem 39: nothing provides requested module(python39:3.9:8060020220510152857) + Problem 40: nothing provides requested module(redis:5:8050020211020202418) + Problem 41: nothing provides requested module(rhn-tools:1.0:8030020210429021554) + Problem 42: nothing provides requested module(ruby:2.5:8050020220224171137) + Problem 43: nothing provides requested module(rust-toolset:rhel8:8060020220510152804) + Problem 44: nothing provides requested module(satellite-5-client:1.0:8030020210428035500) + Problem 45: nothing provides requested module(scala:2.10:8030020210428133748) + Problem 46: nothing provides requested module(squid:4:8060020220510152801) + Problem 47: nothing provides requested module(subversion:1.10:8040020210530192448) + Problem 48: nothing provides requested module(subversion:1.10:8060020220516012116) + Problem 49: nothing provides requested module(swig:3.0:8040020210530171044) + Problem 50: nothing provides requested module(varnish:6:8050020220203164257) + Problem 51: nothing provides requested module(virt:rhel:8060020220510231111) +Adding packages from group 'core': {, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , } +selected group: core +Unable to create appliance : Failed to find package 'vim' : No match for argument: vim +umount: +/var/tmp/imgcreate-_dz_plxo/install_root/var/cache/dnf: +target +is +busy. +Unmounting directory /var/tmp/imgcreate-_dz_plxo/install_root/boot +Unmounting directory /var/tmp/imgcreate-_dz_plxo/install_root/ +Removing compat symlinks +Unmapping /dev/loop11 +Losetup remove /dev/loop11 diff --git a/logs/create_image220628.log b/logs/create_image220628.log new file mode 100644 index 0000000..e69de29 diff --git a/readme.image.txt b/readme.image.txt index c69c449..68c462e 100644 --- a/readme.image.txt +++ b/readme.image.txt @@ -1,4 +1,4 @@ -(This file comes from the kickstart/appliance-creator repo: https://git.rockylinux.org/skip/RockyRpi ) +(This file comes from the kickstart/appliance-creator repo: https://git.resf.org/codedude/RockyRpi ) Rocky 8 Raspberry Pi Images