Назад | Перейти на главную страницу

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

Задний план: 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).