web-dev-qa-db-ja.com

OS X 10.9+のスクリプトからBSDPNetBootイメージを選択するにはどうすればよいですか?

背景:BSDPは、ネットワーク上のNetBootサーバーで検出および選択を行うために使用されるAppleのプロトコルです(PCスタイルのPXEブートと混同しないでください)。 仕様 (Wordドキュメント)。簡単に言うと、DHCPの上に位置するプロトコルであり、INFORMメッセージを使用してクライアントとサーバー間で情報を渡します。

テストマシンがネットワーク上でさまざまなブートイメージを起動する環境を自動化する必要があります。これを行う最も簡単な方法(私にとって)は、クライアントで実行されているスクリプトからブートイメージの選択を実行することです。これは、サーバーとネットワークの観点から、システム環境設定->起動ディスクでブートイメージを選択するのと同じです。

Appleは、標準のOS Xインストールの一部ではなくなった古いユーティリティであるbsdpc、または入手できるサーバーのバージョン/パッケージへの参照を見つけました。そのソースは=から入手できます。 Apple here しかし、コードは標準のSDKを使用してビルドされておらず、正常にビルドするために必要なライブラリ/バージョンに関する情報が見つかりません。 。

誰かが簡単な解決策を提案できますか?現時点では、Appleソースをコンパイルする方が、クライアントを最初から作成するよりも実際に簡単かどうかはわかりません。

3
myxal

免責事項:私はこれをテストしていません、そしてそれはほとんど取られています このJAMF Nationの議論古いAFP548の記事 からのいくつかの追加のメモがあります。

blessコマンド(標準のOS Xインストールの一部)を使用する必要があります。 NetBootを設定するための簡単な形式は次のとおりです。

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

...しかし残念ながら、それはBSDPクエリを送信するアドレスを構成するだけです。同じサーバーから複数のNetBootイメージを提供している場合、使用するイメージを指定することはできません。 (サーバーの設定でデフォルトとして定義されている方を使用すると思います)。特定の画像を指定する明白な方法は、その画像ID番号によるものです...しかし、クライアントでそれを設定する方法が見つかりません。

あなたができることは、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ではない)イメージであり、HTTPではなくnfsを介して提供していることを前提としていることに注意してください(私の推奨事項) ; Appleは数バージョン前にデフォルトになりました)にもかかわらず、HTTPで提供される画像で問題が発生し続けます。他のバリアントが必要な場合は、JAMFNationリンクでその他のオプションを確認してください。 /または1つのクライアントを手動で構成してから、nvram -pを使用して、結果のrawファームウェア設定を確認します(AFP548リンクを参照)。

1
Gordon Davisson