8
04
2011
Lionのスタンドアローンインストールシステムを作成する
Lionのスタンドアローンインストールシステムを作成する
iMac(2006初期)や Mac Mini(2006)でLionを稼働させるための条件や取り組みなどについて色々と紹介してきましたが、ここで現時点で判っていることをまとめておきます.
・ AppleがLionのインストール対象から外した初期のIntel Mac機種でも、Lionを32ビット
 カーネルモードで動かすことが可能である.(CPUは Core DuoのままでもOK => × 訂正)
【訂正】
CoreDuo Intel Mac上で実際に Lion(Mac OS X 10.7.2)の起動を試みましたが、10.7.2では CoreDuo環境では起動できませんでした.
“PlatformSupport.plist” にはCoreDuoマシンの “board-id” を登録してありますが、”PlatformSupport.plist”以外にも CPUの64bitモードチェックが入るようです.尚、Core2Duoに載せ換えたiMac4,1では起動可能です.
以前の記事で、 “Cult of Mac” などの記事の情報から LionのDeveloper preview版でCoreDuoマシンでLionが起動できることを紹介していましたが、今回正式リリース版で試したところCoreDuoマシンでは起動できませんでした.正式リリース版ではCPUが64bitモード対応であることを起動条件としているようです.
iMac4,1(Early 2006),Mac mini1,1などのLion非対応CoreDuo Macでは、CPUをCore2Duoに換装しない限りLionを動作させることはできないようです.
・ 初期のIntel Macでは Mac App Store 経由でのLionインストールアプリケーションの
 ダウンロードはできない.
(入手するにはLionをインストールすることが可能なマシンが必要で、非対応マシンのCPUを
 Core2 Duoに換装してもダウンロードすることはできない)
Lionのスタンドアローンインストールシステムを作成する手順
Mac App Store からダウンロードしたLionのインストーラーアプリケーションをそのまま実行すると、既存の Snow Leopard システムを上書きする形でしかLionをインストールできませんので、Lionをクリーンインストールしたい場合には困ります.
そこで、今回はこれまでのMac OS X のインストールと同じように、Lionのクリーンインストールが可能な特別なインストールシステムの作成方法を紹介します.勿論 iMac(2006 Early)やMac mini(2006) 等のLion動作対象外のマシンでもインストール可能なバージョンです.(注:CPUをCore2Duoに換装する必要があります)
但し、現時点では私の手元にLionのインストーラーアプリケーションがないので、あくまでも集めた情報に基づく想定手順で、実際に実験を行ったものではありません.実際にこの作業を行う場合は人柱になるつもりで挑戦して見て下さい.
【手順】
1. Lionインストールアプリケーションから、起動可能なLionのインストールシステムを作成する.
   
 ”Install Mac OS X Lion.app”を右クリックして “Show Package Contents” 
を呼び出し、バンドルパッケージの中に含まれている “InstallESD.dmg” を取り出す.
2. ”InstallESD.dmg” は起動可能なLionインストーラーイメージ(従来のOSインストールDVD
  をイメージ化したものと同じ)なので、これをUSBメモリ(8GB以上)や外部のHD等
にリストアして、起動可能な Lionインストーラーボリュームを作成する.
3. Lionのサポート対称外マシンでも起動できるように、起動用のOSに手を加える
 
    このままでは LionインストーラーシステムはLionをサポートしたマシンでしか起動できない
 ので、”/System/Library/CoreServices/PlatformSupport.plist” に記述されている
 起動可能マシンのリストに自分のマシンの記述を加える.
 (単純に “PlatformSupport.plist” を削除しても良いそうです)
   
 Mac mini1,1 (Early 2006)の場合は、マシンの識別子は”Mac-F4208EC8″だそうです.
この16進の32bitの数値の記述方法については現在調査中です.
”<string>Mac-F4208EC8</string>”
【追記】
  ”Mac-F4208EC8″ は board-id と呼ばれているもので、この値はDeveloper Tool
  の中に含まれている “IORegistryExplorer” ユーティリティーで簡単に調べることが
できます.
    /Developer/Applications/Utilities/IORegistryExplorer.app
 ちなみに、私が持っているLion非対応マシンの board-id は
       ”iMac4,1″ → ”Mac-F42786C8″
       ”MacBook1,1″ → ”Mac-F4208CC8″
       ”Macmini1,1″ → ”Mac-F4208EC8″
でした.
  コマンドラインに慣れている人はGUIベースの “IORegistryExplorer” ユーティリティーを使わなくても、
 ioreg -l 
  
  でIORegistryの一覧をコンソールにテキスト出力させることができます.大量のテキストが出力されるので
  board-idだけを簡単に調べたければ、 ioreg -l | grep “board-id”  のようにフィルタリング
  してみて下さい.
imac:~ yasuaki$ ioreg -l
+-o Root  
  | {
  |   "IOKitBuildVersion" = "Darwin Kernel Version 10.8.0: Tue Jun  7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386"
  |   "IOMaximumMappedIOByteCount" = 536870912
  |   "OS Build Version" = "10K549"
  |   "OSKernelCPUSubtype" = 3
  |   "OSKernelCPUType" = 7
  |   "IORegistryPlanes" = {"IOACPIPlane"="IOACPIPlane","IOPower"="IOPower","IODeviceTree"="IODeviceTree","IOService"="IOService","IOUSB"="IOUSB","IOFireWir$
  |   "OSStartupMkextCRC" = 
  |   "IOConsoleUsers" = ({"kCGSSessionConsoleSetKey"=0,"kCGSSessionOnConsoleKey"=Yes,"kSCSecuritySessionID"=2424837,"kCGSessionLoginDoneKey"=Yes,"kCGSSessi$
  |   "IOKitDiagnostics" = {"Container allocation"=1967973,"Instance allocation"=2169608,"Pageable allocation"=18505728,"Classes"={"ATI1600Controller"=1,"IO$
  | }
  | 
  +-o iMac4,1  
    | {
    |   "compatible" = <"iMac4,1">
    |   "version" = <"1.0">
    |   "board-id" = <"Mac-F42786C8">
    |   "IOInterruptSpecifiers" = (<0900000005000000>)
    |   "IOPolledInterface" = "SMCPolledInterface is not serializable"
    |   "IOInterruptControllers" = ("io-apic-0")
    |   "serial-number" = <55324e00000000    00000000000000000>
    |   "IOPlatformUUID" = "00000000-0000-1000-8000-0016CB85ACF9"
    |   "IOPlatformArgs" = <00c0e2000090900090eae70000000000>
    |   "clock-frequency" = <00d69327>
    |   "manufacturer" = <"Apple Computer, Inc.">
    |   "IOPlatformSerialNumber" = "W86    2N"
    |   "product-name" = <"iMac4,1">
    |   "system-type" = <01>
    |   "model" = <"iMac4,1">
    |   "name" = <"/">
    |   "IOBusyInterest" = "IOCommand is not serializable"
    | }
    | 
    +-o AppleACPIPlatformExpert  
    | | {
    | |   "IOClass" = "AppleACPIPlatformExpert"
    4. Lionのインストーラーに対してLionインストール可能マシンであると認識させる
Lionのインストールパッケージに含まれているスクリプト”Distribution” の中で、
 機種チェックを行っている部分に自分のマシンの記述を追加します.
  
 スクリプト”Distribution” は “/packages/OSInstall.mpkg” の中身を解凍
 しなければ得ることができません.
 
 %sudo xar -xvf OSInstall.mpkg   ← 解凍処理
 %sudo vi Distribution        ← vi等のテキストエディタで修正
 %sudo xar -cvf OSInstall.mpkg Distribution Resources  ← 元に戻す
 
 ※この辺の仕組みについては、過去の記事『見捨てられた古いMacにLeopardをインストールする』
  を参照して下さい.
   
  スクリプト”Distribution”を具体的にどのように書き換えるのかは、現時点ではLionの
  インストールイメージが入手できていないのでここでは紹介することができませんが、入手
でき次第修正箇所をアップする予定です.
5. 上記の手順で 単独起動可能なLionインストールシステムができあがりますので、Lionを
 クリーンインストールしたいマシン上で、このLionインストールシステムからOSを起動させ
 Lionのインストールを行って下さい.
追記:Core2Duoに載せ換えたiMac4,1(Early 2006)に Lion(10.7.2)をインストールした例です
1.DownloadしたLionインストーラアプリケーションの中身を表示し、”InstallESD.dmg” の保存場所を確認する
 
2.”InstallESD.dmg”をDiskUtilityを用いてUSBメモリや外部HD上にブート可能なインストール用メディアを作成する
 
3.作成したインストールメディアの”Packages” フォルダから “OSInstall.mpkg” を取り出し、xar コマンドで解凍し”Distribution” ファイルの中身を書き換える

インストールメディアから”OSInstall.mpkg” を取り出しxarコマンドで解凍する
機種チェックだけを回避させる場合は単純に、function isSupportedPlatform() の冒頭に
return true;
を挿入し、機種(boad-id)チェックを回避させる.
...
function isSupportedPlatform(){
return true;  //  <=== ここで機種チェックを回避
        if( isVirtualMachine() ){
                return true;
        }
        var platformSupportValues=["Mac-F2268DC8","Mac-F22C86C8",
"Mac-F22587C8","Mac-F2218FA9","Mac-F2218EA9","Mac-F42D86A9",
"Mac-F22C8AC8","Mac-F22586C8","Mac-942B59F58194171B","Mac-F226BEC8",
"Mac-F4218FC8","Mac-942459F5819B171B","Mac-7BA5B2794B2CDB12",
"Mac-F4218EC8","Mac-F2208EC8","Mac-F22C89C8","Mac-F22587A1",
"Mac-F221DCC8","Mac-F42388C8","Mac-F223BEC8","Mac-F4238CC8",
"Mac-F222BEC8","Mac-F227BEC8","Mac-F4208AC8","Mac-F22788A9",
"Mac-F4238BC8","Mac-F221BEC8","Mac-C08A6BB70A942AC2","Mac-8ED6AF5B48C039E1",
"Mac-F2238AC8","Mac-F4208EAA","Mac-F22788C8","Mac-F2268EC8",
"Mac-F2218EC8","Mac-F22589C8","Mac-F4228EC8","Mac-F22788AA",
"Mac-F42C86C8","Mac-F4208CA9","Mac-942C5DF58193131B","Mac-F2238BAE",
"Mac-F42289C8","Mac-F2268CC8","Mac-F4208DC8","Mac-F2218FC8",
"Mac-742912EFDBEE19B3","Mac-F4208DA9","Mac-F42D89C8","Mac-F4208CAA",
"Mac-F42D89A9","Mac-F2268AC8","Mac-F42C89C8","Mac-942452F5819B1C1B",
"Mac-F42786A9","Mac-F42D88C8","Mac-F42187C8","Mac-94245B3640C91C81",
"Mac-F42D86C8","Mac-4BC72D62AD45599E","Mac-F2268DAE","Mac-F42C8CC8",
"Mac-F42C88C8","Mac-94245A3940C91C80","Mac-F42386C8","Mac-942B5BF58194151B","Mac-F42189C8"
];
        var boardID = system.ioregistry.fromPath('IOService:/')['board-id'];
 ...
4.インストール用OSの機種チェックを回避する
作成したインストールメディアはこのままではインストール用OSの起動時に機種チェックで引っ掛かってしまうので、”/System/Library/CoreServices/PlatformSupport.plist”に自分の機種(“bord-id”)を追加しておく.
<?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>SupportedBoardIds</key>
	<array>
		<string>Mac-F2268DC8</string>
		<string>Mac-F22C86C8</string>
		<string>Mac-F22587C8</string>
 ...
		<string>Mac-F42786C8</string> // <=== 追加
		<string>Mac-F4208CC8</string> // <=== 追加
		<string>Mac-F4208EC8</string> // <=== 追加
	</array>
</dict>
</plist>
</pre>
5.Lionのインストール
作成したインストールメディアからインストールシステムを起動し、Lion用に確保したパーティションにクリーンインストールする.
6.インストールされたLionの起動時の機種チェックを外す
インストールされた本番のLionシステムには、インストール用起動OSと同じように起動時の機種チェックで引っ掛かってしまうので、再度起動時の機種チェック回避処理を行う.
"/System/Library/CoreServices/PlatformSupport.plist"
7.Lionのクリーンインストール作業完了

初代Intel iMac(iMac4,1: Early 2006)上でLionのインストール成功








 
				