WindowsパーティションにgrubがインストールされているときにWindows 7を起動する方法は?


15

元のタイトル: grubを使用して同じパーティションでWindows 7をブート(アン)するにはどうすればよいですか?

私はこの問題を2〜3日間調査していますが、空っぽになりました。

基本的に、パーティション1はWindows 7で、パーティション2はUbuntu 12.04です。Ubuntuにパーティション2にインストールし、パーティション1にGRUBをインストールするように指示しましたが、これは正常に機能します。しかし、今の問題は、Windows 7を起動できないことです。選択すると、GRUBメニューに戻ります。

私が調査したところから、Windows 7の「mbr」またはブートローダーを起動するようにGRUBを編集できる場合\windows\system32\winload.exe(Windows 7の修復ディスクを使用せずに)、私の問題は解決されます。これも可能ですか?


Boot-Repair-InfoのURLはhttp://paste.ubuntu.com/981952/です。


コマンドからの出力 sudo blkid

/dev/sda1: UUID="1EA0019AA0017A13" TYPE="ntfs" 
/dev/sda2: UUID="e4402f9e-83df-4dc3-8913-69b28314d253" TYPE="ext4" 
/dev/sda3: LABEL="Vault Drive" UUID="74145BFD145BC132" TYPE="ntfs" 
/dev/sda4: UUID="1c030d32-657f-4a78-9468-307d9e09a977" TYPE="ext4"

回答:


14

以下で説明するブート修復ツールを使用してBootinfo Summaryレポートを作成し、レポートへのリンクを投稿できますか?

ブート構成に関する詳細を既に提供していることは知っています。ただし、私が求めているレポートには、より詳細な情報が含まれており、GRUBを使用してWindowsを起動できない理由をよりよく理解できる場合があります。

ブート修復を使用して「Bootinfo Summary」を提供する方法


Ubuntuを引き続き起動できるため、コマンドを使用してBoot-Repairツールをインストールして実行し、apt-getそれを使用してを実行できますCreate a Bootinfo summary

ターミナルウィンドウで以下のコマンドを実行して、boot-repairツールをインストールします。

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
  1. それが完了したら、コマンドboot-repairを入力してツールを開始します。
  2. 少し遅れて、boot-repair最新バージョンをダウンロードするかどうか尋ねられます。最新バージョンをインストールしたので、答えてくださいNo
  3. パッケージのboot-repairインストールを求められたらpastebinit、で応答しYesます。
  4. ツールはシステムをスキャンし、(最終的に)下の画像に示すウィンドウを表示します。Create a Bootinfo summaryボックス/ボタンをクリックします。これにより、システムのブート構成に関する情報が収集されますが、変更は加えられません。


    最初のブート修復ウィンドウ

  5. bootinfoサマリーが作成されると、次のboot-repairようなURLを含むメッセージが表示されますhttp://paste.ubuntu.com/123456/

    質問を更新/編集して、このURLを追加してください。このリンクが指し示すペーストビンの情報は、問題の診断に役立ちます(願っています)。

WindowsパーティションのVBRを上書きすると、この問題が発生したと思います。

私の理解では、オペレーティングシステムを起動するにはいくつかの手順があります。あなたの場合、以下のステップのようなことが起こると思います。

  1. コンピューターのBIOSは、ハードドライブの最初のセクターでコードを実行しようとします。この最初のセクターは、通常MBR(マスターブートレコード)と呼ばれます。
  2. MBRに加えて、すべてのパーティションにブートレコードを含めることもできます。多くの場合、ボリュームブートレコードまたはVBRと呼ばれます。ハードドライブ上のMBRは、Windowsパーティションであるパー​​ティション1のVBRに制御を転送します。
  3. Windowsは、パーティションのVBRがWindows 7などのオペレーティングシステムの起動に向けて次のステップを踏むことを期待しています。したがって、Windows bootmgrは、WindowsパーティションのWindows プログラムに制御を移すVBRを最初にインストールします。

    ただし、WindowsパーティションにGRUBをインストールするようにUbuntuにプログラムをインストールするように指示した場合、GRUBはWindows VBRを独自のものに置き換えたように見えます。このGRUB VBRはGRUBブートメニューを表示します。
  4. GRUBが現在Windowsを起動するために使用している命令は、基本的にWindowsパーティション内のVBRを見つけて制御を移すことです。WindowsパーティションのVBRはGRUBのVBRです。コントロールをそこに転送すると、GRUBブートメニューが(再)表示されるだけです。

残念ながら、これを修正する最良の方法はまだわかりません。Windowsの起動に関する問題を解決しようとする際に、GRUBを破損せず、コンピューター上で何も起動できないように注意する必要があります。

以下は、参照用のBootinfo Summaryからの情報の一部のコピーです。上記の私のコメントは、この情報に基づいています。

============================= Boot Info Summary: ===========================

 => Grub2 (v1.99) is installed in the MBR of /dev/sda and looks at sector 1 
    of the same hard drive for core.img. core.img is at this location and 
    looks for (,msdos2)/boot/grub on this drive.

sda1: ______________________________________________________________________

    File system:       ntfs
    Boot sector type:  Grub2 (v1.99)
    Boot sector info:  Grub2 (v1.99) is installed in the boot sector of sda1
                       and looks at sector 44090872 of the same hard drive 
                       for core.img. core.img is at this location and looks
                       for (,msdos2)/boot/grub on this drive. No errors 
                       found in the Boot Parameter Block.
    Operating System:  Windows 7
    Boot files:        /bootmgr /Boot/BCD /Windows/System32/winload.exe

sda2: ______________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  Ubuntu 12.04 LTS
    Boot files:        /boot/grub/grub.cfg /etc/fstab /boot/grub/core.img

Windows 7を起動するための可能な回避策

以下は、Windows 7をブートできるGRUBブートコマンドを編集するための提案です。これが機能するかどうかはわかりませんが、試してみる価値はあります。

現在、grub.cfg以下のGRUBブートコマンドを使用してWindows 7を起動しています。

menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
    insmod part_msdos
    insmod ntfs
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root 1EA0019AA0017A13
    chainloader +1
}

これを変更して、代わりにこれらのコマンドを使用することをお勧めします。

menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
    insmod part_msdos
    insmod ntfs
    insmod ntldr
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root 1EA0019AA0017A13
    ntldr ($root)/bootmgr
}

これを行う手順は次のとおりです。

  1. システムをブートしてGRUBメニューを表示します。
  2. GRUBブートメニューエントリを選択(強調表示)しますWindows 7 (loader) (on /dev/sda1)
  3. を押しeて、Windows 7のGRUBブートコマンドを編集します。
  4. menuentry上記のように、このコマンドリストに2つの変更を加えます。
    • コマンドを追加する insmod ntldr
    • コマンド
      chainloader +1
      を次のように変更 します
      ntldr ($root)/bootmgr
  5. Ctrl+ XまたはF10を押して、これらの編集されたコマンドを使用して起動します。

注1:

上記の回避策がWindows 7ブートメニューの読み込みに成功した場合は、次の方法で半永続化することができます。

  1. を使用sudoしてファイルを編集し、上記の/etc/grub.d/40_custom2番目の修正済みを追加しますmenuentry。(これを行う場合、この「カスタム」エントリのタイトルを変更することもお勧めします。)
  2. コマンドsudo update-grubを実行して更新/boot/grub/grub.cfgし、カスタマイズしたエントリを含めます。(ブートすると、GRUBメニューの下部に表示されます。)

上記の提案は、部分的にしか解決されていないソリューションだと思います。より良い解決策は、GRUBの起動機能を損なうことなく Windows VBRをWindowsパーティションに復元することです。

私は思う...しかし100%確信していない... bootsectこれを行うためにWindowsリカバリコマンドを使用できることを。あなたがそれを危険にさらしたいならば、これをする1つの可能な方法は以下に概説されます。

  • Windowsを起動するときに、を押しF8Advanced Boot Optionsメニューを表示します。
  • Repair Your Computerエントリを選択します。
  • に達するまで、次のウィンドウを歩きますSystem Recovery Options
  • 選択する Command Prompt
  • コマンドを実行する bootsect /nt60 C:

しかし、上記を試すリスクを冒す前に、少し待って、質問に対する他の回答を確認することもできます。

注2:

他のものを探しているときに、AskUbuntuであなたの問題に関連する2つの質問に出くわしました。

  1. Ubuntu 11をインストールした後、Windows 7が起動しません
  2. Ubuntuのインストール後にWindows 7が起動しない

これらの質問がどれほど役立つかはわかりません。2番目の質問に対する答えbootrec /fixbootは、WindowsパーティションのVBRを復元するコマンドを使用することでした。その質問からの私の理解は、bootrec /fixbootコマンドを使用して問題を解決したということでした。

しかし、2つ目の質問は、と主張しbootrec /fixbootたのではない問題を解決します。

(そこで何が起こっているのかについて、私から大騒ぎします。)


お返事ありがとうございます。幸運なことにそれは大丈夫ですが、他の人がそれを知らなかったなら、彼らは今やっています。Boot-Repair-InfoのURLはhttp://paste.ubuntu.com/981952/
Sim

1
あなたの問題はGRUBをWindowsパーティションにインストールしたことが原因だと思います。私の答えの更新をご覧ください。
不合理なジョン

それで、私に何ができると思いますか?bootrecを使用してからgrubを再インストールする必要がありますか?または別の方法がありますか?
シム

通常どおりWindowsブートを修復できます。これが完了すると、Windowsはユーザーに確認することなく自動的にブートします(WindowsはLinuxを認識しません)。それが修正されたら、USBからLinuxを起動してGRUBを再度実行できます。今回はWindowsパーティションに触れないでください;)
pzkpfw

私の答えに一時的な回避策の候補を追加しました。
不合理なジョン

7
menuentry "Windows 7" {
    insmod ntfs
    set root=(hd0,1)
    drivemap -s (hd0) ($root)
    ntldr /bootmgr
    #or chainloader +1
}

(hd0,1)以外のパーティションにWindowsをインストールした場合、drivemapコマンドを使用してWindowsを起動する必要があります。Chainloader +1またはntldr / bootmgrの両方を使用して、Windows 7を起動できます。

最初に行ったのは、最初のパーティションのVBRを変更したことです。インストールCDから起動するときに、cmdのWindowsリカバリモードでこれらのコマンドを実行することにより、復元できます。

bootrec.exe /FixMbr  

bootrec.exe /FixBoot  

bootrec.exe /RebuildBcd

これが実際に機能する唯一の答えです。+1
デイジー

1

私は本当にについて知らない「(UN)ブート)」 あなたは(選択したWindowsの修復ディスクを使用してのWindowsを修正しようshoud Command Prompt実行するbootsect.exeユーティリティを。Bootsectそうに自分のディレクトリを変更し、ブートフォルダ内に位置していますboot。今すぐ実行しますbootsect /nt60 C:\(なし引用符)Windows 7を最初にC:パーティションにインストールした場合。または、「bootsect / nt60 SYS」または「bootsect / nt60 ALL」を実行できます)

そして、GRUBを再インストールします。


返信してくれてありがとう。私が意味したのは、選択した後のウィンドウではなく、GRUBブーツでした。調査によると、mbrのブートを修復するには、「bootrec.exe / fixboot」を使用してから「bootrec.exe / fixmbr」を使用する必要があると言われています。あなたの方法はbootrecと同じですか?
シム

私の経験では、Ubuntuをデュアルブートとしてインストールした後、再起動時にWindowsを実行し、それ自体で修復を実行し、Ubuntuに戻ってくる方が良いでしょう。私は毎回この方法に従って成功しました。
ビージュ

本当です。窓のために私が使用しEasyBCD
シム

0

BootInfoが示すように、GRUBはWindowsパーティションブートセクター(PBR)にインストールされます。

sda1: __________________________________________________________________________

File system:       ntfs
Boot sector type:  Grub2 (v1.99)
Boot sector info:  Grub2 (v1.99) is installed in the boot sector of sda1 
                   and looks at sector 44090872 of the same hard drive 
                   for core.img. core.img is at this location and looks 
                   for (,msdos2)/boot/grub on this drive. No errors found 
                   in the Boot Parameter Block.
Operating System:  Windows 7

これにより、Windowsが起動しなくなります。

解決策はこちらで詳しく説明されています:http : //ubuntuforums.org/showpost.php?p=11693662&postcount=1


0

私はこれと同じ問題を抱えていましたが、他の人を助けることを期待して私のために働いた解決策を確認したいと思います...

ここで変更を反映するためにgrub.cfgを編集しました。

menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
    insmod part_msdos
    insmod ntfs
    insmod ntldr
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root 1EA0019AA0017A13
    ntldr ($root)/bootmgr
}

つまり、私は追加しました...

insmod ntldr

最後の行を...に変更しました

ntldr($ root)/ bootmgr

すぐにVBRを復元しようとしますが、結果を報告します。


0

Windows 10の起動の問題を解決しました。

menuentry "Windows 10 (loader) (on /dev/sda1)" --class windows --class os {
    insmod part_msdos
    insmod ntfs
    insmod ntldr
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root 1EA0019AA0017A13 
    ntldr ($root)/bootmgr
}

hexadec.codeは異なる場合があります


2
これが本当にこの質問に属しているかどうかは
わかり
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.