web-dev-qa-db-ja.com

grubがカーネルアップデートの下でデフォルトのブートを維持するようにする

マシンをデュアルブートし、デフォルトでWindowsで起動するようにします。これにより、自宅からリモートでマシンを再起動するたびに、(Ubuntuではなく)Windowsに戻ることができます。

問題は、Ubuntuがカーネルをアップグレードするたびに、grubのデフォルトのブートアイテムをWindowsにリセットする必要があることです。これは、grubメニューローダーがデフォルトのOSを起動するために位置(6)を使用するためです。そして、Ubuntuが新しいカーネルをインストールすると、その順序が変わります。

カーネルの更新時にデフォルトのブートアイテムを記憶するようにgrubを構成する方法を探しています。

11
reprogrammer

Grub 1(Ubuntu 9.04以前)

これを行う最も簡単な方法は、Windowsのブートエントリを/boot/grub/menu.lstのUbuntuエントリの上に移動することです。デフォルトでは、Grub構成ファイルは次のようにレイアウトされています。

  1. 基本オプション
  2. debian auto-magic kernel config(デフォルトでmemtest86 +のようなユーティリティを含む)
  3. 他の検出されたOS

セクション2は、構成ファイルの次の行で区切られています。

### BEGIN AUTOMAGIC KERNELS LIST
(lots of stuff here)
### END DEBIAN AUTOMAGIC KERNELS LIST

自動検出されたOS(Windowsなど)のエントリは、このセクションの後に配置されます。新しいカーネルをインストールすると、変更されるのはセクション2だけです。したがって、自動検出されたOSをどこかに移動するとbeforeBEGIN行は、新しいカーネルがインストールされたときにエントリ番号が変更されない場所に配置されます。


Grub 2(Ubuntu 9.10以降)

Grub2では、update-grubが実行されるたびに構成ファイル全体が新たに作成されるため、/boot/grub/grub.cfgの編集は永続的な修正にはなりません。そのファイルがどのように生成されるかは、ファイル/etc/default/grub/etc/grub.d/*のスクリプトによって処理されます。そのため、構成ファイルの個々のセクションを制御するファイルを変更して構成を変更し、update-grubを再度実行します。

私の/etc/grub.dには次のファイルが含まれています。

  • 00_header
  • 05_debian_theme
  • 10_hurd
  • 10_linux
  • 20_memtest86 +
  • 21_memtest86
  • 30_os-prober
  • 40_custom

これらは、構成ファイルを生成するために実行されるシェルスクリプトです順番に。 Windowsのブートエントリは30_os-proberによって生成され、実行されますafter Linuxのブートエントリは10_linuxで生成されます。したがって、30_os-proberの名前を10未満に変更し、update-grubを再実行するだけです。

mv /etc/grub.d/30_os-prober /etc/grub.d/09_os-prober
update-grub

これで、Windowsエントリが最初のエントリになり、それをGRUB_DEFAULT=のデフォルトのブートエントリ(/etc/default/grub)として設定できます。

9
quack quixote

私のブログの指示に従ってください ここ あなたの仕事のためにきれいなWindowsブートローダーを使用してください。私は今それを使用しています、そして私がPCを起動するとき、私は2つのオプションがあります:

Windows Vista Ubuntu 10.04

他に雑然としたものはありません。さまざまなオプションを設定することもできます。 5秒間何も押さないと、Windowsが起動します。

幸運を。

2
Antrikshy