detached 79d696d

fix(boot): support all kernel variants in Limine config and auto-select single AMD P-State option

commit
79d696db9f914df9575b08963216fceabcb0b7a6
author
bnema · · 2025-10-20 20:55 UTC
committer
bnema · · 2025-10-20 21:07 UTC
parent
518bffa
signature
unsigned
3 files · +35 -26
M CHANGELOG.md +2 -0
@@ -9,6 +9,8 @@ All notable changes to this project will be documented in this file.
99 - **Kernel selection**: Simplified AMD P-State mode descriptions for better user clarity
1010
1111 ### Fixed
12+- **Limine bootloader**: Fixed kernel panic with non-default kernels (cachyos, zen, lts)
13+- **AMD P-State selection**: Auto-select when only one mode available
1214 - **Curl-pipe installation**: Fixed curl-based one-liner installation by auto-detecting piped input, re-executing with TTY for interactive prompts, and running bootstrap before downloads
1315 - **Cleanup flag**: Fixed --cleanup flag to run after helper files are downloaded
1416 - **Verification script**: Disabled ERR trap during verification to properly show all failures and prompt user, use dynamic kernel name instead of hardcoded linux, made fallback initramfs optional
@@ -9,6 +9,8 @@ All notable changes to this project will be documented in this file.
9 - **Kernel selection**: Simplified AMD P-State mode descriptions for better user clarity9 - **Kernel selection**: Simplified AMD P-State mode descriptions for better user clarity
10 10
11 ### Fixed11 ### Fixed
12+- **Limine bootloader**: Fixed kernel panic with non-default kernels (cachyos, zen, lts)
13+- **AMD P-State selection**: Auto-select when only one mode available
12 - **Curl-pipe installation**: Fixed curl-based one-liner installation by auto-detecting piped input, re-executing with TTY for interactive prompts, and running bootstrap before downloads14 - **Curl-pipe installation**: Fixed curl-based one-liner installation by auto-detecting piped input, re-executing with TTY for interactive prompts, and running bootstrap before downloads
13 - **Cleanup flag**: Fixed --cleanup flag to run after helper files are downloaded15 - **Cleanup flag**: Fixed --cleanup flag to run after helper files are downloaded
14 - **Verification script**: Disabled ERR trap during verification to properly show all failures and prompt user, use dynamic kernel name instead of hardcoded linux, made fallback initramfs optional16 - **Verification script**: Disabled ERR trap during verification to properly show all failures and prompt user, use dynamic kernel name instead of hardcoded linux, made fallback initramfs optional
M install/base/kernel.sh +29 -22
@@ -89,29 +89,36 @@ if [ "$CPU_TYPE" = "AMD" ]; then
8989 AVAILABLE_MODES=("passive")
9090 fi
9191
92- echo
93- # Build choice options with descriptions
94- declare -a MODE_CHOICES
95- for mode in "${AVAILABLE_MODES[@]}"; do
96- case "$mode" in
97- active)
98- MODE_CHOICES+=("active - Best performance (recommended for desktop/gaming)")
99- ;;
100- guided)
101- MODE_CHOICES+=("guided - Balanced performance and efficiency (recommended for laptops)")
102- ;;
103- passive)
104- MODE_CHOICES+=("passive - Maximum compatibility (older CPUs)")
105- ;;
106- esac
107- done
108-
109- AMD_PSTATE=$(gum choose --padding "0 0 1 $PADDING_LEFT" "${MODE_CHOICES[@]}")
110-
111- # Extract just the mode name (before the dash)
112- AMD_PSTATE=$(echo "$AMD_PSTATE" | awk '{print $1}')
92+ # Auto-select if only one mode available, otherwise prompt user
93+ if [ ${#AVAILABLE_MODES[@]} -eq 1 ]; then
94+ AMD_PSTATE="${AVAILABLE_MODES[0]}"
95+ gum style --foreground 2 --padding "1 0 0 $PADDING_LEFT" "[OK] Auto-selected: $AMD_PSTATE (only available mode)"
96+ else
97+ echo
98+ # Build choice options with descriptions
99+ declare -a MODE_CHOICES
100+ for mode in "${AVAILABLE_MODES[@]}"; do
101+ case "$mode" in
102+ active)
103+ MODE_CHOICES+=("active - Best performance (recommended for desktop/gaming)")
104+ ;;
105+ guided)
106+ MODE_CHOICES+=("guided - Balanced performance and efficiency (recommended for laptops)")
107+ ;;
108+ passive)
109+ MODE_CHOICES+=("passive - Maximum compatibility (older CPUs)")
110+ ;;
111+ esac
112+ done
113+
114+ AMD_PSTATE=$(gum choose --padding "0 0 1 $PADDING_LEFT" "${MODE_CHOICES[@]}")
115+
116+ # Extract just the mode name (before the dash)
117+ AMD_PSTATE=$(echo "$AMD_PSTATE" | awk '{print $1}')
118+ gum style --foreground 2 --padding "0 0 0 $PADDING_LEFT" "[OK] P-State: $AMD_PSTATE"
119+ fi
120+
113121 export ARCHUP_AMD_PSTATE="$AMD_PSTATE"
114- gum style --foreground 2 --padding "0 0 0 $PADDING_LEFT" "[OK] P-State: $AMD_PSTATE"
115122 echo "AMD P-State: $AMD_PSTATE (kernel parameter)" >> "$ARCHUP_INSTALL_LOG_FILE"
116123
117124 # Prepare kernel parameters for AMD P-State
@@ -89,29 +89,36 @@ if [ "$CPU_TYPE" = "AMD" ]; then
89 AVAILABLE_MODES=("passive")89 AVAILABLE_MODES=("passive")
90 fi90 fi
91 91
92- echo92+ # Auto-select if only one mode available, otherwise prompt user
93- # Build choice options with descriptions93+ if [ ${#AVAILABLE_MODES[@]} -eq 1 ]; then
94- declare -a MODE_CHOICES94+ AMD_PSTATE="${AVAILABLE_MODES[0]}"
95- for mode in "${AVAILABLE_MODES[@]}"; do95+ gum style --foreground 2 --padding "1 0 0 $PADDING_LEFT" "[OK] Auto-selected: $AMD_PSTATE (only available mode)"
96- case "$mode" in96+ else
97- active)97+ echo
98- MODE_CHOICES+=("active - Best performance (recommended for desktop/gaming)")98+ # Build choice options with descriptions
99- ;;99+ declare -a MODE_CHOICES
100- guided)100+ for mode in "${AVAILABLE_MODES[@]}"; do
101- MODE_CHOICES+=("guided - Balanced performance and efficiency (recommended for laptops)")101+ case "$mode" in
102- ;;102+ active)
103- passive)103+ MODE_CHOICES+=("active - Best performance (recommended for desktop/gaming)")
104- MODE_CHOICES+=("passive - Maximum compatibility (older CPUs)")104+ ;;
105- ;;105+ guided)
106- esac106+ MODE_CHOICES+=("guided - Balanced performance and efficiency (recommended for laptops)")
107- done107+ ;;
108-108+ passive)
109- AMD_PSTATE=$(gum choose --padding "0 0 1 $PADDING_LEFT" "${MODE_CHOICES[@]}")109+ MODE_CHOICES+=("passive - Maximum compatibility (older CPUs)")
110-110+ ;;
111- # Extract just the mode name (before the dash)111+ esac
112- AMD_PSTATE=$(echo "$AMD_PSTATE" | awk '{print $1}')112+ done
113+
114+ AMD_PSTATE=$(gum choose --padding "0 0 1 $PADDING_LEFT" "${MODE_CHOICES[@]}")
115+
116+ # Extract just the mode name (before the dash)
117+ AMD_PSTATE=$(echo "$AMD_PSTATE" | awk '{print $1}')
118+ gum style --foreground 2 --padding "0 0 0 $PADDING_LEFT" "[OK] P-State: $AMD_PSTATE"
119+ fi
120+
113 export ARCHUP_AMD_PSTATE="$AMD_PSTATE"121 export ARCHUP_AMD_PSTATE="$AMD_PSTATE"
114- gum style --foreground 2 --padding "0 0 0 $PADDING_LEFT" "[OK] P-State: $AMD_PSTATE"
115 echo "AMD P-State: $AMD_PSTATE (kernel parameter)" >> "$ARCHUP_INSTALL_LOG_FILE"122 echo "AMD P-State: $AMD_PSTATE (kernel parameter)" >> "$ARCHUP_INSTALL_LOG_FILE"
116 123
117 # Prepare kernel parameters for AMD P-State124 # Prepare kernel parameters for AMD P-State
M install/boot/limine.sh +4 -4
@@ -55,15 +55,15 @@ quiet: yes
5555
5656 /Arch Linux
5757 protocol: linux
58- path: boot():/vmlinuz-linux
58+ path: boot():/vmlinuz-$ARCHUP_KERNEL
5959 cmdline: $KERNEL_PARAMS
60- module_path: boot():/initramfs-linux.img
60+ module_path: boot():/initramfs-$ARCHUP_KERNEL.img
6161
6262 /Arch Linux (fallback)
6363 protocol: linux
64- path: boot():/vmlinuz-linux
64+ path: boot():/vmlinuz-$ARCHUP_KERNEL
6565 cmdline: $KERNEL_PARAMS
66- module_path: boot():/initramfs-linux-fallback.img
66+ module_path: boot():/initramfs-$ARCHUP_KERNEL-fallback.img
6767 EOF
6868
6969 gum style --foreground 6 --padding "1 0 0 $PADDING_LEFT" "Creating UEFI boot entry..."
@@ -55,15 +55,15 @@ quiet: yes
55 55
56 /Arch Linux56 /Arch Linux
57 protocol: linux57 protocol: linux
58- path: boot():/vmlinuz-linux58+ path: boot():/vmlinuz-$ARCHUP_KERNEL
59 cmdline: $KERNEL_PARAMS59 cmdline: $KERNEL_PARAMS
60- module_path: boot():/initramfs-linux.img60+ module_path: boot():/initramfs-$ARCHUP_KERNEL.img
61 61
62 /Arch Linux (fallback)62 /Arch Linux (fallback)
63 protocol: linux63 protocol: linux
64- path: boot():/vmlinuz-linux64+ path: boot():/vmlinuz-$ARCHUP_KERNEL
65 cmdline: $KERNEL_PARAMS65 cmdline: $KERNEL_PARAMS
66- module_path: boot():/initramfs-linux-fallback.img66+ module_path: boot():/initramfs-$ARCHUP_KERNEL-fallback.img
67 EOF67 EOF
68 68
69 gum style --foreground 6 --padding "1 0 0 $PADDING_LEFT" "Creating UEFI boot entry..."69 gum style --foreground 6 --padding "1 0 0 $PADDING_LEFT" "Creating UEFI boot entry..."

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 0

    ↑↓ moveenter openesc close