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.
This commit is contained in:
Jane Doe 2025-01-10 22:58:10 +00:00
parent c84b8b24d0
commit 6d04d3e877

View file

@ -2,7 +2,7 @@
# Amelia Installer # Amelia Installer
# https://gitlab.com/prism7/archery # https://gitlab.com/prism7/archery
# Version: 8.3.9 # Version: 8.4.0
set -euo pipefail set -euo pipefail
################################################################################################### ###################################################################################################
@ -1679,8 +1679,6 @@ Enter a number: "
################################################################################################### ###################################################################################################
vga_conf() { vga_conf() {
local prompt="Graphics Setup"
if [[ "${vgaconf}" == "y" ]]; then if [[ "${vgaconf}" == "y" ]]; then
if [[ "${vendor}" == "Intel" ]]; then if [[ "${vendor}" == "Intel" ]]; then
perf_stream="dev.i915.perf_stream_paranoid = 0" perf_stream="dev.i915.perf_stream_paranoid = 0"
@ -1732,9 +1730,9 @@ Enter a number ${bwhite}(empty to skip)${blue}: "
> Select Nvidia architecture: " > Select Nvidia architecture: "
NC " 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 " BLUE "
@ -1774,6 +1772,28 @@ Enter a number: "
# Other Kernels # Other Kernels
else else
vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-dkms nvidia-settings nvidia-utils opencl-nvidia opencl-headers vkd3d" 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 ;; fi ;;
"") "")
choice choice
@ -1810,6 +1830,7 @@ Enter a number: "
skip skip
fi fi
vga_slct="yes" vga_slct="yes"
local prompt="Graphics Setup"
ok ok
} }
################################################################################################### ###################################################################################################
@ -5895,28 +5916,32 @@ set_vars() {
# Mkinitcpio Hooks (Encryption) # Mkinitcpio Hooks (Encryption)
mkinitcpio_hooks="HOOKS=(systemd keyboard autodetect microcode modconf sd-vconsole block sd-encrypt filesystems fsck)" mkinitcpio_hooks="HOOKS=(systemd keyboard autodetect microcode modconf sd-vconsole block sd-encrypt filesystems fsck)"
# Graphics Kernel Parameters # 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 # Amd
elif [[ "${vendor}" == "AMD" ]]; then elif [[ "${vendor}" == "AMD" ]]; then
# Mkinitcpio Hooks (Encryption) # Mkinitcpio Hooks (Encryption)
mkinitcpio_hooks="HOOKS=(systemd keyboard autodetect microcode modconf kms sd-vconsole block sd-encrypt filesystems fsck)" 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 # 'Southern Islands' support
if [[ "${islands}" == "1" ]]; then if [[ "${islands}" == "1" ]]; then
# Mkinitcpio Modules (Encryption) # Mkinitcpio Modules (Encryption)
mkinitcpio_mods="MODULES=(amdgpu ${fs_mod})" mkinitcpio_mods="MODULES=(amdgpu ${fs_mod})"
# Graphics Kernel Parameters # 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 # 'Sea Islands' support
elif [[ "${islands}" == "2" ]]; then elif [[ "${islands}" == "2" ]]; then
# Mkinitcpio Modules (Encryption) # Mkinitcpio Modules (Encryption)
mkinitcpio_mods="MODULES=(amdgpu ${fs_mod})" mkinitcpio_mods="MODULES=(amdgpu ${fs_mod})"
# Graphics Kernel Parameters # 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 elif [[ -z "${islands}" ]]; then
# Mkinitcpio Modules (Encryption) # Mkinitcpio Modules (Encryption)
mkinitcpio_mods="MODULES=(${fs_mod})" mkinitcpio_mods="MODULES=(${fs_mod})"
# Graphics Kernel Parameters
vga_bootopts="amdgpu.dc=1"
fi fi
fi fi
## Configuration = 'No' ## Configuration = 'No'
@ -5932,8 +5957,8 @@ set_vars() {
if [[ -n "${encr_swap_bootopts}" ]]; then if [[ -n "${encr_swap_bootopts}" ]]; then
boot_opts+=("${encr_swap_bootopts}") boot_opts+=("${encr_swap_bootopts}")
fi fi
if [[ -n "${vga_bootopts}" ]]; then if [[ -n "${vga_bootopts[*]}" ]]; then
boot_opts+=("${vga_bootopts}") boot_opts+=("${vga_bootopts[*]}")
fi fi
if [[ -n "${cust_bootopts}" ]]; then if [[ -n "${cust_bootopts}" ]]; then
boot_opts+=("${cust_bootopts}") boot_opts+=("${cust_bootopts}")
@ -5970,28 +5995,32 @@ set_vars() {
# Mkinitcpio Hooks # Mkinitcpio Hooks
mkinitcpio_hooks="HOOKS=(systemd autodetect microcode modconf keyboard sd-vconsole block filesystems fsck)" mkinitcpio_hooks="HOOKS=(systemd autodetect microcode modconf keyboard sd-vconsole block filesystems fsck)"
# Graphics Kernel Parameters # 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 # Amd
elif [[ "${vendor}" == "AMD" ]]; then elif [[ "${vendor}" == "AMD" ]]; then
# Mkinitcpio Hooks # Mkinitcpio Hooks
mkinitcpio_hooks="HOOKS=(systemd autodetect microcode modconf kms keyboard sd-vconsole block filesystems fsck)" 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 # 'Southern Islands' support
if [[ "${islands}" == "1" ]]; then if [[ "${islands}" == "1" ]]; then
# Mkinitcpio Modules # Mkinitcpio Modules
mkinitcpio_mods="MODULES=(amdgpu)" mkinitcpio_mods="MODULES=(amdgpu)"
# Graphics Kernel Parameters # 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 # 'Sea Islands' support
elif [[ "${islands}" == "2" ]]; then elif [[ "${islands}" == "2" ]]; then
# Mkinitcpio Modules # Mkinitcpio Modules
mkinitcpio_mods="MODULES=(amdgpu)" mkinitcpio_mods="MODULES=(amdgpu)"
# Graphics Kernel Parameters # 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 elif [[ -z "${islands}" ]]; then
# Mkinitcpio Modules # Mkinitcpio Modules
mkinitcpio_mods="MODULES=()" mkinitcpio_mods="MODULES=()"
# Graphics Kernel Parameters
vga_bootopts="amdgpu.dc=1"
fi fi
fi fi
## Configuration = 'No' ## Configuration = 'No'
@ -6007,8 +6036,8 @@ set_vars() {
if [[ "${autoroot}" == "y" ]]; then if [[ "${autoroot}" == "y" ]]; then
boot_opts+=("${multiroot_bootopts}") boot_opts+=("${multiroot_bootopts}")
fi fi
if [[ -n "${vga_bootopts}" ]]; then if [[ -n "${vga_bootopts[*]}" ]]; then
boot_opts+=("${vga_bootopts}") boot_opts+=("${vga_bootopts[*]}")
fi fi
if [[ -n "${cust_bootopts}" ]]; then if [[ -n "${cust_bootopts}" ]]; then
boot_opts+=("${cust_bootopts}") boot_opts+=("${cust_bootopts}")
@ -6363,7 +6392,7 @@ MULTILIB
tty="$(tty)" tty="$(tty)"
disks="$(lsblk --nodeps --paths --noheadings --output=name,size,model | cat --number)" disks="$(lsblk --nodeps --paths --noheadings --output=name,size,model | cat --number)"
trg="" 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[@]}" export "${vars[@]}"
clear clear
first_check first_check