Macbook Air SSD換装: 試行錯誤開始(まずはHDDで実験)

「Macbook Air SSD換装」の話題、第4回目です。

注意: 下に書いたことも正確ではないことがわかりました。 「インターネット復元」でも、たしかにFilevault2が利用できる状態に復元パーティションを作成できますが、それはLionのクリーンインストールを行った場合のみです。 つまり、復元画面で「MacOS Xを再インストール」を選択した場合のみ、復元パーティションが作成されます。 復元画面のメニューから「Time Machineバックアップから復元」を選んだ場合は、たとえ元のシステムでFileVault2を利用していたとしても、復元時にFileVault2の実行に必要な隠しパーティションが削除されてしまいます(これはバグといってもいい問題点だと思います)。そのため、Time Machineから復元しつつFileVault2を利用するには、一旦「MacOS Xを再インストール」でLionをクリーンインストールし(ユーザ名は普段使っているのとは別の一時的な名前でインストールする)、その後「移行アシスタント」などを用いてTime Machineからデータをリストアし、一時的なユーザを削除するという手順をとる必要があります(あるいはインストーラの最後の方でTime Machineからの移行を選択する)。これについては後日まとめます。 (2012/06/15 追記)

注意: いろいろ長く書いていますが、筆者のFileVault2の実装への理解に間違いがあり、 このような面倒な手段を行わなくても、 「インターネット復元」でFilevault2が利用できる状態に復元パーティションを作成できるようです。(補足:これは正確ではありません。上に追記した「注意」をお読みください)なーんだ。 まあ、その作業を手動でやった記録として、 こちらのページは良かったら読んでみてくださいませ(トホホ)。 なお、ハードウェア的な問題については、 もしかしたら一部の人に意味があるかも知れません。(2011/11/17 追記)

Macbook Air (mid 2011, 11-inch)のSSDを換装しつつ、 Lion復元パーティションを新しいSSDに作成し、 FileVault2による暗号化を可能とするための試行錯誤を始めたところです。

とりあえず、高価な480GB SSDをあんまり実験に使うのもアレなんで、 USBで1TBの2.5インチHDDをつなげて実験してみることにします。 とりあえず、ディスクユーティリティを使って、 1TBのHDDをGUIDパーティションテーブルで、 1パーティションの名称未設定でフォーマット(MacOS拡張+ジャーナリング)します。

…それなら別にSSDを注文する前に実験しておけばいいじゃん、 という意見もあるかとは思いますが、 そしたら実験で否定的な結果出たらそもそも注文しないじゃないですか(笑)。 こういうヒトバシラー的行為は、 勢いと背水の陣があるから成功することもあるのです。

とりあえず、初めてMacbook Airをシングルユーザモードで起動してみました。 ディスクに対してイメージ的扱いをするなら普通シングルユーザモードでしょ、 というUnix的発想です。 ちなみに、シングルユーザモードでのブートは起動時にCmd+Sを押します。 ちなみに、FileVault2利用時には、最初のユーザ認証の後でさらにもう一度Cmd+Sを押す必要があります (念のために、内蔵ディスクのFileVault2は事前に解除しておいたほうがいいでしょう)。 すると、*BSDユーザにはおなじみな雰囲気のCLIなブート画面が流れます。

[image]

とりあえず、シングルユーザモードでのmount状況はこんな感じ。 devfsはシングルユーザモードでも使えているようなので、 USB HDDを繋いで/devを覗いてみましょう。

:/ root# mount
root_device on / (hfs, local, read-only, journaled)
devfs on /dev (devfs, local, nobrowse)
:/ root# ls -l /dev/disk*
brw-r-----  1 root  operator   14,   0 Oct 30 01:50 /dev/disk0
brw-r-----  1 root  operator   14,   1 Oct 30 01:50 /dev/disk0s1
brw-r-----  1 root  operator   14,   2 Oct 30 01:50 /dev/disk0s2
brw-r-----  1 root  operator   14,   3 Oct 30 01:50 /dev/disk0s3
brw-r-----  1 root  operator   14,   4 Oct 30 01:50 /dev/disk1
brw-r-----  1 root  operator   14,   5 Oct 30 01:50 /dev/disk1s1
brw-r-----  1 root  operator   14,   6 Oct 30 01:50 /dev/disk1s2

これから、内蔵SSD(/dev/disk0)には3つ、 外付けUSB HDD(/dev/disk1)には2つのパーティションがあることがわかります。 つまり、この1つの差が復元パーティションということでしょう。

試しに、丸ごとddでイメージコピーができるかどうか、シングルユーザモードのまま試してみます。

:/ root# dd if=/dev/disk0 of=/dev/disk1

そうするとこんなエラーが。「data underrun」で、 「dd: /dev/disk1: Input/Output Error」ってエラーが出てしまい、 途中(たった14MB弱)でコピーは止まってしまいました。

[image]

しかしこの状態で/devの状態を調べると…なんと/dev/disk1s3が増えています。つまり、USB HDD(/dev/disk1)側のパーティションテーブルが書き換えられ、 3つめのパーティションが設定されているのです。 おお。GUIDパーティションのことはよくわからないけど、 とりあえず今の動作でパーティションテーブルは複製できたみたい。

:/ root# ls /dev/disk*
/dev/disk0	/dev/disk0s1	/dev/disk0s2	/dev/disk0s3
/dev/disk1	/dev/disk1s1	/dev/disk1s2	/dev/disk1s3

ならば、試しに各デバイスをddでコピーできるかやってみるかね。

:/ root# dd if=/dev/disk0s1 of=/dev/disk1s1
409600+0 records in
409600+0 records out
209715200 bytes transferred in 103.726636 secs (2021807 bytes/sec)
:/ root# dd if=/dev/disk0s2 of=/dev/disk1s2
dd: /dev/disk0s2: Resource busy
:/ root# dd if=/dev/disk0s3 of=/dev/disk1s3
1269536+0 records in
1269536+0 records out
650002432 bytes transferred in 330.141313 secs (1968861 bytes/sec)

なるほど、シングルユーザモードでRead Onlyのroot_deviceマウントでも、 /dev/disk0s2はddでコピー出来ないのね。あとの2つのパーティションはコピーできると。

眠くなったので寝ます。続く