GRUB:起動したいOS番号を推測してください。

GRUB:起動したいOS番号を推測してください。

過去には以下のためgrub-rebootに使用されました。他のオペレーティングシステムから起動推測しやすいオプション番号GRUBリストでは、例えば次のようになります。

luis@VirtuKali:~$ more /boot/grub/grub.cfg | grep menuentry --color
menuentry 'Debian GNU/Linux, with Linux 3.14-kali1-amd64' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 3.14-kali1-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os {

...したがって、オプション0(最初)は通常のKali Linuxで起動し、オプション1(2番目)は回復モードで起動することがわかっているので、喜んで次のようにすることができます。

# grub-reboot 1

しかし、GRUBの最新バージョン、そしてあるとき複数のオペレーティングシステム、物事はそれほど簡単ではありません。
たとえば、次のような混乱を見てください。

luis@balanceador:~$ more /boot/grub/grub.cfg | grep menuentry --color
if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
  menuentry_id_option=""
export menuentry_id_option
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-d795f672-83d4-451e-bea4-0db5c70512b8' {
submenu 'Opciones avanzadas para Ubuntu' $menuentry_id_option 'gnulinux-advanced-d795f672-83d4-451e-bea4-0db5c70512b8' {
        menuentry 'Ubuntu, con Linux 3.13.0-39-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-39-generic-advanced-d795f672-83d4-451e-bea4-0db5c70512b8' {
        menuentry 'Ubuntu, with Linux 3.13.0-39-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-39-generic-recovery-d795f672-83d4-451e-bea4-0db5c70512b8' {
        menuentry 'Ubuntu, con Linux 3.13.0-32-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-32-generic-advanced-d795f672-83d4-451e-bea4-0db5c70512b8' {
        menuentry 'Ubuntu, with Linux 3.13.0-32-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-32-generic-recovery-d795f672-83d4-451e-bea4-0db5c70512b8' {
menuentry 'Memory test (memtest86+)' {
menuentry 'Memory test (memtest86+, serial console 115200)' {
menuentry 'Microsoft Windows XP Professional (en /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-1D8E45A744914BEC' {
menuentry 'Ubuntu 14.04.1 LTS (14.04) (en /dev/sda6)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-45d94105-0a37-49fb-8b14-e201b807d493' {
submenu 'Opciones avanzadas para Ubuntu 14.04.1 LTS (14.04) (en /dev/sda6)' $menuentry_id_option 'osprober-gnulinux-advanced-45d94105-0a37-49fb-8b14-e201b807d493' {
        menuentry 'Ubuntu (en /dev/sda6)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-3.13.0-39-generic--45d94105-0a37-49fb-8b14-e201b807d493' {
        menuentry 'Ubuntu, con Linux 3.13.0-39-generic (en /dev/sda6)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-3.13.0-39-generic--45d94105-0a37-49fb-8b14-e201b807d493' {
        menuentry 'Ubuntu, with Linux 3.13.0-39-generic (recovery mode) (en /dev/sda6)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-3.13.0-39-generic-root=UUID=45d94105-0a37-49fb-8b14-e201b807d493 ro recovery nomodeset-45d94105-0a37-49fb-8b14-e201b807d493' {
        menuentry 'Ubuntu 14.04.1 LTS (14.04) (en /dev/sda7) (en /dev/sda6)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-3.13.0-39-generic--45d94105-0a37-49fb-8b14-e201b807d493' {
        menuentry 'Ubuntu (en /dev/sda7) (en /dev/sda6)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-3.13.0-39-generic--45d94105-0a37-49fb-8b14-e201b807d493' {
        menuentry 'Ubuntu, con Linux 3.13.0-39-generic (en /dev/sda7) (en /dev/sda6)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-3.13.0-39-generic--45d94105-0a37-49fb-8b14-e201b807d493' {
        menuentry 'Ubuntu, with Linux 3.13.0-39-generic (recovery mode) (en /dev/sda7) (en /dev/sda6)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-3.13.0-39-generic-root=UUID=d795f672-83d4-451e-bea4-0db5c70512b8 ro recovery nomodeset-45d94105-0a37-49fb-8b14-e201b807d493' {

以前は、単に計算済みインスタンス数menuentry(0から始まる)ですが、今は対応する関係が異なりますコンピュータの起動時にGRUBメニューに見られるように。現在可能な唯一の回避策は、次のように入力することです。

# grub-reboot "Microsoft Windows XP Professional (en /dev/sda1)"

大きな問題ではありませんが、コピーして貼り付ける必要があります。数字はスクリプトを書くのが簡単で簡単です。

お持ちですか?その他のヒント?たぶん私のgrepコマンドを更新する必要がありますか?

ありがとうございます。

答え1

この提案されたソリューションでさえ元の質問に適用されます。 (Kali Linuxの場合)一部の実装(Ubuntu v14など)では、行の先頭 grub.cfgにこのエントリがない可能性があります。TABsここより多くのプラットフォーム独立すべてのGRUBインストールで動作できるソリューションです。

解決策は次のとおりです(エイリアスとして使用)。

alias GRUB-ListMenuOptions='more /boot/grub/grub.cfg | grep -e "^menuentry" -e "submenu" --color'

menuentry行の先頭の名前付き項目と名前付き項目submenu

GRUB 2.02~beta2-9ubuntu1でテストされました。アイデアをいただいた@muruに感謝します。

関連情報