UEFIシステムを使用するChromeOSのchrootでUbuntu 14.04を実行しています。 WinUSBをインストールしてWindows用のリカバリメディアを作成するには、grub-efi-AMD64
をgrub-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シェルにアクセスする方法がありません。
誰も私を助けることができますか?
次の質問を参照して、コンピューターの起動方法を確認してください。
システムが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
出力は怖くて複雑に見えますが、重要な点は次のとおりです。
Boot####
エントリはそれを指す必要があります。 Ubuntuの場合、ubuntu
という名前にする必要があるため、ubuntu
エントリを探します。この場合はBoot0000
です。 (数値は任意の16進値にすることができます。)BootOrder
は、ブートエントリが試行される順序を示します。この場合、0000
が最初です。つまり、Boot0000
エントリ(ubuntu
)が最初に試行されます。このすべてのポイントは、ファームウェアで使用できるGRUBのBIOSモードとEFIモードの両方のバージョンがある可能性があることです。その場合、両方がBoot Info Scriptの出力に表示され、どちらが実際に使用されるかを判断するのは困難です。そのためには、現在のブートモードを確認するのが最善の方法です。混乱が発生する場合があります。または、あるブートモードから別のブートモードに切り替える場合があります。冗長なブートローダーを削除すると混乱を避けることができますが、これにはリスクが伴います。特に、MBRからBIOSモードのブートローダーを削除するには、dd
を使用する必要があるため、間違えた場合にディスクを簡単に破壊する可能性があります。一般に、このような災害の危険を冒すよりも、未使用のブートローダーをファームウェアにアクセス可能なままにしておくのが最善です。