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が警告したように、これは私のシステムの起動を壊し、すべてを再起動する必要がありました。
さて、今私の質問です。
extlinux
BIOS / MBR / CSMモードには、Win8およびすべてのLinuxを含むすべてのシステムが起動する(使用)アクティブMBRパーティションがあります。- しかし、GPTモードではここで問題が始まります。
- LinuxでGPTパーティションを起動可能としてマークする、で「ブートフラグ」を設定する必要があることがわかりました
GParted
(以前にアクティブMBRパーティションをEF00
「EFIシステム」を示すタイプコードで表示)し、GParted
(EFIシステムパーティション)フラグも設定されました。ESP
- しかし、それによるとwiki.archlinuxのGUIDパーティションテーブル(GPT)仕様、開始するにはタイプコード
ef02
フラグが必要です。bios_grub
しかし、そのようなパーティションのための余分なスペースはありません。
- Linuxで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
。sda13
19.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は、
PARTUUID
MBRパーティションディスクの場合、物理パーティションUUIDの代わりにMBRディスク署名とパーティション番号の組み合わせとして使用します。 - MBRパーティションテーブルはブロック#0にあります。拡張パーティション化を使用する場合は、各論理区画の先頭に追加の区画表があります。 GPTパーティションテーブルはブロック#1から始まり、複数のブロックを占めます。GPTパーティションテーブルのバックアップディスクの一端にあります。ディスクの先頭の複数のブロックを空にしてディスクパーティションを消去するのに慣れている場合、これは通常驚くべきことです。
パーティションタイプUUIDは人には便利ではないため、これを短縮するために複数のパーティショナーでさまざまな方法を使用します。gdisk
4桁のタイプコードが使用されます。 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.efi
Windowsスタイルまたは<ESP mount point>/EFI/boot/bootx64.efi
Linuxスタイルで表現する場合。
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 +UUID
ESPパーティションの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-pc
(grub-pc-bin
またはESPパーティションを含むディスク)して最後に再構築を実行する必要がありますgrub-efi-amd64
。GRUB構成。grub-efi-amd64-bin
grub-install /dev/sda
update-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
efibootmgr
Linuxの実行中にファームウェア起動設定を表示、バックアップ、および変更できるため、このユーティリティをインストールすることもできます。 (Windowsではコマンドを使用して同じことを実行できますが、bcdedit
私の考えではコマンドを使用するのは難しいですefibootmgr
。)