MacでLinux

先日MacBook Pro新しいHDD換装して
OS X YosemiteとWindows7デュアルブートにしましたが、
今度はLinuxとのトリプルブートにしてみました。
使うディストリビューションはもちろんUbuntu 14.04 LTSです。
最近はサーバ用途でなければ迷わずUbuntuを選択してしまいます。
またUbuntuはつい最近最新の14.10が出てはいますが、
LTS(長期間サポート)がないバージョンは使おうと思いません。
ところでUbuntu入れてなにするかって?
多分ディスクの肥やしになります。
Ubuntuでないと出来ないことって…Androidのファームウェアビルドぐらいかな。

作業の前に状況を説明しておきますと、
デュアルブート化時に余らせてとりあえずFATにしている、
400GBのHDDの第5パーティションをUbuntuの領地とします。
とにかくUbuntu 14.04(.1)のインストールDVDをMacの内蔵光学ドライブに挿入して
[option]キーを押しながら電源を入れます。
ブート選択メニューにDVDアイコンの[Windows]と[EFI boot]の2項目が現れますが、
[EFI boot]を起動することでgrubが立ち上がり、
そこで[Install Ubuntu]を選択する事でインストーラが立ち上がります。
この時点ではMacの無線LANは動作していないのですが、
インストールを進めて[Ubuntuのインストール準備]ページで
[サードパーティーのソフトウェアをインストールする]チェックボックスをチェックして
そのまま進めると、しばらくして無線LANが有効になり、
画面右上の扇型のアイコンをクリックして無線LANアクセスポイントを指定することで
ネットにつながるようになります。

次はトラブルの多いパーティションの設定です。
まず[インストールの種類]ページから[それ以外]を選択します。
先に説明した第5パーティションを[-]アイコンで解放し、
その空き領域で[+]アイコンを使って約400GBと約4GBの2つのパーティションを作ります。
これらはUbuntuのメイン領域とスワップ領域となります。
今後はこれらを/dev/sda5、/dev/sda6と称します。
なお、/dev/sda5は利用方法を[ext4ジャーナリングファイルシステム]にして
マウントポイントを”/”とし、/dev/sda6は[スワップ領域]とします。
ブートローダをインストールするデバイスを[/dev/sda5]にして[インストール]をクリックします。
次ページの[キーボードレイアウト]では[日本語-日本語(Macintosh)]を選択します。
あとは完了を待つだけなのですが…

悪夢はやってきます。
Ubuntuのインストールが完了したあとリブートし、
OS選択画面を見ても新しい項目は増えていません。
しかも、ここで[Windows]を選択すると”Missing operating system”とか出てきます。
多分UbuntuがWindowsをこわしたのです。
しかしPCをマルチOSにするのには慣れているので、
HDDのMBRを直せばいいだろうと考え、
Windows7のインストールDVDから起動して[コンピュータを修復する]を適当に進めて
[システム回復オプション]ウィンドウから[コマンドプロンプト]を立ち上げます。
そこで

bootrec /fixmbr

を実行して再起動するもHDDのWindowsは立ち上がりません。
“bootrec /scanos”すると一応Windowsのパーティションは認識してくれますが、
“bootrec /rebuildbcd”や”bootrec /fixboot”してもダメです。
もうWindowsは再インストールするしかないようです。
まだ入れたてで実質的に被害がないのが不幸中の幸いです。
ちなみにOS Xは無事です。ちゃんと立ち上がります。

で、Linuxを立ち上げるために思いついたのが、
PCに当然のごとくFDDが付いていた古の時代からお世話になっている
MBM(マルチ ブート マネージャ)をインストールしてみることです。
現在はサイトからブータブルCDイメージが落とせますが、
それが公開される前に自力で作成したブータブルCDを手元に置いているので、
Macにそれを入れてCDブートを試みましたが、
“Missing operating system”と出てあえなく撃沈です。

しょうがないのでネットで調べたところ、
どうもMacのブートローダーにはLinux(というかローダーのgrub)をブートする能力がないようです。
後で分かったことですが、grubはUbuntuインストール時に指定した/dev/sda5に入っているわけではなく、
EFIが自身のために使う領域/dev/sda1に実行可能ファイルとして置かれているおり、
単にこれを読みにいくフローがないみたいです。
まあ何にせよ、rEFitというオープンソースのローダーを入れればUbuntuも立ち上がるとのことです。
要はこれがPCのMBMやsystem commanderに当たるものなんですね。

さっそくrEFitのサイトを覗いてみると、
もうあまり活動してないらしく、forkされたrEFIndを使うよう記述があります。
で、rEFIndの説明をいろいろ読んだところ、
どうもMacのHDDの第1パーティション(OS Xのディスクユーティリティで見える物ではなく)に
rEFIndをインストールして、OS XではなくrEFIndをブートするようにし、
そこからOS Xを含めた各種OSを起動する流れになるようです。
まあやるべき作業はインストーラを実行するだけなので深く理解する必要もありません。
ダウンロードページから
[A binary zip file]をクリックして”refind-bin-0.8.3.zip”をダウンロード、
ダブルクリックで展開(解凍)し、以下を実行するだけ
(root権限取得のため途中パスワード入力が必要)です。

$ cd ~/Downloads/refind-bin-0.8.3
$ ./install.sh

Macを再起動すると見慣れないrEFIndのOS選択メニューが現れ、
Ubuntuアイコン(Boot EFI\ubuntu\grubx64.efi from EFI)を選択することで、
既に入っていてブート出来なかったUbuntuが立ち上がるようになります。
ここで”from”の後に書いてあるのはOS Xでつけたパーティション名です。
まあ直接立ち上がるのはgrubなので、そこからまた[Ubuntu]を選択することにはなりますが。
なお、ここからAppleアイコン(Boot Mac OS X from OS X)を選択すれば、
いつものOS Xが立ち上がります。

私はいろいろと試行錯誤していたもので、
この時点でWindowsのパーティションには何も入っていませんでした。
そこで新たにWIndows7をDVDからインストールすると、
ブートメニューにWindowsアイコン(Boot Windows from WINDOWS)が現れ、
ここからWindowsが起動するようになりました。
rEFIndのブートメニューだけでなく、標準のEFIのブートメニューからでもWindowsは起動します。
このあとさらにUbuntuを再インストールしたりしたのでタイミングは定かではないのですが、
Ubuntuを起動するときにgrubの選択画面が表示されなくなりました。
まあUbuntu自体は起動するので特にどうということなないのですが、ちょっと気にかかります。
Ubuntuを再インストールした後ももちろんWindowsもUbuntuもきちんと起動します。

一連の作業で注意すべきなのはパーティション操作です。
私はOS Xのディスクユーティリティ、Windowsのインストーラー、
Ubuntuのインストーラーで色々いじっていたのですが、
Windowsのインストール時にHDDがGPTでないからインストールできないというエラーが出たり、
OS Xのディスクユーティリティで新たにパーティションを作ろうとしたときに準備で永遠待たされたり、
OS Xの復旧パーティションがなくなったりしてしまいました。
どうやらOS Xの入っているパーティションの次のパーティションを
OS X以外から作り直したときにおかしくなったようです。
これはOS Xの再インストールしかないかと思ったのですが、
だめもとでいろいろやっていると何とか復旧出来ました。
私が行ったのは以下のとおりです。
OS XのディスクユーティリティでOS Xの入ったパーティションを
HDDいっぱいまで巨大化させてから元の大きさにリサイズし、
未使用領域を”Mac OS 拡張(ジャーナリング)”なパーティションとして作成し、
それをWindowsに必要なサイズにリサイズします。
このパーティションは後のWindows用となります。
残った未使用領域をFATパーティションにしてこれをUbuntu用とします。
このUbuntu用パーティションは上記で書いたように
最終的にUbuntuインストーラーで操作することになります。
最後にWindows用パーティションを一旦削除し、
その未使用領域をFATパーティションとして新規作成すれば、
Windowsのインストールが可能となります。
私は最終的にrEFIndからOS X Yosemite、Windows7 Home Premium 64bit、
Ubuntu 14.04.1 64bitが問題なく起動するよう仕上げることが出来ました。
ただし、OS Xの復旧パーティションは
それらしいサイズの未使用領域はできたものの復活しませんでした。

ところでDVD(USBメモリ)からのブートもrEFIndからはできるのですが、
EFIがそれらを認識するのに時間がかかり、かつブートメニュー画面は自動更新されないため、
適当に時間が経ってから[Esc]キーを押して画面更新する必要があります。
もちろん今までどおり[option]キーを押しながら電源を入れてブートデバイスを選択する事もできます。
で、ここにそれまで表示されていたHDDアイコンの[OS X]が
[Boot EFI]に名前が変わっていることに気づきます。
rEFIndが乗っ取ったということなんでしょうね。

最後になりますがUbuntuからはWindowsのNTFSは読み書き可能で、
OS XのHFS+は読み込みのみ可能ですが、
WindowsやOS XからUbuntuのext4はアクセス不能ですので、
UbuntuからOS Xにファイルを渡したいケースでは外部USBメモリでも使うか、
HDDにもう一つFAT32のパーティションを作って、
Ubuntuはそこにファイルを置くようにすればいいでしょう。
私は復旧できなかったOS Xの復旧パーティション跡地をUbuntuでFAT32にフォーマットして
それを利用することにしました。
そこはOS XとUbuntuからは読み書き可能なものの、
Windowsからは認識すらされないという変わったパーティションになっています。
これはWindowsでは5つ目以降のプライマリパーティションが認識出来ないのに、
パーティションの作成順の関係でそれが”/dev/sda6″(Ubuntuでの名称)になったからで、
もし”/dev/sda4″にできるようなタイミングで領域確保していれば、
Windowsからも読み書きできるようになるでしょう。
私はもう疲れたので現状でよしとします。