過去1週間、efiパーティションにgrubをインストールしようとしていましたが、次のようになっています。
Could not prepare Boot variable: No space left on device
grub-install: error: efibootmgr failed to register the boot entry: Input/output error.
しかし、私は--no-vram
grubのインストールでエラーは発生しません。私はLinux noobであり、エラーの原因を知りたいです。
BIOSを使用すると、マザーボードはブートする物理デバイスの順序を不揮発性メモリ(NVRAM)に保存するため、再起動後も存続します。これにより、マザーボードのマシンをオンにしても、構成済みの順序で(または工場で)デバイスがブートされます。 BIOSは次に、各デバイスの最初の [論理ブロックアドレス(LBA) で [〜#〜] mbr [〜#〜] のいずれかを実行しようとします- 機能する 。起動時に手動で起動するデバイスを選択すると、代わりに、そのデバイスの最初のLBAから起動しようとします。
ディスクが [〜#〜] gpt [〜#〜] でフォーマットされていると仮定すると、マザーボードが EFIブート を使用する場合、MBRにブートローダーを含める必要はありません(またはそのことについては何でも)。代わりに、ディスクには EFIシステムパーティション(ESP) が含まれています。これは、本質的に [〜#〜] fat [〜#〜] -ファイルに格納されたブートローダーコードを含むフォーマットパーティションです。 FATファイルシステムには、ブートローダーが必要とする他のファイル(たとえば、起動プロセス中にスプラッシュスクリーンで使用されるロゴや背景)が含まれている場合もあります。
UEFIマザーボードでのUEFIブートでは、ディスクがシステムの一部であると想定されているため、 grub-install の場合、そのインストールプロセスの一部で、マザーボードのNVRAMにエントリが配置されているはずです。 ESP内のブートローダー(セクション3.5.1 EFI仕様 のSimple File Protocolによるブート)を参照)==を参照)。 EFIブートローダーの詳細については、Rod Smithの Managing EFI Boot Loaders for Linux を読むことを強くお勧めします。
マザーボード(つまり、USBハードディスク)に通常接続されていないデバイスの場合、このエントリをマザーボードのNVRAMに保存しても意味がありません。ほとんどの起動中にデバイスが存在しない可能性があります。 --no-nvram
オプションはgrub-installer
この目的でマザーボードのNVRAMを変更しないでください。
さらに、マザーボードがNVRAMにブートエントリがないリムーバブルデバイスからブートするように指示された場合、UEFIは、ブートを試みるためのデフォルトパスを定義します(セクションを参照)3.5.1.1リムーバブルメディアUEFI仕様のブート動作)。 ESPのルートからの相対パスは\EFI\BOOT\BOOT{architecture}.EFI
次の{architecture}
s。
IA32
x64
IA64
ARM
AA64
--removable
オプションはgrub-installer
マザーボードのNVRAMを変更しない場合は、優先パスではなくこのパスを使用する必要があります。そうでない場合、リムーバブルデバイスを手動で選択した後、ブートローダーを手動で指定する必要があります。
注:私はこれをテストしていないため、上記の「信じる」と言います。
編集:
マザーボードでGRUBがエントリの変更を許可しない理由はこれで説明できません。しかし、うまくいけば、そのスイッチが役立つ理由が説明されています。提供されたエラーメッセージは、マザーボードのすべてのブートエントリがが入力されており、かなり合理的に、grub-install
どのブートエントリを上書きするかを決定します。 efibootmgr を使用してブートエントリを表示し、不要なものを削除してみてください。 Rod Smithの回答 から この質問 にその方法が表示されます。
私は本当に良い説明を求めて高低を検索しました。私がこれまでに思いつくことができる最高のものはman grub-install
説明:
--no-nvram don't update the `boot-device'/`Boot*' NVRAM variables. This option is only available on EFI and IEEE1275 targets.
"NVRAM変数"定義の最初のgoogle検索ヒットは奇妙な Wikileaks です。CIAがスパイに使用しているためです。
NVRAM変数の説明
NVRAMは不揮発性ですRAMこれはEFIで使用され、ブート間で持続する必要のある変数を格納します。これらのNVRAM変数の多くは構造的に定義されており、NVRAMに無効なオプションを設定すると、マシンが起動できません。
起動プロセス中、複数のドライバとアプリケーションは、NVRAM値に依存して、それらのジョブを実行できます。以下は、これが起こっていることを示すUEFI 2.56仕様の図です。