From 480f5c1a9af662ed27096c7273c375289a710613 Mon Sep 17 00:00:00 2001 From: Aiden McClelland <3732071+dr-bonez@users.noreply.github.com> Date: Wed, 30 Oct 2024 09:15:24 -0600 Subject: [PATCH] pi 5 support (#2640) * prioritize raspi repo * change kernel * use newer kernel * Update build.sh * fix ssh keygen * switch to .com * use raspi-update to download firmware * Update build.sh * Update build.sh * Update build.sh * Update build.sh * switch to boot/firmware * fix fstab * update-initramfs * skip check partition * switch back to boot * fix initramfs * use rpi-update kernels * simplify kernel selection --- core/startos/src/util/mod.rs | 8 ++---- debian/postinst | 1 + image-recipe/build.sh | 27 +++++++------------ image-recipe/raspberrypi/img/etc/fstab | 4 +-- .../usr/lib/startos/scripts/init_resize.sh | 2 +- .../raspberrypi/squashfs/boot/config.txt | 3 ++- 6 files changed, 17 insertions(+), 28 deletions(-) diff --git a/core/startos/src/util/mod.rs b/core/startos/src/util/mod.rs index f26bfa6b5..0f3563018 100644 --- a/core/startos/src/util/mod.rs +++ b/core/startos/src/util/mod.rs @@ -236,11 +236,7 @@ impl<'a> Invoke<'a> for ExtendedCommand<'a> { .or(Some(&res.stdout)) .filter(|a| !a.is_empty()) .and_then(|a| std::str::from_utf8(a).ok()) - .unwrap_or(&format!( - "{} exited with code {}", - self.cmd.as_std().get_program().to_string_lossy(), - res.status - )) + .unwrap_or(&format!("{} exited with code {}", cmd_str, res.status)) ); Ok(res.stdout) } else { @@ -267,7 +263,7 @@ impl<'a> Invoke<'a> for ExtendedCommand<'a> { if prev.is_some() { cmd.stdin(Stdio::piped()); } - let mut child = cmd.spawn().with_kind(error_kind)?; + let mut child = cmd.spawn().with_ctx(|_| (error_kind, &cmd_str))?; let input = std::mem::replace( &mut prev, child diff --git a/debian/postinst b/debian/postinst index bbf61f344..6e2e1383a 100755 --- a/debian/postinst +++ b/debian/postinst @@ -80,6 +80,7 @@ sed -i '/\(^\|#\)ForwardToSyslog=/c\ForwardToSyslog=no' /etc/systemd/journald.co sed -i '/^\s*#\?\s*issue_discards\s*=\s*/c\issue_discards = 1' /etc/lvm/lvm.conf sed -i '/\(^\|#\)\s*unqualified-search-registries\s*=\s*/c\unqualified-search-registries = ["docker.io"]' /etc/containers/registries.conf sed -i 's/\(#\|\^\)\s*\([^=]\+\)=\(suspend\|hibernate\)\s*$/\2=ignore/g' /etc/systemd/logind.conf +sed -i '/\(^\|#\)MulticastDNS=/c\MulticastDNS=no' /etc/systemd/resolved.conf mkdir -p /etc/nginx/ssl diff --git a/image-recipe/build.sh b/image-recipe/build.sh index c183218ff..ea88824d0 100755 --- a/image-recipe/build.sh +++ b/image-recipe/build.sh @@ -61,14 +61,7 @@ PLATFORM_CONFIG_EXTRAS= if [ "${IB_TARGET_PLATFORM}" = "raspberrypi" ]; then PLATFORM_CONFIG_EXTRAS="$PLATFORM_CONFIG_EXTRAS --firmware-binary false" PLATFORM_CONFIG_EXTRAS="$PLATFORM_CONFIG_EXTRAS --firmware-chroot false" - # BEGIN stupid ugly hack - # The actual name of the package is `raspberrypi-kernel` - # live-build determines thte name of the package for the kernel by combining the `linux-packages` flag, with the `linux-flavours` flag - # the `linux-flavours` flag defaults to the architecture, so there's no way to remove the suffix. - # So we're doing this, cause thank the gods our package name contains a hypen. Cause if it didn't we'd be SOL - PLATFORM_CONFIG_EXTRAS="$PLATFORM_CONFIG_EXTRAS --linux-packages raspberrypi" - PLATFORM_CONFIG_EXTRAS="$PLATFORM_CONFIG_EXTRAS --linux-flavours kernel" - # END stupid ugly hack + PLATFORM_CONFIG_EXTRAS="$PLATFORM_CONFIG_EXTRAS --linux-flavours rpi-v8" elif [ "${IB_TARGET_PLATFORM}" = "rockchip64" ]; then PLATFORM_CONFIG_EXTRAS="$PLATFORM_CONFIG_EXTRAS --linux-flavours rockchip64" fi @@ -148,13 +141,13 @@ sed -i -e '2i set timeout=5' config/bootloaders/grub-pc/config.cfg mkdir -p config/archives if [ "${IB_TARGET_PLATFORM}" = "raspberrypi" ]; then - curl -fsSL https://archive.raspberrypi.org/debian/raspberrypi.gpg.key | gpg --dearmor -o config/archives/raspi.key - echo "deb https://archive.raspberrypi.org/debian/ bullseye main" > config/archives/raspi.list + curl -fsSL https://archive.raspberrypi.com/debian/raspberrypi.gpg.key | gpg --dearmor -o config/archives/raspi.key + echo "deb [arch=${IB_TARGET_ARCH} signed-by=/etc/apt/trusted.gpg.d/raspi.key.gpg] https://archive.raspberrypi.com/debian/ ${IB_SUITE} main" > config/archives/raspi.list fi cat > config/archives/backports.pref <<- EOF Package: * -Pin: release a=stable-backports +Pin: release n=${IB_SUITE}-backports Pin-Priority: 500 EOF @@ -180,7 +173,7 @@ if [ "$NON_FREE" = 1 ]; then fi if [ "${IB_TARGET_PLATFORM}" = "raspberrypi" ]; then - echo 'raspberrypi-bootloader rpi-update parted' > config/package-lists/bootloader.list.chroot + echo 'raspberrypi-net-mods raspberrypi-sys-mods raspi-config raspi-firmware raspi-gpio raspi-utils rpi-eeprom rpi-update rpi.gpio-common parted' > config/package-lists/bootloader.list.chroot else echo 'grub-efi grub2-common' > config/package-lists/bootloader.list.chroot fi @@ -205,17 +198,15 @@ if [ "${IB_SUITE}" = bookworm ]; then fi if [ "${IB_TARGET_PLATFORM}" = "raspberrypi" ]; then + ln -sf /usr/bin/pi-beep /usr/local/bin/beep + SKIP_WARNING=1 SKIP_BOOTLOADER=1 SKIP_CHECK_PARTITION=1 WANT_64BIT=1 WANT_PI4=1 WANT_PI5=1 BOOT_PART=/boot rpi-update stable for f in /usr/lib/modules/*; do v=\${f#/usr/lib/modules/} echo "Configuring raspi kernel '\$v'" extract-ikconfig "/usr/lib/modules/\$v/kernel/kernel/configs.ko.xz" > /boot/config-\$v - update-initramfs -c -k \$v done - ln -sf /usr/bin/pi-beep /usr/local/bin/beep - wget https://archive.raspberrypi.org/debian/pool/main/w/wireless-regdb/wireless-regdb_2018.05.09-0~rpt1_all.deb - echo 1b7b1076257726609535b71d146a5721622d19a0843061ee7568188e836dd10f wireless-regdb_2018.05.09-0~rpt1_all.deb | sha256sum -c - apt-get install -y --allow-downgrades ./wireless-regdb_2018.05.09-0~rpt1_all.deb - rm wireless-regdb_2018.05.09-0~rpt1_all.deb + mkinitramfs -c gzip -o /boot/initramfs8 6.6.51-v8+ + mkinitramfs -c gzip -o /boot/initramfs_2712 6.6.51-v8-16k+ fi useradd --shell /bin/bash -G embassy -m start9 diff --git a/image-recipe/raspberrypi/img/etc/fstab b/image-recipe/raspberrypi/img/etc/fstab index 816b32bcd..5f5164232 100644 --- a/image-recipe/raspberrypi/img/etc/fstab +++ b/image-recipe/raspberrypi/img/etc/fstab @@ -1,2 +1,2 @@ -/dev/mmcblk0p1 /boot vfat umask=0077 0 2 -/dev/mmcblk0p2 / ext4 defaults 0 1 +/dev/mmcblk0p1 /boot vfat umask=0077 0 2 +/dev/mmcblk0p2 / ext4 defaults 0 1 diff --git a/image-recipe/raspberrypi/img/usr/lib/startos/scripts/init_resize.sh b/image-recipe/raspberrypi/img/usr/lib/startos/scripts/init_resize.sh index 9e357cd57..1fdca1c83 100755 --- a/image-recipe/raspberrypi/img/usr/lib/startos/scripts/init_resize.sh +++ b/image-recipe/raspberrypi/img/usr/lib/startos/scripts/init_resize.sh @@ -94,7 +94,7 @@ main () { return 1 fi - if ! mkdir -p /media/startos/config/overlay/etc/ssh && ssh-keygen -A -f /media/startos/config/overlay/; then + if ! (mkdir -p /media/startos/config/overlay/etc/ssh && ssh-keygen -A -f /media/startos/config/overlay/); then FAIL_REASON="ssh host key generation failed" return 1 fi diff --git a/image-recipe/raspberrypi/squashfs/boot/config.txt b/image-recipe/raspberrypi/squashfs/boot/config.txt index 17bd5dc4e..4e1962a65 100644 --- a/image-recipe/raspberrypi/squashfs/boot/config.txt +++ b/image-recipe/raspberrypi/squashfs/boot/config.txt @@ -83,4 +83,5 @@ arm_boost=1 [all] gpu_mem=16 dtoverlay=pwm-2chan,disable-bt -initramfs initrd.img-6.1.21-v8+ + +auto_initramfs=1 \ No newline at end of file