From 6d04d3e877f3c61faa754567f434480112d39d90 Mon Sep 17 00:00:00 2001 From: Jane Doe Date: Fri, 10 Jan 2025 22:58:10 +0000 Subject: [PATCH] Add: When Nvidia hardware is detected, the user can now select to disable 'GSP Firmware', in case it helps for a smoother experience. Change: The list of graphics kernel parameters to be set, now derives from a versatile array, instead of the 'hard-coded' variables previously used. Change: Some prompts have been edited for better aesthetics. --- Amelia.sh | 69 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 49 insertions(+), 20 deletions(-) diff --git a/Amelia.sh b/Amelia.sh index c1ec470..19b9b99 100644 --- a/Amelia.sh +++ b/Amelia.sh @@ -2,7 +2,7 @@ # Amelia Installer # https://gitlab.com/prism7/archery -# Version: 8.3.9 +# Version: 8.4.0 set -euo pipefail ################################################################################################### @@ -1679,8 +1679,6 @@ Enter a number: " ################################################################################################### vga_conf() { - local prompt="Graphics Setup" - if [[ "${vgaconf}" == "y" ]]; then if [[ "${vendor}" == "Intel" ]]; then perf_stream="dev.i915.perf_stream_paranoid = 0" @@ -1732,9 +1730,9 @@ Enter a number ${bwhite}(empty to skip)${blue}: " > Select Nvidia architecture: " NC " - [1] NV160 (Turing) Graphics or newer + [1] NV160 (Turing) Graphics or newer [Nvidia Open Drivers] - [2] NV110 (Maxwell) Graphics or newer " + [2] NV110 (Maxwell) Graphics or newer [Nvidia Proprietary Drivers] " BLUE " @@ -1774,6 +1772,28 @@ Enter a number: " # Other Kernels else vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-dkms nvidia-settings nvidia-utils opencl-nvidia opencl-headers vkd3d" + fi + + local prompt="GSP Firmware Disabled" + sleep 0.2 + YELLOW " + + > Disable 'GSP' firmware (for troubleshooting) ? [y/n] " + BLUE " + + +Enter [y/n]: " + read -r -p " +==> " nogsp + + if [[ "${nogsp}" == "n" ]]; then + skip + elif [[ "${nogsp}" == "y" ]]; then + ok + echo + else + y_n + return 1 fi ;; "") choice @@ -1810,6 +1830,7 @@ Enter a number: " skip fi vga_slct="yes" + local prompt="Graphics Setup" ok } ################################################################################################### @@ -5895,28 +5916,32 @@ set_vars() { # Mkinitcpio Hooks (Encryption) mkinitcpio_hooks="HOOKS=(systemd keyboard autodetect microcode modconf sd-vconsole block sd-encrypt filesystems fsck)" # Graphics Kernel Parameters - vga_bootopts="nvidia.NVreg_UsePageAttributeTable=1" + vga_bootopts=(nvidia.NVreg_UsePageAttributeTable=1) + + if [[ "${nogsp}" == "y" ]]; then + vga_bootopts+=(nvidia.NVreg_EnableGpuFirmware=0) + fi # Amd elif [[ "${vendor}" == "AMD" ]]; then # Mkinitcpio Hooks (Encryption) mkinitcpio_hooks="HOOKS=(systemd keyboard autodetect microcode modconf kms sd-vconsole block sd-encrypt filesystems fsck)" + # Graphics Kernel Parameters + vga_bootopts=(amdgpu.dc=1) # 'Southern Islands' support if [[ "${islands}" == "1" ]]; then # Mkinitcpio Modules (Encryption) mkinitcpio_mods="MODULES=(amdgpu ${fs_mod})" # Graphics Kernel Parameters - vga_bootopts="radeon.si_support=0 amdgpu.si_support=1 amdgpu.dc=1" + vga_bootopts+=(radeon.si_support=0 amdgpu.si_support=1) # 'Sea Islands' support elif [[ "${islands}" == "2" ]]; then # Mkinitcpio Modules (Encryption) mkinitcpio_mods="MODULES=(amdgpu ${fs_mod})" # Graphics Kernel Parameters - vga_bootopts="radeon.cik_support=0 amdgpu.cik_support=1 amdgpu.dc=1" + vga_bootopts+=(radeon.cik_support=0 amdgpu.cik_support=1) elif [[ -z "${islands}" ]]; then # Mkinitcpio Modules (Encryption) mkinitcpio_mods="MODULES=(${fs_mod})" - # Graphics Kernel Parameters - vga_bootopts="amdgpu.dc=1" fi fi ## Configuration = 'No' @@ -5932,8 +5957,8 @@ set_vars() { if [[ -n "${encr_swap_bootopts}" ]]; then boot_opts+=("${encr_swap_bootopts}") fi - if [[ -n "${vga_bootopts}" ]]; then - boot_opts+=("${vga_bootopts}") + if [[ -n "${vga_bootopts[*]}" ]]; then + boot_opts+=("${vga_bootopts[*]}") fi if [[ -n "${cust_bootopts}" ]]; then boot_opts+=("${cust_bootopts}") @@ -5970,28 +5995,32 @@ set_vars() { # Mkinitcpio Hooks mkinitcpio_hooks="HOOKS=(systemd autodetect microcode modconf keyboard sd-vconsole block filesystems fsck)" # Graphics Kernel Parameters - vga_bootopts="nvidia.NVreg_UsePageAttributeTable=1" + vga_bootopts=(nvidia.NVreg_UsePageAttributeTable=1) + + if [[ "${nogsp}" == "y" ]]; then + vga_bootopts+=(nvidia.NVreg_EnableGpuFirmware=0) + fi # Amd elif [[ "${vendor}" == "AMD" ]]; then # Mkinitcpio Hooks mkinitcpio_hooks="HOOKS=(systemd autodetect microcode modconf kms keyboard sd-vconsole block filesystems fsck)" + # Graphics Kernel Parameters + vga_bootopts=(amdgpu.dc=1) # 'Southern Islands' support if [[ "${islands}" == "1" ]]; then # Mkinitcpio Modules mkinitcpio_mods="MODULES=(amdgpu)" # Graphics Kernel Parameters - vga_bootopts="radeon.si_support=0 amdgpu.si_support=1 amdgpu.dc=1" + vga_bootopts+=(radeon.si_support=0 amdgpu.si_support=1) # 'Sea Islands' support elif [[ "${islands}" == "2" ]]; then # Mkinitcpio Modules mkinitcpio_mods="MODULES=(amdgpu)" # Graphics Kernel Parameters - vga_bootopts="radeon.cik_support=0 amdgpu.cik_support=1 amdgpu.dc=1" + vga_bootopts+=(radeon.cik_support=0 amdgpu.cik_support=1) elif [[ -z "${islands}" ]]; then # Mkinitcpio Modules mkinitcpio_mods="MODULES=()" - # Graphics Kernel Parameters - vga_bootopts="amdgpu.dc=1" fi fi ## Configuration = 'No' @@ -6007,8 +6036,8 @@ set_vars() { if [[ "${autoroot}" == "y" ]]; then boot_opts+=("${multiroot_bootopts}") fi - if [[ -n "${vga_bootopts}" ]]; then - boot_opts+=("${vga_bootopts}") + if [[ -n "${vga_bootopts[*]}" ]]; then + boot_opts+=("${vga_bootopts[*]}") fi if [[ -n "${cust_bootopts}" ]]; then boot_opts+=("${cust_bootopts}") @@ -6363,7 +6392,7 @@ MULTILIB tty="$(tty)" disks="$(lsblk --nodeps --paths --noheadings --output=name,size,model | cat --number)" trg="" - vars=(LOCALESET="" SETLOCALE="" lcl_slct="" USERNAME="" kernelnmbr="" fs="" vgapkgs="" vgacount="" vgacard="" intelcount="" intelcards="" nvidiacount="" nvidiacards="" amdcount="" amdcards="" vgaconf="" vga_conf="" vga_setup="" vendor="" vendor1="" vendor2="" vendor3="" vendor_slct="" packages="" efi_entr_del="" wrlss_rgd="" sanity="" install="" bootldr_pkgs="" devel="" REGDOM="" vga_bootopts="" btrfs_bootopts="" trim="" swapmode="" homecrypt="" greeter="" revision="" greeternmbr="" cust_bootopts="" bluetooth="" vmpkgs="" vm_services="" perf_stream="" displaymanager="" wireless_reg="" bitness="" bootloader="" vga_slct="" espsize="" autoroot="" autoesp="" autoxboot="" autohome="" autoswap="" rootprt="" espprt="" xbootprt="" homeprt="" swapprt="" partok="" use_manpreset="" instl_drive="" sgdsk_nmbr="" part_mode="" preset="" capacity="" cap_gib="" rootsize="" sgdrive="" cgdrive="" smartpart="" presetpart="" prcnt="" roottype="" stage_prompt="" zram="" zram_bootopts="" xbootloader="" multibooting="" hypervisor="" mkinitcpio_mods="" uki="" ukify="" slct_autoprt="" cng_espmnt="" sep_home="" encr_swap_bootopts="" uefimode="" luks_encrypt="" nrg_plc="" parallel="" parallelnmbr="" multilib="" nvname="") + vars=(LOCALESET="" SETLOCALE="" lcl_slct="" USERNAME="" kernelnmbr="" fs="" vgapkgs="" vgacount="" vgacard="" intelcount="" intelcards="" nvidiacount="" nvidiacards="" amdcount="" amdcards="" vgaconf="" vga_conf="" vga_setup="" vendor="" vendor1="" vendor2="" vendor3="" vendor_slct="" packages="" efi_entr_del="" wrlss_rgd="" sanity="" install="" bootldr_pkgs="" devel="" REGDOM="" vga_bootopts="" btrfs_bootopts="" trim="" swapmode="" homecrypt="" greeter="" revision="" greeternmbr="" cust_bootopts="" bluetooth="" vmpkgs="" vm_services="" perf_stream="" displaymanager="" wireless_reg="" bitness="" bootloader="" vga_slct="" espsize="" autoroot="" autoesp="" autoxboot="" autohome="" autoswap="" rootprt="" espprt="" xbootprt="" homeprt="" swapprt="" partok="" use_manpreset="" instl_drive="" sgdsk_nmbr="" part_mode="" preset="" capacity="" cap_gib="" rootsize="" sgdrive="" cgdrive="" smartpart="" presetpart="" prcnt="" roottype="" stage_prompt="" zram="" zram_bootopts="" xbootloader="" multibooting="" hypervisor="" mkinitcpio_mods="" uki="" ukify="" slct_autoprt="" cng_espmnt="" sep_home="" encr_swap_bootopts="" uefimode="" luks_encrypt="" nrg_plc="" parallel="" parallelnmbr="" multilib="" nvname="" nogsp="") export "${vars[@]}" clear first_check