如何重新排序 grub 菜單 - 自動設置位於第一個菜單的游標?
我的電腦中有兩個磁碟,sda 上安裝了雙作業系統(debian–buster + win10),sdb 上安裝了一個單作業系統(debian buster)。
每次重啟電腦,grub菜單顯示如下:
Debian GNU/Linux Advanced option for Debian GNU/Linux Windows Boot Manager(on /dev/sda2) Debian GNU/Linux 10(buster) on /dev/sda6 Advanced options for Debian GNU/Linux 10(buster) (on /dev/sda6) System setup
Debian GNU/Linux
如果我選擇要輸入的第一項df /boot/grub/grub.cfg /dev/sdb1
我上傳
/boot/grub/grub.cfg
ashttps://www.dropbox.com/s/9qjmk178jlj2gha/grub.cfg-sdb1?dl=0
,
Debian GNU/Linux 10(buster) on /dev/sda6
如果我選擇要輸入的第一項df /boot/grub/grub.cfg /dev/sda1
我上傳
/boot/grub/grub.cfg
ashttps://www.dropbox.com/s/kf94rbc9g1xpx8e/grub.cfg-sda1?dl=0
。我的期望:每次重新啟動電腦時,重新排序 grub 菜單如下:
Debian GNU/Linux 10(buster) on /dev/sda6 Advanced options for Debian GNU/Linux 10(buster) (on /dev/sda6) Debian GNU/Linux Advanced option for Debian GNU/Linux Windows Boot Manager(on /dev/sda2) System setup
我這樣調整:
sudo mount /dev/sda2 /mnt sudo grub-install --efi-directory=/mnt sudo grub-mkconfig -o /boot/grub/grub.cfg
重新啟動它,請查看 grub 菜單。
為什麼游標位於菜單上
Advanced options for Debian GNU/Linux 10(buster) (on /dev/sdb1)
而不是第一個菜單?
每次啟動我的電腦時,如何創建下面的 grub 菜單以使游標位於第一個菜單中?
您可以簡單地使用
grub-customizer
(https://packages.debian.org/buster/grub-customizer)而無需從 Debian 的官方儲存庫中處理 grub 的文件,這完全可以滿足您的需求:您可以
synaptic
使用標準 Debian 安裝附帶的 GUI 來安裝它。另外,不要忘記將更改保存在
grub-customizer
.
相關問題:how-do-i-change-the-grub-boot-order
參考 :
- https://olinux.net/change-grub-boot-order-linux/
- https://askubuntu.com/questions/100232/how-do-i-change-the-grub-boot-order
- https://wiki.debian.org/GrubConfiguration
- https://www.linuxquestions.org/questions/debian-26/grub2-debian-squeeze-change-boot-order-906606/
我正在寫那個對我有用的答案。
sudo gedit /etc/grub.d/10_linux
您可以使用
vi
或nano
您熟悉的。查看本節中的文件:linux_entry () { os="$1" version="$2" recovery="$3" args="$4" if ${recovery} ; then title="$(gettext_quoted "%s, with Linux %s (recovery mode)")" else title="$(gettext_quoted "%s, with Linux %s")" fi printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}" if ! ${recovery} ; then save_default_entry | sed -e "s/^/\t/" fi
雖然這條線看起來像我的文章
linux_entry () { os="$1" version="$2" type="$3" args="$4" if [ -z "$boot_device_id" ]; then boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")" fi if [ x$type != xsimple ] ; then case $type in recovery) title="$(gettext_printf "%s (Kernel: %s - recovery mode)" "${os}" "${version}")" ;; fallback) title="$(gettext_printf "%s (Kernel: %s - fallback initramfs)" "${os}" "${version}")" ;; *) title="$(gettext_printf "%s (Kernel: %s)" "${os}" "${version}")" ;; esac if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')" quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)" title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;" grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")" fi echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/" else echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/" fi if [ x$type != xrecovery ] && [ x$type != xfallback ] ; then save_default_entry | grub_add_tab fi
我是殼牌的初學者。這就是為什麼我不做任何改變。
如果要更改主分區以外的分區的核心標題,則要編輯
/etc/grub.d/30_os-prober
文件在這個部分:
linux) LINUXPROBED="`linux-boot-prober ${DEVICE} 2> /dev/null | tr ' ' '^' | paste -s -d ' '`" prepare_boot_cache= for LINUX in ${LINUXPROBED} ; do LROOT="`echo ${LINUX} | cut -d ':' -f 1`" LBOOT="`echo ${LINUX} | cut -d ':' -f 2`" LLABEL="`echo ${LINUX} | cut -d ':' -f 3 | tr '^' ' '`" LKERNEL="`echo ${LINUX} | cut -d ':' -f 4`" LINITRD="`echo ${LINUX} | cut -d ':' -f 5`" LPARAMS="`echo ${LINUX} | cut -d ':' -f 6- | tr '^' ' '`" if [ -z "${LLABEL}" ] ; then LLABEL="${LONGNAME}" fi if [ "${LROOT}" != "${LBOOT}" ]; then LKERNEL="${LKERNEL#/boot}" LINITRD="${LINITRD#/boot}" fi cat << EOF menuentry "${LLABEL} (on ${DEVICE})" --class gnu-linux --class gnu --class os { EOF
這是答案連結。