web-dev-qa-db-ja.com

GRUB-EFIまたはGRUB-PCを使用しているかどうかを確認する方法は?

UEFIシステムを使用するChromeOSのchrootでUbuntu 14.04を実行しています。 WinUSBをインストールしてWindows用のリカバリメディアを作成するには、grub-efi-AMD64grub-pcに変更する必要がありました。 WinUSBがこのプロセスを実行してくれました。私の知る限り、これによりデバイスが起動できなくなります。

これを修正するために、Sudo apt-get install grub-efiを実行しましたが、これにより問題が修正された可能性がありますが、間違っている場合に再起動する必要はありません。

問題が修正されたかどうかを確認するにはどうすればよいですか?

Sudo grubを実行してgrubシェルに入り、次にecho $grub_installを実行してgrub-pcまたはgrub-efi-AMD64を使用しているかどうかを確認できると言われました。ただし、GRUB 2.02を使用しており、Sudo grubは非推奨のようです。

常にChromeOSを起動するChromebookを使用しているため、起動時にGRUBシェルにアクセスする方法がありません。

誰も私を助けることができますか?

6
snazzybouche

次の質問を参照して、コンピューターの起動方法を確認してください。

システムがEFI/UEFIまたはBIOSとして起動したかどうかを確認するにはどうすればよいですか?

これはquiteの質問と同じではありません。そのため、質問を重複としてマークしていません。通常、ブート方法(BIOS対EFI)は、GRUBのどのバージョンがコンピューターをブートする最後のバージョンであるかを決定します。 (もちろん、他のブートローダーがインストールされている場合は、それらのいずれかを使用してブートすることもできます。このアプローチでは、たとえばEFIモードGRUBとEFIモードELILOを区別できません。)

次のように、パッケージマネージャを使用して、GRUBpackageのどのバージョンがインストールされているかを確認できます。

dpkg -l | grep grub | grep ii

GRUBのようなブートローダーは珍しいですが、packageをインストールすることは、ブートローダーをブートプロセスに挿入することとは異なります。通常、Debianパッケージをインストールし、そのファイルを使用してブートローダーをブートプロセスに挿入します。しかし、後者はパッケージなしで実行でき、ブートプロセスを変更せずにパッケージをインストールできます。実際、あなたの場合は、ブートオプションとして利用可能なGRUBのBIOSとEFIバージョンbothがあります。

ブートオプションとしてアクセス可能なものを確認する最も簡単な方法は、 Boot Info Scriptを使用することです。 このスクリプトは、どのブートローダーを報告するRESULTS.txtというファイルを生成しますご利用いただけます;ただし、出力を解釈するにはある程度の知識が必要です。 BIOSモードのブートローダーは、出力の上部近くに次のようなものを表示します。

============================= Boot Info Summary: ===============================

 => Grub2 (v1.99) is installed in the MBR of /dev/sda and looks at sector 40 
    of the same hard drive for core.img, but core.img can not be found at this 
    location.

EFIモードのブートローダーは、 EFIシステムパーティション(ESP)にファイルとして保存されます。 これらのファイルは、出力に次のように表示されます。

sda1:     __________________________________________________________________________

    File system:       vfat
    Boot sector type:  FAT32
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        /EFI/Boot/bootx64.efi /EFI/ubuntu/MokManager.efi 
                       /EFI/ubuntu/fwupx64.efi /EFI/ubuntu/grubx64.efi 
                       /EFI/ubuntu/shimx64.efi 
                       /EFI/Microsoft/Boot/bootmgfw.efi 
                       /EFI/Microsoft/Boot/bootx64.efi

特に、GRUBである/EFI/ubuntu/grubx64.efiファイルに注意してください。 (/EFI/ubuntu/shimx64.efiがセキュアブートを処理し、特に/EFI/ubuntuのその他のファイルも関連します。)GRUB以外のEFIブートローダーを使用している場合は、どこかに表示される場合があります。

さらに、EFIモードブートローダーは通常、NVRAMに格納されているエントリによって参照されます。ブートエントリスクリプトは、efibootmgrの実行によって識別します。

=================== efibootmgr -v
BootCurrent: 0004
Timeout: 0 seconds
BootOrder: 0000,0002,2001,2003,2002
Boot0000* ubuntu    HD(1,GPT,249432ce-52fe-4533-b029-ba6c1a901382,0x800,0x100000)/File(EFIubuntushimx64.efi)
Boot0001* EFI Network 0 for IPv4 (68-F7-28-DA-88-B8)    PciRoot(0x0)/Pci(0x2,0x4)/Pci(0x0,0x0)/MAC(68f728da88b8,0)/IPv4(0.0.0.0:0<->0.0.0.0:0,0,0)RC
Boot0002* Windows Boot Manager  HD(1,GPT,249432ce-52fe-4533-b029-ba6c1a901382,0x800,0x100000)/File(EFIMicrosoftBootbootmgfw.efi)RC
Boot0003* EFI Network 0 for IPv6 (68-F7-28-DA-88-B8)    PciRoot(0x0)/Pci(0x2,0x4)/Pci(0x0,0x0)/MAC(68f728da88b8,0)/IPv6([::]:<->[::]:,0,0)RC
Boot0004* EFI USB Device (Generic Flash Disk)   PciRoot(0x0)/Pci(0x12,0x0)/USB(0,0)/USB(0,0)/HD(1,MBR,0x4294967218,0x800,0x1f6a800)RC
Boot2001* EFI USB Device    RC
Boot2002* EFI DVD/CDROM RC
Boot2003* EFI Network   RC

efibootmgrはEFIモードブートからのみ使用できるため、BIOSモードでブートした場合、EFIブートローダーが使用可能であっても、この出力は表示されません。また、一部のEFIはバグがあり、EFIブートエントリを忘れるか無視しますが、通常はさまざまなvariousい回避策を使用してEFIモードでブートできます。

とにかく、efibootmgr出力は怖くて複雑に見えますが、重要な点は次のとおりです。

  • GRUBが適切に構成されている場合、Boot####エントリはそれを指す必要があります。 Ubuntuの場合、ubuntuという名前にする必要があるため、ubuntuエントリを探します。この場合はBoot0000です。 (数値は任意の16進値にすることができます。)
  • BootOrderは、ブートエントリが試行される順序を示します。この場合、0000が最初です。つまり、Boot0000エントリ(ubuntu)が最初に試行されます。

このすべてのポイントは、ファームウェアで使用できるGRUBのBIOSモードとEFIモードの両方のバージョンがある可能性があることです。その場合、両方がBoot Info Scriptの出力に表示され、どちらが実際に使用されるかを判断するのは困難です。そのためには、現在のブートモードを確認するのが最善の方法です。混乱が発生する場合があります。または、あるブートモードから別のブートモードに切り替える場合があります。冗長なブートローダーを削除すると混乱を避けることができますが、これにはリスクが伴います。特に、MBRからBIOSモードのブートローダーを削除するには、ddを使用する必要があるため、間違えた場合にディスクを簡単に破壊する可能性があります。一般に、このような災害の危険を冒すよりも、未使用のブートローダーをファームウェアにアクセス可能なままにしておくのが最善です。

3
Rod Smith