내 컴퓨터에는 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
로 업로드했는데 https://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
것은 https://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)
첫 번째 메뉴 대신?
컴퓨터를 시작할 때마다 커서가 첫 번째 메뉴에 있도록 다음 그럽 메뉴를 만드는 방법은 무엇입니까?
답변1
간단히 사용할 수 있습니다 grub-customizer
(https://packages.debian.org/buster/grub-customizer) 공식 Debian 저장소의 grub 파일을 조작할 필요 없이 필요한 작업을 완벽하게 수행합니다.
synaptic
표준 데비안 설치와 함께 제공되는 GUI를 사용하여 설치할 수 있습니다 .
또한 변경 사항을 에 저장하는 것을 잊지 마십시오 grub-customizer
.
답변2
관련 질문:Grub 부팅 순서를 변경하는 방법
인용하다:
- 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
이것은답변 링크.
답변3
어쨌든 라이브 시작에 적합한 솔루션은 다음과 같습니다. (저는 실시간 모드에서만 작업합니다).
당신이 아직도 이것에 관심이 있는지는 모르겠지만, 누군가가 혜택을 받을 것이라고 확신합니다. grub 폴더 아래 config 폴더에 들어가시면 bootmenu.cfg 파일이 있을 겁니다. 파일에서 마지막 단락 정도가 당신이 찾고 있는 것입니다.
이 스니펫은 "set_default_entry"로 시작됩니다. 정말 열정이군요. 여기서는 첫 번째 if 문에 대한 기본 "언어_키보드_시간대"를 변경하려고 합니다.
set_default_entry
if is_enabled l10n_menu; then
if [ -z "$lopts" ]; then
set default="language_keyboard_timezone"
set timeout=-1
else
set default="linux"
set timeout=60
fi
fi
리눅스 운영체제의 시작 항목으로 변경하고 싶다면 이 메뉴의 이름을 알아내야 합니다. 이는 grub 폴더의 grub.cfg 파일에서 찾을 수 있습니다. "기본값 설정"을 참조하십시오.
set default=linux
menuentry " MX-21.3 x64 (January 15, 2023)" "$kernel" "$initrd" "$kopts" --id=linux {
kernel="$2"
initrd="$3"
shift 3
linux /antiX/${kernel} quiet splasht nosplash $@
initrd /antiX/${initrd}.gz
}
이 경우에는 "리눅스"입니다. 확인을 위해 그 아래에 내 배포판 이름인 MX-21.3 x64가 표시됩니다. 이 기본 항목 "linux"도 첫 번째 코드 조각의 else 문에 설정된 것과 동일합니다.