ddを介して新しいドライブからデータを回復した後にgrubファイルを編集するには?

ddを介して新しいドライブからデータを回復した後にgrubファイルを編集するには?

Ubuntu 20.04とWindows 10がインストールされたデュアルブートシステムがあります。スペースが足りなくなり、SSDを512GBにアップグレードしました。ライブUbuntuドライブから起動し、すべてのパーティションをバックアップしました。Ubuntu、Windows、efiまたマイクロソフトは保有している以前の256 SSDで通過DD次のように

dd if=/dev/nvme0n1p6 of=/path/to/linux.img

4つのパーティションのそれぞれについて

バックアップ後、以下のように各パーティションを新しいSSDに復元しました。

dd if=/path/to/linux.img of=/dev/nvme0n1p4

参考にしてくださいNVME0N1P4比較NVME0N1P6以前(パーティションの名前が変更され、おそらく私のUbuntuブートローダーgrubのエントリがめちゃくちゃになったでしょう)

私はブートローダとグラブエントリとその仕組みについてほとんど知りません。助けてくれてありがとう。

システムを再起動しようとすると、以前のデフォルトの動作であったブート時にubuntu grubをロードするのではなく、Windowsブートファイルが見つからないというWindows OSのエラーが表示されます。これは変更によるもののようです。これでパーティション名が異なります。以前まで。

しなければならないDD個々のパーティションではなく完全なSSDを使用しましたが、他のSO投稿では、復元したいハードドライブ以外のハードドライブにバックアップすると問題が発生する可能性があると述べました。

また、grubを更新し、ライブCDを介してgrubをインストールしようとしましたが、efiパーティションが見つからないと表示されます。

私のタスクに関連するすべてのタスクはSSDにあり、すべての設定、パッケージ、プロジェクト、およびすべてと一緒にLinuxをインストールしたくありません。 2日連続でこの問題を解決しようとしましたが、解決されませんでした。

どんな助けでも大変感謝します! :)

gpartedの説明

ベストアンサー1

msftdataNTFSパーティションに「フラグ」があり、/boot/efiFAT32パーティションがあると判断した場合GPTパーティションを分割して起動中ネイティブUEFIモード、既存のMBR、およびBIOSをそれぞれ置き換えます。これら2つの情報ブロックでは、基本実行する必要がある操作に影響します。

BIOS設定にシステムを起動するように設定するオプションが含まれている場合UEFIモードのみまたは少なくともレガシーモードよりUEFIを好む、この設定を使用することをお勧めします。回復操作やその他の操作の一部として、誤って誤ったモードで起動する手間を最小限に抑える必要があります。


まず、/boot/efiパーティションがEFIシステムパーティション(縮小してESP)として正しく表示されませんでした。を使用しているように見えるので、gpartedこれはespそのパーティションにフラグを設定することを意味します。対応するbootフラグも自動的に設定されます。

(GPTパーティションの場合、実際には「フラグ」espではmsftdataなく、さまざまなGPTパーティションタイプgpartedのUUIDです。これはフラグで表されます。 GPTの場合、bootフラグは基本的に互換性の理由でエイリアスにすぎませんesp

場所、サイズ、および「なし」ラベルは、/dev/nvme0n1p2これがおそらく目的のパーティションであることを示します。マイクロソフトは保有している。その場合は、msftresこれにフラグを設定する必要があります。これは、将来のファイルシステムの変換とアップグレードを可能にするためのWindowsパーティションの前の空のスペースライブラリです。

残りの唯一のLinuxパーティションは、マウント/dev/nvme0n1p4ポイントとしてマークされています/home。これは正しいですか?それでは、実際のUbuntuはどこにありますか?ルートファイルシステム


次の問題は、各パーティションを別々にイメージ化し、明らかにパーティションテーブルを再構築するため、各パーティションのGPTパーティションテーブルに格納されている固有のPARTUUIDが異なることです。

Linux と GRUB は通常、以下を使用します。ファイルシステムレベル代わりにUUIDなので、この変更の影響はほとんどありません。ただし、UEFI ファームウェアは、EFI システム区画のデフォルト識別子として PARTUUID を使用する可能性が高くなります。これは、UEFI NVRAMブートエントリ(sudo efibootmgr -vUEFIモードで起動したときに表示される)が廃止されたことを意味します。

Windowsが(リムーバブルメディア/代替ブートパス)にブートマネージャの2番目のコピーをインストールしたため、ユーザー/boot/efi/EFI/boot/bootx64.efiの追加入力なしでUEFIファームウェアが見つけることができる唯一のブートローダです。ただし、構成ファイルが見つからないか、/boot/efi/EFI/Microsoft/Boot/BCD変更のために含まれている情報が無効なようです。

あなたは始めようとすることができますUEFIモードでWindows 10インストールメディアで「Windowsの修復」オプションを使用してください。それがうまくいけば、これはおそらくWindowsブートローダを回復する最も簡単な方法です。 Windows回復プロセスは自動的にWindowsを起動順序の最初のオペレーティングシステムとして指定するため、Linuxブートローダを回復する前にこれを行う必要があります。 Linux NVRAMブート変数の削除)。 Windowsを最初に回復したら、一度だけ元に戻すことができます。

単にコマンドを使用してこの問題を解決することもできますefibootmgr。最初に/dev/nvme0n1p1インストールされていることを確認して/boot/efiから、次の手順を実行します(例:Live CDから)。

sudo efibootmgr -c -L UbuntuNew  -d /dev/nvme0n1 -l \\EFI\\ubuntu\\shimx64.efi

(セキュアブートを無効にしたが/boot/efi/EFI/ubuntu/shimx64.efi存在しない場合は、shimx64.efiコマンドを上書きしてくださいgrubx64.efi。)

これにより、BIOS起動設定に「UbuntuNew」と表示される新しいUEFI起動変数が作成されます。名前は必要に応じて変更できますが、GRUBを再インストールすると、「Ubuntu」などの古い名前に戻ることができます。

おすすめ記事