Windows 10のアップグレードでGRUBレスキューが発生しました


75

デスクトップでWindows 7とLinux Ubuntuをデュアルブートしていましたが、今日は無料のWindows 10アップグレードを提供した日です。楽しそう!更新プログラムを入手し、インストール中だったので、30分の仮眠を取りに行きました。しかし、コンピューターに戻ったとき、私はgrubレスキュープロンプトを表示しました。

error: no such partition.
Entering rescue mode...
grub rescue>

入力すると次のようになりますls

grub rescue> ls
(hd0) (hd0,msdos5) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)

GRUBレスキュープロンプトに遭遇した人々をざっと見てから、私setは次のように入力しました

grub rescue> set
cmdpath=(hd0)
prefix=(hd0,msdos6)/boot/grub
root=hd0,msdos6

のような特定のコマンドが機能normalしないことを発見した後、私はまだ迷っていました。そして、Linuxイメージcdから起動し、ターミナルでいくつかのコマンドを実行するビデオチュートリアルを見つけました。幸いなことに、CDを持っていて、そこから起動しました。sudo fdisk -lしかし、端末に入力したとき、これは私が得たものです:

ubuntu@ubuntu:~$ sudo fdisk -l

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc03ede74

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848  1547022335   773407744    7  HPFS/NTFS/exFAT
/dev/sda3      1547022336  1547943935      460800   27  Hidden NTFS WinRE
/dev/sda4      1547945982  1953521663   202787841    f  W95 Ext'd (LBA)
/dev/sda5      1915731968  1953521663    18894848    7  HPFS/NTFS/exFAT

ここでは、私のデバイスにはLinuxシステムが搭載されていないと言います!そして、私はそれ以上ビデオチュートリアルに従うことができませんでした...

私は頭を少しいじって、sda2にWindowsシステムが含まれていると判断しました(C:ドライブには約700 GBの空き容量があるので)。もう少し考えた後、UbuntuをインストールするときにUbuntuに関連するものに約200 GBのハードディスク領域を割り当てたことを覚えています。どれを覚えているのか正確には覚えていませんが、基本的にはUbuntuの「ハードディスク領域」であり、ブートファイルはありませんでした。Linuxには他に2つのものを割り当てましたが、サイズは非常に小さいものでした(1 GBのマークをまだ破っていません)。

だから、ここの誰かが私のアップグレードを軌道に戻すのを手伝ってくれますか?Linuxが含まれているパーティションを完全に削除しなければならなくなってもかまいません。


1
LInuxパーティションが論理Windowsの場合、パーティションテーブルをそれで書き換えません。testdiskを使用します。testdiskを使用して復元し、grubをMBRに再インストールし、すべてを正常に戻したものもあります。ただし、すべてのパーティションを正しく機能させるには、プライマリおよび論理パーティションとして正しく含める必要があります。cgsecurity.org/wiki/TestDisk_Step_By_Step
oldfred

上記のレイアウトでは、新しいパーティション/dev/sda5または(hd0,msdos5)パーティションの後にディスクの最後に3505セクターしか残っていないように見えます。これはたった1.7 MBであるため、Linuxパーティションはほとんど隠れません。私の最善の推測は、Linuxパーティションエントリが何らかの形でその場所(#6ではなく#5)にシフトされ、そのタイプが不可解に変更されたことです。最初に試すのはls (hd0,msdos5)/、GRUBレスキュープロンプトです。
ジョシップロダン

1
Windowsを使用しないもう1つの理由、このような無知なOS
Aydin K.

回答:


64

コンピューターにはWindows 8がプリインストールされているため、Ubuntu用のスペースを空けるためにWindowsパーティションを縮小しました。それが昨年の仕組みです。Windows 10アップグレードで2回目の再起動後、コンピューターはそれ以上起動しませんでした。GRUBはgrub rescueコマンドプロンプトのみを表示しました。後で、Windowsが何らかの方法でパーティション構成を変更したために問題が発生したことがわかりました。ブートパーティション(通常のGRUBデータを含む)は、GRUBが予期した場所ではなくなりました。私はこれがどのように、そしてなぜ起こったのか分かりません。

レスキューモードで最初にできることは、lsコマンドでパーティションを表示することです。私のものは:

  • (hd0、gpt1)、
  • (hd0、gpt2)、

どのパーティションがブートパーティションであるかを確認してください。Tab補完はありません。完全に入力する必要があります。適切なパーティションが見つかるまで、次のコマンドを試しました。

ls (hd0,gpt1)/
ls (hd0,gpt1)/boot
ls (hd0,gpt2)/

次にset、同じプロンプトを入力します。GRUBがファイルを探す場所を表示します。私の場合、(hd0、gpt6)は(hd0、gpt7)に移動しました。表示されるsetコマンド:

prefix=(hd0,gpt6)/boot/grub
root=hd0,gpt6

通常のGRUBに戻るにprefixは、適切なパーティションを指すように設定を変更することから始めます。私の場合、コマンドは次のとおりです。

set prefix=(hd0,gpt7)/boot/grub

その後、レスキューモードから通常モードに切り替えることができます。

insmod normal
normal

次の方法でroot設定を修正することもできます。

set root=(hd0,gpt7)

ただし、これはWindowsチェーンロードエントリには関係ないため、厳密に必要というわけではありません。通常のGRUBメニューが表示されたら、Windowsを起動してWindowsのアップグレードを完了できます。問題は、再起動するたびに適切なパーティションについてgrubレスキューに通知する必要があることです。それが私がやった方法です。GRUBの問題は、Windowsがパーティションにさらに変更を加えるのかブートするのかわからなかったため、後で問題を残しました。

Windowsが終了したとき、GRUBの問題を解決し始めました。を押しeて、Ubuntuのブートオプションを編集します。すべてを変更し(hd0,gpt6)(hd0,gpt7)Ubuntuを起動しました。

ただし、暗号化されたパーティションとcryptswapを使用します。起動時に、Ubuntuはパスフレーズを要求しました。幸いなことに、Ubuntuのインストール時に保存し、ブート時に入力しました。Ubuntuは問題なく起動しました。

次に、/boot/grub/grub.cfg置き換え(hd0,gpt6)(hd0,gpt7)実行したファイルを修正しました。

sudo grub-install

その時点で残っている唯一の問題は暗号化でした。ルートUbuntuパーティション番号が1つ(6ではなく7)増加したため、スワップパーティションも同様の変更を受けました。を/etc/crypttab指すよう/dev/sda8にファイルを変更する必要がありました/dev/sda7

Ubuntuには2つのパーティション(ルートとスワップ)のみを使用しています。Windowsと共存する他のオペレーティングシステムがより多くのパーティションを使用する場合、さらに変更が必要になる場合があります。特に、パーティションがUUIDではなく番号に従ってマウントされている場合。を見てください/etc/fstab。パーティションがUUIDで識別される場合、問題はないはずです。ただし、/dev/...行がある場合、これらのパーティションの番号が変更されていれば、番号を修正する必要があります。


2
これは私にとって素晴らしい答えでした。Ubuntuのディスクがなく、Windowsを8.1から10にアップグレードしたところ、同じ問題が発生しました。したがって、この回答は、入力するだけで更新が完了するまで続行することができたため、追加の信用を得ます。ベーコンを保存してくれてありがとう。
ディブ

2
10勝(7から10までの私のアップグレードが滞りなく行ってきました)自分自身をアップグレードすることを決定し、ブートレコードを台無しにすると、このソリューションは私のために完全に働いた
pedorro

9
コマンドls (hd0,msdos1)/ ls (hd0,msdos1)/boot ls (hd0,msdos2)/ etc.からのすべてのエントリを試行lsしましたerror: unkown filesystem
ジャックマラプラード

2
助けてくれてありがとう。(UbuntuとGrubの両方が初めてなので)私にとって不明確なことの1つは、grub構成の編集はUbuntuの起動後に行う必要があることです(mini Emacsでは保存をサポートしていません)どうやらファイル。)だから私はブートし、それから設定sudo nano /boot/grub/grub.cfgを編集してから走ったsudo grub-install /dev/sda(何らかの理由で、パラメータなしの呼び出しは私のために失敗した)。そしてその後、永続的な変更が機能しました。
ニキータG.

1
すべてのエントリに対してls(hdo、msdos1)などを試しました。エラー不明なファイルシステムを取得
アシュリーG

13

Linuxと一緒にWindowsをインストール(またはアップグレード)することには問題があります。

これを試してください:https : //help.ubuntu.com/community/Boot-Repair



Windows 10 tech previewをインストールした後、それを使用して問題を修正しましたが、うまくいきました。基本的に、現在インストールされているすべてのオペレーティングシステムで動作するようにgrubを再インストールします。必ずLinuxパーティション(sd#)にgrubをインストールするように指示してください。

幸運を!


こんにちは!手伝ってくれてありがとう!実際、どのパーティションなのかよくわかりません!しかし、私はそれが動作するかどうかを確認するために少しいじります。
LChaos2

問題ない!いつも喜んでお手伝いします。
パトリック

こんにちは!そこで、boot-repair-diskを起動し、推奨される修復を使用しました。そのようにしてコンピューターを再起動しましたが、Windowsブートマネージャーに移動し、最近のハードウェアまたはソフトウェアの変更により、誤って署名されたファイルまたは破損したファイルがインストールされた可能性があることを通知します。ファイルは\ Windows \ system32 \ winload.exe、ステータス0xc0000428です。Enterキーを押すと、ブートマネージャーに移動して、起動するOSを選択し、Windows 7のみを表示します。Windows7でEnterキーを押すと、同じエラー画面に戻り、ループが発生します。
LChaos2

調査を行った結果、エラーコード(0xc000428)はwinload.exeに関連付けられており、デジタル署名によって検証されていないようです。それについて何か言っていますか?
パトリック

1
シチュエーション@ LChaos2に関する最新情報はありますか?
hg8

10

パーティションを変更する前に、バックアップを作成して別のデバイスに保存します。そうでない場合は、正しいドライブに変更してください。その後、testdiskを使用して誤ったセットを復元した場合、最初からやり直すことができます。testdiskを使用して復元する場合、現在のすべての論理と欠落した論理のみが必要です。

sudo sfdisk -d /dev/sda > parts.txt

不足しているパーティションはここにあるか、1547 ...の拡張パーティションの開始と1915に示されている最初のパーティションの間にあります...:

/dev/sda4      1547945982  1953521663   202787841    f  W95 Ext'd (LBA)
/dev/sda5      1915731968  1953521663    18894848    7  HPFS/NTFS/exFAT

testdiskを使用できますが、CHSを使用します。すべての既存のパーティションと欠落しているパーティションを論理として選択する必要があります。パーティションを変更した回数に応じて、多くのバージョンが表示される場合があります。そのため、他の現在のパーティションと重複することなく、不足しているサイズと一致するサイズを選択します。正しく復元されたものは単に起動することができましたが、他のものはgrubを再インストールする必要があります。また、復元パーティションを修正できませんでした。

http://www.cgsecurity.org/wiki/TestDisk_Step_By_Step

別の復元ツールは、parted rescueです。セクターを使用しますが、指定する範囲は、現在のパーティションと重複しない、欠落しているパーティションのすぐ外側でなければなりません。正確な開始と終了を知っている場合に最適です。別れた男を見る

http://www.gnu.org/software/parted/manual/html_node/rescue.html

Parted Rescueを使用したユーザー:

http://ubuntuforums.org/showthread.php?t=1775331&p=10905969#post10905969


3
私はまったく同じ問題に遭遇し、Linuxがあった場所で「空き領域」を別れました。「空き領域」のfrom / toでレスキューを実行すると、ext4が戻ってきます!
speedogoo

3
単にgpartedがext4があった空きスペースを示したと言うためにチャイムしたいです。ランは分離し、セクターに設定し、パーティションを印刷し、「空き領域」の開始/終了を使用して救助します(値にセクターのsを追加することを忘れないでください)。GRUBをいじる必要はまったくありません。
アメディヴァンガッセ

2
より多くの人々がパーティションを失っているので、Windows 10はパーティションテーブルで何をしていますか?私の場合、ext4は論理パーティションにありました。
アメディヴァンガッセ

このパンくずリストに感謝します。別れた救助を使用して、妻の失われたLinuxパーティションを回復することができました。後でgrub-installを実行しました。
bheeshmar

7

これは、Windowsパーティショナーの厄介なバグであり、Linux固有ではありません。私の場合、皮肉にもNTFSパーティションが削除されました。

Windowsブートパーティションが小さすぎてWindows 10 Recovery Environmentを格納できない場合、Windows 10インストーラーは/dev/sda3、メインのWindowsパーティションの端に刻まれた新しいパーティション()を作成します。sda2sda1

これを行うためにパーティションテーブルを書き換えると、拡張パーティションテーブル内のすべての論理パーティションについてsda4、以前のパーティション番号の前にディスク上にある場合、それはあきらめます。

あなたの場合、Linuxパーティションは新しいの前にディスク上にありましsda5たがsda5、再パーティション前よりもパーティション番号が大きくなりました。

巨大なWindows 10アップグレードログを調べると、「6 before 5、Nothing to do」などのメッセージが、古いパーティションテーブルと新しいパーティションテーブルと共に表示されます。

Windowsは、削除するパーティションの内容を上書きしません。そのため、どこにあるかを見つけることができれば、それらを回復することができます。私の場合は、パーティションテーブルのバックアップを持っていましたが、使用してTestDiskはで説明したようにのoldfred答えはそれらすべてを見つけるの優れたチャンスを持っています。 あなたのケースでは複数のパーティションが削除されたため、Parted Rescueは使いにくいでしょう。

Ubuntu Live CDからtestdiskを使用するには、ターミナルタイプsudo apt-get install testdiskでインストールしsudo testdiskて実行します。

パーティションテーブルを修復した後、GRUBを含むLinuxパーティションの番号が以前と異なる場合があるため、GRUBレスキュープロンプトが表示される場合があります。その場合、ブート修復で GRUBを修正できるようになります。

繰り返しますが、Ubuntu Live CDを使用して、次のように入力します。

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

インストールして実行します。

これで、Windowsはアップグレードを完了できます。


問題が何であるかの明確な説明をありがとう、これは私を大いに助けました。私は質問で説明したのと同じ状況にありました。ただし、testdiskは削除されたLinuxパーティションを見つけることができませんでした。私Partedは救助のためにトリックを行なったし、私はその後窓10アップグレードを続行することができました
トビー

「Windowsは、削除するパーティションの内容を上書きしません」これはどのようにできますか?(Linuxパーティションを削除した後)作成された新しいパーティションがディスク全体を占有しました。これは、書き込みがどこにでも行けるという意味ではありません。
グレッグベル

私はあなたをどれほど愛しているかを表現することはできません
aviggiano

1

ブート修復を使用するには、BIOSで設定する必要があります。

  • UEFIを有効にします(私のBIOSでは:)

    レガシーサポートDISABLE

  • セキュアブートを無効にする

おそらくセキュアブートが有効になっているため、「誤って署名されたファイル」エラーが表示されます。

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