MBRをGPTベースのシステムに変換する、LinuxおよびWindowsを起動する方法

MBRをGPTベースのシステムに変換する、LinuxおよびWindowsを起動する方法

GPTベースのシステムをLinuxとWindowsで起動するには?新しいGPTベースのシステムから始めるのではなく、MBRからGPTベースのシステムから始めるのは問題です。

私のAsusノートブックの初期設定、

  • セキュアブート制御を無効にしました。
  • 有効にしました[Launch CSM](互換性サポートモジュール)。
  • MBRを使用してHDを分割します。
  • Win8およびすべてのLinuxを含む私のAsusノートブックのすべてのシステムは、このBIOS / MBR / CSMモードで起動します。

しかし、私は発見した私のUSBはEFIモードでのみ起動します。そしてWindows 10インストールが拒否されましたUSBがEFIモードからBIOS / MBR / CSMモードシステムから起動したとき。

だから私は私のMBRディスクをGPTに変換もちろん、Krunalが警告したように、これは私のシステムの起動を壊し、すべてを再起動する必要がありました。

さて、今私の質問です。

  • extlinuxBIOS / MBR / CSMモードには、Win8およびすべてのLinuxを含むすべてのシステムが起動する(使用)アクティブMBRパーティションがあります。
  • しかし、GPTモードではここで問題が始まります。

だから私は基本的にどの方向に行くべきかわからず、すでに混乱して起動できないシステムをもう混乱させたくありません。

私の現在のパーティショニングパターン(関係がないと思いますが、誰かが要求したので):

Disk /dev/sda: 698.65 GiB, 750156374016 bytes, 1465149168 sectors
Disk model: HGST HTS541075A9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: AA9AB709-8A5D-468D-990E-155BA6A2FBB3

Device         Start        End   Sectors   Size Type
/dev/sda1       2048  129026047 129024000  61.5G Microsoft basic data
/dev/sda2  129026048  169986047  40960000  19.5G EFI System
/dev/sda3  169988096  186372095  16384000   7.8G Linux filesystem
/dev/sda4  186374144  200710143  14336000   6.9G Linux filesystem
/dev/sda5  200712192  215046143  14333952   6.9G Linux filesystem
/dev/sda6  215048192  231432191  16384000   7.8G Linux filesystem
/dev/sda7  231434240  247818239  16384000   7.8G Linux filesystem
/dev/sda8  247820288  264204287  16384000   7.8G Linux filesystem
/dev/sda9  264206336  276494335  12288000   5.9G Linux filesystem
/dev/sda10 276496384  288784383  12288000   5.9G Linux filesystem
/dev/sda11 288786432  329746431  40960000  19.5G Linux filesystem
/dev/sda12 329748480  452628479 122880000  58.6G Microsoft basic data
/dev/sda13 452630528  493590527  40960000  19.5G Linux swap
/dev/sda14 493592576  903192575 409600000 195.3G Linux filesystem
/dev/sda15 903194624 1465147391 561952768   268G Linux filesystem

これらの環境でLinux(およびWindows)を起動する方法について明確なガイドラインをお寄せいただきありがとうございます。ありがとうございます。

更新/結論:

/dev/sda2以前はアクティブMBRパーティションであり、上記のように型をLinux filesystem。で変更したがEFIシステムとして使用できないようにフォーマットされEFI Systemています。ext4

したがって、上記の問題を解決するために必要なものは次のとおりです。

  • sda2タイプを次に戻しますLinux filesystem
  • sda1319.5G Linuxスワップパーティションでは、FAT32パーティションをESPパーティションに分割しました。
  • CSMからデフォルトEFIモードにファームウェアを変更する
  • それから@telcoMの下のアドバイスに従ってください。

答え1

私が知っている限り、Windowsは変換が完了した後にこれらの変換されたシステムディスクを特別なケースとして扱わないので、「新しい」GPTベースのシステムのディスクとまったく同じように処理する必要があります。

具体的には、Windowsでは、GPTパーティションシステムディスクが常にUEFIデフォルトスタイルでWindowsを起動する必要があるという制限が適用されます。 GPTパーティションディスクでは、BIOSスタイルの起動手順は許可されていません。

まず、MBRとGPTパーティションの違いを理解してください。

  • GPTでは、MBRパーティションのように、基本/拡張/論理パーティションは区別されません。すべてのGPTパーティションは単なるパーティションです。
  • GPTパーティションテーブルに「レガシーBIOS起動可能」パーティションプロパティビットがありますが、UEFIスタイルで起動するときはまったく使用しないでください。
  • MBRパーティションディスクには、通常、ブロック#0(実際のマスターブートレコード)と最初のパーティションの先頭との間に未使用のディスクブロックの間隔があります。最新のシステムでは、最初のパーティションは通常ディスクの先頭から正確に1MiBにソートされているため、共通の512バイトブロックを使用している場合、最初のパーティションはブロック#2048で始まります。 MBR と最初のパーティションの間隔は、GRUB などのブートローダで使用されます。 GPTパーティションディスクでは、この領域は実際のGPTパーティションテーブルによって占められているため使用できません。
  • MBRパーティションディスクでは、パーティションタイプはシングルバイトで識別されます。 GPTパーティションディスクでは、各パーティションのタイプはUUIDによって識別されます。
  • MBRパーティションディスクには32ビットがあります。ディスク署名; GPTパーティションディスクには、同じ目的で使用される128ビットUUIDがあります。各GPTパーティションには、パーティションテーブルに固有のUUIDもあります。これは、パーティションに使用されているファイルシステムが不明な場合でも、パーティションを一意に識別するために使用できます。 Linuxは、PARTUUIDMBRパーティションディスクの場合、物理パーティションUUIDの代わりにMBRディスク署名とパーティション番号の組み合わせとして使用します。
  • MBRパーティションテーブルはブロック#0にあります。拡張パーティション化を使用する場合は、各論理区画の先頭に追加の区画表があります。 GPTパーティションテーブルはブロック#1から始まり、複数のブロックを占めます。GPTパーティションテーブルのバックアップディスクの一端にあります。ディスクの先頭の複数のブロックを空にしてディスクパーティションを消去するのに慣れている場合、これは通常驚くべきことです。

パーティションタイプUUIDは人には便利ではないため、これを短縮するために複数のパーティショナーでさまざまな方法を使用します。gdisk4桁のタイプコードが使用されます。 Gpartedは、さまざまなフラグを介してさまざまなパーティションタイプUUIDを表します(私の考えでは不幸な選択です)。

デフォルトのUEFIスタイルのブートプロセスも、既存のBIOSスタイルのブートプロセスとは大きく異なります。

  • BIOSスタイルの起動プロセスは通常、BIOS設定によって現在の起動ドライブとして選択されているデバイスにBIOSデバイスID 0x80(=最初のBIOSハードディスク)を割り当てます。 UEFIモードで起動するときのファームウェア設定(UEFIシステムの「BIOS設定」)は、以下を定義します。スタートパス: さまざまな形式を取ることができますが、インストールされているオペレーティングシステムの最も一般的な形式はパーティションUUIDそしてブートファイルパス名
  • BIOSモードで起動すると、ファームウェアは選択した起動ディスクのブロック#0の末尾にある2バイトの起動署名を確認し、MBRブロックと物理パーティションテーブルの約440バイトの機械語コードのみを実行します。 UEFIスタイルで起動すると、ファームウェアには特定の種類の問題を理解する機能が組み込まれています。ファイルシステム:UEFI仕様は互換性のあるUEFIファームウェアを示します。〜しなければならないFAT32は理解していますが、他の種類のファイルシステムも理解できます。 UEFI「ブータブルディスク」には、特別なタイプのUUIDを持つパーティションを含める必要があります。これをEFIシステムパーティションまたは縮小してESPと呼びます。ファームウェアは、固有のUUIDがブートパスで指定されているものと一致するESPパーティションを見つけ、そのパーティションから指定されたブートファイルをロードしようとします。
  • リムーバブルメディアまたは以前にファームウェア設定で構成されていなかったディスクからUEFIモードで起動すると、ファームウェアはファームウェアが読み取り可能なファイルシステムと特定のパス名を持つファイルを含むESPパーティションを見つけます。 64ビットx86ハードウェアの場合UEFIフォールバック/リムーバブルメディアブートパス\EFI\boot\bootx64.efiWindowsスタイルまたは<ESP mount point>/EFI/boot/bootx64.efiLinuxスタイルで表現する場合。

ESPパーティションには標準構造があります。インストールされている各オペレーティングシステムはサブディレクトリを設定し、\EFI\<vendor or distribution name>\そのサブディレクトリにブートローダファイルのみを配置する必要があります。この\EFI\boot\サブディレクトリは、次の代替/リムーバブルメディアブートローダ用に予約されています。ハイランダールール:一人しかいません。(各システムアーキテクチャごと)。


非ESPパーティションにGParted "ブートフラグ"を設定すると、実際にはパーティションのタイプUUIDがESPタイプUUIDに変わります。これはエラーです。これで、ディスクにESPタイプのパーティションが2つあります。変更されたパーティションタイプを元のタイプに戻す必要があります。 GPartedでは、これはGPartedから「boot」および「esp」フラグを削除することを意味します。gdiskこれは、タイプコードを8300(「Linuxファイルシステム」)または8304(「Linux x86-64ルート」)に設定することを意味できます。

同じディスクにWindowsもあるため、BIOSブートパーティション(gdiskタイプコードef02)を使用することはお勧めできません。これにより、通常はファームウェア設定に移動し、切り替えるたびにCSMを有効/無効にする必要があります。オペレーティングシステム。代わりに、ディスクインストールをライブLinuxブートメディアにマウントしてからルートを変更して、/mnt現在のBIOSスタイルのブートローダ(通常はi386-pcアーキテクチャタイプのGRUB)をデフォルトのUEFIブートローダ(スキーマタイプのGRUBなどx86_64-efi)に置き換えることができます。デフォルトでは(次のコマンドはすべてですroot):

mount <your root filesystem device> /mnt
mount -o rbind /dev /mnt/dev
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
chroot /mnt /bin/bash

セッションはインストールされているLinuxオペレーティングシステムの環境を使用し、通常どおりパッケージマネージャや他のツールを使用できるようになります(警告:/var別のパーティションなどの標準システムの一部がある場合は今すぐインストールしてください)。また!)

最初のステップは、ESPのマウントポイントを追加してインストールすることです。lsblk -o +UUIDESPパーティションのUUIDを実行して起動します。ファイルシステムタイプはFAT32である可能性が高いので、次のコマンドを実際のUUIDに置き換えてくださいxxxx-yyyy<ESP UUID>

mount UUID=<ESP UUID> /boot/efi
echo "UUID=<ESP UUID> /boot/efi vfat umask=0077,shortname=winnt,flush 0 2" >>/etc/fstab 

次のステップは、ブートローダの種類を切り替えることです。

残念ながら、どのLinuxディストリビューションを使用しているかについて言及していません。 Debian、Ubuntu、またはそれらから派生したいくつかのディストリビューションの場合は、標準のパッケージ管理ツールを使用してアンインストール、パッケージ化、インストール、および交換し、実行grub-pcgrub-pc-binまたはESPパーティションを含むディスク)して最後に再構築を実行する必要がありますgrub-efi-amd64。GRUB構成。grub-efi-amd64-bingrub-install /dev/sdaupdate-grub

この時点でchrootを終了し、マウントをキャンセルし、システムが起動できることを確認できます。

(if you had to mount any extra partitions, unmount them now)
exit
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt
reboot

efibootmgrLinuxの実行中にファームウェア起動設定を表示、バックアップ、および変更できるため、このユーティリティをインストールすることもできます。 (Windowsではコマンドを使用して同じことを実行できますが、bcdedit私の考えではコマンドを使用するのは難しいですefibootmgr。)

関連情報