Задний план: BSDP - это протокол Apple, используемый для обнаружения и выбора серверов NetBoot в сети (не путать с загрузкой PXE в стиле ПК). спецификации (Документ Word). Короче говоря - это протокол, который находится выше DHCP, используя сообщения INFORM для передачи информации между клиентом и сервером.
Мне нужно автоматизировать среду, в которой тестовые машины будут загружать разные загрузочные образы в сети. Самый простой способ (для меня) сделать это - выполнить выбор загрузочного образа из скрипта, запущенного на клиенте. Это с точки зрения сервера и сети эквивалентно выбору загрузочного образа в Системные настройки -> Загрузочный диск
Я нашел ссылки на bsdpc, старую утилиту от Apple, которая больше не является частью какой-либо стандартной установки OS X, или версию / пакет сервера, которые мне удалось достать. Его исходный код доступен от Apple Вот, но код не строится с использованием стандартного SDK, и я не могу найти никакой информации о том, какие библиотеки / версии необходимы для его успешного построения.
Может ли кто-нибудь предложить простое решение? На данный момент я не уверен, проще ли попытаться скомпилировать исходный код Apple, чем написать клиент с нуля.
Отказ от ответственности: я не тестировал это, и в основном это занято это обсуждение 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).