1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| #!/bin/bash
set -e
GRUB_CFG="/boot/grub/grub.cfg" GRUB_DEFAULT="/etc/default/grub"
if [ ! -f "$GRUB_CFG" ]; then echo "无法找到 GRUB 配置文件,请检查 GRUB 是否正确安装。" exit 1 fi
echo "正在提取可用内核版本..." kernel_list=$(grep "menuentry" "$GRUB_CFG" | grep "Linux" | cut -d "'" -f2)
if [ -z "$kernel_list" ]; then echo "未找到内核条目,请检查 GRUB 配置文件。" exit 1 fi
echo "检测到以下内核版本:" echo "$kernel_list" | nl -w2 -s '. '
read -p "请输入要设置为默认启动内核的序号: " choice
if ! [[ "$choice" =~ ^[0-9]+$ ]]; then echo "输入无效,请输入有效的数字序号。" exit 1 fi
selected_kernel=$(echo "$kernel_list" | sed -n "${choice}p")
if [ -z "$selected_kernel" ]; then echo "无效的序号,请重新运行脚本并选择有效序号。" exit 1 fi
grub_entry="1>$((choice - 1))"
echo "设置默认启动内核为: $selected_kernel" if grep -q "^GRUB_DEFAULT=" "$GRUB_DEFAULT"; then sed -i "s/^GRUB_DEFAULT=.*/GRUB_DEFAULT=\"$grub_entry\"/" "$GRUB_DEFAULT" else echo "GRUB_DEFAULT=\"$grub_entry\"" >> "$GRUB_DEFAULT" fi
echo "更新 GRUB 配置..." sudo update-grub
echo "同步文件系统..." sync
echo "默认启动内核已更新为: $selected_kernel (GRUB_DEFAULT=\"$grub_entry\")" echo "请重新启动系统以应用更改。"
|