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
# 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