![pxelinuxのようなgrub2のシンボリックリンク](https://rvso.com/image/154446/pxelinux%E3%81%AE%E3%82%88%E3%81%86%E3%81%AAgrub2%E3%81%AE%E3%82%B7%E3%83%B3%E3%83%9C%E3%83%AA%E3%83%83%E3%82%AF%E3%83%AA%E3%83%B3%E3%82%AF.png)
私は、pxelinux のように grub2 でシンボリックリンクを作成したいと考えています。しかし、方法がわかりません。目標は、IP に動的に渡すことができるさまざまな構成ファイルを用意することです。
Grub2 は今のところ動作しますが、IP に別の設定ファイルを与えることができず、常に grub.cfg が使用されます。また、grub.cfg-IP -> 別の設定ファイル -> も試しました。これは、実際に使用したい設定ファイルへのシンボリック リンクです。
おそらく誰かがすでにこれを理解しているでしょう。Grub2 マニュアルはあまり役に立ちませんでした。
答え1
PXELINUX は「シンボリックリンク」を作成しているわけではありません。名前にクライアントの IP アドレスまたは MAC アドレス、あるいはその一部が含まれる構成ファイルをダウンロードしているだけです。一致するファイルがシンボリックリンクであるかどうかは、PXELINUX にファイルを提供する TFTP サーバーとユーザーとの間でのみ決定されます。
PXELINUX とは異なり、GRUB はgrub.cfg
デフォルトで 1 つの設定ファイルのみを検索することに注意してください。そのため、その設定ファイルを提供する必要があります。名前がクライアントの IP アドレスに何らかの形で依存する設定ファイルを GRUB で使用する場合は、そのことを GRUB に伝える必要があります。
その設定ファイルは、GRUB に別の設定ファイルを読み込むように指示します。また、その名前を指定するときに GRUB 環境変数を使用できます。
したがって、GRUB で という名前の設定ファイルを使用するようにしたい場合はgrub.cfg-<IP address>
、まずgrub.cfg
GRUB が想定する場所に非常に小さなファイルを作成し、次のような内容 (のみ) を記述する必要があります。
configfile grub.cfg-${net_default_ip}
これにより、GRUB は、ファイル名にクライアント IP アドレスが付加された新しい設定ファイルをダウンロードするようになります。
新しい設定ファイルを絶対パスで指定することもできます。たとえば、
configfile (tftp,${net_default_server})/some/path/grub.cfg-${net_default_ip}
grub.cfg
新しい構成ファイルを定義する 1 行だけの別のファイルを用意したくない場合は、 grub-mkimage -c <grub.cfg containing the configfile command> -O i386-pc-pxe <other parameters...>
(または使用しているアーキテクチャ) を使用して、この 1 行の構成を GRUB PXE ブート イメージに埋め込むことができます。
PXE ブートがうまく動作しない場合は、PXE クライアントと DHCP/TFTP サーバー間のネットワーク トラフィックを次のようにダンプして、クライアントが正しい情報を取得して正しいファイルを要求していることを確認すると役立つことtcpdump
はwireshark
、すでにご存知でしょう... ですよね?