web-dev-qa-db-ja.com

AsusマザーボードにEFIシステムパーティションを認識させる方法は?

少し前に、EFIパーティションのサイズを変更することにしました。理由を聞かないでください...それ以来、私はもはや正常に起動できません。サイズを変更するには、gpartedを使用し、パーティションサイズを268MBに変更しました。起動できなかった後、元の512MBに戻しましたが成功しませんでした。現在、Super GrubDiskを介してシステムを起動しています。

システムに2つのディスクがあります。 1つのメインGTPディスク(キングストン)と、データ専用のMBR(WD)を備えたディスク。 MBRのものは無視してください。また、スーパーグラブディスクを保持しているトランセンドUSBスティックも表示されます。

メインディスクの現在のレイアウトは次のとおりです。

Sudo gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Disk /dev/sda: 234441648 sectors, 111.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): EA79EA21-C913-462F-9A23-9CD5D1E74496
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 234441614
Partitions will be aligned on 2048-sector boundaries
Total free space is 2925 sectors (1.4 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1050623   512.0 MiB   EF00  EFI System Partition
   2         1050624         1550335   244.0 MiB   8300  
   3         1550336       234440703   111.1 GiB   8E00  

だから私は明らかにESP/dev/sdaにあります。これはpartedの出力です。パーティションの詳細に関する情報を提供するには:

(parted) print
\Model: ATA Kingston SH103S3 (scsi)
Disk /dev/sda: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name                  Flags
 1      1049kB  538MB  537MB  fat32        EFI System Partition  boot, hidden, esp
 2      538MB   794MB  256MB  ext2
 3      794MB   120GB  119GB                                     lvm

起動の問題について... BIOSを起動すると、次の起動オプションが表示されます:(写真を使用する必要があります...) Boot options

キングストンディスクにはタグ「UEFI」が存在しないという事実に基づいて、AsusはこのディスクをGPT/EFIとして検出しなかったと思います。確かに、SuperGrubDiskフラッシュドライブ(ESPを備えたGPTでもあります)に存在するためです。

とにかくディスクから起動しようとすると、黒い画面が表示されます。そのため、MBRから起動しようとしていると思いますが、MBRには何の役にも立ちません。

したがって、スーパーgrubディスクを起動すると、次のオプションが表示されます。 Grub options つまり、ESPはHD1、GPT1に期待どおりにあり、完全に正常に起動するように見えます。

これを解決することを期待して、ファームウェアの最後のバージョンをすでにフラッシュしました。私の最後の手段は、データをバックアップして完全に再インストールすることですが、最初にこれを正しい方法で解決しようとしています。

1
KingWilliam

まず、EFIモードの起動に関するいくつかの重要なポイント:

  • EFIファームウェアには、NVRAM内の起動可能なファイルとデバイスのリストを、最初に起動する必要があるものの優先リストとともに維持するブートマネージャーが含まれています。
  • OSによってインストールされるEFIブートローダーは、ESPに保存されているファイルです。したがって、BIOSで行うように「ディスクを起動」したり「パーティションを起動」したりすることはありません。 ファイルを起動します。
  • 上記の部分的な例外:他のエントリがない場合に起動できる特別なフォールバックファイル名(x86-64システムの場合はEFI/BOOT/bootx64.efi)がありますは有効です。このファイル名は、もともとインストールメディア(CD、USBフラッシュドライブなど)での使用を目的としていましたが、ハードディスク上のESPでも使用できます。
  • 多くの(すべてではない)EFIは、エントリが無効になったことを検出すると、組み込みのブートマネージャからブートエントリを自動的に削除します。
  • 私の経験では、FATパーティションのサイズ変更は信頼性が低く、一部またはすべてのOSでファイルシステムが読み取れなくなることがあります。 (この箇条書きの目的上、EFIはOSです。)
  • サイズ変更が成功した場合でも、パーティションのGUID値が変更される可能性があります。これは、EFIのブートマネージャー構成でブートローダーへのパスの一部として使用されます。

上記のすべてをまとめると、ESPのサイズを変更したときに、Ubuntuブートローダーがファームウェアにアクセスできなくなり、組み込みのブートマネージャーから削除されたのではないかと疑っています。パーティションのサイズを元のサイズに戻すと、アクセスの問題が修正される場合とされない場合がありますが、ファイルシステムにアクセスできるようになった場合でも、NVRAMベースのブートエントリがなくなると、ブートローダーを起動できなくなります。 Super GRUB Diskを使用するなど、余分なフープを飛び越えることなく。

問題を修正するための最初のステップとして、ESPでdosfsck(または別のOSの同等のツール)を実行することをお勧めします。これにより、長引くファイルシステムの問題が修正されます。

これが完了したら、ブートエントリ用の新しいNVRAMエントリを作成する必要があります。これを行うための最も邪魔にならない方法は、Linuxのefibootmgr、EFIシェルのbcfg、Windowsの EasyUEFI またはbcdedit、またはいくつかを使用することです。同様のツール。これでUbuntuを起動できるので、次のコマンドでうまくいくはずです。

efibootmgr -c -d /dev/sda -p 1 -l \\EFI\\ubuntu\\shimx64.efi -L ubuntu

セキュアブートを無効にして起動している場合は、shimx64.efigrubx64.efiに変更できます。ただし、shimx64.efiは、セキュアブートが有効になっているかどうかに関係なく機能するため、機能しない場合を除いて使用することをお勧めします。ディレクトリ区切り文字としての二重円記号(\\)にも注意してください。 EFIは、Unix/Linuxスタイルのスラッシュ(\)ではなくDOS/Windowsスタイルのバックスラッシュ(/)をディレクトリ区切り文字として使用します。バックスラッシュは、二重にするか、Bashで引用符で囲む必要があります。 Bashでエスケープ文字として再使用されます。 (最近のバージョンのefibootmgrはスラッシュをバックスラッシュに変換できると聞きましたが、この変更が適用されたバージョンがわからないため、2倍にしたバックスラッシュを使用するのが最も安全です。)

警告:スーパーGRUBディスクがBIOS/CSM /レガシーモードで起動している場合、efibootmgrは機能しません。これが当てはまる場合は、次のことを行う必要があります。上記では、EFI/UEFIモードで起動されたLinux緊急ディスクを使用しています。または、USBフラッシュディスクまたはCD-Rでmy rEFInd boot manager を使用してUbuntuをEFIモードで起動し、efibootmgrGRUBを再度アクティブにします。

5
Rod Smith