그럽 메뉴 순서를 바꾸는 방법 - 자동으로 커서를 첫 번째 메뉴에 배치합니까?

그럽 메뉴 순서를 바꾸는 방법 - 자동으로 커서를 첫 번째 메뉴에 배치합니까?

내 컴퓨터에는 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 부팅 순서를 변경하는 방법

인용하다:

  1. https://olinux.net/change-grub-boot-order-linux/
  2. https://askubuntu.com/questions/100232/how-do-i-change-the-grub-boot-order
  3. https://wiki.debian.org/GrubConfiguration
  4. 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 문에 설정된 것과 동일합니다.

관련 정보