Рейтинг:0

Сказать Linux/GRUB запустить iPXE при следующей загрузке?

флаг se

Я только что обнаружил чудо, которым является iPXE.

Я запускаю различные версии Debian на разных компьютерах и хотел бы удаленно сказать им, чтобы они перезагрузились в iPXE, и чтобы iPXE автоматически загружался в .iso с автоматическим развертыванием clonezilla, который у меня есть.

Есть ли способ заставить Linux автоматически загружаться в iPXE при следующей загрузке один раз, а затем iPXE автоматически загружаться в .iso с сервера?

Nikita Kipriyanov avatar
флаг za
Появляется решение: https://specialistoff.net/question/661. Страница на русском языке, однако думаю понятно как она работает. Вы можете попробовать этот подход и написать (и принять) правильный ответ здесь, а не просто ссылку.
Nikita Kipriyanov avatar
флаг za
(Конечно, это только часть решения. Вам нужен какой-нибудь агент, который воссоздаст `grub.cfg`, чтобы фактически выбрать этот новый пункт меню загрузки.) Поэтому я бы предложил *обратное* решение.
Moritz von Schweinitz avatar
флаг se
Спасибо! Эта русская страница кажется почти тем, чего я хочу добиться. Спасибо!
флаг in
Если вы используете устаревшую версию, вы должны иметь возможность загрузить ipxe.lkrn из grub, в efi вы можете сделать что-то похожее на запуск ipxe.efi, но это может привести к ошибкам, или вы можете использовать efibootmgr для перехода на netboot при следующем запуске и затем используйте конфигурацию proxydhcp, см. https://ipxe.org/appnote/proxydhcp в качестве примера, затем используйте http, чтобы получить сценарий, который может быть динамическим, и используйте серийный номер или mac, если вам нужно, чтобы он был автоматическим и настроенным.
Рейтинг:2
флаг za

Я использую аналогичную установку, но задом наперед. В конце концов, я могу контролировать с сервера, как загружаются мои целевые машины.

Однако я не полагаюсь на grub на целевой машине и не использую iPXE.

Вместо этого я установил загрузочный сервер PXE. В настоящее время крайне сложно найти компьютер с неработающей загрузкой PXE. Поэтому я настроил все компьютеры, которыми мне нужно управлять, таким образом, чтобы они загружались из сети через PXE.

Кстати, это одинаково возможно как со старым BIOS, так и с современными UEFI машинами, и именно DHCP-сервер различает эти случаи и предлагает машине подходящий загрузчик.

В любом случае машины загружают какой-то вариант PXELinux. У него есть отличное свойство в том, как он ищет файл конфигурации. Сначала он запрашивает файл конфигурации с именем SMBIOS UUID машины, если он не найден, если запрашивает файл с именем по MAC-адресу интерфейса, который был загружен, IP-адрес, и если ничего не помогает, он запрашивает файл По умолчанию.

Таким образом, вы можете создать некоторые «базовые конфигурации», которые загружают машины с локального жесткого диска. tftp/pxelinux.cfg/жесткий диск:

жесткий диск по умолчанию

метка жесткого диска
    локальная загрузка 0

и другой, который загружает clonezilla tftp/pxelinux.cfg/clonezilla:

клонзилла по умолчанию

лейбл клонезилла
# инструкции по загрузке clonezilla здесь

и вы можете добавить несколько других, например, для бездискового тонкого клиента (это фактическая конфигурация, которую я когда-то использовал):

растяжение по умолчанию

этикетка стрейч
    тонкий клиент Linux/vmlinuz-4.9.0-7-amd64
    initrd тонкий клиент/initrd.img-4.9.0-7-amd64
    добавить ISCSI_INITIATOR=iqn.1993-08.org.debian:01:a4c444f2b735 ISCSI_TARGET_NAME=iqn.2018-10.ru.rterm.office.test-storage:thinclient.lvm ISCSI_TARGET_IP=192.168.168.113 ISCSI_055ca=4UUID24 root=4260 root -8ea2-437f-9550-a5503d0e7b21 ip=dhcp тихий

Затем вы создаете символические ссылки, указывающие на эти шаблоны:

cd tftp/pxelinux.cfg
ln -s clonezilla 01-10-32-54-76-98-ба
ln -s clonezilla 01-dc-fe-10-32-54-76
ln -s жесткий диск 01-98-ba-dc-fe-10-32
ln -s жесткий диск 01-54-76-98-ba-dc-fe
ln -s жесткий диск по умолчанию
ln -s тонкий клиент 00801536-e3ee-1610-9957-d68a52030736  

В этом примере машины с MAC-адресами 10:32:54:76:98:ба и DC: Fe: 10: 32: 54: 76 загрузит клонзилла конфигурационный файл (01 в начале имени файла здесь означает "Ethernet"), машина с UUID 00801536-e3ee-1610-9957-d68a52030736 загрузит Тонкий клиент config, и другие машины загрузятся жесткий диск, но два с указанными MAC-адресами будут делать это тише (меньше журналов «файл не найден» на сервере и немного быстрее загрузка, потому что попытка загрузки будет успешной раньше).

Теперь, если вам нужна какая-то машина для загрузки, скажем, clonezilla, вы создаете или меняете ее симлинк на tftp-сервере к клонзилла. После того, как он был загружен, вы можете отменить изменение (например, изменить на жесткий диск или что хотите).Вы можете создавать конфиги для сетевой установки Linux — я даже не помню, когда в последний раз загружал установщик с USB, потому что всегда устанавливаю его таким образом уже несколько лет. Вы можете использовать PXELinux включать директиву и создайте аккуратное универсальное меню со всеми этими параметрами, чтобы выбрать их вручную и использовать вместо этого по умолчанию. Технически даже установка Windows возможна (была) таким образом. Схема очень гибкая, и единственное, что зависит от клиентской машины, это то, что она сначала загружается из сети.

Moritz von Schweinitz avatar
флаг se
Моя главная проблема заключается в том, что я на самом деле не контролирую сетевой DHCP-сервер и не могу отправлять информацию PXE через DHCP. Вот почему я изучаю iPXE, чтобы машина знала, откуда брать изображение.
флаг in
iPXE является более мощным NBP, чем PXELinux, и может создать гораздо более чистую и быструю настройку, чем эта.
Nikita Kipriyanov avatar
флаг za
Я не против. Я описал то, что построил около десяти лет назад. Он по-прежнему очень хорошо удовлетворяет мои потребности (работает и с виртуальными машинами). Сейчас это не так важно, так как я работаю удаленно. Если (когда) я вернусь к перестройке этого, я могу попробовать, или я могу более эффективно использовать GRUB с сетевой загрузкой.
Рейтинг:0
флаг se

Я просто добавил запись iPXE (со «сценарием» iPXE в файле initrd) в /etc/grub.d/ (начиная с «99», чтобы он был в конце списка), затем запустите обновление-личность, затем побежал

grub-reboot `egrep '^menuen' /boot/grub/grub.cfg |wc -l`; перезагрузка;

это просто подсчитывает пункты меню в файле grub.cfg и указывает grub-reboot загрузить последний вариант при следующей перезагрузке.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.