
GRUBブートメニューから2つのメニュー項目を削除したいので、ファイルからその項目をコメントアウトします/boot/grub/grub.cfg
。
menuentry 'Windows Boot Manager (on /dev/sda2)' --class windows --class os $menuentry_id_option 'osprober-efi-FCD5-F73E' {
...
}
# menuentry 'Ubuntu 16.04.3 LTS (16.04) (on /dev/sdb1)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-844ea196-bb78-4f18-b7fd-58be4c491e92' {
# ...
# }
# submenu 'Advanced options for Ubuntu 16.04.3 LTS (16.04) (on /dev/sdb1)' $menuentry_id_option 'osprober-gnulinux-advanced-844ea196-bb78-4f18-b7fd-58be4c491e92' {
# menuentry 'Ubuntu (on /dev/sdb1)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.10.0-37-generic.efi.signed--844ea196-bb78-4f18-b7fd-58be4c491e92' {
# ...
# }
# ...
# }
それからいつもsudo update-grub
のように走った。ただし、これを行うと、grub.cfg
ファイルからコメントが解除されていないメニュー項目が返されます。
update-grub
実行後にメニュー項目が起動オプションに表示されないようにコメント化されたままにするにはどうすればよいですか?実行しないとメニュー項目が除外されることがわかりますが、このコマンドを実行するたびにメニュー項目を手動でコメントアウトする必要がないように、不要な動作を削除したいとupdate-grub
思います。update-grub
メモ:
- どちらも不要なメニュー項目を再インポートします
update-grub
。update-grub2
- 不要なメニュー項目は重複しています。すでにUbuntu用のメニュー項目があります。
答え1
上記のように、編集は/boot/grub/grub.cfg
これを達成する良い方法ではありません。破損する可能性が高く、そうでなくても後でシステムアップデートがリリースされると復元されたことがわかります。
GRUB_OS_PROBER_SKIP_LIST
値を明示的に追加することも/etc/default/grub
良い解決策ではありません。UUID
これは、コンピュータに接続できるすべての起動可能なディスクを手動で見つけてブロックする必要があるためです。また、ファイルの編集が/etc/default
Linuxディストリビューションの動作をカスタマイズするのに好ましい方法であるかどうかはわかりません。
/usr/bin/os-prober
他のプログラムが他の目的に使用できるため、完全に無効にすることも必ずしも良い考えではありません。
grub
まあ、最善の解決策は、おそらく手動カスタマイズに属し、それに専念するプロファイルで作業することです。
オンDebian
またはオフにしたときにUbuntu
自動的に作成されたブートエントリは、で処理されているようです/etc/grub.d/30_os-prober
。
ファイルを削除するか、実行権限を無効にしてgrub
構成を再生成して、自動的に追加されたエントリを削除するだけです。これは私のコンピュータで動作します。
sudo chmod -x /etc/grub.d/30_os-prober
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo update-grub
構成によって生成された出力を観察して再開/boot/grub/grub.cfg
する前に、不要な項目が削除されていることを確認できます。
答え2
/boot/grub/grub.cfg
#
このファイルを編集しないでください
#
テンプレートを使用して grub-mkconfig によって自動的に生成されます。
/etc/grub.d および /etc/default/grub の設定
#
Grubエントリを編集する正しい方法は、および/etc/default/grub
を使用することです/etc/grub.d/
。
答え3
このエントリは os-prober で作成されます。オペレーティングシステム検出器:
説明: ドライブ・セット内の他のオペレーティング・システムを検出するユーティリティーです。このパッケージは、システムで利用可能な他のオペレーティングシステムを検出し、結果をマシンが読み取り可能な一般的な形式で出力します。
/usr/bin に os-prober パッケージのシェルスクリプトがあることを確認します。
skriptから実行可能フラグを削除するか、os-proberを削除できます。
編集:私が間違ったことは/usr/bin/os-proberを意味しました。 /etc/grub.dにはありません
答え4
次に削除できました。オペレーティングシステム検出器次のGrub構成を使用します。
1. 次のコマンドを使用してディスクの UUID を確認します。
sudo blkid
2.アップデート/etc/default/grubファイルに次の行を追加します。
GRUB_OS_PROBER_SKIP_LIST="UUID_OF_DISK_YOU_DONT_WANT_SCAN1 UUID_OF_DISK_YOU_DONT_WANT_SCAN2"
3. Grub 構成を再生成します。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
メモ:grub2-mkconfig何らかの理由で無視されたディスクに関する情報は引き続き表示されますが、最後まで作成されません。/boot/grub2/grub.cfg文書。