web-dev-qa-db-ja.com

Grub2 with BURG:Windowsエントリが重複しています。削除するにはどうすればよいですか?

Ubuntu 12.04とWindows 7のデュアルブートシステムがあり、ブートローダーとしてGRUB2(Burgを使用)を使用しています。

何らかの理由で、Windowsインストールがブートメニューに2回表示されます。

Ubuntu GNU/Linux, with Linux 3.2.0-24-generic
Ubuntu GNU/Linux, with Linux 3.2.0-24-generic (recovery mode)
Windows 7 (loader) (on /dev/sda1)
Windows 7 (loader) (on /dev/sda2)

パーティションテーブルを見ると、/dev/sda2はWindowsインストールのC:\であり、/dev/sda1は "System Reserved"パーティション(IIRC、Windows独自のブートローダー)です。さらに、gpartedは/dev/sda2を表示しますが、他のパーティションは表示しません-bootフラグ付き:

enter image description here

ここで何が起こっていますか?ブートメニューにUbuntuのエントリとone Windowsのエントリのみを表示したいのですが、そのうちの1つを削除するにはどうすればよいですか?

5
Tomas Aschan

Windows 7はデフォルトで/dev/sda1に「ブート」パーティションを配置するのは正しいですが、Win 7に「ルート」パーティションにもすべてを配置させることは可能です。事前にフォーマットされたNTFSパーティションにインストールする。

おそらく、過去にWindowsを調整して、ブートローダー/ブート可能フラグが/dev/sda2になったのでしょうか? both Windowsエントリから正常に起動できますか?その場合、そのうちの1つを削除しても安全です。

エントリを削除する方法

危険!

これにより、Windowsが起動できなくなる場合があります。以下の手順を実行するには、必要に応じてSudoを挿入し、事前にNTFSパーティションが読み書き可能にマウントされていることを確認する必要があります。

 cd /mnt/where-o-where-my-ntfs-be
rm -rf bootmgr Boot BOOTSECT.BAK Recovery 
 cd && umount /mnt/ntfs1
 update-grub

それはshouldすべきです-明らかに、デュアルブートシステムで試したことはありません。機能しない場合はお知らせください。より危険な方法を提供するか、grubソースを参照して、決定的な答えを得るためにWindowsパーティションを検出する方法を確認します。

3
ish

私はそれがすでに私のニーズに十分に永続的に解決しました。 /etc/grub.d/30_os-proberスクリプトを少し変更しました:

150行目から開始します(変数と条件を追加して、Windows 7が既に検出されているかどうかを確認します)。


wubi=

for OS in ${OSPROBED} ; do
  DEVICE="`echo ${OS} | cut -d ':' -f 1`"
  LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
  LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
  BOOT="`echo ${OS} | cut -d ':' -f 4`"

  if [ -z "${LONGNAME}" ] ; then
    LONGNAME="${LABEL}"
  fi

  echo "Found ${LONGNAME} on ${DEVICE}" >&2

への変更:


wubi=
windows7_found=

for OS in ${OSPROBED} ; do
  DEVICE="`echo ${OS} | cut -d ':' -f 1`"
  LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
  LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
  BOOT="`echo ${OS} | cut -d ':' -f 4`"

  if [ -z "${LONGNAME}" ] ; then
    LONGNAME="${LABEL}"
  fi

  # Mi-La patch to add Windows 7 only once
  if [ "${LONGNAME}" = "Windows 7 (loader)" ]; then
    if [ "${windows7_found}" = yes ]; then
      echo "Skipping duplicated entry for ${LONGNAME} on ${DEVICE}." >&2
      continue
    else
      windows7_found=yes
    fi
  fi

  echo "Found ${LONGNAME} on ${DEVICE}" >&2

少なくともgrubが更新されなくなるまで動作するはずです。楽しい。

編集:Ubuntu 12.1

30_os-proberは少し変更されましたが、次の行の後に同じifを使用しています。


  if [ -z "${LONGNAME}" ] ; then
    LONGNAME="${LABEL}"
  fi

うまくいきます。

3
Mi-La

ターミナルを介してBurg設定ファイルを編集するだけです。1。)ターミナル2を開きます。

Sudo gedit /boot/burg/burg.cfg

3.)menuentry "Windows ..."を探し、--class os addの直後に:

--group group_secondary

ここで、「group_secondary」は、オペレーティングシステムのグループをグループ化する一意の名前です。このファイルを見ると、Linuxカーネルには次のものがあることがわかります。

--group group_main

これで、WindowsとWindowsの回復は次のようになります。

menuentry "Windows 8 (loader) (on /dev/sdc1)" --class windows --class os --group group_secondary {
    insmod ntfs
    set root='(hd2,1)'
    search --no-floppy --fs-uuid --set b896bf7f96bf3d26
    drivemap -s (hd0) ${root}
    chainloader +1
}
menuentry "Windows 8 (loader) (on /dev/sdc2) (recovery mode)" --class windows --class os --group group_secondary {
    insmod ntfs
    set root='(hd2,2)'
    search --no-floppy --fs-uuid --set c46cc0a06cc08f1c
    drivemap -s (hd0) ${root}
    chainloader +1
}

4.)最も重要な部分!!!セーブ!!!これで、再起動または開始できます:

Sudo burg-emu

5.)選択画面で「F」を押してフォルダーを折りたたみます。

***注意:折りたたみ時には、Burgは折りたたみモードのデフォルトとしてファイルの最初のメニューエントリを使用します。

0
Robert Cole