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

小さな計算機室 - computername Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

!!!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イメージを作成した際に付けた名前だったりと、なんだか何だか変だなぁ、とは思っていた。
システムイメージユーティリティのマニュアルには、そこのところの記述がちょうど抜け落ちて
いて、不思議な気がしたとても不可解だ