Как сделать выбор изображения BSDP NetBoot из скрипта на OS X 10.9+?

Справочная информация: BSDP - это протокол Apple, используемый для обнаружения и выбора серверов NetBoot в сети (не путать с загрузкой PXE в стиле ПК). спецификации (Word Doc). Короче говоря - это протокол, который находится над DHCP и использует сообщения INFORM для передачи информации между клиентом и сервером.

Мне нужно автоматизировать среду, в которой тестовые машины будут загружать различные загрузочные образы в сети. Самый простой способ (для меня) сделать это - выбрать образ загрузки из скрипта, запущенного на клиенте. Это с точки зрения сервера и сети эквивалентно выбору загрузочного образа в Системных настройках -> Загрузочный диск

Я нашел ссылки на bsdpc, старую утилиту от Apple, которая больше не является частью какой-либо стандартной установки OS X, или версию / пакет сервера, которые я мог получить. Его источник доступен здесь от Apple, но код не собирается с использованием стандартного SDK, и я не могу найти никакой информации о том, какие библиотеки / версии необходимы для его успешной сборки.

Кто-нибудь может предложить простое решение? На данный момент я не уверен, что попытка собрать исходный код Apple на самом деле проще, чем написать клиент с нуля.

1 ответ

Решение

Отказ от ответственности: я не проверял это, и в основном это было обсуждение JAMF Nation, с некоторыми дополнительными примечаниями из старой статьи AFP548.

Вам нужно использовать bless команда (которая является частью стандартной установки OS X). Простой формат для настройки NetBoot:

sudo bless --netboot --server bsdp://${ipAddress}

... но, к сожалению, это только настраивает адрес для отправки запросов BSDP; Если у вас есть более одного образа NetBoot, обслуживаемого с одного и того же сервера, вы не сможете указать, какой из них использовать. (Я думаю, что он будет использовать то, что определено как значение по умолчанию в настройках сервера). Очевидный способ указать конкретное изображение - по его идентификационному номеру... но я не могу найти способ установить это на клиенте.

Что вы можете сделать, это полностью обойти BSDP и сообщить клиенту, где получить фактические загрузочные ресурсы (т.е. дать ему информацию, которую он обычно получает в ответе BSDP):

bless --verbose --netboot \
    --booter "tftp://${ipAddress}/NetBoot/NetBootSP0/${nbiName}/i386/booter" \
    --kernelcache "tftp://${ipAddress}/NetBoot/NetBootSP0/${nbiName}/i386/x86_64/kernelcache" \
    --options "rp=nfs:${ipAddress}:/private/tftpboot/NetBoot/NetBootSP0:${nbiName}/${dmgName}"

Обратите внимание, что последняя команда предполагает, что вы загружаете 64-битное ядро ​​(все 10.9 поставляются вместе), это настоящий образ NetBoot (т.е. не NetInstall или NetRestore), и что вы обслуживаете его по nfs, а не по HTTP (моя рекомендация) Я продолжаю сталкиваться с проблемами с изображениями, обслуживаемыми по протоколу HTTP, хотя Apple несколько раз назад установила этот параметр по умолчанию). Если вам нужен какой-то другой вариант, проверьте ссылку JAMF Nation для дополнительных опций и / или попробуйте настроить один клиент вручную, а затем используйте nvram -p чтобы узнать, каковы итоговые настройки прошивки (см. ссылку AFP548).

Другие вопросы по тегам