web-dev-qa-db-ja.com

EFIシステムパーティションを別のドライブに移動する

UEFIをブートとして使用して、Windows 8をHDDにインストールしました。 HDDには次のGPTテーブルがあります。

DISKPART> list partition

Partizione ###   Tipo              Dim.     Offset
---------------  ----------------  -------  -------
Partizione 1     Ripristino         300 Mb  1024 Kb
Partizione 2     Sistema            100 Mb   301 Mb
Partizione 3     Riservato          128 Mb   401 Mb
Partizione 4     Primario           390 Gb   529 Mb
Partizione 5     Primario           540 Gb   390 Gb

(イタリア語で申し訳ありませんが、翻訳は非常に簡単です)。

最近SSDドライブを購入して接続し、新しいWindows 8をインストールしました。デュアルブートは機能していますが、UEFIパーティションはSSDではなくHDDにあります。 SSDパーティションリストは次のとおりです。

Partizione ###   Tipo              Dim.     Offset
---------------  ----------------  -------  -------
Partizione 1     Riservato          128 Mb  1024 Kb
Partizione 2     Primario           221 Gb   129 Mb

最善の解決策は、2つの理由でSSDに搭載することだと思います。

1つ目はパフォーマンスです(SSDの方がHDDのスピンアップ時間が長いので少し高速になると思いますが、それは間違っているかもしれません)。

第二の理由は一貫性です。 SSDにあるWindows 8インストールのみを使用する予定で、データストレージデバイスとして使用するためにHDDのシステムパーティションを消去する可能性があるので、ブートパーティションは同じものにすべきだと思いますOSとしてドライブ。

では、問題はどのようにEFIシステムパーティションをSSDに移動することですか?

15
Pincopallino

私の推奨は、気にしないことです。 ESPから読み取られるファイルは小さく、コンピューターの起動時にのみ読み取られるため、パフォーマンスの向上はごくわずかです。さらに、パーティション自体は最新の標準では非常に小さいので、価値のある作業を行うのに十分なスペースを回復します。さらに、ESPを移動しようとすると、起動の問題が発生する可能性があり、修正にかなりの時間がかかる可能性があります。移動からの起動時間。

私の推奨にもかかわらず、先に進み、これを学習体験として実行したい場合は、以下を調べる必要があります。

  • ESPを任意のパーティション分割ソフトウェアで作成します。これを標準のWindowsツールでどのように行うかわかりません。 gdisk = EF00タイプのパーティションを作成しますが、gdiskはパーティション専用ツール(ファイルシステムを処理しない)であるため、その上にFATファイルシステムを作成する必要があります。
  • 両方のESPを同時にマウントしてファイルをコピーします(または一時ストレージを使用して順番に)。 Windowsでこれを行う方法はわかりませんが、LinuxまたはEFIシェルからは簡単です。 (実際には、EFIシェルでは自動的に行われます。)
  • 新しい家にブートローダーを登録する。 (EFI\BOOT\bootx64.efiのフォールバックファイル名を使用する方が簡単な代替手段ですが、ブートローダーをロードする方法としてはあまり推奨されません。)Windows bcdedit コマンドとEFIシェルの bcfg ツールはどちらもブートローダーを登録できます。ただし、WindowsがサポートするESPは1つだけなので、bcdeditは柔軟性がなく、ESPのコピー時に問題が発生します。
4
Rod Smith

Googleから来た私のような人々の場合:はい、Windowsでこれを行うことができます。サードパーティのツールは必要ありません。Windows10 Pro x64でテストされました。この手順を使用して、EFIシステムパーティションとシステム予約済みパーティション。Windows8でも動作するはずです。

プライマリドライブにスペースがない場合は、最初にC:パーティション(または同等のもの)を圧縮する必要があります。この例では260 MBを使用していますが、それは新しいドライブが必要とするものですが、セクターが小さい古いドライブは100 MBしか必要としません。スペースを空ける必要がない場合は、スキップする必要がある手順を示すコメントに注意してください。

その間、おそらくシステム予約済みパーティションを移動する必要があります。これらは通常1000 MBであり、有用なWindowsメタデータを格納します。一部のWindows機能は、システム予約パーティションがないと機能しない場合があります。プライマリドライブにこのようなパーティションを作成する手順を含め、それらの手順にコメントを付けました。スキップする場合は、これらの手順を簡単に除外できますが、縮小するときに数値を変更する必要があります(たとえば、1260 MBではなく260 MB)。

コメントはREMで始まります(「注釈」を意味します)。これらはcmd.exeとdiskpart.exeの両方でサポートされているためです。

管理者として実行されているcmd.exeから:

diskpart
list disk
REM Choose the appropriate disk number from the list.  If you're unsure, you can open diskmgmt.msc; the numbers will be the same.
sel disk 0
list part

REM Perform the following only if you need to shrink a partition to make space for the EFI partition.
REM Choose the appropriate partition from the list.  I used my C: partition.
sel part 2
shrink desired=260
REM End of shrinking operation.

REM Create a new EFI partition:
create part efi size=260
format quick fs=fat32
list vol
REM Find your newly created volume in the list.  If it's not already selected (marked with an asterisk), select it now with "sel vol #".
REM You'll need to give the volume a drive letter for later:
assign
list vol
REM Note the drive letter that the volume has been given.  Mine was F:, so I'll use that in the example.
REM Done creating new EFI partition.

REM Optionally create a new System Reserved partition:
create part msr size=1000
REM Done creating new System Reserved partition.

REM We're done with diskpart.exe:
exit
REM You should no longer see the DISKPART> Prompt.

REM Note that you may need to change these drive letters, particularly F:.  F: should match the volume you created previously.
bcdboot C:\Windows /s F: /f UEFI

REM We no longer need a drive letter for the EFI partition, so we should remove it:
diskpart
list disk
REM Change disk number appropriately.
sel disk 0
list vol
REM Change volume number appropriately.
sel vol 2
REM Remove drive letter assignment:
remove
REM Exit diskpart.exe:
exit

REM Exit cmd.exe:
exit

すべてが機能することを確認するために再起動する時がきました。変更に合わせてBIOSのブート順序設定を更新する必要がある場合があります。私の場合、BIOS設定は既に正しいため、再起動ループに陥っていました。コンピューターを起動するたびに、EFIパーティションを誤って配置した古いドライブを手動で選択する必要がありました。

すべてが期待どおりに機能した場合は、古いEFIパーティションを削除できます。それが機能しなかった場合、またはBIOSが古いパーティションから起動するように構成されている場合、diskpart.exeでオーバーライドフラグを使用しても、Windowsでは削除できません。とにかく古いパーティションを取り除きたいので、それを削除することは新しいパーティションから起動していることを確認するための素晴らしい方法です。

diskpart
list disk
REM Change disk number appropriately.
sel disk 2
list part

REM You can repeat this next group of steps to delete as many "special" partitions as you like.  I had 4 reserved partitions from an old OEM installation.  Just make sure you don't delete your data!  The "override" flag is only necessary for partitions that can't normally be deleted.
REM Change partition number appropriately.
sel part 1
del part override

REM When you're done, exit diskpart.exe:
exit

REM Exit cmd.exe:
exit
16
Zenexer

私はこれが古い記事であることを知っていますが、私はまだ多くの人が良い答えを求めていると思います。

これはWindows 7、8、10に適用されます。また、イベントID 12290にも有効です。ESPパーティションがアクティブOSであり、バックアップされるディスク以外のディスクにある場合。

最初にESPパーティションを含む他のドライブをすべて切断し、誤ってそのドライブを変更しないようにします。

次に、ESPパーティションを配置するディスクに100〜300 MBの新しいパーティションを作成する必要があります。ドライブがいっぱいの場合は、まず既存のパーティションの1つを縮小する必要があります。

私の場合、USBスティックからXubuntu 13(Ubuntu 12.1を超えると思います)をライブで起動します。インストールしないでください。

Gpartedを開き、パーティションを作成してFAT32にフォーマットします。ドライブに「ブート」のフラグを付け、「ブート」のフラグが付いている他のパーティションのフラグを外します。また、可能であれば、新しいパーティションにドライブ文字を割り当てます。そうでない場合は、後でdiskpartを使用して実行できます。

再起動して、WindowsインストールDVDからWindows(RE)Recoveryで起動します。コマンドプロンプトに移動します。 Gpartedでそれができなかった場合は、diskpartを起動し、新しいパーティションにドライブ文字を割り当てます。 diskpartを終了しますが、コマンドプロンプトはそのままです。

次に、必要なファイルを新しいパーティションにコピーします。

bcdboot <source> /S <ESP drive letter>: /f UEFI

スペースに注意してください!例:bcdboot c:\Windows /s x: /f UEFI

このコマンドは、パーティションにESPステータスも提供します。

次のコマンドを使用してBCDを再構築します。

bootrec /RebuildBcd

ESPパーティションに追加するOSを尋ねられたら、含めるOSに対してYesと言い、Noと言います。起動したくないものに。私の場合は最近Windows 10にアップグレードしましたが、ご存知かもしれませんが、Windowsは古いWindows 7/8を自分で削除していない場合、しばらく保存します。この古いOSのコピーは、通常は起動できません。通常はWindows.oldにあります。したがって、Allの選択肢を選択しないでください。

わかりませんが、このコマンドはWindowsインストールのみを検索すると思います。たとえば同じコンピュータ上にLinux OSをインストールした場合。次に、後で起動するためにも、bcdeditなどを使用する必要があります。

私が使用しなかった最後のコマンドがあります。

bootrec /fixboot

私はコマンドをより詳細に学習しようとしましたが、ESPパーティションにブートフラグを設定し、ブート可能にするだけだと思います。これは、GpartedでESPパーティションにブートのフラグを付けたときと同じです。

もう不要なESPパーティションがあった場合、最も簡単な方法は、Linux/Gpartedを再度起動して、そこから削除することです。

3
Joelbit

正規のW10インストールISO(DVD)を使用して、新しいSSDディスクにフレッシュインストールを作成しました。インストールはGPTではなくMBRタイプになりました。セキュアブートが必要だったので、この新しいインストールを(データ損失なしで)MBRからGPTに変換する必要がありました。

次に、ディスクの最後で最後のNTFSパーティションを縮小して空き容量(260 MB)を作成しました(LinuxをUSBスティックからSystemRecueCDから起動し、gpartedを使用しましたが、Windows 10のディスクマネージャーも使用できます)。

次に、この新しい小さなパーティションをFAT32にフォーマットしました(WindowsまたはLinuxでも実行できます)。元のEFIからこの新しいパーティションにファイルをコピーしました(WindowsではC:というドライブ文字の2つのディスクが好きではないため、Linuxでコピーしました)。

次に、Linuxでgdiskを使用してMBRをGPTに変更しました。私はgdiskを使用した後、この小さなパーティションをタイプef00(EFI)に変更し、ブート可能としてマークする必要があります(1つだけにする必要があるため、ブート可能フラグを元のブート可能ドライブC:から削除する必要があります)。

次に、ノートブックのセットアップで起動タイプをUEFIのみに変更しました。これは、EFIで実際に起動することを確認するためです。一部のファイルが欠落しているため(名前に「efi」が含まれているため)、Windowsは起動しませんでした。

次に、Windows 10のインストールDVDから起動し、「レスキューシステム」を選択してから、「起動の問題を修正する」などを選択しました。その後、Win10は問題なく起動しました。 bcdbootは手動による介入を必要としません。

EFI構成は、Linuxのefibootmgrユーティリティで確認できます。

1
Milan Kerslager

さて、さらに別のソリューションを追加しましょう。私の目的は、EFIパーティションをコピーすることだけでなく、other非表示のものを考慮に入れることです。順序が重要かどうかはわかりませんが(個人的にはmsdnに記載されているものとは別のものでした)、w/eです。

とにかく、私は偉業のために GParted Live を使用しました。起動したら、Windowsのメインパーティション(C:である必要があります)を、新しいディスクにないパーティションと同じ量のMiBのパーティションから減らし、最後に移動します。これにはしばらく時間がかかります。

次に、新しくサイズを変更したパーティションのすぐ下に、新しい16MiBパーティションを作成しました。ここに、Microsoftが予約したパーティションをddに入れます( 理由 のため、partedはできないようですフォーマットされていないFSを処理します)。いつものように、ddを使用するときは、コマンドに細心の注意を払ってください。

完了したら、GParted GUIに戻り、新しいMSRパーティションに正しいフラグと名前を手動で設定し、元のパーティションを削除しました。最後に重要なことですが、最終的にRecoveryとEFIパーティションを元のHDDからSSDにコピーして(名前/フラグ操作を繰り返し)、sgdisk -sを実行しましたパーティションの順序を修正します。

再起動して、利益を上げましょう! efibootmgrや bcdboot をいじくり回す必要はありません。少なくとも私のラップトップでは、新しいESPが自動的に見つかりました。

編集:最初のディスクを拡張するとき、何らかの理由でWindowsディスクマネージャーがそれをダイナミックボリュームに変換する場合。チェック この回避策

0
mirh