GRUB v2: grub-reboot で使用する数値項目を管理する実用的な方法

GRUB v2: grub-reboot で使用する数値項目を管理する実用的な方法

私は使うGRUB v2私のスタートアップマネージャーとして。
私が望むたびに他のもので再起動OS(またはメニュー項目(例MemTest))では、次のコマンドを使用します。

# grub-reboot n

n数字はどこにありますか(0から始まる)必須メニュー項目
たとえば、

GRUB2 メニュー例

したがって、上記の例で再起動するには、Squeeze Linux次のように入力します。

# grub-reboot 4

ただし、複数のコンピュータおよび/または複数のオペレーティングシステムを使用している場合覚えにくいその項目の番号を確認するには、メニューを再起動する必要がありました。

わかりましたアイテムが保存されます。/boot/grub/grub.cfgただし、「submenu」という行では、menuentryGRUBがより複雑になり(確かに高度になると)、アイテムの数を計算するためにファイルを読むのが少し難しくなります。

実用的な方法はないでしょうかすべてのアイテムの数を学ぶGRUB v2ブートメニュー?

答え1

私はこれを使うコマンドライン/boot/grub/grub.cfgこれだけ番号付きアイテムを表示、1行に1つずつ:

sed ':again;$!N;$!b again; :b; s/{[^{}]*}//g; t b' /boot/grub/grub.cfg | cut -c -60 | grep -e "^menuentry" -e "submenu" | nl -v 0 | grep -e "menuentry" -e "submenu" --color

結果(以前のグラフィック例とは異なります。申し訳ありません):

GRUB-ListMenu 結果の例

私が好む方法は、次のように追加することです。エイリアスまたは機能。たとえば、次の関数として使用されます~/bashrc

# List entries numbers for grub-reboot:
function GRUB-ListMenu() {
        sed ':again;$!N;$!b again; :b; s/{[^{}]*}//g; t b' /boot/grub/grub.cfg | cut -c -60 | grep -e "^menuentry" -e "submenu" | nl -v 0 | grep -e "menuentry" -e "submenu" --color
}

説明する:

  • sedコマンド中かっこ間のすべての行を削除{および})に対応するのでドロップダウンサブメニュー
  • このcutコマンドは、結果を得るために最初の60文字だけを保持します。読みやすさユーザー向け。
  • このgrepコマンドは、次に対応する行のみを保持します。実際のメニュー項目menuentryそしてsubmenu
  • nlコマンド計算各行(もちろん0から始まり)。
  • grep必須ではない追加のコマンドがあります。結果;-) 。

最適化の提案を歓迎します。
Ubuntu Desktop、Server、v12、v14、Kali、およびBackTrackで実行されているGRUB v2.02〜beta2-9ubuntu1でテストされました。他のLinuxでの動作に関するフィードバックが推奨されます(この記事に追加します)。

関連情報