web-dev-qa-db-ja.com

Windows 10のアップグレードはGRUBレスキューにつながりました

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

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が含まれているパーティションを完全に削除しなければならなくなってもかまいません。

72
LChaos2

コンピューターには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/...行がある場合、これらのパーティションの番号が変更されていれば、番号を修正する必要があります。

62
nobody

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

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



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

幸運を!

13
Patrick

パーティションを変更する前に、バックアップを作成して別のデバイスに保存します。そうでない場合は、正しいドライブに変更してください。その後、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

10
oldfred

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

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

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

あなたの場合、Linuxパーティションは新しいsda5の前にディスクに配置されていましたが、パーティション分割前のsda5よりも大きいパーティション番号がありました。

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

Windowsは、削除するパーティションの内容を上書きしません。そのため、どこにあるかを見つけることができれば、それらを回復することができます。私の場合、パーティションテーブルのバックアップがありましたが、 oldfred's answer で説明したようにtestdiskを使用すると、それらすべてを見つけることができます。 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はアップグレードを完了できます。

7
Martin Thornton

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

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

    レガシーサポートDISABLE

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

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

1
iacobus