
私は数年前の既製のHPオフィスボックスであるコンピュータを扱っています。私はしばらくの間ヘッドレスコンピューティングのためにさまざまなバージョンまたはLinuxでこの製品を使用してきました。ある時点では、Windows 7 x86_64をインストールする必要があるため、コンピュータから古いハードドライブをすべて取り外し、別のSSDを見つけて接続して消去し、Windows 7をインストールしました(すべてデフォルト)。私が知る限り、UEFIブートモードでインストールされました(つまり、SSDに小さなFAT32パーティションがあり、ブートフラグが設定されています)。
時間がかかり、このコンピュータでLinuxを再実行する必要があり、SSDを取り外し、USBフラッシュドライブにLinux Mint(Ubuntuなど)(2週間前の最新バージョン)をインストールしました。 Mintインストーラには、このPCに従来のBIOSモードで実行されている他のオペレーティングシステムがあり、UEFIモードでMintをインストールするのが悪いというエラーメッセージが表示されました。 SSDが分離されていることを覚えておいてください。まあ...私はMintインストーラがこのエラーメッセージでクラッシュしないと確信できなかったので、GPartedを使ってUSBフラッシュドライブを手動で分割しました。 BOOTフラグが設定された512MB FAT32とext4システムパーティションとGPTパーティションテーブル。 Mintインストーラを再実行してこのパーティションを指定しました。別の警告が表示されましたが、競合は発生しませんでした。 MintがUEFIモードでインストールされ、実行されました。カーネルとGrubのアップデートが利用可能です。
時間はまた流れ、再びWindowsが必要になりました。まだSSDがあるのでSSDを接続してみました。 USBフラッシュドライブもありますが、あまり問題ではないようです。 PCを起動すると、Windowsが正常に動作して終了します。さて、今Mintを始めましょう。 UEFIが見つかりません。期間。 SSDを抜いた。利用可能なすべてのUSBポートを試してみました。楽しんでセキュアブートをオンにしてから再びオフにしました。 BIOSのみのブートモードに切り替えてから、UEFI /レガシー結合モードに戻りました。 UEFI専用モードに切り替えました。ミントを認識できないだけです。 UEFIブートメニューに移動すると、USBフラッシュドライブはUEFIブートオプションとしてリストされず、レガシーBIOSオプションとしてのみリストされます(MintをインストールしたときにUEFIオプションとしてリストされたことを覚えています)。
私が知っている限り、Mint UEFIブートパーティションは影響を受けません(変更日は最後のGrub更新日と一致します)。 BOOT フラグがセットされました。私が知る限り、これにはまったく問題はありません。私の唯一の「間違い」は、Mintを含むUSBフラッシュドライブをPCに接続しながらWindowsを一度起動したことです。
この問題をデバッグおよび/または解決するにはどうすればよいですか?私は何を見落としたのでしょうか?
編集(1):これはgdisk
私に教えてくれます:
# gdisk -l /dev/sdc
GPT fdisk (gdisk) version 0.8.8
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sdc: 30464000 sectors, 14.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): ***
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 30463966
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 1050623 512.0 MiB EF00
2 1050624 30461951 14.0 GiB 0700
パーティション1のコードEF00は迷惑です。 EE00でなければなりませんか?
また公開ミントフォーラムで。
答え1
私の最初の推測は、MintのNVRAMブート変数が欠落していることです。システムに存在しなくなったディスク/ SSDを参照していることが判明したときに、ファームウェアがそれを削除した可能性があります。
UEFIを使用すると、各オペレーティングシステムは独自のブートローダ仕様をシステムの起動可能リストに記録します。仕様には、デフォルトでブートローダを含むEFIシステムパーティションのGUID識別子とブートローダファイルのパス名が含まれています。 Mintの場合は、\EFI\Mint\grubx64.efi
UEFIバージョンのGRUB2を使用しているため、パス名が似ている可能性があります。
秘密は、オペレーティングシステム内でこれらのUEFIブート変数にアクセスできることです。ただし、オペレーティングシステムがUEFIモードで起動されている場合にのみ可能です。レガシーブートモードを使用すると、システムをレガシーシステムと同様にするためにブート変数にアクセスするために必要なUEFIランタイムサービスが無効になります。
リムーバブルメディアの場合、別のUEFIルールがあります。 UEFIブート変数が適用されない場合、またはシステムが以前に見たことのないディスクからUEFIモードでブートするように指示された場合、UEFIファームウェアはFAT32ファイルシステムを持つパーティションを探します\EFI\BOOT\BOOTx64.efi
(64ビットx86ハードウェアの場合、ARMアーキテクチャではがあります)というファイルが含まれています。
したがって、この問題を解決するには2つの方法があります。
1.)GPTパーティションテーブルとFAT32ファイルシステムを認識するオペレーティングシステムを使用してMintディスクにアクセスします。ブートローダファイル(または同様のファイル)を見つけて同じディスク\EFI\Mint\grubx64.efi
にコピーします。\EFI\BOOT\BOOTx64.efi
元のブートローダファイルを含むディレクトリに設定ファイルのように見えるものがある場合は、そのファイルもコピーしてください。
NVRAMブート変数が消えても、UEFIはそのディスクをUEFIブータブルディスクとして認識する必要があります。 (これにより、SSDを再交換する必要がある場合に問題が再発するのを防ぐことができます。)
2.) システム起動UEFIモードであらゆる種類のライブLinuxまたはリカバリ環境に入ります。起動ファイル名を探し、efibootmgr
コマンドを使用してMintの起動変数をオーバーライドします。必須コマンドは次のようになります。
# efibootmgr -c -d /dev/sdX -l \\EFI\\Mint\\grubx64.efi -L "Linux Mint"
/dev/sdX
物理ディスクデバイス名に変更してください。efibootmgr
対応するGUIDが自動的に検索されます。 Windowsスタイルのパス名の二重バックスラッシュを参照してください。これは、バックスラッシュがLinuxシェルの特殊なエスケープ文字であるためです。最後のパラメータは、ブート選択メニューなどに表示されるラベルです。必要な短いテキストを書くことができます。