Como fazer a seleção de imagens BSDP NetBoot a partir de um script no OS X 10.9+?

3

Histórico: O BSDP é o protocolo da Apple usado para descobrir e fazer seleções em servidores NetBoot na rede (não confundir com inicialização PXE no estilo PC). especificações (documento do Word). Longa história curta - é um protocolo que fica acima do DHCP, usando mensagens INFORM para passar informações entre o cliente e o servidor.

Eu preciso automatizar um ambiente em que máquinas de teste iniciem diferentes imagens de inicialização na rede. A maneira mais simples (para mim) de fazer isso é executar uma seleção de imagem de inicialização de um script em execução no cliente. Isto é, da visão do servidor e da rede equivalente a selecionar a imagem de inicialização em Preferências do sistema - > Disco de inicialização

Eu encontrei referências ao bsdpc, um utilitário antigo da Apple que não faz mais parte de qualquer instalação padrão do OS X, ou pacote de versão do servidor em que eu pudesse chegar em minhas mãos. Sua fonte está disponível na Apple aqui , mas o código não é compilado usando o SDK padrão, e eu não posso encontre qualquer informação sobre quais bibliotecas / versões são necessárias para construí-lo com sucesso.

Alguém pode sugerir uma solução fácil? Neste ponto, não tenho certeza se tentar obter o código-fonte da Apple para compilar é realmente mais fácil do que escrever um cliente do zero.

    
por myxal 07.01.2015 / 16:41

1 resposta

1

Disclaimer: Eu não testei isso, e é principalmente discussão da JAMF Nation . algumas notas adicionais do artigo antigo do AFP548 .

Você precisa usar o comando bless (que faz parte da instalação padrão do OS X). O formato simples para configurar o NetBoot é:

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

... mas infelizmente isso apenas configura o endereço para enviar as consultas do BSDP; Se você tiver mais de uma imagem do NetBoot servida no mesmo servidor, ela não permitirá especificar qual delas usar. (Eu acho que vai usar o que for definido como o padrão nas configurações do servidor). A maneira óbvia de especificar uma imagem específica é pelo seu número de ID de imagem ... mas não consigo encontrar uma maneira de definir isso no cliente.

O que você pode fazer é ignorar totalmente o BSDP, e dizer ao cliente onde obter os recursos reais de inicialização (isto é, dar a informação que normalmente obteria na resposta do 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}"

Observe que o último comando presume que você está inicializando um kernel de 64 bits (todos os 10.9 vêm com), é uma imagem verdadeira do NetBoot (ou seja, não NetInstall ou NetRestore) e que você está servindo sobre nfs em vez de HTTP (minha recomendação, eu continuo correndo em problemas com imagens servidas por HTTP, mesmo que a Apple tenha feito o padrão algumas versões atrás). Se você precisar de alguma outra variante, verifique o link JAMF Nation para obter mais opções e / ou tente configurar um cliente manualmente e, em seguida, use nvram -p para ver quais são as configurações de firmware brutas resultantes (consulte o link AFP548).

    
por 09.01.2015 / 00:28