読者です 読者をやめる 読者になる 読者になる

😃 mattintosh note 📝

Hello Raspberry Pi!

🍎 How to create an installation disk of Mavericks on Snow Leopard

This article is draft.

Mavericks のインストールメディアを作ってるうちに色々気になったのでメモ。

コピペダメ!ゼッタイ!

*2014.07.07:旧機種で Mavericks のクリーンインストールを行うと iMovie や iPhoto などが有料(¥1,500)になるようです。古いバージョンの OS から iMovie.app と iPhoto.app をコピーしてくればアップグレード扱いになるのでクリーンインストールの際はバックアップをとっておくことをおすすめします。

環境

Mavericks インストール用 USB フラッシュメディアをつくる

前回 からのまとめ。

1. USB フラッシュメモリの初期化

ここでパーティションテーブルを MBR から GPT に変更しておく。ボリューム名は後で OS X Base System になるので他のボリュームと被らない程度でいい。ターゲットディスクが /dev/disk1 の場合。ターゲットディスクの場所は diskutil info で確認しておく。

diskutil eraseDisk JHFS+ Untitled GPT disk1

2. InstallESD.dmg のマウント

Install OS X Mavericks.app の中にある InstallESD.dmg をマウントする。Finder の方は放置。

hdiutil attach "/Applications/Install OS X Mavericks.app/Contents/SharedSupport/InstallESD.dmg"

3. BaseSystem.dmg の復元

/Volumes/OS X Install ESD/BaseSystem.dmg を先程初期化した USB フラッシュメモリに asr で復元する。ターゲットは /dev/disk1 ではなく /dev/disk1s2(/Volumes/Untitled)のようにボリュームに対して行う。hdiutil のように /dev/ を省略した書き方はできないようなのでフルパス指定。復元が終わったら USB フラッシュメモリが /Volumes/OS X BaseSystem として再マウントされる。asr 実行以前にアンマウントしている場合は自動でマウントされないので手動でマウントする。

sudo asr restore -s "/Volumes/OS X Install ESD/BaseSystem.dmg" \
                 -t /dev/disk1s2 --erase

4. Packages ディレクトリのコピー

/Volumes/OS X Base System/System/Installation/Packages が壊れたシンボリックリンクになっているので削除し、/Volumes/OS X Install ESD/Packages を削除したシンボリックリンクがあった場所に配置する。これは ditto を使っているけど cp でも問題なさそうだった。約 5GB なのでちょっと時間がかかる。

rm    "/Volumes/OS X Base System/System/Installation/Packages"
ditto "/Volumes/OS X Install ESD/Packages" \
      "/Volumes/OS X Base System/System/Installation/Packages"

あとは Mac を option キーを押しながら起動して[OS X Base System]を選択する。

Packages は必要なのか?

壊れたシンボリックリンクが /System/Installation/PackagesLink を指していたので削除せずに /System/Installation/PackagesLink でコピーしてみたところ、Mavericks のインストール時にパッケージのダウンロードを要求された。Packages の有無でインストール画面も微妙に違った。すでにインストール済みの OS X がある場合、言語選択は省略されるかもしれない。

○ Packages がある場合 × Packages が無い(もしくは無効な)場合
起動後 OS X Mavericks
「OS X インストール」が表示される。ディスクユーティリティなどはメニューバーの[ユーティリティ]から選択するようになっているため表示されない。
OS X Mavericks
[Time Machine バックアップから復元][OS X を再インストール]といった選択画面が表示される。
AppStore へのログイン 要求されない 要求される
パッケージのダウンロード しない する

〈×〉の時はインストール作業中に USB フラッシュメモリはほとんど反応しない(新しくダウンロードしてるから当然か…)。メニューの[インストールログ]を見てみると「パッケージが存在しません」のようなメッセージが出力されていたのでターミナルで /System/Installation/Packages を確認してみたがシェル上ではリンクは正常だった。ただ、PackagesLink の所有権だけが何故か _unknown:_unknown になっていた。他は root:wheel。

AppStore への接続を前提しているなら Packages は無くてもよさそう。これなら1層の DVD にも焼けるか?

続く↓

【実験】Mavericks のオフライン/オンラインディスクイメージを作成する

すぐに USB フラッシュメモリなどに書き込めるディスクイメージを作成するのが目的。なんか VirtualBox に Mavericks 入れられるみたいだしこれ作っておけば遊べるかも?

オフラインインストールタイプ

BaseSystem.dmg に Packages をコピーするためサイズ変更が可能なスパースイメージに変換して作業する。(こっちのページに新しいものを載せてあります)

hdiutil attach "/Applications/Install OS X Mavericks.app/Contents/SharedSupport/InstallESD.dmg" \
    -mountpoint /Volumes/ESD -nobrowse

# BaseSystem.dmg をスペースイメージとしてローカルにコピーする
hdiutil convert -format UDSP -o BaseSystemFull /Volumes/ESD/BaseSystem.dmg

# スパースイメージを 6GB にリサイズする
hdiutil resize -size 6g BaseSystemFull.sparseimage
hdiutil attach BaseSystemFull.sparseimage \
    -mountpoint /Volumes/BS -nobrowse

rm /Volumes/BS/System/Installation/Packages
ditto /Volumes/ESD/Packages \
    /Volumes/BS/System/Installation/Packages

# スパースイメージを取り外し、UDZO に変換する
hdiutil detach /Volumes/ESD
hdiutil detach /Volumes/BS
hdiutil convert -format UDZO \
    -o BaseSystemFull \
       BaseSystemFull.sparseimage

# スパースイメージを削除する
rm BaseSystemFull.sparseimage

サイズは手元に作成済みのものが約 6GB 使用していたのでそれに合わせた。

編集前後のディスクイメージとボリュームサイズは以下のようになった。特に容量を気にしないなら UDRO で作った方がマウントまでにかかる時間を短縮できる。

イメージサイズ ボリュームサイズ(使用中/トータル)
BaseSystem.dmg 465MB 1.2GB/1.3GB
BaseSystemFull.sparseimage
(Packages 無)
1.1GB 1.2GB/1.3GB
BaseSystemFull.sparseimage
(Packages 有)
5.6GB 6.0GB/6.4GB
BaseSystemFull.dmg (UDRO) 5.6GB ↑
BaseSystemFull.dmg (UDZO) 5.0GB ↑
BaseSystemFull.dmg (UDBZ) 4.9GB ↑

asr で USB フラッシュメモリに書き込もうとしたけど変換をしているせいか Could not find any scan information. The source image needs to be imagescanned before it can be restored. が出てしまったので --noverify。今気づいたけど空のスパースイメージを先に作成してそこにコピーしていけばよかったかも…。*1

diskutil eraseDisk JHFS+ Untitled GPT disk1
sudo asr restore -s BaseSystemFull.dmg -t /dev/disk1s2 --erase --noverify

作成した USB フラッシュメモリから外付け HDD にインストールしてみたが特に問題はなかった。DVD への書き込みは2層対応のドライブが無いため未検証。


*1:これは VirtualBox で上手くブートできなかった。また、createinstallmedia で作成しても VirtualBox ではブートできなかった。(2014年06月15日追記)


オンラインインストールタイプ

これはただ単に BaseSystem.dmg をコピーしておくだけ。hidden 属性の解除は chflags で行う。

cp "/Volumes/OS X Install ESD/BaseSystem.dmg" .
chflags nohidden BaseSystem.dmg

この容量なら1層 DVD でも書き込めるので外付け DVD ドライブを接続して一応作っておくことにした。マウントしている OS X Install ESD から書き込んでも問題なかった。

hdiutil burn "/Volumes/OS X Install ESD/BaseSystem.dmg"

ディスクが認識されるまでしばらく時間がかかる。そして当然読み込みも遅いのでこの後15分くらい待たされた。

f:id:mattintosh4:20140614170548j:plain

試しに外付け HDD の初期化もしてみたがユーティリティ関係は問題なく使えそう。Packages 無しのため AppStore への接続確認で検証を止めた。