タイトルはすべてを教えてくれます。 /bootの場所がgrubにハードコードされているのか、それとも何かを知りたいのです。
BIOS が最初の 512 を見て grub を見つけたら、... /boot? を見るように grub をハードコーディングする必要があります。
私は正しいですか?
答え1
grubにハードコードされていません。 GRUB 構成ファイルのブートエントリを表示すると、次のようになります。
title Red Hat Enterprise Linux (2.4.21-1.ent)
root (hd0,0)
kernel /vmlinuz-2.4.21-1 ro root=/dev/sda2
initrd /initrd-2.4.21-1.img
この行が表示されますroot (hd0,0)
。この場合、これはブートパーティション、ハードディスク0、パーティション0(Linux/dev/sda1
または/dev/hda1
ハードウェアによってよく似たものとして呼び出される)の定義です。
実行すると、grub-install
この設定が読み取られ、grubバイナリとともにブートローダ領域に保存されます。ただし、GRUB画面でこれらの項目を編集して他のパーティションから起動することはできます。
このパーティションを/boot
パスにマウントするのはLinux / Unixルールです。ファイルシステム階層標準。必要な場所にインストールできますが、新しい場所がわかるようにカーネルとブートローダ関連のパッケージとツールを調整する必要があります。
答え2
/boot
場所埋め込みGRUBコードは、GRUBのインストール時に作成されます。
i386-pc
「最初の512」に言及したので、クラシックBIOSスタイルブートのバリエーションであるGRUBのアーキテクチャバリアントを検討しているとします。
GRUBがマスターブートレコードにインストールされている場合、実際のMBRには1つのブロックをさらにロードするのに十分なコードしかありません(ブートコードには通常のBIOSのすべての従来の互換性オプションが必要です)。 GRUB を MBR にインストールするプロセスの一部として、次のブロックのブロック番号が GRUB の MBR コードに含まれます。
クラシックMBRパーティショニングを使用する場合、次のブロックは通常MBR次ブロック(ブロック#1)です。これには、より多くのGRUBコードと読み取るブロックのリストが含まれます。このブロックには以下が含まれます。
- GRUBコアイメージの残りのブロック
- GRUBがパーティションテーブルと残りのGRUBモジュールを含むファイルシステム(つまり、通常はディレクトリを含むファイルシステム)を理解してアクセスできるようにするために
/boot/grub
必要なGRUBモジュールの最小セット - GRUBが構成ファイルを見つける必要があるパーティションとディレクトリを表すGRUBプレフィックス、必要に応じて追加のGRUBモジュール。
MBR パーティションディスクでは、これらのブロックは、MBR と最初のパーティションの先頭との間の一般的に使用されていない領域に含まれます。ブロックリストはgrub-install
GRUB インストールプロセスでも作成されます。
GRUBがGPTパーティションディスクにインストールされている場合、i386-pc
ブロック#0と最初のパーティションの先頭の間のスペースはGPTパーティションテーブル構造で埋められるため、GRUBのこれらの部分には専用の「biosboot」パーティションが使用されます。
/boot
ディレクトリ名を別の名前に変更するには、オプションを使用して指定すると、GRUBの初期段階で使用された元の--boot-directory=
ディスクgrub-install
ブロックに含まれるプレフィックス情報が自動的に調整されます。
完全性のために:セキュアブートを含むUEFIシステムでは、GRUBコアイメージ全体とみんな起動プロセスに必要なGRUBモジュールは通常、GRUBのバリエーションであるgrubx64.efi
ESP(EFIシステムパーティション)の単一ファイルに書き込まれます。x86_64-efi
UEFIセキュアブートファームウェアがこのファイルを受け入れるには、システムファームウェアが許可するセキュアブートキーの1つ、またはセキュアブート互換性によって提供されるシムを介して有効な署名を持つMicrosoft PE +形式のバイナリである必要があります。プロバイダー(shimx64.efi
)またはシステム管理者の選択に従ってインストールされたマシン所有者キー(MOK)。
ますます多くのディストリビューションでは、UEFI GRUB用のミニ構成ファイルをgrub.cfg
同じディレクトリにあるESPに配置しているようですgrubx64.efi
。このファイルには、通常、実際のGRUB構成を含むファイルシステム、ディレクトリ、およびファイル名を識別するのに十分な数の構成行が含まれています。したがって、UEFIシステムと多くのディストリビューションで名前を別の名前に変更したい場合は、/boot
GRUBを再インストールしなくてもファイルを編集して変更できます/boot/efi/EFI/<distro_name>/grub.cfg
。