Snow Leopard Serverをインストールテスト


 アップスストア銀座 / ServerNight#2から来られた方へ..
 もうちょっと整理しますのでお待ちくださいm(_ _)m...


イムリーにMac miniのSnowLeopardプレインストール版(10万ちょっと)の発表あり、Mac OS X Server 10.6(Snow Leopard Server)のおべんきょう/使っていいか?(^^を検証...
Address Book ServerMobile Access Server等々の新機能もあるけど、とりあえずはインストール編..

蛇足:64/32bitカーネル動作の確認と起動

インストーラが機種によって勝手にカーネルを選ぶけど、あえて互換問題で32ビットカーネル指定で使いたいとか、スレッド数/vnode数制限などで64ビットカーネル人柱?したいときは、まずEFIの対応確認しておく.

$ ioreg -l -p IODeviceTree | grep firmware-abi
    | |   "firmware-abi" = <"EFI64">  <--64ビットカーネル起動可
    | |   "firmware-abi" = <"EFI32">  <--32ビットカーネル起動のみ

ちなみにインストーラまかせで64bitカーネル起動するのはこれらの機種.
テンポラリで指定するのは「起動時"6""4"キー押しっぱなし」で64ビットカーネル起動、「"3""2"キー押しっぱなし」で32ビットカーネルで起動する.
恒常的に指定するならsystemsetup(8)を使って..

$ sudo systemsetup -setkernelbootarchitecture x86_64 <--64ビットカーネル起動指定の場合
$ sudo systemsetup -setkernelbootarchitecture i386 <--32ビットカーネル起動指定の場合

.....確認してみると.....

$ cat /Library/Preferences/SystemConfigurationcom.apple.Boot.plist 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Kernel</key>
	<string>mach_kernel</string>
	<key>Kernel Architecture</key>
	<string>x86_64</string> <--64ビットカーネル起動
	<key>Kernel Flags</key>
	<string>srv=1</string>
</dict>
</plist>
$ 

.....
$ cat com.apple.Boot.plist 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Kernel</key>
	<string>mach_kernel</string>
	<key>Kernel Architecture</key>
	<string>i386</string> <--32ビットカーネル起動
	<key>Kernel Flags</key>
	<string>srv=1</string>
</dict>
</plist>
$ 

とする.
あと32ビットカーネル設定される機種で、あえて64ビットカーネル使いたい場合はboot.efiを書き換えること->* **.


Ref.
Mac OS X Server v10.6:64 ビットのカーネルを使う Mac
http://support.apple.com/kb/HT3770?viewlocale=ja_JP
Mac OS X Server v10.6:プロセスの制限を理解する
http://support.apple.com/kb/HT3854?viewlocale=ja_JP
Mac OS X Server v10.6:32 ビットまたは 64 ビットカーネルで起動する
http://support.apple.com/kb/HT3773?viewlocale=ja_JP
Is Your Machine Good Enough for Snow Leopard K64?
http://www.osxbook.com/blog/2009/08/31/is-your-machine-good-enough-for-snow-leopard-k64/
Snow Leopardを64bitカーネルで動作させる
http://www39.atwiki.jp/macmini/m/pages/30.html


0.インストール方法の種類(おおざっぱに)

インストールは、スタンドアロン/ローカルディスクにインストールする方法と、ネットワーク上の別PC/Macからインストール操作する方法があります.

ここではネットワーク上の別PC/Macからサーバ管理.appSSHを使ってインストールすることにしますが、ネットワーク越しでもほかにVNC(画面共有/Remote Desktop)やNetBoot,NetInstall,NetRestoreを使う方法もあります.
簡単な比較をすると以下のようになります.

ネットワーク(越し)インストールの場合は、インストールするMacインストーラDVD入れてDVDから起動すると、ネットワーク上の別PC/Macから、サーバ設定.appやVNC(画面共有/Remote Desktop)やSSHで操作してインストールできるようになっています. (デフォルトではDHCPアドレス取得)
またインストールされるMacの別ボリュームに、OSX/インストールしてそこから起動したり、インストーラDVDの内容をditto(1)でコピーしてそこから起動したりしても構いません.
インストール操作は「サーバ管理.app」を使うのがラクですが、このアプリはMac OS X 10.6で動作させるコトが必要です.
この制限にひっかかる場合は、VNC(画面共有/Remote Desktop)を使ったり、SSHCLI系を使うことになります.
SSH等でCLI系使う場合は sa_srchr (/System/Library/Serversetup/sa_srchr)serversetup (/System/Library/ServerSetup/serversetup)がなくなっているので注意が必要です.(systemsetup(8),networksetup(8),dscl(1),serveradmin(8)...などなどを使う?)
また多台数インストールする場合は、Netbootや設定ファイル使ったインストールや設定も可能です.


Ref.
Mac OS X Server Getting Started Version 10.6 Snow Leopard
http://images.apple.com/server/macosx/docs/Getting_Started_v10.6.pdf


1.インストール準備

アップル社/セットアップシート記入するか、ネットワーク越しの場合は、最低でも本体シリアル番号と、MACアドレスを調べておくことが必要です.(後述)


Ref.
Mac OS X Server Installation & Setup Worksheet For Version 10.6 Snow Leopard
http://images.apple.com/server/macosx/docs/Worksheet_v10.6.pdf
アップルのハードウェア製品のシリアル番号の確認方法
http://support.apple.com/kb/HT1349?viewlocale=ja_JP


インストーラDVDから起動する設定

ということで..早速インストーラDVDを入れた後で"インストーラDVDから起動する設定".
本体にキーボードつけていたらキーボードコンビネーションでしたり、GUI/起動ディスクパネル設定でいいですが、もしCUIで設定する場合はsystemsetup(8)でやるなら

$ systemsetup -liststartupdisks  <--インストール可能なディスク取得
/Volumes/Mac OS X Server Install Disc/System/Library/CoreServices <--インストーラDVDあった
/System/Library/CoreServices
$ sudo systemsetup -setstartupdisk "/Volumes/Mac OS X Server Install Disc/System/Library/CoreServices" <--インストーラDVDを起動指定
$ systemsetup -getstartupdisk <--いちおう確認
/Volumes/Mac OS X Server Install Disc/System/Library/CoreServices
$ sudo shutdown -r now

bless(8)でやるなら..

$ df
Filesystem    512-blocks       Used Available Capacity  Mounted on
/dev/disk0s2   233769824   74467880 158789944    32%    /
devfs                237        237         0   100%    /dev
map -hosts             0          0         0   100%    /net
map auto_home          0          0         0   100%    /home
/dev/disk1s3    14054936   13572120    482816    97%    /Volumes/Mac OS X Server Install Disc <--インストーラDVDあった
$ sudo bless --device /dev/disk1s3 --setBoot<--インストーラDVDを起動指定
$ bless --getBoot <--いちおう確認
/dev/disk1s3
$ sudo shutdown -r now

です.


起動後のIPアドレスとサービス

再起動後のIPアドレスDHCPアドレス取得可で、サービスはSSHとサーバ管理.appポートは待受けの様子.
DHCPサーバない場合はリンクローカルアドレスになり、Bonjour
"機種名"-"MACアドレス".local
と見えます.

$ dns-sd -B _ssh._tcp
Browsing for _ssh._tcp
Timestamp     A/R Flags if Domain          Service Type    Instance Name
18:42:12.186  Add     3  4 local.       _ssh._tcp.      機種名-MACアドレス <--!
...
...

-Terminal.appで見ると-

-サーバ管理.appで見ると-

もしBonjour使えないPCから設定する場合は、MACアドレスからARPテーブルをみてIPアドレスを調べます.

$ ping 224.0.0.1 
PING 224.0.0.1 (224.0.0.1): 56 data bytes
...
...
$ arp -a |grep 'xx:xx:xx:xx:xx:xx' <-- インストールされるマシンのMACアドレス
? (aaa.bbb.ccc.ddd) at xx:xx:xx:xx:xx:xx on en0 ifscope [ethernet] <-- ンストールされるマシンのIP(aaa.bbb.ccc.ddd)を取得
Remote $

また先のとおり,sa_srchrは10.6からなくなったみたいです.


ネットワーク越しにインストール操作時のIDとパスワード

以下のとおり

  • サーバ管理:ID:必要なし/Pass:シリアル番号上位8桁
  • VNC: ID:なし/Pass:シリアル番号上位8桁
  • SSH: id:root/Pass:シリアル番号上位8桁

(シリアル番号消えている場合は"12345678")

サーバ管理でインストール操作

サーバ管理を使う場合は、実際には/System/Library/CoreServices/Server Assistant.appが起動する.
以下は流れのキャプチャー(<手抜き:P)




同じく設定










AirMac BaseStation使っている場合は管理するか?よく考えること(.






これでインストール>ホスト設定までは終了.あとはアプリケーション設定等々になります.

SSHでインストール操作

SSHでインストール操作する場合は、先のとおりホスト/ID/Passに気をつけて..

Local $ ssh -la root@aaa.bbb.ccc.ddd <-- IDはroot(アドレスはIPv6も可)
Remote$ Password: <-- SNの上位8桁(SN消えてる場合:12345678)
Remote# /usr/sbin/installer -volinfo -pkg /System/Installation/Packages/OSInstall.mpkg <--インストール可能なボリューム検索
...
/Volumes/SnowLeopard Server <-- ここにインストールすることにする
...
...
Remote# /usr/sbin/diskutil eraseVolume JHFS+ "SnowLeopard Server" "/Volumes/SnowLeopard Server" <-- インストールボリュームを消去
...
...
Remote# /usr/sbin/diskutil info "SnowLeopard Server" <-- いちおう確認しとく
...
   File System:              Journaled HFS+
   Type:                     hfs
   Name:                     Mac OS Extended (Journaled)
...
   Partition Type:           Apple_HFS
   Bootable:                 Is bootable
...
.......................いよいよインストールを......................
...
Remote# /usr/sbin/installer -verboseR -lang ja -pkg /System/Installation/Packages/OSInstall.mpkg -target "/Volumes/SnowLeopard Server" <--インストール先を指定
installer: Package name is Mac OS X Server
installer: Installing at base path /Volumes/SnowLeopard Server
installer:PHASE:Preparing for installation…
...
...
Remote# /sbin/shutdown -r now

でインストールおわり.

同じく設定

このあとはとりあえずログイン出来る程度の最小限設定を..
コマンドラインで設定する方法と、自動設定ファイルで設定する方法があり、自動設定ファイルの方が楽です.
自動設定ファイルをつくる場合は簡単です.
/System/Library/CoreServices/Server Assistant.app で 自動設定のための情報を準備して保存 を選ぶと設定ファイルができます.
これを設定するサーバの/Auto Server Setup下にコピーして再起動すれば設定されます.
またこのファイルは編集できるテキストファイルなので,雛形をつくって複数のサーバで利用できます.

Local$ ls |grep plist
macaddress.plist <-- <MACアドレス>.plistという名前で設定ファイルをつくる
Local$
Local$ ssh -la root@aaa.bbb.ccc.ddd "mkdir /Auto\ Server\ Setup" <--サーバにディレクトリ作成
Local$ scp macaddress.plist "root@aaa.bbb.ccc.dddl:/Auto\ Server\ Setup" <-- 設定ファイルをコピー
Local$ ssh -la root@aaa.bbb.ccc.ddd shutdown -r now

再起動してきたら設定ファイルを削除することとrootのパスワードや権限を見直しです.
これでインストール>ホスト設定までは終了.あとはアプリケーション設定等々になります.


コマンドラインで設定する場合はちょっと長くなります:-P
まずシリアル番号入力...

# /System/Library/ServerSetup/serverserialnumberutil -validate SERIALNUMBER <--シリアル番号確認(エラーなければ何も返さない)
# /System/Library/ServerSetup/serverserialnumberutil -set SERIALNUMBER "My Name" "My Organization" <--設定します
# /System/Library/ServerSetup/serverserialnumberutil -get
SERIALNUMBER|My Name|My Organization
#

タイムゾーンを設定....

# /usr/sbin/systemsetup -settimezone Asia/Tokyo <--タイムゾーン設定
Set TimeZone: Asia/Tokyo
# /usr/sbin/systemsetup -gettimezone 
Time Zone: Asia/Tokyo
#

アドミンユーザをローカルに登録...

# /usr/bin/dscl . -list /Users | grep MyName <--ユーザ名重複を調べとく
# /usr/bin/dscl . -list /Users UniqueID <--ユーザIDの重複も..
_amavisd                83
_appowner               87
...
...
...
# /usr/bin/dscl . -list /Groups PrimaryGroupID <--グループ一覧も調べとく
...
_appserveradm                    81 <--- このへんに加える
_appserverusr                    79 <--- このへんに加える
...
_lpadmin                         98 <--- このへんに加える
...
admin                            80  <--- このへんに加える
...
staff                            20  <--- このへんに加える
#
# ...いよいよ登録...
# /usr/bin/dscl . -create /Users/MyName <-- ユーザ名
# /usr/bin/dscl . -create /Users/MyName RealName "My Name" <-- 名前
# /usr/bin/dscl . -create /Users/MyName UniqueID 501 <-- ユーザID
# /usr/bin/dscl . -create /Users/MyName PrimaryGroupID 20 <-- 所属プライマリグループ
# /usr/bin/dscl . -create /Users/MyName UserShell /bin/bash <-- 利用シェル
# /usr/bin/dscl . -create /Users/MyName NFSHomeDirectory /Users/MyName <-- ホームディレクトリ
#
# ...ホームディレクトリつくる...
# /usr/sbin/createhomedir -b -u MyName <-- ホームディレクトリつくる
creating home directories for (localhost)
# ls -la /Users/MyName/
total 0
drwxr-xr-x  12 MyName  staff  408 Dec 10 14:23 .
drwxr-xr-x   5 root   admin  170 Dec 10 14:23 ..
-rw-------   1 MyName  staff    4 Dec 10 14:23 .CFUserTextEncoding
drwx------+  3 MyName  staff  102 Dec 10 14:23 Desktop
drwx------+  4 MyName  staff  136 Dec 10 14:23 Documents
drwx------+  4 MyName  staff  136 Dec 10 14:23 Downloads
drwx------+ 22 MyName  staff  748 Dec 10 14:23 Library
drwx------+  3 MyName  staff  102 Dec 10 14:23 Movies
drwx------+  3 MyName  staff  102 Dec 10 14:23 Music
drwx------+  4 MyName  staff  136 Dec 10 14:23 Pictures
drwxr-xr-x+  4 MyName  staff  136 Dec 10 14:23 Public
drwxr-xr-x+  6 MyName  staff  204 Dec 10 14:23 Sites
#
# ...パスワード設定...
# su MyName
$ passwd
Changing password for MyName.
Old Password:
New Password: xxxxxxxx
Retype New Password: xxxxxxxx
$ exit
exit
#
# ...グループ権限を追加...
# id MyName
uid=501(MyName) gid=20(staff) groups=20(staff),61(localaccounts),12(everyone) <-- 結構サビシイ...
# dscl . -append /Groups/admin GroupMembership MyName <-- adminを追加
# dscl . -append /Groups/_appserveradm GroupMembership MyName <-- _appserveradmを追加
# dscl . -append /Groups/_lpadmin GroupMembership MyName <-- _lpadminを追加
# dscl . -append /Groups/_appserverusr GroupMembership MyName <-- _appserverusrを追加
# id MyName
uid=501(MyName) gid=20(staff) groups=20(staff),503(com.apple.local.ard_interact),501(com.apple.local.ard_admin),204(_developer),100(_lpoperator),98(_lpadmin),81(_appserveradm),80(admin),79(_appserverusr),61(localaccounts),12(everyone),500(com.apple.access_ssh),502(com.apple.local.ard_reports),504(com.apple.local.ard_manage),401(com.apple.access_screensharing) <-- SSHとかVNCも管理もオッケー
# 

ネットワーク設定

# /usr/sbin/networksetup -listallnetworkservices <--まずネットワークサービスリストを
An asterisk (*) denotes that a network service is disabled.
Ethernet
FireWire
# ...IPアドレスを設定...
#/usr/sbin/networksetup -setmanual "Ethernet" 10.0.1.31 255.255.255.0 10.0.1.1 <-- 適当に..
#/usr/sbin/networksetup -getinfo "Ethernet"
Manual Configuration
IP address: 10.0.1.31
Subnet mask: 255.255.255.0
Router: 10.0.1.1
IPv6: Automatic
IPv6 IP address: none
IPv6 Router: none
Ethernet Address: xx:xx:xx:xx:xx:xx
# ifconfig en0 |grep inet <-- いちおうこっちでも確認..
        inet6 fe80::217:f2ff:fef5:36ea%en0 prefixlen 64 scopeid 0x4 
        inet 10.0.1.31 netmask 0xffffff00 broadcast 10.0.1.255
# netstat -rn <-- いちおうこっちでも確認..
Routing tables
Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            10.0.1.1           UGSc            2        0     en0
10.0.1/24            link#4             UCS             1        0     en0
10.0.1.1           link#4             UHLWI           8      111     en0
10.0.1.31          127.0.0.1          UHS             0        0     lo0
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              0      540     lo0
169.254            link#4             UCS             0        0     en0
# 
#...DNSを設定...
#/usr/sbin/networksetup -setdnsservers "Ethernet" 10.0.1.2
# /usr/sbin/networksetup -getdnsservers "Ethernet"         
10.0.1.2
# cat /etc/resolv.conf |grep nameserver <-- いちおうこっちでも確認..
nameserver 10.0.1.2
# dig www.apple.com <--こんなのも試しておく..
...
# 


ホスト名を設定...

# scutil --set HostName MyServer.domain.com
# scutil --get HostName
MyServer.domain.com
# scutil --set ComputerName MyServer
# scutil --get ComputerName
MyServer
# scutil --set LocalHostName MyServer
# scutil --get LocalHostName
MyServer
#
# dns-sd -B _ssh._tcp 
Browsing for _ssh._tcp
Timestamp     A/R Flags if Domain                    Service Type              Instance Name
16:33:25.200  Add     3  4 local.                    _ssh._tcp.                MyServer <-- 反映してる
#

最後に設定終了のおまじない...

# touch /var/db/.AppleSetupDone <--設定終了のフラグファイル
# shutdown -r now

あとでrootパスワードを変更して権限も(SSHアクセスとかいろいろ)見直して、softwareupdateとかしておくこと.
これでインストール>ホスト設定までは終了.あとはアプリケーション設定等々になります.


補:インストールしてみると..IMAPサーバが最近のトレンド?でCyrusからDevcotに変わったみたい...




Mac OS X 10.6 Snow Leopard Server Unlimited クライアント

Mac OS X 10.6 Snow Leopard Server Unlimited クライアント

APPLE Mac mini 2.53GHz 4GB 320GB MC239J/A

APPLE Mac mini 2.53GHz 4GB 320GB MC239J/A

Apple Wireless Keyboard (JIS) MC184J/A

Apple Wireless Keyboard (JIS) MC184J/A

Apple Magic Mouse MB829J/A

Apple Magic Mouse MB829J/A