This commit is contained in:
Valeria Fadeeva 2025-10-09 12:45:58 +05:00
parent 8995317f56
commit bf82c46fba
15 changed files with 262 additions and 16 deletions

View File

@ -0,0 +1,35 @@
menuentry "EFI {OSNAME} ({KERNEL}) on Boot volume" {
icon /EFI/refind/themes/{THEME}/icons/os_{ICON}.png
ostype Linux
graphics on
volume "Boot"
loader /{KERNEL_EFI}.efi
submenuentry "EFI {OSNAME} ({KERNEL}) fallback" {
loader /{KERNEL_EFI}-fallback.efi
}
submenuentry "EFI {OSNAME} ({KERNEL}) fallback terminal" {
loader /{KERNEL_EFI}-fallback-terminal.efi
}
submenuentry "{OSNAME} ({KERNEL})" {
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}.img
options "{CMDLINE}"
}
submenuentry "{OSNAME} ({KERNEL}) fallback" {
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}-fallback.img
options "{CMDLINE}"
}
submenuentry "{OSNAME} ({KERNEL}) fallback terminal" {
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}-fallback-terminal.img
options "{CMDLINE_TERMINAL}"
}
}

View File

@ -0,0 +1,25 @@
menuentry "EFI {OSNAME} ({KERNEL}) on Boot volume" {
icon /EFI/refind/themes/{THEME}/icons/os_{ICON}.png
ostype Linux
graphics on
volume "Boot"
loader /{KERNEL_EFI}-fallback.efi
submenuentry "EFI {OSNAME} ({KERNEL}) terminal" {
loader /{KERNEL_EFI}-fallback-terminal.efi
}
submenuentry "{OSNAME} ({KERNEL})" {
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}-fallback.img
options "{CMDLINE}"
}
submenuentry "{OSNAME} ({KERNEL}) terminal" {
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}-fallback-terminal.img
options "{CMDLINE_TERMINAL}"
}
}

View File

@ -0,0 +1,13 @@
menuentry "EFI {OSNAME} ({KERNEL}) on Boot volume" {
icon /EFI/refind/themes/{THEME}/icons/os_{ICON}.png
ostype Linux
graphics on
volume "Boot"
loader /{KERNEL_EFI}-fallback.efi
submenuentry "EFI {OSNAME} ({KERNEL}) terminal" {
loader /{KERNEL_EFI}-fallback-terminal.efi
}
}

View File

@ -0,0 +1,29 @@
menuentry "{OSNAME} ({KERNEL}) on Boot volume" {
icon /EFI/refind/themes/{THEME}/icons/os_{ICON}.png
ostype Linux
graphics on
volume "Boot"
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}-fallback.img
options "{CMDLINE}"
submenuentry "{OSNAME} ({KERNEL}) terminal" {
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}-fallback-terminal.img
options "{CMDLINE_TERMINAL}"
}
submenuentry "EFI {OSNAME} ({KERNEL})" {
loader /{KERNEL_EFI}-fallback.efi
initrd
options
}
submenuentry "EFI {OSNAME} ({KERNEL}) terminal" {
loader /{KERNEL_EFI}-fallback-terminal.efi
initrd
options
}
}

View File

@ -0,0 +1,17 @@
menuentry "{OSNAME} ({KERNEL}) on Boot volume" {
icon /EFI/refind/themes/{THEME}/icons/os_{ICON}.png
ostype Linux
graphics on
volume "Boot"
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}-fallback.img
options "{CMDLINE}"
submenuentry "{OSNAME} ({KERNEL}) terminal" {
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}-fallback-terminal.img
options "{CMDLINE_TERMINAL}"
}
}

View File

@ -0,0 +1,41 @@
menuentry "{OSNAME} ({KERNEL}) on Boot volume" {
icon /EFI/refind/themes/{THEME}/icons/os_{ICON}.png
ostype Linux
graphics on
volume "Boot"
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}.img
options "{CMDLINE}"
submenuentry "{OSNAME} ({KERNEL}) fallback" {
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}-fallback.img
options "{CMDLINE}"
}
submenuentry "{OSNAME} ({KERNEL}) fallback terminal" {
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}-fallback-terminal.img
options "{CMDLINE_TERMINAL}"
}
submenuentry "EFI {OSNAME} ({KERNEL})" {
loader /{KERNEL_EFI}.efi
initrd
options
}
submenuentry "EFI {OSNAME} ({KERNEL}) fallback" {
loader /{KERNEL_EFI}-fallback.efi
initrd
options
}
submenuentry "EFI {OSNAME} ({KERNEL}) fallback terminal" {
loader /{KERNEL_EFI}-fallback-terminal.efi
initrd
options
}
}

View File

@ -0,0 +1,35 @@
menuentry "EFI {OSNAME} ({KERNEL}) on Boot volume" {
icon /EFI/refind/themes/{THEME}/icons/os_{ICON}.png
ostype Linux
graphics on
volume "Boot"
loader /{KERNEL_EFI}.efi
submenuentry "EFI {OSNAME} ({KERNEL}) fallback" {
loader /{KERNEL_EFI}-fallback.efi
}
submenuentry "EFI {OSNAME} ({KERNEL}) fallback terminal" {
loader /{KERNEL_EFI}-fallback-terminal.efi
}
submenuentry "{OSNAME} ({KERNEL})" {
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}.img
options "{CMDLINE}"
}
submenuentry "{OSNAME} ({KERNEL}) fallback" {
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}-fallback.img
options "{CMDLINE}"
}
submenuentry "{OSNAME} ({KERNEL}) fallback terminal" {
loader /{KERNEL_VMLINUZ}
initrd /{INITRAMFS}-fallback-terminal.img
options "{CMDLINE_TERMINAL}"
}
}

View File

@ -82,24 +82,35 @@ else
if [ ! -d "${ESP}/EFI/Linux" ]; then
mkdir -p "${ESP}/EFI/Linux"
if [ -d "${ESP}/EFI/linux" ]; then
KERNEL_DIR="${ESP}/EFI/linux"
KERNEL_DIR_ON_EFI="${ESP}/EFI/linux"
fi
else
KERNEL_DIR="${ESP}/EFI/Linux"
KERNEL_DIR_ON_EFI="${ESP}/EFI/Linux"
fi
if [ -d "/boot" ]; then
KERNEL_DIR_ON_BOOT="/boot"
fi
fi
echo "Found $KERNEL_DIR"
if [ -v KERNEL_DIR_ON_EFI ]; then
echo "Found ${KERNEL_DIR_ON_EFI}"
fi
if [ -v KERNEL_DIR_ON_BOOT ]; then
echo "Found ${KERNEL_DIR_ON_BOOT}"
fi
#theme=$(grep "themes" "/efi/EFI/refind/refind.conf" | cut -d"/" -f2)
theme=$(cat "/etc/refind-menu-generator/theme.conf" | awk '{$1=$1;print}')
if [ -d "$KERNEL_DIR" ]; then
if [ -d "${KERNEL_DIR_ON_EFI}" ]; then
if [ -f "${ESP}/EFI/Linux/cmdline.txt" ]; then
cmdline=$(sed -e 's/^[[:space:]]//g' -e 's/[[:space:]]$//g' "${ESP}/EFI/Linux/cmdline.txt" | tr '[:space:]' ' ' | tr -s ' ')
if [ -f "${KERNEL_DIR_ON_EFI}/cmdline.txt" ]; then
cmdline=$(sed -e 's/^[[:space:]]//g' -e 's/[[:space:]]$//g' "${KERNEL_DIR_ON_EFI}/cmdline.txt" | tr '[:space:]' ' ' | tr -s ' ')
elif [ -f "/etc/kernel/cmdline" ]; then
cmdline=$(sed -e 's/^[[:space:]]//g' -e 's/[[:space:]]$//g' "/etc/kernel/cmdline" | tr '[:space:]' ' ' | tr -s ' ')
@ -126,26 +137,33 @@ if [ -d "$KERNEL_DIR" ]; then
template_choice=$(cat "/etc/refind-menu-generator/menu-template.conf" | awk '{$1=$1;print}')
if [ ! -f "/etc/refind-menu-generator/${template_choice}.txt" ] || [ "$(ls -l /etc/refind-menu-generator/${template_choice}.txt | awk '{print $5}')" -lt 10 ]; then
template="/etc/refind-menu-generator/menu-template.txt"
if [ ! -f "/etc/refind-menu-generator/efi/${template_choice}.txt" ] || [ "$(ls -l /etc/refind-menu-generator/efi/${template_choice}.txt | awk '{print $5}')" -lt 10 ]; then
template_on_efi="/etc/refind-menu-generator/efi/menu-template.txt"
else
template="/etc/refind-menu-generator/${template_choice}.txt"
template_on_efi="/etc/refind-menu-generator/efi/${template_choice}.txt"
fi
if [ ! -f "/etc/refind-menu-generator/boot/${template_choice}.txt" ] || [ "$(ls -l /etc/refind-menu-generator/boot/${template_choice}.txt | awk '{print $5}')" -lt 10 ]; then
template_on_boot="/etc/refind-menu-generator/boot/menu-template.txt"
else
template_on_boot="/etc/refind-menu-generator/boot/${template_choice}.txt"
fi
kernels_list=$(ls -1 "${ESP}/EFI/Linux/" | grep 'linux' | grep -v 'fallback' | grep '\.efi$')
if [[ -z "$kernels_list" ]]; then
kernels_list=$(ls -1 "${ESP}/EFI/Linux/" | grep "^vmlinuz" | sed "s/vmlinuz-//")
kernels_list_on_efi=$(ls -1 "${KERNEL_DIR_ON_EFI}/" | grep 'linux' | grep -v 'fallback' | grep '\.efi$')
if [[ -z "$kernels_list_on_efi" ]]; then
kernels_list_on_efi=$(ls -1 "${KERNEL_DIR_ON_EFI}/" | grep "^vmlinuz" | sed "s/vmlinuz-//")
fi
echo -e "KERNELS:\n$kernels_list"
echo -e "KERNELS:\n$kernels_list_on_efi"
if [[ -z "$kernels_list" ]]; then
if [[ -z "$kernels_list_on_efi" ]]; then
echo "ERROR: list of kernels is empty"
exit 1
fi
for i in $kernels_list;
for i in $kernels_list_on_efi;
do
kernel=$(echo "$i" | sed 's/\.efi//g')
kernel_efi=$kernel
@ -158,9 +176,42 @@ if [ -d "$KERNEL_DIR" ]; then
initramfs="$initramfs_tpl"
echo "OSNAME: $osname; THEME: $theme; ICON: $icon; KERNEL: $kernel; KERNEL_EFI: $kernel_efi; KERNEL_VMLINUZ: $kernel_vmlinuz; INITRAMFS: $initramfs; CMDLINE: $cmdline"
sed -e "s|{OSNAME}|$osname|g" -e "s|{THEME}|$theme|g" -e "s|{ICON}|$icon|g" -e "s|{KERNEL}|$kernel|g" -e "s|{KERNEL_EFI}|$kernel_efi|g" -e "s|{KERNEL_VMLINUZ}|$kernel_vmlinuz|g" -e "s|{INITRAMFS}|$initramfs|g" -e "s|{CMDLINE}|$cmdline|g" -e "s|{CMDLINE_TERMINAL}|$cmdline_terminal|g" "$template" >> "$manual_conf"
sed -e "s|{OSNAME}|$osname|g" -e "s|{THEME}|$theme|g" -e "s|{ICON}|$icon|g" -e "s|{KERNEL}|$kernel|g" -e "s|{KERNEL_EFI}|$kernel_efi|g" -e "s|{KERNEL_VMLINUZ}|$kernel_vmlinuz|g" -e "s|{INITRAMFS}|$initramfs|g" -e "s|{CMDLINE}|$cmdline|g" -e "s|{CMDLINE_TERMINAL}|$cmdline_terminal|g" "$template_on_efi" >> "$manual_conf"
done
kernels_list_on_boot=$(ls -1 "${KERNEL_DIR_ON_BOOT}/" | grep 'linux' | grep -v 'fallback' | grep '\.efi$')
if [[ -z "$kernels_list_on_boot" ]]; then
kernels_list_on_boot=$(ls -1 "${KERNEL_DIR_ON_BOOT}/" | grep "^vmlinuz" | sed "s/vmlinuz-//")
fi
echo -e "KERNELS:\n$kernels_list_on_boot"
if [[ -z "$kernels_list_on_boot" ]]; then
echo "ERROR: list of kernels is empty"
exit 1
fi
for i in $kernels_list_on_boot;
do
kernel=$(echo "$i" | sed 's/\.efi//g')
kernel_efi=$kernel
kernel_vmlinuz="vmlinuz-$kernel"
osname=$(grep "^NAME=" /etc/os-release | cut -d'=' -f2 | sed -e 's/"//g')
icon=$(grep "^ID=" /etc/os-release | cut -d'=' -f2 | sed -e 's/"//g')
initramfs_tpl=$(echo "initramfs-$kernel" | sed "s/vmlinuz-//g")
initramfs="$initramfs_tpl"
echo "OSNAME: $osname; THEME: $theme; ICON: $icon; KERNEL: $kernel; KERNEL_EFI: $kernel_efi; KERNEL_VMLINUZ: $kernel_vmlinuz; INITRAMFS: $initramfs; CMDLINE: $cmdline"
sed -e "s|{OSNAME}|$osname|g" -e "s|{THEME}|$theme|g" -e "s|{ICON}|$icon|g" -e "s|{KERNEL}|$kernel|g" -e "s|{KERNEL_EFI}|$kernel_efi|g" -e "s|{KERNEL_VMLINUZ}|$kernel_vmlinuz|g" -e "s|{INITRAMFS}|$initramfs|g" -e "s|{CMDLINE}|$cmdline|g" -e "s|{CMDLINE_TERMINAL}|$cmdline_terminal|g" "$template_on_boot" >> "$manual_conf"
done
manual_end_conf=$(mktemp)
template_end="/etc/refind-menu-generator/menu-end.txt"