まず、UbuntuがGrub2を構成する方法を理解します。
- /boot/grub/grub.cfgはGrub2メニューです
- 更新-grubのコマンド、そのファイルを自動生成します
- ... / etc / defaults / grubからデフォルト設定を読み取る
- ...そして/etc/grub.dでシェルスクリプトを実行する
あなたが編集したくないのであれば、grub.cfg各カーネルアップデート後、あなたはでスクリプトを微調整したい/etc/grub.d変更が適用されいつでも取得して更新-GRUBが実行されます。
次に、最初の質問に直接回答するために、特定のブートオプションを非表示にしてGrubメニューからアクセスできるようにする方法についてはよく知りません。Grub2で再実装されなかったGrub1に関する多くの小さなことがあり、これがそれらの1つであったとしても私は驚きません。
代わりに、メニューのフォントの色を背景色と同じに設定することで、すべてのメニューエントリを(強調表示されるまで)非表示にすることができます。で/etc/grub.d/05_debian_theme、変更menu_color_normal最初の色(フォント)が第2の色(背景)に一致するように。カーソルの下のエントリが表示されるように、menu_color_highlightを別のままにします。
# example from a likely-tweaked Karmic /etc/grub.d/05_debian_theme
set menu_color_normal=white/black
set menu_color_highlight=black/white
# ...to this
set menu_color_normal=black/black
set menu_color_highlight=black/white
Grubメニューにセパレータを取得します。
Grub1では、このような新しいエントリを挿入します。私が覚えているように、あなたはそれを有効なメニューエントリにするためにルート宣言が必要でした、そうでなければGrub1はそれを無視しました。
# separator
title --------------------
root
Grub2も似ているのではないかと思います。非常に基本的なメニューエントリは、grub.cfgでは次のようになります。
# basic example
menuentry "Memory test (memtest86)" {
linux /boot/memtest86+.bin
}
二重引用符で囲まれた「何でも」がタイトルとして表示されるので、セパレーターを偽造することができます。Grub1と同様に、Grub2はlinuxキーワードで実際のメニューエントリとして扱うことを望んでいるため、誤って選択しないように注意してください。
# a separator! no, really!
menuentry "....." {
linux /boot/memtest86+.bin
}
残念ながら、「何でも」は何も意味しません。これをテストしている間に、長いダッシュ( "----------------")を試しましたが、うまくいきませんでした。しかし、上記の短いドットの文字列が好きなので、それを使用できます。
.....
さて、それが1つのセパレータを作る方法です。束を作り、それらを自動的に必要な場所に配置するには、それらを/etc/grub.d内のスクリプトに追加する必要があります。
この例では、grub.cfgのさまざまなセクションの間に単純なセパレータを配置しましょう。/etc/grub.dを見ると、次のスクリプトが表示されます。
- 00_header
- 05_debian_theme
- 10_linux-Ubuntuカーネルとリカバリのエントリ
- 20_memtest86 +-Memtest86 +のエントリ
- 30_os-prober-Windowsおよびその他のLinuxディストリビューションのエントリ
- 40_custom-デフォルトでは何もありません。特別なユーザーエントリはここに移動できます
新しいスクリプトであるseparatorを作成し、その中に以下を配置します。
#!/bin/sh
# create a separator menu entry
cat << EOF
menuentry "....." {
linux /boot/memtest86+.bin
}
EOF
次に、そのスクリプトを最初のセパレーターの場所に移動し、それを他のセパレーターの場所にリンクします。スクリプトは順番に実行されるため、最初のスクリプトを10_linuxの前に配置したい場合は、09_separatorなどの名前を付けます。
cd /etc/grub.d
# start the editor, paste in the script above, save, and exit
sudo nano separator
# set executable
sudo chmod +x separator
# rename into the first position
mv separator 09_separator
# link into remaining positions (can also use cp)
ln -s 09_separator 19_separator
ln -s 09_separator 29_separator
# not really necessary since 40_custom is empty by default
ln -s 09_separator 39_separator
/ etc / default / grubで特定のエントリをデフォルトとして設定している場合は、それを更新する必要があるかもしれません-Grub2は0からメニューエントリのカウントを開始し、これらの各「セパレーター」は有効なエントリなので、それらもカウントされます。以前のデフォルトエントリが0で、その前にセパレータを1つ追加している場合は、GRUB_DEFAULTを1 に変更してください。
今すぐ実行して更新-GRUBを、そして調べる/boot/grub/grub.cfg -あなたがそこにセパレータが表示されるはずです。もしそうなら、再起動してチェックアウトしてください。
....
異なるカーネルバージョン間など、セパレータを別の場所に配置する場合は、10_linux(または別のスクリプト)を直接編集し、セパレータを追加する適切な場所を見つける必要があります。上記のスクリプトの行を使用できます。最初の#!/ bin / sh行を除くすべてを含めます。
もっときれいにしたい場合は、Grubのスプラッシュ画像やテーマを使用してください。これらのトピックについてレインチェックを提供する必要がありますが、以下のリソースを確認してください。
リソース:
UbuntuForumには、私が知って気に入っている2つの大きなGrub2ガイドがあります。
GNU Grub 2は、もう1つの優れたリソースです。彼はKarmicのGrub2を微調整するためのスクリプトのセットを持っています(完全な開示:私はそれらを試していません)。
Grub WikiのTheme Formatページは、Grub2テーマをハッキングするための必需品です。