From b64dc71390a920e8d26eaae07b942d88adbfa934 Mon Sep 17 00:00:00 2001 From: Kyle Gospodnetich Date: Fri, 12 Apr 2024 15:17:21 -0700 Subject: [PATCH 01/13] feat: Add initramfs generation chore: Add watermark with bluefin branding TODO: Copy files from system_files/nvidia/shared/* into the image only for Nvidia builds --- build_files/base/build-base.sh | 1 + build_files/shared/initramfs.sh | 12 ++++++++++++ .../usr/lib/dracut/dracut.conf.d/95-nvidia.conf | 1 + .../nvidia/shared/usr/lib/modprobe.d/nvidia.conf | 6 ++++++ .../lib/dracut/dracut.conf.d/10-compression.conf | 1 + .../usr/lib/dracut/dracut.conf.d/90-ublue.conf | 1 + .../share/plymouth/themes/spinner/watermark.png | Bin 0 -> 9439 bytes 7 files changed, 22 insertions(+) create mode 100755 build_files/shared/initramfs.sh create mode 100644 system_files/nvidia/shared/usr/lib/dracut/dracut.conf.d/95-nvidia.conf create mode 100644 system_files/nvidia/shared/usr/lib/modprobe.d/nvidia.conf create mode 100644 system_files/shared/usr/lib/dracut/dracut.conf.d/10-compression.conf create mode 100644 system_files/shared/usr/lib/dracut/dracut.conf.d/90-ublue.conf create mode 100644 system_files/shared/usr/share/plymouth/themes/spinner/watermark.png diff --git a/build_files/base/build-base.sh b/build_files/base/build-base.sh index 68fb9e7d0e0..183580d493c 100644 --- a/build_files/base/build-base.sh +++ b/build_files/base/build-base.sh @@ -15,4 +15,5 @@ rpm-ostree install ublue-update . /tmp/build/systemd.sh . /tmp/build/aurora-changes.sh . /tmp/build/branding.sh +. /tmp/build/initramfs.sh . /tmp/build/cleanup.sh \ No newline at end of file diff --git a/build_files/shared/initramfs.sh b/build_files/shared/initramfs.sh new file mode 100755 index 00000000000..c1f480689ff --- /dev/null +++ b/build_files/shared/initramfs.sh @@ -0,0 +1,12 @@ +#!/usr/bin/bash + +set -oue pipefail + +if [[ "${AKMODS_FLAVOR}" == "surface" ]]; then + KERNEL_SUFFIX="surface" +else + KERNEL_SUFFIX="" +fi + +QUALIFIED_KERNEL="$(rpm -qa | grep -P 'kernel-(|'"$KERNEL_SUFFIX"'-)(\d+\.\d+\.\d+)' | sed -E 's/kernel-(|'"$KERNEL_SUFFIX"'-)//')" +/usr/libexec/rpm-ostree/wrapped/dracut --no-hostonly --kver "$QUALIFIED_KERNEL" --reproducible -v --add ostree -f "/lib/modules/$QUALIFIED_KERNEL/initramfs.img" \ No newline at end of file diff --git a/system_files/nvidia/shared/usr/lib/dracut/dracut.conf.d/95-nvidia.conf b/system_files/nvidia/shared/usr/lib/dracut/dracut.conf.d/95-nvidia.conf new file mode 100644 index 00000000000..62880a58da8 --- /dev/null +++ b/system_files/nvidia/shared/usr/lib/dracut/dracut.conf.d/95-nvidia.conf @@ -0,0 +1 @@ +force_drivers+=" nvidia nvidia_modeset nvidia_uvm nvidia_drm " \ No newline at end of file diff --git a/system_files/nvidia/shared/usr/lib/modprobe.d/nvidia.conf b/system_files/nvidia/shared/usr/lib/modprobe.d/nvidia.conf new file mode 100644 index 00000000000..2335d81a370 --- /dev/null +++ b/system_files/nvidia/shared/usr/lib/modprobe.d/nvidia.conf @@ -0,0 +1,6 @@ +# Blacklist Nouveau +blacklist nouveau +options nouveau modeset=0 + +# Enable Nvidia Modeset +options nvidia-drm modeset=1 diff --git a/system_files/shared/usr/lib/dracut/dracut.conf.d/10-compression.conf b/system_files/shared/usr/lib/dracut/dracut.conf.d/10-compression.conf new file mode 100644 index 00000000000..bb323f7f6dc --- /dev/null +++ b/system_files/shared/usr/lib/dracut/dracut.conf.d/10-compression.conf @@ -0,0 +1 @@ +compress="zstd" \ No newline at end of file diff --git a/system_files/shared/usr/lib/dracut/dracut.conf.d/90-ublue.conf b/system_files/shared/usr/lib/dracut/dracut.conf.d/90-ublue.conf new file mode 100644 index 00000000000..c1666eab541 --- /dev/null +++ b/system_files/shared/usr/lib/dracut/dracut.conf.d/90-ublue.conf @@ -0,0 +1 @@ +add_dracutmodules+=" fido2 tpm2-tss pkcs11 pcsc " diff --git a/system_files/shared/usr/share/plymouth/themes/spinner/watermark.png b/system_files/shared/usr/share/plymouth/themes/spinner/watermark.png new file mode 100644 index 0000000000000000000000000000000000000000..621971309eee6d86762e3849e0b8c02f1b7eb5dd GIT binary patch literal 9439 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 literal 0 HcmV?d00001 From 9cfed672389d8458266c475fd5883364586d8adc Mon Sep 17 00:00:00 2001 From: Kyle Gospodnetich Date: Fri, 12 Apr 2024 15:49:48 -0700 Subject: [PATCH 02/13] chore: Add cliwrap --- Containerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Containerfile b/Containerfile index 340bad80072..2d1edcf6b50 100644 --- a/Containerfile +++ b/Containerfile @@ -31,7 +31,8 @@ COPY --from=ghcr.io/ublue-os/bluefin-cli /usr/share/bash-prexec /usr/share/bash- COPY --from=ghcr.io/ublue-os/akmods:${AKMODS_FLAVOR}-${FEDORA_MAJOR_VERSION} /rpms /tmp/akmods-rpms # Build, cleanup, commit. -RUN bash -c ". /tmp/build/build-base.sh" && \ +RUN rpm-ostree cliwrap install-to-root / && \ + bash -c ". /tmp/build/build-base.sh" && \ rm -rf /tmp/* /var/* && \ mkdir -p /var/tmp && \ chmod -R 1777 /var/tmp && \ From 4bbe588a783366432035f5bfdfe565f93a14f409 Mon Sep 17 00:00:00 2001 From: m2Giles <69128853+m2Giles@users.noreply.github.com> Date: Fri, 12 Apr 2024 20:17:38 -0400 Subject: [PATCH 03/13] chore: branded watermark --- build_files/base/branding.sh | 1 + .../{watermark.png => silverblue-watermark.png} | Bin 2 files changed, 1 insertion(+) rename system_files/shared/usr/share/plymouth/themes/spinner/{watermark.png => silverblue-watermark.png} (100%) diff --git a/build_files/base/branding.sh b/build_files/base/branding.sh index 2c2d2a00b0d..77c5441acf6 100644 --- a/build_files/base/branding.sh +++ b/build_files/base/branding.sh @@ -4,6 +4,7 @@ set -oue pipefail if test "$BASE_IMAGE_NAME" = "silverblue"; then sed -i '/^PRETTY_NAME/s/Silverblue/Bluefin/' /usr/lib/os-release + cp /usr/share/plymouth/themes/spinner/{silverblue-,}watermark.png elif test "$BASE_IMAGE_NAME" = "kinoite"; then sed -i '/^PRETTY_NAME/s/Kinoite/Aurora/' /usr/lib/os-release sed -i 's/Bluefin/Aurora/g' /usr/etc/yafti.yml diff --git a/system_files/shared/usr/share/plymouth/themes/spinner/watermark.png b/system_files/shared/usr/share/plymouth/themes/spinner/silverblue-watermark.png similarity index 100% rename from system_files/shared/usr/share/plymouth/themes/spinner/watermark.png rename to system_files/shared/usr/share/plymouth/themes/spinner/silverblue-watermark.png From d9cddc104c5ca053568853ba04293fe8747e0b32 Mon Sep 17 00:00:00 2001 From: m2Giles <69128853+m2Giles@users.noreply.github.com> Date: Sat, 13 Apr 2024 10:43:36 -0400 Subject: [PATCH 04/13] chore: remove nvidia files on non-nvidia images Add Aurora splash logo --- build_files/base/branding.sh | 8 ++++++-- build_files/base/cleanup.sh | 5 ----- build_files/shared/initramfs.sh | 6 ++++++ .../shared/usr/etc/dracut.conf.d/nvidia.conf | 1 - .../themes/spinner/kinoite-watermark.png | Bin 0 -> 18689 bytes 5 files changed, 12 insertions(+), 8 deletions(-) delete mode 100644 system_files/shared/usr/etc/dracut.conf.d/nvidia.conf create mode 100644 system_files/shared/usr/share/plymouth/themes/spinner/kinoite-watermark.png diff --git a/build_files/base/branding.sh b/build_files/base/branding.sh index 77c5441acf6..4d464a4712d 100644 --- a/build_files/base/branding.sh +++ b/build_files/base/branding.sh @@ -2,12 +2,16 @@ set -oue pipefail + +# Branding for Bluefin/Aurora if test "$BASE_IMAGE_NAME" = "silverblue"; then sed -i '/^PRETTY_NAME/s/Silverblue/Bluefin/' /usr/lib/os-release - cp /usr/share/plymouth/themes/spinner/{silverblue-,}watermark.png elif test "$BASE_IMAGE_NAME" = "kinoite"; then sed -i '/^PRETTY_NAME/s/Kinoite/Aurora/' /usr/lib/os-release sed -i 's/Bluefin/Aurora/g' /usr/etc/yafti.yml sed -i 's/Aurora (Beta)/Aurora \- Bluefin\-KDE (Alpha)/' /usr/etc/yafti.yml sed -i 's/Bluefin/Aurora/' /usr/libexec/ublue-flatpak-manager -fi \ No newline at end of file +fi + +# Watermark for Plymouth +cp /usr/share/plymouth/themes/spinner/{"$BASE_IMAGE_NAME"-,}watermark.png \ No newline at end of file diff --git a/build_files/base/cleanup.sh b/build_files/base/cleanup.sh index 16f293df2bc..133255440fc 100644 --- a/build_files/base/cleanup.sh +++ b/build_files/base/cleanup.sh @@ -2,11 +2,6 @@ set -ouex pipefail -if [[ "${IMAGE_FLAVOR}" =~ "nvidia" ]]; then - rm /usr/etc/dracut.conf.d/nvidia.conf - rm /usr/lib/modprobe.d/nvidia.conf -fi - rm -f /etc/yum.repos.d/tailscale.repo rm -f /etc/yum.repos.d/charm.repo rm -f /etc/yum.repos.d/ublue-os-staging-fedora-"${FEDORA_MAJOR_VERSION}".repo diff --git a/build_files/shared/initramfs.sh b/build_files/shared/initramfs.sh index c1f480689ff..87ee285f049 100755 --- a/build_files/shared/initramfs.sh +++ b/build_files/shared/initramfs.sh @@ -2,6 +2,12 @@ set -oue pipefail +# Remove nvidia specific files +if [[ "${IMAGE_FLAVOR}" =~ "nvidia" ]]; then + rm /usr/lib/dracut/dracut.conf.d/nvidia.conf + rm /usr/lib/modprobe.d/nvidia.conf +fi + if [[ "${AKMODS_FLAVOR}" == "surface" ]]; then KERNEL_SUFFIX="surface" else diff --git a/system_files/shared/usr/etc/dracut.conf.d/nvidia.conf b/system_files/shared/usr/etc/dracut.conf.d/nvidia.conf deleted file mode 100644 index 62880a58da8..00000000000 --- a/system_files/shared/usr/etc/dracut.conf.d/nvidia.conf +++ /dev/null @@ -1 +0,0 @@ -force_drivers+=" nvidia nvidia_modeset nvidia_uvm nvidia_drm " \ No newline at end of file diff --git a/system_files/shared/usr/share/plymouth/themes/spinner/kinoite-watermark.png b/system_files/shared/usr/share/plymouth/themes/spinner/kinoite-watermark.png new file mode 100644 index 0000000000000000000000000000000000000000..3d0244cea29438f952f3469c064391e2bf4705c6 GIT binary patch literal 18689 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 Date: Sat, 13 Apr 2024 10:46:44 -0400 Subject: [PATCH 05/13] fix: remove if nvidia not present. --- build_files/shared/initramfs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_files/shared/initramfs.sh b/build_files/shared/initramfs.sh index 87ee285f049..91d913da75d 100755 --- a/build_files/shared/initramfs.sh +++ b/build_files/shared/initramfs.sh @@ -3,7 +3,7 @@ set -oue pipefail # Remove nvidia specific files -if [[ "${IMAGE_FLAVOR}" =~ "nvidia" ]]; then +if [[ ! "${IMAGE_FLAVOR}" =~ "nvidia" ]]; then rm /usr/lib/dracut/dracut.conf.d/nvidia.conf rm /usr/lib/modprobe.d/nvidia.conf fi From fe58b062bb996ac4973d1652f2ea9b37e665aec9 Mon Sep 17 00:00:00 2001 From: m2Giles <69128853+m2Giles@users.noreply.github.com> Date: Sat, 13 Apr 2024 11:00:22 -0400 Subject: [PATCH 06/13] chore: move nvidia files into shared --- system_files/nvidia/shared/usr/lib/modprobe.d/nvidia.conf | 6 ------ .../shared/usr/lib/dracut/dracut.conf.d/95-nvidia.conf | 0 system_files/shared/usr/lib/modprobe.d/nvidia.conf | 8 ++++++-- 3 files changed, 6 insertions(+), 8 deletions(-) delete mode 100644 system_files/nvidia/shared/usr/lib/modprobe.d/nvidia.conf rename system_files/{nvidia => }/shared/usr/lib/dracut/dracut.conf.d/95-nvidia.conf (100%) diff --git a/system_files/nvidia/shared/usr/lib/modprobe.d/nvidia.conf b/system_files/nvidia/shared/usr/lib/modprobe.d/nvidia.conf deleted file mode 100644 index 2335d81a370..00000000000 --- a/system_files/nvidia/shared/usr/lib/modprobe.d/nvidia.conf +++ /dev/null @@ -1,6 +0,0 @@ -# Blacklist Nouveau -blacklist nouveau -options nouveau modeset=0 - -# Enable Nvidia Modeset -options nvidia-drm modeset=1 diff --git a/system_files/nvidia/shared/usr/lib/dracut/dracut.conf.d/95-nvidia.conf b/system_files/shared/usr/lib/dracut/dracut.conf.d/95-nvidia.conf similarity index 100% rename from system_files/nvidia/shared/usr/lib/dracut/dracut.conf.d/95-nvidia.conf rename to system_files/shared/usr/lib/dracut/dracut.conf.d/95-nvidia.conf diff --git a/system_files/shared/usr/lib/modprobe.d/nvidia.conf b/system_files/shared/usr/lib/modprobe.d/nvidia.conf index eea3f81798b..2335d81a370 100644 --- a/system_files/shared/usr/lib/modprobe.d/nvidia.conf +++ b/system_files/shared/usr/lib/modprobe.d/nvidia.conf @@ -1,2 +1,6 @@ -# Enable GSP firmware -options nouveau config=NvGspRm=1 +# Blacklist Nouveau +blacklist nouveau +options nouveau modeset=0 + +# Enable Nvidia Modeset +options nvidia-drm modeset=1 From 30fc572331aef35a6951c9e7fee7de8fbc793976 Mon Sep 17 00:00:00 2001 From: m2Giles <69128853+m2Giles@users.noreply.github.com> Date: Sat, 13 Apr 2024 11:07:30 -0400 Subject: [PATCH 07/13] fix: correct name for nvidia conf --- build_files/shared/initramfs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_files/shared/initramfs.sh b/build_files/shared/initramfs.sh index 91d913da75d..4b4b6d3fb94 100755 --- a/build_files/shared/initramfs.sh +++ b/build_files/shared/initramfs.sh @@ -4,7 +4,7 @@ set -oue pipefail # Remove nvidia specific files if [[ ! "${IMAGE_FLAVOR}" =~ "nvidia" ]]; then - rm /usr/lib/dracut/dracut.conf.d/nvidia.conf + rm /usr/lib/dracut/dracut.conf.d/95-nvidia.conf rm /usr/lib/modprobe.d/nvidia.conf fi From 220f22b3efa4f14a2fd6dea9c491a2ed8b493d87 Mon Sep 17 00:00:00 2001 From: m2Giles <69128853+m2Giles@users.noreply.github.com> Date: Sat, 13 Apr 2024 11:46:26 -0400 Subject: [PATCH 08/13] fix: Undull Aurora Watermark Colors --- .../themes/spinner/kinoite-watermark.png | Bin 18689 -> 20717 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/system_files/shared/usr/share/plymouth/themes/spinner/kinoite-watermark.png b/system_files/shared/usr/share/plymouth/themes/spinner/kinoite-watermark.png index 3d0244cea29438f952f3469c064391e2bf4705c6..40e97a4684b11bb322ca1ecaff64de2aa3f526be 100644 GIT binary patch delta 20521 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 literal 18689 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 Date: Sat, 13 Apr 2024 12:22:36 -0400 Subject: [PATCH 09/13] chore: have nvk modprobe setttings --- build_files/shared/initramfs.sh | 4 +++- system_files/shared/usr/lib/modprobe.d/nvk.conf | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 system_files/shared/usr/lib/modprobe.d/nvk.conf diff --git a/build_files/shared/initramfs.sh b/build_files/shared/initramfs.sh index 4b4b6d3fb94..671baa2564e 100755 --- a/build_files/shared/initramfs.sh +++ b/build_files/shared/initramfs.sh @@ -3,7 +3,9 @@ set -oue pipefail # Remove nvidia specific files -if [[ ! "${IMAGE_FLAVOR}" =~ "nvidia" ]]; then +if [[ "${IMAGE_FLAVOR}" =~ "nvidia" ]]; then + rm /usr/lib/modprobe.d/nvk.conf +else rm /usr/lib/dracut/dracut.conf.d/95-nvidia.conf rm /usr/lib/modprobe.d/nvidia.conf fi diff --git a/system_files/shared/usr/lib/modprobe.d/nvk.conf b/system_files/shared/usr/lib/modprobe.d/nvk.conf new file mode 100644 index 00000000000..957b329a2ac --- /dev/null +++ b/system_files/shared/usr/lib/modprobe.d/nvk.conf @@ -0,0 +1,2 @@ +# Enable GSP firmware +options nouveau config=NvGspRm=1 \ No newline at end of file From 1a78ce8d50ccd321bb62a8dd6d22ae026d68d78e Mon Sep 17 00:00:00 2001 From: m2Giles <69128853+m2Giles@users.noreply.github.com> Date: Sat, 13 Apr 2024 18:24:58 -0400 Subject: [PATCH 10/13] fix: remove kargs in hwsetup, use modprobe for amd-legacy --- build_files/base/build-base.sh | 2 +- build_files/base/fetch-install.sh | 6 +- build_files/dx/build-dx.sh | 1 + build_files/shared/initramfs.sh | 1 + .../shared/usr/lib/modprobe.d/amd-legacy.conf | 6 ++ .../shared/usr/libexec/ublue-system-setup | 65 ++----------------- 6 files changed, 21 insertions(+), 60 deletions(-) create mode 100644 system_files/shared/usr/lib/modprobe.d/amd-legacy.conf diff --git a/build_files/base/build-base.sh b/build_files/base/build-base.sh index 183580d493c..556e7adff98 100644 --- a/build_files/base/build-base.sh +++ b/build_files/base/build-base.sh @@ -1,4 +1,5 @@ #!/usr/bin/bash +# shellcheck disable=SC1091 set -oue pipefail @@ -7,7 +8,6 @@ set -oue pipefail . /tmp/build/install-akmods.sh . /tmp/build/packages.sh . /tmp/build/fetch-install.sh -rpm-ostree install ublue-update . /tmp/build/image-info.sh . /tmp/build/fetch-quadlets.sh . /tmp/build/font-install.sh diff --git a/build_files/base/fetch-install.sh b/build_files/base/fetch-install.sh index 3a34f55550c..6d10d0acbf0 100644 --- a/build_files/base/fetch-install.sh +++ b/build_files/base/fetch-install.sh @@ -6,6 +6,7 @@ set -oue pipefail curl -Lo /tmp/starship.tar.gz "https://github.com/starship/starship/releases/latest/download/starship-x86_64-unknown-linux-gnu.tar.gz" tar -xzf /tmp/starship.tar.gz -C /tmp install -c -m 0755 /tmp/starship /usr/bin +# shellcheck disable=SC2016 echo 'eval "$(starship init bash)"' >> /etc/bashrc # Brew Install Script @@ -17,4 +18,7 @@ mkdir -p /usr/etc/flatpak/remotes.d wget -q https://dl.flathub.org/repo/flathub.flatpakrepo -P /usr/etc/flatpak/remotes.d # Topgrade Install -pip install --prefix=/usr topgrade \ No newline at end of file +pip install --prefix=/usr topgrade + +# Install ublue-update -- breaks with packages.json +rpm-ostree install ublue-update \ No newline at end of file diff --git a/build_files/dx/build-dx.sh b/build_files/dx/build-dx.sh index 92950c85484..70354f6583b 100644 --- a/build_files/dx/build-dx.sh +++ b/build_files/dx/build-dx.sh @@ -1,4 +1,5 @@ #!/usr/bin/bash +# shellcheck disable=SC1091 set -oue pipefail diff --git a/build_files/shared/initramfs.sh b/build_files/shared/initramfs.sh index 671baa2564e..f0412ad23af 100755 --- a/build_files/shared/initramfs.sh +++ b/build_files/shared/initramfs.sh @@ -5,6 +5,7 @@ set -oue pipefail # Remove nvidia specific files if [[ "${IMAGE_FLAVOR}" =~ "nvidia" ]]; then rm /usr/lib/modprobe.d/nvk.conf + rm /usr/lib/modprobe.d/amd-legacy.conf else rm /usr/lib/dracut/dracut.conf.d/95-nvidia.conf rm /usr/lib/modprobe.d/nvidia.conf diff --git a/system_files/shared/usr/lib/modprobe.d/amd-legacy.conf b/system_files/shared/usr/lib/modprobe.d/amd-legacy.conf new file mode 100644 index 00000000000..8ede3a09d8d --- /dev/null +++ b/system_files/shared/usr/lib/modprobe.d/amd-legacy.conf @@ -0,0 +1,6 @@ +# Enable Legacy AMD hardware support +options amdgpu si_support=1 +options amdgpu cik_support=1 + +options radeon si_support=0 +options radeon cik_support=0 \ No newline at end of file diff --git a/system_files/shared/usr/libexec/ublue-system-setup b/system_files/shared/usr/libexec/ublue-system-setup index 4e97b7ba18f..14b2bee1faf 100755 --- a/system_files/shared/usr/libexec/ublue-system-setup +++ b/system_files/shared/usr/libexec/ublue-system-setup @@ -16,62 +16,11 @@ KNOWN_IMAGE_FLAVOR_FILE="/etc/ublue/image_flavor" KNOWN_IMAGE_FLAVOR=$(cat $KNOWN_IMAGE_FLAVOR_FILE) # GLOBAL -SYS_ID="$(cat /sys/devices/virtual/dmi/id/product_name)" -GPU_ID=$(lspci -k | grep -A 3 -E "(VGA|3D)") KARGS=$(rpm-ostree kargs) NEEDED_KARGS="" echo "Current kargs: $KARGS" mkdir -p /etc/ublue -if grep -qz "Kernel driver in use: radeon" <<< $GPU_ID; then - echo "Legacy AMD hardware detected, enabling CIK and SI support in AMDGPU" - if [[ ! $KARGS =~ "radeon.si_support" ]]; then - NEEDED_KARGS="$NEEDED_KARGS --append=radeon.si_support=0" - fi - - if [[ ! $KARGS =~ "radeon.cik_support" ]]; then - NEEDED_KARGS="$NEEDED_KARGS --append=radeon.cik_support=0" - fi - - if [[ ! $KARGS =~ "amdgpu.si_support" ]]; then - NEEDED_KARGS="$NEEDED_KARGS --append=amdgpu.si_support=1" - fi - - if [[ ! $KARGS =~ "amdgpu.cik_support" ]]; then - NEEDED_KARGS="$NEEDED_KARGS --append=amdgpu.cik_support=1" - fi -fi - -if [[ $IMAGE_FLAVOR = "nvidia" ]]; then - echo "Checking for needed karg changes (Nvidia)" - - if [[ ! $KARGS =~ "rd.driver.blacklist" ]]; then - NEEDED_KARGS="$NEEDED_KARGS --append=rd.driver.blacklist=nouveau" - fi - - if [[ ! $KARGS =~ "modprobe.blacklist" ]]; then - NEEDED_KARGS="$NEEDED_KARGS --append=modprobe.blacklist=nouveau" - fi - - if [[ ! $KARGS =~ "nvidia-drm.modeset" ]]; then - NEEDED_KARGS="$NEEDED_KARGS --append=nvidia-drm.modeset=1" - fi -else - echo "Checking for needed karg changes" - - if [[ $KARGS =~ "rd.driver.blacklist=nouveau" ]]; then - NEEDED_KARGS="$NEEDED_KARGS --delete-if-present=rd.driver.blacklist=nouveau" - fi - - if [[ $KARGS =~ "modprobe.blacklist=nouveau" ]]; then - NEEDED_KARGS="$NEEDED_KARGS --delete-if-present=modprobe.blacklist=nouveau" - fi - - if [[ $KARGS =~ "nvidia-drm.modeset" ]]; then - NEEDED_KARGS="$NEEDED_KARGS --delete-if-present=nvidia-drm.modeset=1" - fi -fi - if [[ $KARGS =~ "nomodeset" ]]; then echo "Removing nomodeset" NEEDED_KARGS="$NEEDED_KARGS --delete-if-present=nomodeset" @@ -84,22 +33,22 @@ fi if [[ -n "$NEEDED_KARGS" ]]; then echo "Found needed karg changes, applying the following: $NEEDED_KARGS" plymouth display-message --text="Updating kargs - Please wait, this may take a while" || true - rpm-ostree kargs ${NEEDED_KARGS} --reboot || exit 1 + rpm-ostree kargs "${NEEDED_KARGS}" --reboot || exit 1 else echo "No karg changes needed" fi # Run script if updated -if [[ -f $HWS_VER_FILE && $HWS_VER = $HWS_VER_RAN ]]; then - if [[ -f $KNOWN_IMAGE_NAME_FILE && -f $KNOWN_IMAGE_FLAVOR_FILE ]]; then +if [[ -f "$HWS_VER_FILE" && "$HWS_VER" = "$HWS_VER_RAN" ]]; then + if [[ -f "$KNOWN_IMAGE_NAME_FILE" && -f "$KNOWN_IMAGE_FLAVOR_FILE" ]]; then # Run script if image has been rebased - if [[ $IMAGE_NAME = $KNOWN_IMAGE_NAME && $IMAGE_FLAVOR = $KNOWN_IMAGE_FLAVOR ]]; then + if [[ "$IMAGE_NAME" = "$KNOWN_IMAGE_NAME" && "$IMAGE_FLAVOR" = "$KNOWN_IMAGE_FLAVOR" ]]; then echo "Hardware setup has already run. Exiting..." exit 0 fi fi fi -echo $HWS_VER > $HWS_VER_FILE -echo $IMAGE_NAME > $KNOWN_IMAGE_NAME_FILE -echo $IMAGE_FLAVOR > $KNOWN_IMAGE_FLAVOR_FILE +echo "$HWS_VER" > $HWS_VER_FILE +echo "$IMAGE_NAME" > $KNOWN_IMAGE_NAME_FILE +echo "$IMAGE_FLAVOR" > $KNOWN_IMAGE_FLAVOR_FILE From eb24ad6870aab0b1b2d5333319cfa7529d192d95 Mon Sep 17 00:00:00 2001 From: m2Giles <69128853+m2Giles@users.noreply.github.com> Date: Sat, 13 Apr 2024 18:40:52 -0400 Subject: [PATCH 11/13] chore: update Aurora Plymouth Watermark --- .../themes/spinner/kinoite-watermark.png | Bin 20717 -> 5289 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/system_files/shared/usr/share/plymouth/themes/spinner/kinoite-watermark.png b/system_files/shared/usr/share/plymouth/themes/spinner/kinoite-watermark.png index 40e97a4684b11bb322ca1ecaff64de2aa3f526be..b825f01f74a38886cbbef8b01fb9e19eb4e256bc 100644 GIT binary patch literal 5289 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 literal 20717 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 From 4555f9354746fdeffdb6f1b5eb14bd3877524a5c Mon Sep 17 00:00:00 2001 From: m2Giles <69128853+m2Giles@users.noreply.github.com> Date: Sat, 13 Apr 2024 18:53:55 -0400 Subject: [PATCH 12/13] fix: blacklist simpledrm for nvidia images --- system_files/shared/usr/libexec/ublue-system-setup | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/system_files/shared/usr/libexec/ublue-system-setup b/system_files/shared/usr/libexec/ublue-system-setup index 14b2bee1faf..12f12dcf5f2 100755 --- a/system_files/shared/usr/libexec/ublue-system-setup +++ b/system_files/shared/usr/libexec/ublue-system-setup @@ -21,6 +21,10 @@ NEEDED_KARGS="" echo "Current kargs: $KARGS" mkdir -p /etc/ublue +if [[ "$IMAGE_FLAVOR" =~ "nvidia" && ! "$KARGS" =~ "initcall_blacklist=simpledrm_platform_driver_init" ]]; then + NEEDED_KARGS="$NEEDED_KARGS --append-if-missing=initcall_blacklist=simpledrm_platform_driver_init" +fi + if [[ $KARGS =~ "nomodeset" ]]; then echo "Removing nomodeset" NEEDED_KARGS="$NEEDED_KARGS --delete-if-present=nomodeset" From f71a593c3d25734878a5808cd11dc65a2140dbbd Mon Sep 17 00:00:00 2001 From: m2Giles <69128853+m2Giles@users.noreply.github.com> Date: Sat, 13 Apr 2024 18:54:28 -0400 Subject: [PATCH 13/13] fix: remove simpledrm for nvidia --- system_files/shared/usr/libexec/ublue-system-setup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system_files/shared/usr/libexec/ublue-system-setup b/system_files/shared/usr/libexec/ublue-system-setup index 12f12dcf5f2..5a470cb1101 100755 --- a/system_files/shared/usr/libexec/ublue-system-setup +++ b/system_files/shared/usr/libexec/ublue-system-setup @@ -22,7 +22,7 @@ echo "Current kargs: $KARGS" mkdir -p /etc/ublue if [[ "$IMAGE_FLAVOR" =~ "nvidia" && ! "$KARGS" =~ "initcall_blacklist=simpledrm_platform_driver_init" ]]; then - NEEDED_KARGS="$NEEDED_KARGS --append-if-missing=initcall_blacklist=simpledrm_platform_driver_init" + NEEDED_KARGS="$NEEDED_KARGS --append=initcall_blacklist=simpledrm_platform_driver_init" fi if [[ $KARGS =~ "nomodeset" ]]; then