Create  Edit  Diff  Mac OS X Serverで作る 小さな計算機室  Index  Search  Changes  RSS  Login

コンピュータ名を設定する

NetBootクライアントにユニークなコンピュータ名(Bonjour名)を付けたい

Mac OS Xの「コンピュータ名」と「ローカルホスト名」をコマンドラインから変更するには、それぞれ

scutil --set ComputerName "abc"
scutil --set LocalHostName "abc"

とすればよいらしい。

ということは、以下のような感じでStartupItemsを設定してやれば、 DNS名がコンピュータ名に設定されるはずだ(Mac OS X 10.4.2ではちゃんと動きました)。

/Library/StartupItems/ComputerName/ComputerName

#!/bin/sh
. /etc/rc.common 
 
StartService ()
{ 
  client=`/bin/hostname -s` 
  /usr/sbin/scutil --set ComputerName ${client} 
  /usr/sbin/scutil --set LocalHostName ${client}
}

StopService ()
{
   return 0
}

RestartService ()
{
   return 0
}

RunService "$1"

/Library/StartupItems/ComputerName/StartupParameters.plist

{
 Description   = "Set Computer Name";
 Provides      = ("ComputerName");
 Requires      = ("Core Services","NetworkExtensions");
 Preference    = "None";
 Messages =
 {
   start = "Setting Computer Name";
 };
 OrderPreference = "Last";
}

/Library/StartupItems/ComputerName/Resources/English.lproj/Localizable.strings

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
       <key>Setting Computer Name</key>
       <string>Setting Computer Name</string>
</dict>
</plist>

なーんだ

でも、その後もうちょっと調べてみたら、システムイメージユーティリティでNetBootイメージを作るときに 「"共有"環境設定」のところにコンピュータ名を入れておくだけで良いことがわかった (コンピュータ名を空欄のままにしてはいけない)。 これって、きっとその方面では常識だったんだろうと思う。

コンピュータ名を mac とすると、NetBoot後のコンピュータ名は mac123456ab のように なる。後ろの数字はそのマシンのイーサネットアドレス(これがホントのMACアドレス)。

"共有"環境設定でコンピュータ名を空欄にしておくと、クライアントの名前は NetBootXXX だったり、 NetBootイメージを作成した際に付けた名前だったりと、なんだか何だか変だなぁ、とは思っていた。 システムイメージユーティリティのマニュアルには、そこのところの記述がちょうど抜け落ちて いて、とても不可解だ。