他の同様の質問もあったことがわかっていますが、今回のケースは少し違うようです。
システムは2つのSSDを備えたLenovo T430です(1つはオプティカルドライブベイにあります)。
元のインストールはメインSSDのWin10でした。デュアルブートを可能にするMintを追加しました。
セカンダリSSDでKaliを使用してトリプルブートすることにしました。まだ良いです(KaliはMintとWin 10の両方を選択しました)。
セカンダリSSDにXPとKaliをインストールするという良いアイデアを得るまで、すべてが順調に進みました(理由があるので心配しないでください)。プライマリSSDを取り出し、セカンダリSSDを所定の位置に取り付けた。まず、元のKaliをミラーリングしてからドライブを消去し、XPをインストールしました。完了したら、最新バージョンのKaliをインストールしました。プロセス中にUEFIを強制的に適用するかどうかを尋ねられた。最初は拒否しましたが、ドライブを消去したいと思いましたが、私も明らかにしたくありませんでした。その場合はUEFIを強制します。言うまでもなく、Kaliがインストールされていますが、XPは見えません(大丈夫です。XPのインストールを上書きしないように別々のパーティションを分割しました。XP CDから起動し、MBRを修復してからXPで起動しましたが、Kaliは見えません。とにかくお互いがうまくいかないと思いました。心配しないでください。
そのため、プライマリシステムとセカンダリシステムを元の設定(デフォルトはWin 10 + Mint、セカンダリはXP、およびアクセスできないKali)に復元し、セカンダリシステムを削除し(XPとKali部品を別々にイメージングした後)、Kaliを再インストールします。しました。セカンダリオペレーティングシステムにのみオペレーティングシステムがあります。 「UEFIを強制しますか?」というメッセージが再び出ました。私は今、最新のオペレーティングシステムをすべて使っているので問題ないと思ってはいと言いました。
今回はメインサーバーにWindowsが表示されません。 Mintを表示して起動できますが、Windowsは表示できません。パーティションがまだgpartedに存在しているようです。私は回復のためにWin 10を試しましたが、うまくいきませんでした。 Mintを再インストールしてみましたが、元の構成に戻すことができると思いましたが、そうではありませんでした。 Grubを作成しようとしたときにMintが失敗しました。
だから私は立ち往生しています。セカンダリドライブを消去して空にします(今は式から除外 - あまり複雑ではありません)。
Windowsを復元する方法?私はカリが実際にそれを食べたのではなく、それを指しているものを覆っただけであることを知っています。私はそれがそこにあることと私に必要なものがたくさんあることがわかりました。
助けてくれてありがとう。私は(明らかに)問題に陥るほどLinuxについて十分に知っていますが、上手だと言うほどではありません。
編集:写真を追加します。 SSD2はGPTで、SSD1はMBRのようですか?また、どちらも2.5インチSSDですが、このラップトップはNVMeドライブを使用するには古すぎます。ありがとうございます!
助ける!
答え1
いいですね。まず、いくつかの背景情報をご覧ください。
デフォルトでは、UEFIで起動されるオペレーティングシステムは、オペレーティングシステムがUEFI NVRAMブート変数セットとして実行されている間に起動設定にアクセスできます。これはUEFI仕様の一部です。 Linuxで最もユーザーフレンドリーな方法は、
efibootmgr
Windowsでコマンドを使用することです。このbcdedit
コマンドは、管理者として実行されたときにUEFIブート変数にアクセスできます。起動変数を表示するには、efibootmgr -v
Linuxではrootとして実行し、bcdedit /enum FIRMWARE
Windowsでは管理者として実行します。一部のUEFIファームウェア実装は、BIOS設定メニューからUEFIブート変数へのフルアクセスを提供しませんが、BIOSと同様の単純化されたブートディスクの選択を必要とします。高度なマルチブートシナリオを構築しようとすると、これが問題を引き起こす可能性があります。 UEFIブート変数の存在を認識し、さまざまなインストーラが間違っている場合はそれを編集する準備をする必要があります。
NVMe SSDがある場合、NVMe SSDはまったくSATAドライブのように動作しないため、システムファームウェアはSSD起動を特別にサポートする必要があります。一部のUEFIファームウェアは、UEFIモードのNVMeデバイスからの起動のみをサポートしています。これは通常、オペレーティングシステムに利用可能なNVMeドライバがある場合、オペレーティングシステムがNVMeデバイスにアクセスするのを防ぎません。
ほとんどのUEFI対応オペレーティングシステムインストーラは、オペレーティングシステムインストーラの起動モード(BIOSまたはUEFI)を検出し、問題なく一致する種類のブートローダをインストールします。 Kaliは明らかに「UEFI強制」機能を提供します。つまり、インストーラがBIOSスタイルの起動にもかかわらず、UEFIブートローダをインストールします。
BIOSスタイルのブートでは、ディスク上のMBRは一度に1つのブートローダ/管理者のみを使用できます。通常、複数のオペレーティングシステム(GRUBなど)を起動するのに最適なオペレーティングシステムを選択します。他のオペレーティングシステムがMBRを上書きする場合は、外部ブートメディアを使用して「指定されたMBRマネージャオペレーティングシステム」を起動し、MBRを上書きできる必要があります。
UEFIスタイルのブートでは、ブートローダは標準化されたディレクトリ構造のESPパーティション(デフォルトではFAT32パーティション)に含まれています。複数のオペレーティングシステム用のブートローダは、単一のESPパーティションに共存できます。ただし、特定のブートローダーファイルを指定するUEFIブート変数がない場合、UEFIファームウェアは「魔法の」ブートローダーファイル名を見つけます。 x86_64ハードウェアでは、
\EFI\BOOT\BOOTX64.efi
通常、Windowsはファイルを2番目のコピー\EFI\Microsoft\Boot\bootmgfw.efi
としてこの場所に配置します。 UEFI NVRAMブート変数が失われた場合でも(BIOSの更新/更新などのため)、Windowsを起動できます。 Kaliの「Force UEFI?」は、UEFI GRUBのコピーを\EFI\BOOT\BOOTX64.efi
ESPパーティションに書き込むことを意味する場合もあれば、そうでない場合もあります。オペレーティングシステムごとにUEFIのサポートレベルが異なり、起動方法の選択はパーティションタイプの選択に関連する可能性があります。
- Windows XP(通常の32ビット版)はUEFIモードで起動できず、GPTパーティションディスクにアクセスできません。 BIOSスタイルの起動のみがサポートされています。
- 64ビット版のWindows XP(まれにドライバを見つけるのが難しい場合があります)はGPTパーティションディスクにアクセスできますが、起動にはMBRパーティションシステムディスクが必要です。 BIOSスタイルの起動のみがサポートされています。
- Windows 10は2つの起動方法をサポートできますが、BIOSモードで起動するにはMBRパーティションを持つシステムディスクが必要で、UEFIモードで起動するにはGPTパーティションを持つシステムディスクが必要です。混合して使用することはできません。
- Linuxは通常、任意の組み合わせで起動するように設定できますが、より難解な組み合わせには特別な注意が必要になる場合があります。 MBRパーティションディスクのUEFIには、UEFIブートローダを含めるために0xefタイプのFAT32パーティションが必要です。 GPTパーティションディスクのBIOSスタイルの起動には、通常、UEFIブートローダを含むGPT対応BIOSと特別な「biosboot」パーティションが必要です。 MBRと最初のパーティションの先頭。 GPTパーティションではこのスペースが利用できないためです。
Windows XPとは異なり、Windows 10には複数のパーティションが必要です。 UEFIスタイルで起動する場合は、ESPパーティション(他のオペレーティングシステムと共有可能)、プライマリWindowsシステムパーティション(通常はC:ドライブ)、および小さな回復パーティションが必要です。新しいインストールには通常「Microsoft Reserved」パーティションもありますが、技術的には必ずしも必要ではありません。以前のバージョンのWindowsからアップグレードしたインストールには、このパーティションがない可能性があります。
ほとんどのブートローダ/ブートマネージャは、ブートローダと同じブートスタイルを使用してオペレーティングシステムのみを起動できます。 1 つのレガシー OS と 1 つの UEFI プライマリ OS でデュアルブートする場合、オペレーティング システムを切り替える唯一の方法は、ブート モードで BIOS メニューを使用するか、「UEFI/Legacy First」プリファレンスを切り替えることです。rEFInd ブートマネージャUEFIはデフォルトのブートローダであり、場合によっては明らかにBIOSスタイルのブートローダを起動できますが、すべてのシステムで動作するという保証はありません。
システムのBIOSメニューが複数の起動方法オプションを提供する場合に便利です。
- 互換性サポートモジュールの有効化/無効化= BIOSスタイルの起動機能
- BIOSスタイルのブート方法でのみ機能を制限します。
- リムーバブルメディアから起動するときは、UEFI / BIOSスタイルの起動方法を好みます。
- HDD / SSDから起動するときは、UEFI / BIOSスタイルの起動方法を好みます。
- 起動順序リストには、BIOSとUEFIスタイルの起動ターゲットの両方を含める機能もあります。
一部のノートパソコンや有名ブランドのデスクトップは、簡素化されたBIOSメニューを提供できますが、設定の可能性は非常に制限されています。このような場合は、システムがUEFI\EFI\boot\bootx64.efi
を好むかBIOSを好むかを把握する必要があります。BIOSのみ、またはMBRブートコードを有効な非ブートMBRに置き換えて、UEFI専用にします。
メインディスクがGPTに分割されており、そのオペレーティングシステムがUEFIを使用しているようです。これを確認するには、fdisk -l
元の質問の出力を実行して編集します。
その場合、UEFIブート変数が現在正しく構成されていないか、Windows UEFIブートローダ(/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
Mintが表示する場所)が破損している可能性があります。 Linuxで実行してsudo efibootmgr -v
UEFIブート変数の現在の状態を確認し、出力を元の質問として編集するか、長い場合は、例えばPastebinサイトに入れて質問にリンクします。
ESPパーティションの状態を可視化する最も簡単な方法は、おそらくsudo tree --charset ASCII /boot/efi
Linuxで実行することです。元の質問にこれを追加します。/boot/efi/EFI/Microsoft/Boot
言語固有のディレクトリが複数あるため、短くするには、このディレクトリのサブディレクトリを省略できます。
この情報を使用すると、私(またはStackExchangeの他の人)が盲目的に推測することなく助けることができます。
図に示すように、sda
ディスクはMBRスタイルに分割されていますが、出力にはefibootmgr -v
過去Windows Boot Manager
のある時点でシステムがUEFIスタイルでWindowsを起動したことを示す行が含まれています。 UEFI変数は、GPTパーティションの一意のGUID(Linux)として参照されるESPパーティションを識別し、Windowsブートマネージャ行のGUIDは、行のPARTUUID
GUIDと一致しません。kali
一方、ubuntu
行はMBRパーティションを参照し、行には0xd1e9685
のディスク識別子と正確に一致する値が含まれていますsda
。
これに基づいて、次のようになります。
ある時点で、ディスクがGPTからMBRに変換されたか、sda
Windowsをインストールしたときに両方のディスクがすでに存在し、sda
MBRスタイルでパーティション化されていました。ただし、WindowsセットアップはGPTスタイルで起動するため、適切なUEFIスタイル起動のためにESPパーティションをGPTパーティションディスクに追加する場所を見つけます。したがって、セカンダリSSDをGPT形式でフォーマットし、その時点で完全に初期化されていない可能性があるため、ESPパーティションとWindowsブートローダをその中に配置します。
(機会があれば、ESPを残りのWindowsとは異なるディスクに配置する傾向は、Windows 10のインストールの既知の問題です。標準の推奨事項は、一時的に別のディスクを切断または無効にすることです(システムに1つ以上のディスクがある場合)。 )。
Mintをインストールすると、インストーラはUEFIスタイルで再起動しますが、Windowsインストーラとは異なり、明示的に指示しない限りディスクに触れないため、sda5
MBRパーティションディスクに独自のESPパーティション(パーティションタイプ0xef)を作成します。
最初のKaliは明らかにセカンダリSSDに独自のESPパーティションを作成しましたが、GPTパーティション内の各パーティションには、UEFIが各オペレーティングシステムが起動に使用するESPパーティションを識別するために使用する独自のGUIDがあるため、混乱が発生しませんではありません。
XP をインストールするためにプライマリ SSD を取り外し、セカンダリ SSD を所定の位置に戻すと、0xee タイプのパーティションが表示されることがあります。これは、GPTパーティション化標準の一部であり、ディスクが使用中であることをGPTをサポートしていないオペレーティングシステムに表すために使用される仮想MBRパーティションテーブルです。しかし、ディスクが使用されていないと仮定してそれを無視しました。そのため、ユーザーも知らないようにWindowsブートローダーを上書きしました。
Kaliの2番目のインストールもUEFIモードで起動する必要があり、Mintと同様にMBRにESPパーティションを作成します。 Kaliでは、「Force UEFI」は2つのことを意味できます。
- 既存のMBRブートコードが削除されるため、ディスクはMBRスタイルで起動しません。
- また、ブートローダのコピーを
\EFI\BOOT\BOOTx64.efi
ESPパーティションに書き込みます。
その結果、同じディスクに起動方法が異なる2つのオペレーティングシステムがあります。 KaliのUEFI GRUBはWindows XPを起動できません。 GRUBからXPブートローダーにジャンプするには、BIOSの互換性を再びオンにする必要があります。GRUBはこれを行う方法がわからないためです。あなたのシステムは、UEFIよりもレガシーモードで起動することを好むようです。これは、XPのMBRを修正した後、ファームウェアがすぐにBIOSモードで起動するためです。これにより、16ビットBIOS互換モードがKaliのUEFI GRUBに切り替えることができなくなります。 UEFI GRUBの64ビットコードを意味のあるものにすることはできません。
ディスクを元の場所に戻し、セカンダリディスクを再度クリアすると、Windowsブートローダが2回クリアされます。 Windows 10ブートリカバリは、MBRパーティションディスクにほとんどのWindows(UEFIスタイルのブート用に構成されている)を見ることができますが、GPTパーティションディスクにESPパーティションが表示されないため混乱します。 Mintインストーラもある点で混乱している可能性がありますが、それは最も重要ではありません。
この状況から離れて一般的な構成に戻るための最良の方法は、おそらくMintを使用してWindowssda2
ディスクにアクセスし、重要なすべてをリムーバブルメディアまたはその他の安全な場所にコピーすることです。
sudo mkdir /windows_c
sudo mount -t ntfs-3g /dev/sda2 /windows_c
cd /windows_c
cp <whatever> </some/where/safe>
次に、セカンダリ SSD を取り外し、プライマリ SSD を消去し、Windows 10 UEFI スタイルのインストールを開始します。可能であれば、すべてがUEFIスタイルで動作するようにBIOS設定を変更して、レガシーBIOSスタイルの互換性をオフにすることをお勧めします。次に、側面にMintを取り付けます。
その後、プライマリSSDを削除し、セカンダリSSDをその場所にインストールしてから、BIOSスタイルの互換性を再びオンにしてXPをインストールできます。 2つのディスクを元の場所に戻し、UEFIモードで2番目のディスクにKaliをインストールします(「Force UEFI」を選択しない)。次にMintから起動し、パッケージがインストールされてos-prober
いることを確認してから、sudo update-grub
KaliをMintの起動メニューとして実行します。
KaliまたはMintでGRUBを使用するかどうか、Kali、Mint、およびWindows 10の3つのオプションを提供する必要があります。残念ながら、XPに入るには、BIOS設定に進み、セカンダリディスクからレガシースタイルを起動するように明示的に選択する必要があります。
答え2
次のコマンドを使用してディスクをGPTに変換しますgdisk
。
sudo gdisk /dev/sda
出力は次のようになります。
$ sudo gdisk /dev/sda
[sudo] password for xxx:
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************
Warning! Secondary partition table overlaps the last partition by
33 blocks!
You will need to delete this partition or resize it in another utility.
Command (? for help):
上記の警告が表示されない場合は、wディスクへの変更の書き込みをクリックしてからを確認してくださいy。その後、もう一度実行してsudo gdisk /dev/sda
キーを押して、pEFIパーティションがコードと共にリストされていることを確認してくださいEF00
。それ以外の場合は、タイプを変更する必要があります(オプションt、パーティション番号の選択、入力ef00
、w変更の書き込み、で確認y)。それ以外の場合は終了しますq。その後、再起動してください。運が良ければ、Windowsが再起動します。
警告が表示されたら終了しますq。ディスクの末尾にセカンダリパーティションテーブルの容量を確保するには、上記のブロック数に基づいてMintパーティションのサイズを事前に調整する必要があります。あなたはそれを使用することができますgparted
。または/dev/sda6
再インストールしたい場合は削除してください。その後、繰り返します。
レガシーモードで再起動しないように、Biosの起動モードを->からUEFI/Legacy Boot
変更できます。Both
UEFI only
既存の「kali」および「ubuntu」UEFIブートエントリを削除することもできますefibootmgr
。
sudo efibootmgr -b19 -B
このBoot0019* kali
アイテムを削除してください。
答え3
アップデート:Windowsで起動できるようになりました。
これが私がしたことです:
- Freddyが提案したようにGPTに変換します。正常にMintを再インストールすることはできましたが、問題自体は解決されませんでした。
- Mintを再インストールしました。
- Win10インストールUSBで起動し、起動回復を試してみてください。失敗したため、コマンドプロンプトに移動しました。そこで私はここにある一連の命令を試みました。https://docs.Microsoft.com/en-us/Windows/client-management/advanced-troubleshooting-boot-problems
私は方法3を直接使用します。図のように、D:\ WindowsでWindowsを見つけました。だから私はそれがまだそこにあり、動作することを知っています。
再起動後、今回はGrubにアクセスしましたが、まだGrubメニューにWindowsが見つかりません。
再起動して「ワンタイムブートメニュー」に入り、Windowsブートマネージャを試しました(以前は毎回失敗しました)。今回はWindowsで起動しました。
まだ魔法の組み合わせが何であるかはよくわかりませんが、GPT変換がフェーズ1、BCDエラーの修正がフェーズ2、そしてWindowsブートマネージャがこれを見ることができると思います。