Малко козметика за gentoo. Работи само със gentoo disk ядрда (и подобни)
https://github.com/sandikata/ROKO__/blo ... lkernel.sh
Portage hook за limine bootloader със поведение близо до systemd-boot + installkernel.
/etc/portage/bashrc
Код за потвърждение: Избери целия код
# Create the directory first: mkdir -p /etc/portage/bashrc.d
# Source all scripts in /etc/portage/bashrc.d
for portage_cfg in /etc/portage/bashrc.d/*.sh; do
if [[ -f "${portage_cfg}" ]]; then
source "${portage_cfg}"
fi
done
unset portage_cfg
/etc/portage/bashrc.d/99-limine-installkernel.sh
Код за потвърждение: Избери целия код
#!/bin/bash
# /etc/portage/bashrc.d/99-limine-installkernel.sh
# Генерира limine.conf за всички ядра, с module_path и kernel params
# Всеки run има отделен log файл
# Презаписва limine.conf при всяко изпълнение
case "${EBUILD_PHASE}" in
postinst)
# ESP / limine.conf
ESP=$(findmnt -n -o TARGET -t vfat /boot 2>/dev/null || true)
[ -z "$ESP" ] && ESP=/boot
LIMINE_CFG="$ESP/limine.conf"
# Лог на текущото изпълнение
KVER=$(basename /lib/modules/* | tail -n1)
LOGFILE="/var/log/portage/limine-installkernel-${KVER}.log"
echo "=== Limine hook for kernel $KVER started at $(date) ===" > "$LOGFILE"
exec >>"$LOGFILE" 2>&1
echo "ESP detected: $ESP"
echo "Limine config: $LIMINE_CFG"
# Глобални kernel parameters
EXTRA_CMDLINE="amd_pstate=passive amdgpu.ppfeaturemask=0xffffffff amdgpu.vm_update_mode=0 amdgpu.gpu_recovery=1 amdgpu.dc=1 ipv6.disable=1 msr.allow_writes=on net.ifnames=0 psi=1 drm_kms_helper.poll=0 apparmor=1 security=apparmor lsm=landlock,lockdown,yama,integrity,apparmor pcie_aspm=off pcie_port_pm=off idle=nomwait processor.max_cstate=1 nvme_core.default_ps_max_latency_us=0 nvme_core.io_timeout=15 nvme_core.admin_timeout=15 quiet splash"
# Сканираме всички BLS-style kernel файлове
mapfile -t KERNELS < <(find "$ESP" -mindepth 2 -type f -name linux | sort)
[ ${#KERNELS[@]} -eq 0 ] && { echo "No kernels found, exiting"; exit 0; }
echo "Found kernels:"
printf '%s\n' "${KERNELS[@]}"
# Презаписваме limine.conf (чисто нов файл)
> "$LIMINE_CFG"
# Default + rollback
LAST_INDEX=$((${#KERNELS[@]} - 1))
DEFAULT_KERNEL="${KERNELS[$LAST_INDEX]}"
ROLLBACK_KERNEL="${KERNELS[$LAST_INDEX-1]:-$DEFAULT_KERNEL}"
echo "Default kernel: $DEFAULT_KERNEL"
echo "Rollback kernel: $ROLLBACK_KERNEL"
# Функция за добавяне на entry
add_entry() {
local KPATH="$1"
VER=$(basename "$(dirname "$KPATH")")
INIT="$(dirname "$KPATH")/initrd"
# printf "/Linux\n\
printf "/Gentoo $VER\n
protocol: linux\n\
kernel_path: boot():/%s\n" "${KPATH#$ESP/}" >> "$LIMINE_CFG"
[ -f "$INIT" ] && printf " module_path: boot():/%s\n" "${INIT#$ESP/}" >> "$LIMINE_CFG"
ROOT_UUID=$(blkid -s UUID -o value "$(findmnt -n -o SOURCE /)")
[ -n "$ROOT_UUID" ] && \
printf " cmdline: root=UUID=%s rw %s\n" "$ROOT_UUID" "$EXTRA_CMDLINE" >> "$LIMINE_CFG"
printf " comment: Gentoo Linux %s\n\n" "$VER"
}
# Добавяме default и rollback първо
add_entry "$DEFAULT_KERNEL"
[ "$ROLLBACK_KERNEL" != "$DEFAULT_KERNEL" ] && add_entry "$ROLLBACK_KERNEL"
# Добавяме останалите ядра
for idx in $(seq 0 $((LAST_INDEX-2))); do
add_entry "${KERNELS[$idx]}"
done
echo "Limine.conf updated successfully."
;;
esac
Код за потвърждение: Избери целия код
echo 'sys-boot/limine' >> /etc/portage/package.accept_keywords/limine
emerge limine
eselect reporitory enable ROKO__
emaint sync -r ROKO__
echo 'sys-kernel/xanmod-kernel' >> /etc/portage/package.accept_keywords/xanmod
emerge xanmod-kernel
При което ще го компилира автоматично, и ще го добави във Limine конфигурацията.
MSI MPG X570 Gaming Plus, Ryzen 9 5950x+NH-D15 Chromax, 64GB DDR4 Corsair Vengeance LPX, MSI RX6750XT Gaming X Trio, Samsung QVO 860 1TB SSD, Samsung 990 Pro 2TB NVME x2, Western Digital Red 1TB, Super Flower Leadex VII 1000W Platinum
ОС: Calculate Linux