Core 2 Duo Mac上のVMWare Fusionで32bit Solaris 10を動作させるTIPS

Core 2 DuoのMacBookでVMWare Fusionを使用すると64bit OSをゲストOSとして使用できるようになります。しかし、Core Duo時代に32bitモードで作成しておいたSolaris 10のイメージをCore 2 DuoのVMWare Fusionで実行すると、64bitモードで起動しようとして以下のダイアログが出た後、起動に失敗して強制リブートがかかります。

Vmware32biton64bit

おそらく、vmxファイルに32bitモードを明示するオプションが必要なのだろうと思い、検索してみたところ比較的簡単に解決策を見つけました。

具体的には以下の一行をvmxファイルに追加した後にゲストOSを起動すると、32bitモードのSolaris 10が正常に起動しました。

monitor_control.disable_longmode = 1

一応、この設定のままでも使用上不都合はなさそうですが、上記サポートドキュメントを見るとこの設定のままにしておくことは推奨しないということらしいので、一旦32bit Solaris 10が起動したらrootアカウントから、以下のようにEPROMの設定をした方がいいそうです。

# eeprom boot-file=kernel/unix

EPROMの設定をした後は、vmxファイルに追加したmonitor_control.disable_longmode = 1の行を削除しても、きちんと32bitモードでSolaris 10が立ち上がりました。

| | コメント (0) | トラックバック (0)

MacBook 2.4GHz Core 2 DuoのSATAホストアダプタはSATA-150

以前のエントリで、MacBookのSerial ATAのホストアダプタは初代以降もSATA-150かどうかの質問を頂いていて、回答がそのままになっていたのを思い出して、先日届いたMacBook 2.4GHz Core 2 DuoのシステムプロファイラでSerial ATAのチップ情報を調べてみました。

結果は以下の通りで、SATAホストアダプタのチップはIntel ICH8-M AHCIとなっており、規格上は初代と同じSATA-150となります。また、Blackモデルに内蔵されているハードディスクは、Fujitsu MHY2250BH(250GB, 5400rpm)です。

Macbookc2dsata150

一方、初代のMacBookもSATA-150ですが、チップの型番は異なりIntel ICH7-M AHCIとなっています。

Macbookcdsata150

最近では、SATA-300なドライブも出回っており、MacBookへ内蔵されている方の報告もちらほら見かけるようになりましたが、ホストアダプタが上記の通りのため実際の性能はSATA-150ドライブとあまり変わらないと思われます。

| | コメント (0) | トラックバック (0)

MacBook 2.4GHz Core 2 Duoがやってきた!

注文してあった新しいMacBook 2.4GHz Core 2 Duoが到着しました。今までメインで使用していた初代MacBookを購入したのがこのブログを始めた2006年の6月なので約2年前になります。思い返せば、2006年はAppleがPowerPCからIntelへの移行を実行した年であり、あれからもう2年も経ったのだなと思うと感慨深いものがあります。MacBook Airが出たときにはどちらにしようか迷いましたが、VMWareをストレスなく使用できる量のメモリ(4GB)を積める機種が欲しい、でもMacBook Proほどのスペックは必要ないということで、今回もMacBookになりました。

About_macbook_c2d

Core 2 Duoになった今でもMacBookのデザインは全く変わっていません。私は初代MacBookを手放す気は全くないので、2つのMacBookが区別できるようにするだけのために、今回はスペシャルバージョンのBlackを選択しました。現行のMacBook Blackは内蔵ハードディスクが250GBのため、ハードディスクのアップグレードも必要ありません。見た目はほとんど変わりませんが、以下のようにできることが増えたため大変満足です。

  • 内蔵メモリが4GBになったため、VMWareで複数のゲストOSあるいは、Solaris 10で複数のゾーンを組むのにメモリの心配がなくなった
  • Core 2 Duoになったおかげで、VMWareで64bit OSを試せるようになった
  • Core 2 Duoになったおかげで、未だに開発者プレビュー状態のApple純正のJava SE 6が試せるようになった

本日は雨の祝日ということもあり、rsyncのバックアップディスクからホームディレクトリを新しいMacBookにリカバリし、XCode、VMWare Fusion、Parallels for Desktop for Macをインストール、携帯電話などのBluetooth機器のペアリングをやり直す作業を行って、旧MacBookからの環境移行ができました。

最近のMacはファンクションキーにデフォルトでアサインされている機能が増え(特にiTunesコントロールのためのF7〜F12)、デフォルトでアサインされている機能も変更になっています。私は空いているファンクションキーにQuickeysを使ってよく使う機能を割り当てています。通常iTunesの操作にファンクションキーを使うことはないので、システム環境設定の「キーボードとマウス」で「F1、F2などの全てのキーを標準のファンクションキーとして使用」にチェックをつけ、従来の操作と同じようにしました。この状態でファンクションキーに刻印されている機能を呼び出したいときは、Fnキーを組み合わせることで実現できます。例えば、スピーカのボリュームを上げるときは、Fn+F12となります。

Keyandmouse

| | コメント (0) | トラックバック (0)

rsyncでリモート・バックアップ・サーバの構築(Time Capsuleの代替案)

Mac OS X 10.5 Leaopardで追加された新機能Time Machineは、Time Capsuleの登場により、リモートバックアップが可能となりました。MacBookユーザにとってはとても魅力的なバックアップソリューションですが、個人的にはTime Capsuleの購入は躊躇してしまいます。理由は以下の通りです。

  • Time MachineはLeopard(10.5)でしか利用できない(ウチにはまだ、Tiger(10.4)のマシンが2台ある)
  • AirMac Base Station(802.11gだけど)は既に持っているため、Time Capsuleはちょっとオーバースペック
  • バックアップは確かに手軽だが、いざリストアが必要になったときには、また何時間もかけてリモート・リストアしなければいけない

rsyncを使用したバックアップサーバなら、rsyncでクローンしたバックアップHDをそのままMacBookに内蔵してブートさせることができます。ですので、もし内蔵HDに問題が起こったとしても、最初の復旧手順は内蔵HDとバックアップHDのディスク交換だけです。新しいバックアップHDは後でゆっくり買いにいけばいいのです。もちろん、rsyncはTime Machineのような効率的な世代管理はできませんが、投資と効果をバランスにかけた場合、私の場合はrsyncによるバックアップでよいと判断しました。

今回、rsyncのバックアップサーバを構築してみましたので、その手順を以下に示します。

準備するもの:

  1. rsyncサーバとなるMac OS Xマシン
  2. 1.に繋ぐバックアップ用の外付けハードディスク

私の自宅サーバは6年前に購入したiBook(Dual USB)です。CPUはPPC G3 600MHzととても非力ですが、ファイルサーバとメールサーバにしか使用していませんので、能力的には十分です。今までサーバにしているiBookにrsyncサーバを立てていなかったのは、iBookのUSBが1.1なため、とてもバックアップ用のUSB外付けHDを繋ぐ気にはなれなかったためです。今回、SATA-Firewire 2.5インチHDケースが入手できたため、rsyncサーバを構築してみる気になりました。

rsyncサーバとなるMac OS XマシンはLeopardでなくとも構いませんが、リソースフォーク対応の/usr/bin/rsyncが安定して動くTigerの比較的新しいバージョンをお勧めします。私のiBookの場合はMac OS X 10.4.11です。

なお、バックアップ用外付けHDをサーバに接続した後で、そのHDの「情報をみる」ウィンドウの「このボリュームの所有権を無視する」チェックを外すのを忘れずに行っておきます。

サーバ側の設定:

rsyncでファイルシステムをリモートに複製する場合、サーバとクライアント間でよく使われるプロトコルは、sshまたはrsync専用プロトコルの2つです。通常、以下のような書式でrsyncを実行すると、remote-hostにはssh接続が行われます。

$ rsync -aE local-dir remote-host:/remote-dir

個人のホームディレクトリを手動でバックアップするだけであれば、上記のやり方で手軽にバックアップすることができますが、OS全体をバックアップするためにはsshdにrootアカウントの接続を許可しなければなりません。また、cronで自動的にバックアップするためには、スクリプトにrootパスワードを書かなければならないため、セキュリティ的には好ましくありません。OS全体を自動でバックアップすることを目的とする場合には、rsyncサーバを用意し、rsync専用プロトコルで接続する方が適切です。

rsyncをサーバモードで起動するには、rsyncd.confrsyncd.secretsの2つの設定ファイルを用意します。まず、rsyncd.confです。rsyncd.confのデフォルトの置き場所は/etc/rsyncd.confです。

# /etc/rsyncd.conf
#
# Global options
#
uid           = root
gid           = wheel
use chroot    = yes
log file      = /var/log/rsyncd.log
pid file      = /var/run/rsyncd.pid
hosts allow   = 10.0.0.0/24
hosts deny    = *

#
# Module options
#
[macbook]
        comment      = rsync backup server for macbook
        path         = /Volumes/MacBook/
        auth users   = backup
        secrets file = /etc/rsyncd.secrets
        read only    = no

pathオプションにはサーバに接続したバックアップ用外付けHDがマウントされているディレクトリを指定します。hosts allowオプション、およびhosts denyオプションはrsync接続を許可するホストを制限するためのオプションです。必要に応じて変更してください。

[macbook]の部分はモジュール名で、rsyncクライアントから指定する任意の名前です。auth usersオプションはrsync接続に使用する専用の仮想アカウントで、ここではbackupというユーザ名を指定しています。ユーザbackupのパスワードはsecrets fileオプションに指定したファイル/etc/rsyncd.secretsに以下のように定義します。

# /etc/rsyncd.secrets
#
backup:password

なお、rsyncd.secretsは、rsyncを実行するユーザ(root)のみが読み書きできるようにアクセスモードを変更しておく必要があります。

$ sudo chmod 600 /etc/rsyncd.secrets

rsyncd.confの詳細な設定項目は「man rsyncd.conf」コマンドで表示されるmanページを参照してください。以上の設定ができたら、rsyncをサーバモードで起動します。

$ sudo /usr/bin/rsync --daemon

また、rsyncがシステムの起動時に自動起動するように、/Library/LaunchDaemons/rsync.plistに以下のようなplistファイルを作成しておきます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>rsync</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/bin/rsync</string>
                <string>--daemon</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>

クライアント側の設定:

クライアント側に必要なファイルは、backupユーザのパスワードを記入したファイル(ここでは、/etc/rsync.passwd)と、rsyncを実行するシェルスクリプト(ここでは、~/bin/rsync_remote)です。

rsync.passwdは以下のようにbackupユーザのパスワードだけを記入したテキストファイルです。なお、このファイルはrsyncを実行するユーザ(root)だけが読み書きできるようにサーバ側と同様chmodコマンドでアクセス権を0600に変更しておきます。

password

そして、rsyncを実行するシェルスクリプトは、以前のエントリで紹介したものに--password-fileオプションでbackupユーザのパスワードファイルを指定し、コピー先にrsync:で始まるURIを指定したものになります。rsync-hostの部分はrsyncサーバのホスト名またはIPアドレスです。

#!/bin/sh
rsync -a -E --delete --stats --password-file=/etc/rsync.passwd \
--exclude="/dev/*" \
--exclude="/.vol/*" \
--exclude="/Network/*" \
--exclude="/automount/*" \
--exclude="/Volumes/*" \
--exclude="/net" \
--exclude="/home" \
--exclude="/private/tmp/*" \
--exclude="/private/var/launchd/*" \
--exclude="/private/var/run/*" \
--exclude="/private/var/tmp/*" \
--exclude="/private/var/vm/*" \
--exclude="/.Trashes/*" \
--exclude=".Trash/*" \
--exclude=".Spotlight-V100/*" \
--exclude=".TemporaryItems/*" \
--exclude=".hotfiles.btree" \
        "/" "rsync://backup@rsync-host/macbook"

上記スクリプトでは、Leopardで変更なったオートマウントディレクトリ/netと/homeを--excludeオプションに追加しています。

このスクリプトを手動で実行する場合は、以下のようにrootで実行します。

$ sudo ~/bin/rsync_remote

rsyncクライアントの自動(スケジュール)実行について:

rsyncスクリプトを深夜に自動実行するするには、通常「sudo crontab -e」コマンドで以下のようなエントリをcronに追加するのが一般的です。

 0 1 * * * /Users/steve/bin/rsync_remote > /tmp/rsync_remote.log 2>&1

デスクトップ型のMacであれば、システム環境設定の「省エネルギー」のスケジュールでスリープ解除時刻をcronが発火する同じ時刻に設定しておけば、Macはスリープ状態にしておくことができます。しかし、MacBookの場合はちょっと問題があります。MacBookのディスプレイを閉じて自動スリープにした場合、指定時刻にスリープ解除が行われても10秒程度で再びスリープ状態に移行してしまいます。この問題を避けるためには、rsyncが実行される時刻まではディスプレイを閉じないように注意します。ディスプレイを閉じない状態であれば「省エネルギー」のスリープ解除時刻設定とcron設定を併用することで、rsyncが実行されるまでスリープ状態で待機させておくことができます。

なお、不必要にMacBookの電源をONにしておくのは電源の無駄遣いになりますので、rsyncの実行が終わったら、自動的にスリープモードに移行するように、スクリプトrsync_remoteの最後に以下のコマンドを追加しておくとよいでしょう。

# Sleep. Good night...
/opt/local/sbin/sleepwatcher --now

なお、sleepwatcherコマンドはMacPortsを利用して予めインストールしておきます。

上記手順でリモートにrsyncしたディスクでリカバリまでは試していませんが、リモートバックアップしたHDをサーバから外し、MacBookに接続し直して正常にブートできるところまでは確認しています。

【追記 2008.2.19】

MacBookの場合、ディスプレイを閉じなければ「省エネルギー」のスケジュールとの併用は問題ないことが分かったため、rsyncの自動実行に関する記述を修正しました。また、osascriptコマンドによる'tell application "Finder" to sleep'はcronから実行ではうまく動作しないため、sleepwatcherコマンドによる方法に修正しました。

| | コメント (0) | トラックバック (0)

Mac OS X 10.5.2 Update: X11.appの日本語環境問題なども改善

本日、Mac OS X 10.5.2 Updateがソフトウェア・アップデートを通じてインストール可能になりました。サポートサイトのアップデートの内容には記述はありませんが、X11.appも2.0から2.1.1にバージョンが上がり、以前のエントリで指摘した以下の問題が解決しています。

  • 日本語キーボード配列を自動認識しない →2.1.1で改善
  • UTF-8対応のxtermがない →2.1.1で改善
  • Cmd-TabでX11.appに切り替えたときXのウィンドウが手前に来ない →2.1.1で改善

まず、日本語配列のキーボードが自動認識されるようになったため、Mac OS X 10.4 (Tiger)時代のシンプルな~/.Xmodmapに戻しました。

私の場合は、shiftキー横の一番右下のキーで「_」(underscore)と「\」(backslash)がきちんと入力できるようにしたことと、emacs用にCmdキーにMeta_Lを割り当てただけのシンプルな定義です。

!
! ~/.Xmodmap
!
keysym underscore = backslash underscore
clear Mod1
clear Mod2
keycode 66 = Meta_L
add Mod2 = Meta_L

また、xtermコマンドはきちんとUTF-8に対応しているため、ロケールがja_JP.UTF-8に設定されていれば、日本語の表示およびkinput2+cannaでの入力も可能になりました。もう、urxvtに頼る必要はありません。

Cmd-Tabでの切り替え時にもX11のウィンドウが手前に表示されるようになったため、LeopardでもX11がやっとまともに使えるようになりました。

X11_211

| | コメント (0) | トラックバック (0)

Remote Diskは単なるファイル共有ではない

Macworld 2008で発表されたMacBook Airは、軽量化・薄型化を実現するためDVDドライブが省略されました。この欠点を補完する機能としてRemote Diskと呼ぶ、ネットワーク上の他のMacのDVDドライブをリモートマウントする機能があります。Steve Jobsのキーノートでは、アプリケーションのインストールの例しか述べられていませんでしたので、それだけなら、AFPファイル共有と何が違うのかと疑問に思うのは普通です。

しかし、Remote Diskの実体は、ミニNetBootサーバとBonjourで構成され、MacBook Airをネットブートすることができ、Mac OS Xを再インストールすることができるようです。

Here's the scoop as they have it right now (and since the product's not shipping yet, specs are subject to change): You can install Leopard via Remote Disk. The host app for RD creates a miniature NetBoot server via Bonjour, so if you've got a bootable OS X DVD in the host machine you can use that disk to boot your MacBook Air. As for Windows XP install disks... well, not so much. Apple reps would not say definitively that you can't do it, but as far as the three people I spoke with are aware, there's no support for booting XP over Remote Disk. If you've got to install XP in Boot Camp, it's an external drive for you.

Windows XP/Vistaのリモートディスクを使ってのBoot Campのインストールは未サポートとのことですが、技術的にはできないはずはないと思われます。

NetBook自身は現状のどのMacでも既に可能になっているため、既存のどのMacでもRemote Diskクライアントになることが可能なのではないかと想像されます。通常の使用状況ではあまり必要性はありませんが、例えば、DVDドライブ故障時のトラブルシュート手段として、Mac OS X ServerがなくともOS再インストールを行ったりすることができるわけです。

Remote Diskのサーバ側のインストーラは、MacBook Airに付属のMac OS XインストールDVDにのみ含まれるようですが、将来的にはMac OS Xの標準機能になっていくと思われます。

| | コメント (0) | トラックバック (0)

Java SE 6 Developer Preview 8 for Leopard

AppleからようやくMac OS X 10.5(Leopard)向けのJava SE 6 Developer Preview 8が公開されました。しかしながら、今回のリリースはIntel版の64bit VMだけのようです。

Java SE 6 Developer Preview 8
Java SE 6 Developer Preview 8 is an implementation of Sun's Java SE 6 for Mac OS X v10.5.1 and later. This Preview includes Java SE 6 version 1.6.0_01. This Developer Preview does not change the default version of Java. This release is only for Mac OS X v10.5.1 and later, and should not be installed on earlier versions of Mac OS X. This release is for 64-bit Intel-based Macs only and cannot run on PowerPC-based or 32-bit Intel-based Macs.

残念ながら私の初代MacBookでは試すことができませんが、AppleがまだJava SE 6を提供するつもりがあることがハッキリしましたので、とりあえず安心しました。

| | コメント (0) | トラックバック (0)

Java SE 6(SoyLatte) DPR3, NetBeans and Quaqua

Landon Fuller氏によるJava SE 6 (SoyLatte)のDeveloper Preview Release 3が公開されました。Threadクラスのプライオリティが有効になるなどコンパチビリティの改善がなされています。

また、Fabrizio Giudici氏のブログに書かれた設定を行うとNetBeans 6も利用可能になります。

上記の記述ではLAFがGTK Look & Feelのためあまり見栄えがよくありません。しかし、オープンソースで開発されているMac OS XライクなLAFを実現したQuaquaは試験バージョン4.1で早くもSoyLatteに対応しました。これを組み合わせると下図のようにかなりMacらしいGUIにすることができます。NetBeansでQuaqua LAFを使用するための設定はUser GuideのIDE Integrationを参考にしてください。

Soylattenetbeans

SoyLatteのAWT/SwingがX11ベースのため、メニューバーがウィンドウ上部に配置されてしまうのは仕方がないのですが、NetBeans側の実装の問題でQuitメニューとOptionメニューが現れません。おそらく、VMベンダではなくOS名で判定しているためだと思われます。

| | コメント (2) | トラックバック (0)

Landon Fuller氏、Mac OS X 向けJava SE 6の改良版Developer Preview Release 2を公開

前回のリリースから3日しか経っていないのに、早くも改良版のJava SE 6 DPR2が公開されています。

今回のリリースではMac OS X 10.4 Tiger/32bitもサポートされ、コミュニティからのフィードバックを受けたいくつかのバグフィックスがなされています。今回のリリースからはバイナリリリースも公開されていますが、このソースコード自体のライセンスがJRL (Java Research License)になっていることから商用には利用することができない点に注意してください。

| | コメント (0) | トラックバック (0)

Landon Fuller氏、Mac OS X 10.5 Leopard向けJava SE 6 Developer Preview Release 1を公開

依然としてAppleはJava SE 6に関して沈黙を守ったままですが、Landon Fuller氏がAppleとは独立にJava SE 6のDeveloper Preview Release 1を公開しました。

この実装はJava SE 6のFreeBSDポートのソースコードを元にMac OS Xへ移植されたもので、GUIの描画はAquaではなく、X11が使用されています。その意味では、SafariなどMac OS XネイティブのWebブラウザ上でアプレットの描画を行うことはできません。また、現在はIntelチップ上のMac OS X 10.5 LeopardとXcode 3.0でのみコンパイルが可能という制約があり、サウンド出力も未サポートです。

しかしながら、Intelチップ向けのhotspotが有効になっており、非常に高速で思った以上に完成度は高いです。

私がコンパイルしてみた環境は初代MacBookですので、コンパイルターゲットとしては32bitリリースビルドを選択してみましたが、全く問題なくJDK 6のバイナリが出来上がりました。全てをコンパイルするのにかかった時間は、私のMacBookで2時間半程度です。また、Landon Fuller氏のポートはOpenMotifに依存していますので、JDKのコンパイルの前にMacPortsでOpenMotifを予めインストールしておく必要があります。

なお、初期状態では日本語のフォントを正しく表示することができませんので、Linux版JDKの場合と同様にfallbackディレクトリにTrueTypeフォントのシンボリックリンクを置くワークアラウンドを行いました。また、日本語表示用のTrueTypeフォントは、MacPortsからsazanami fontをインストールして使用しています。

$ sudo port -v install sazanami-font

$ cd src/jdk6_devpreview_r1/control/build/bsd-i586/j2sdk-image/
$ cd jre/lib/fonts/
$ mkdir fallback
$ cd fallback
$ ln -s /opt/local/share/fonts/sazanami/sazanami-gothic.ttf
$ ln -s /opt/local/share/fonts/sazanami/sazanami-mincho.ttf

下のスクリーンショットは、出来上がったJDK 6を使ってSwingSet2を実行させたものです。

Swingset2

フォントのレンダリングの美しさはAquaベースのApple純正のJDKにはかないませんが、そもそもVMwareなどを使用する以外にMac OS XでJava SE 6の開発ができなかったわけですから、Landon Fuller氏の功績は大変大きなものです。それに、X11ベースでリモート表示可能なJDKがMac OS Xで利用可能になるというメリットも悪くありません。

現状では、Leopardにしか対応していませんが、Mac OS X 10.4 Tiger用のリリースも予定されているようですので、Mac OS X向けオープンソース版JDKの今後の発展が楽しみになってきました。

| | コメント (0) | トラックバック (0)

より以前の記事一覧

その他のカテゴリー

applescript | book | camcorder | development | english | iphone | ipod | java | linux | mac | solaris | 携帯