Символические ссылки с grub2, например pxelinux

Символические ссылки с grub2, например pxelinux

Я хочу сделать симлинки, как pxelinux, только с grub2. Но я не могу понять как. Цель — иметь разные файлы конфигурации, которые я могу динамически передавать на IP.

Grub2 пока работает, но я не могу дать IP другой файл конфигурации, он всегда берет grub.cfg. Я также пробовал grub.cfg-IP -> другой файл конфигурации -> это символическая ссылка на файл конфигурации, который я на самом деле хочу использовать.

Может кто-то уже разобрался. Grub2 Manual не особо помог.

решение1

PXELINUX не "делает символические ссылки": он просто загружает файл конфигурации, имя которого включает IP-адрес или MAC-адрес клиента или его часть. Тот факт, что соответствующий файл оказывается символической ссылкой, находится исключительно между вами и вашим TFTP-сервером, который предоставляет файл PXELINUX.

Обратите внимание, что в отличие от PXELINUX, GRUB ищет только один файл конфигурации, который есть grub.cfgпо умолчанию. Так что это то, что вам нужно предоставить. Если вы хотите, чтобы GRUB использовал файл конфигурации, имя которого каким-то образом зависит от IP-адреса клиента, вам нужно сообщить об этом 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файл с единственной строкой, определяющей новый файл конфигурации, вы можете встроить эту однострочную конфигурацию в загрузочный образ GRUB PXE, используя grub-mkimage -c <grub.cfg containing the configfile command> -O i386-pc-pxe <other parameters...>(или любую другую архитектуру, которую вы используете).


Вы, вероятно, уже заметили, что когда у вас возникают проблемы с запуском загрузки PXE, полезно сбросить сетевой трафик между клиентом PXE и ​​сервером(ами) DHCP/TFTP с помощью чего-то вроде tcpdumpили , wiresharkчтобы убедиться, что клиент получает правильную информацию и запрашивает правильные файлы по очереди... верно?

Связанный контент