MacPro A1186(2006) – OS X 10.10.2 Yosemite

※ 2015.02.21 変更 : 検証が出来たので書き換えしました。

Yosemite 10.10.2 インストーラを「MacPro A1186(2006) – OS X 10.10 Yosemite」に記載した手順で改変インストーラ化するとkernel panicを起こすとの情報を頂いたので、当方でも検証してみたのですが、結論から言いますと問題無くインストールできます。

また、10.10(or 10.10.1)から10.10.2へアップデートする際に発生するboot.efiに関する問題も起こりませんでした。

ただし、今後10.10.2からアップデートを行った際に同様の現象が起こる可能性がありますので、改変インストーラを使用してYosemiteをインストールした場合は、PikeYoseFixを適用しておく事が望ましいと思われます。

PikeYoseFixの適用については「MacPro A1186(2006) – OS X 10.10 Yosemiteから10.10.2へのアップデート」を参照してください。

なお、当記事はPikeYoseFixの概要メモ代わりに残しておきます。

# PikeYoseFix未適用でアップデートをやらかした場合に復旧できる可能性もあるので。

MacPro A1186(2006) – OS X 10.10 Yosemite」で10.10インストーラを改変して初代MacPro(2006)にYosemiteをインストールする方法を記載したのですが、最近App Storeから取得できるYosemiteインストーラは10.10.2との事で、前述の手順でインストーラを改変してもkernel panicを起こしてしまうそうです。

10.10.2インストーラを入手して検証しようと思ったのですが、うちの環境だとインストール済みとなってダウンロードが出来ません。

Mountain Lionの環境は捨ててしまって直ぐに検証できる状況には無いので、現時点では未検証なのですが、少しばかり思いついた事を書いておきます。

MacPro A1186(2006) – OS X 10.10 Yosemiteから10.10.2へのアップデート」でも書いたのですが、10.10インストーラを改変してインストールしても、そのまま10.10.2へアップデートすると起動できなくなると言う現象が発生するようです。

これは10.10.2アップデートで「/usr/standalone/i386」に配置されたboot.efiが変更されてしまう事によるものだそうです。

これを回避するためにPikeYoseFixを適用する訳ですが、PikeYoseFixが何をしているかというと、OS X終了時に、「/usr/standalone/i386/boot.efi」を元に戻すと言う動作をします。これにより、何らかの理由で「/usr/standalone/i386/boot.efi」が変更されたとしても、OS終了時に元に戻っているので、次回起動時にはboot.efiによる問題が解消されているという事になります。

MacRumors.comを見る限り、boot.efiが変更されるのはアップデート直後の1度きりのような感じなので、10.10.2インストーラでも問題ないのではと思うのですが、さてさて。

んじゃ、PikeYoseFixの中身って何?と言う話になるのですが、とりあえず裏で何かしら動いているんだろうと言う事でps axしてみました。

スクリーンショット 2015-02-20 16.03.44pidの61がPikeYoseFixのプロセスのようです。単なるシェルスクリプトのようです。

まぁ、最初からpacifistでPikeYoseFix.pkgを開いてみると早いのですが、

スクリーンショット 2015-02-20 15.57.43このような構成になっていまして、このうちスクリプトは「com.pike.yosefix.plist」になります。

キャプチャで申し訳ないのですが、中身は

スクリーンショット 2015-02-20 16.09.59となっています。

シグナルをフックしてSIGINT・SIGTERM・SIGHUPが来たら「/usr/standalone/i386/boot.efi.pike」を「/usr/standalone/i386/boot.efi」としてコピーする等という単純な動作なのが分かるかと思います。

未検証なのであれですが、10.10.2改変インストーラでkernel panicを起こす原因がboot.efiによる物だとするならば、インストール後に手動でPikeYoseFixを適用してあげれば良いんでないの?と言う事で、以下の手順を記載しておきます。

前提としては、Yosemiteをインストールしたデバイスをマウント出来る環境があること。

手順としては、

  1. Yosemiteをインストールしたデバイスをマウント出来る環境でMacProを起動。
  2. Yosemiteをインストールしたデバイスをマウント。
  3. pacifistで「PikeYoseFix.pkg」を開いて「com.pike.yosefix.plist」と「boot.efi.pike」を取り出す。
  4. 「com.pike.yosefix.plist」をYosemiteをインストールしたデバイスの「/ライブラリ/LaunchDaemons」にコピー。
  5. 「boot.efi.pike」をYosemiteをインストールしたデバイスの「/usr/standalone/i386」にコピー。
  6. 以下ターミナルより

    [bash]
    sudo cp /Volumes/ボリューム名/usr/standalone/i386/boot.efi.pike /Volumes/ボリューム名/usr/standalone/i386/boot.efi
    sudo chflags nouchg /Volumes/ボリューム名/System/Library/CoreServices/boot.efi
    sudo cp /Volumes/ボリューム名/usr/standalone/i386/boot.efi.pike /Volumes/ボリューム名/System/Library/CoreServices/boot.efi
    sudo chflags uchg /Volumes/ボリューム名/System/Library/CoreServices/boot.efi
    [/bash]

    を実行。(※ボリューム名は10.10.2をインストールしたデバイスのボリューム名)

Mac方面は疎いので、「com.pike.yosefix.plist」をコピーしただけで起動時に実行されるかどうかは分からりません。

rc.dと同じなら動くんじゃないのかなと適当な事を言っておりますので、その辺を勘案した上で試してみると良いかも知れませんです。

余談ですが、一応MacRumors.comのPikeYoseFixスレッドでは、

Originally Posted by Hennesie2000 View Post
There haven’t been any updates for 10.10 yet but you can expect one of them in the future might. If you use Tobyg’s script for Mavericks you can replace the boot.efi.tiamo that it puts in the /usr/standalone/i386 folder with this new one and change the name to boot.efi.tiamo and it will function just like the script did with Mavericks.

The steps would be to:
1. Install the script but DO NOT restart.
2. Delete the installed boot.efi.tiamo in the /usr/standalone/i386 folder
3. Duplicate the boot.efi file that is in that folder (command + D)
4. Change the name from “boot.efi copy” to boot.efi.Tiamo
5. Restart

という事も書かれています。

これを元にPikeYoseFixが作られている訳ですね。

コメント

  1. YOSEMITE より:

    検証記事ありがとうございます!
    「com.pike.yosefix.plist」の中身は見ていたんですが、
    「/ライブラリ/LaunchDaemons」へのコピーは試していませんでした。

    度々の投稿恐縮です。

    さて、5と6の項目で、取り出してきた「boot.efi.pike」を

    ・「/usr/standalone/i386/boot.efi.pike」と
    ・「/usr/standalone/i386/boot.efi」に

    設置するとなっていますが、

    「/System/Library/CoreServices/boot.efi」には配慮しなくてもよかったですか?
    それとも10.10.2改変インストーラでのインストール後なので配慮済みということでしょうか。

    YOSEMITE10.10.2のオリジナルな/System/Library/CoreServices/boot.efiは、
    タイムスタンプが2014年10月9日木曜日 20:03で、583,736 バイトのものだったとおもいます。

  2. むくた より:

    >Yosemiteさん

    なんか、ごそっと抜けていましたね(^^;。ご指摘感謝です。

    フラグ操作もあるのでターミナルからの操作に書き換えました。

    当方の環境では10.10.2改変インストーラでも正常にインストールできるのであれですが、多分、10.10.2アップデートと同じ理由で起動しなくなった場合は、4.の操作は不必要かもしれません。

    起動できれば、改めてPikeYoseFixを実行すれば良いかと。

    # 10.10からPikeYoseFix未適用状態でアップデートを掛けてチェックすれば良いのですけれども、なんせ気力が(汗)。

  3. Yosemite より:

    念のため試してダメだった方法を列挙しておきます。

    1.改変10.10.2インストーラで起動してクリーンインストール。→カーネルパニックを起こす。
    (改変10.10.0インストーラでインストールした環境に10.10.2アップデートかけるとパニックにならず単に起動しない←Appleの思惑通り)

    2.改変10.10.2インストーラで起動してクリーンインストールしたディレクトリから起動かけないでおいて、既に用意されていた改変10.10.0環境で起動して、10.10.2環境の「/usr/standalone/i386/boot.efi.pike」と「/usr/standalone/i386/boot.efi」を書き換えてから、10.10.2環境に起動をかけても起動しない。

    やはり御記事の通り、

    ”「/usr/standalone/i386/boot.efi.pike」”をコピー設置済みで、
    ”「com.pike.yosefix.plist」をYosemiteをインストールしたデバイスの「/ライブラリ/LaunchDaemons」にコピー。”で、

    起動時に書き換えさせると言うのがミソだと思います。

  4. むくた より:

    >Yosemiteさん

    私の環境ではKernel Panicが出ないので何が原因かは分かりませんが、10.10の環境からPikeYoseFix未適用状態で10.10.2へアップデートを行った場合に起動不能になる件については、当記事の手順で復旧できる事を確認しました。

    ターミナルでのコマンド実行時にsudoが必要なのと、10.10.2側のマウント位置が各環境で変わるので、その部分を書き換えてあります。

    なお、手順中「com.pike.yosefix.plist」のコピーが要らないかもというのは、「com.pike.yosefix.plist」はシーケンス的に

    1. OS X起動
    2. om.pike.yosefix.plistが実行されてshellスクリプトを起動、shellスクリプトはシグナルをtrapしてsleepする(待ち状態になる)
    3. OS X終了でシグナル発行
    4. shellスクリプトのtrapがシグナルを受信、sleepが解除されて当記事手順の6.と同様の作業が行われる
    5. boot.efi.pikeがコピーされる

    となるはずなので、少なくても「om.pike.yosefix.plist」によるboot.efiの置き換えは、当記事の手順を行った後に再起動、その後、OS Xを終了した時点からと言う事になるためです。(なのでPikeYoseFixもインストール後に再起動するように促されますよね。)

    まぁ、手順的にPikeYoseFixがやる処理を手動でやっているだけなので、「om.pike.yosefix.plist」のコピーは無駄ではないと思いますが、復旧と言う観点では不必要な処理かなとは思います。

タイトルとURLをコピーしました