グラップメニューの順序を変更する方法 - 自動的にカーソルを最初のメニューに配置しますか?

グラップメニューの順序を変更する方法 - 自動的にカーソルを最初のメニューに配置しますか?

私のコンピュータには、sdaにデュアルオペレーティングシステム(debian --buster + win10)がインストールされ、sdbに単一のオペレーティングシステム(debian Buster)がインストールされている2つのディスクがあります。
コンピュータを再起動するたびに、グラブメニューが次のように表示されます。

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-customizerhttps://packages.debian.org/buster/grub-customizer)公式のDebianリポジトリのgrubファイルを操作することなく、必要な作業を完全に実行します。

アイテムの移動

基本項目の設定

synaptic標準のDebianインストールに付属の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

Linuxオペレーティングシステムの起動項目に変更したい場合は、このメニューの名前を知る必要があります。これは 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
}

この場合は「Linux」です。確認のために、その下に私のディストリビューション名MX-21.3 x64が表示されます。この基本項目「linux」も、最初のコードスニペットのelse文で設定されたものと同じです。

関連情報