WindowsPCでmac OS、Windows、Linuxをトリプルブート

追記(10.5.2018):macOS Mojave 10.14はグラフィックス未対応のためThinkpad X220にはインストールできません

はじめに

WindowsとLinuxのデュアルブートは一般的ですが、さらにmacOSまで含めてトリプルブートはあまり知られていません。最近の機種はMacもWindowsもハードウェア的にはほぼ同じ構成であるため理屈の上ではWindowsPCにmacOSをインストールすることができます。しかしながらmacOSには制約が多いためインストール手順が重要になります。順序は最初にmacOS、次にWindows、最後にLinuxの順でインストールします。

注意:macOSは動作する機種が限られるのでインストールする前に機種のスペックをチェックして下さい。またBIOSもOSX86のサイトで見てmacOS用に最適化してください。

今回インストールした機種

  • Thinkcentre M73
  • Thinkpad X220

ThinkcentreもThinkpadもmacOSのインストール過程はほぼ同じで、違いはThinkpadにパッチを当てることくらいです。

0. Windows 10のインストール準備

パーティションの先頭にmac OSをインストールするためWindowsを再インストールすることになります。Windows 7からWindows 10にアップブレードを中心に進めていきます。

Windows 7の場合はDVD-ROMからインストール、または、下記のOptional 1: Windowsのダウングレードを参考にインストールします。

Windows 10の再インストールの場合はクリーンインストールになります。

Windows10は以前のバージョンに比べてライセンスの認証が簡単になり、一度Windows10をインストールすると同じエディションなら32ビットでも64ビットでも他言語バージョンでも認証が通るようになりました。いつでもクリーンインストールが可能になるので、まずはいったんアップグレードプログラムWindows10Upgrade.exeをMSサイトからisoファイルをダウンロードしてWindows10にアップグレードします。

Windows 10 のダウンロード

そのisoファイルはrufusユーティリティを使ってGPT partition scheme for UEFIモードでUSBディスクにインストールします。

1.  バックアップ

はじめにHDDのバックアップを取ります。内蔵HDDより容量の多い外付けHDDを用意して、ddコマンドで外付けHDDディスクに書き出します。live用のLinuxをいれたUSBディスク用意します。起動してターミナルからルート権限で例として次のようにしてディスク全体を書き出します。

sudo dd if=/dev/sda of=/media/mint/<外付けHDD>/sda.img bs=4M

Thinkcentreの場合、/dev/sda4などにWindowsのリカバリー領域があるのでそれも取っておきます。これは後でWindowsを復元するときに役に立ちます。

2. mac OSのインストール

tonymacx86からツールをダウンロードして、UniBeastでUSBディスクを作成しPCをブートします。

UniBeast 7はSierra、UniBeast 6はYosemiteとEl Capitanです。

パーティションは3つに分けてGuidでフォーマットします。

注)画面はすべてのOSのインストール後のパーティションになっているのでインストール時とは多少異なります

操作を続けてインストールが終わったら、リスタートしてセットアップを続けます。
セットアップが終わったら、そのままMultiBeastを起動してCloverブートローダーをインストールします。

このCloverのセットアップのときにQuick StartのところでUEFI Boot Modeを選択します。この選択でGPTディスクとして利用可能になります。インストールが終ったら、HDDからリブートしてブートローダーにアイコンが現れます。そしてmacOSのアイコンを選択すればmacOSが起動します。

3. Windows 10のインストール

BIOSでUEFI Onlyにしてブートします。UEFIとMBRの両方だとインストーラーがMBRとディスクを認識して先に進めません。

Windows 10のUSBディスクをブートします。インストールはインストーラーに従って行います。このときmac OSのパーティションの後に約650Mbのパーティションがありますが、リカバリー用なのでそのままにしておきます。

mac OSのインストールのときに作った2番目のパーティションを消してWindows用のパーティションを作り直しインストールを続けます。インストールが終わって再起動時にCloverブートローダーが消えて、Windowsのブートローダに置き換わってますが、これは後で直せるのでそのままWindowsのセットアップを続けます。

注)スナップショットはWindows10をWindows7に入れえた後の画面

4. ブートローダーの調整

サイトを検索してEasyUEFI_Free.exeをダウンロードします。このツールを使ってCloverブートローダーを再設定します。

 


Edit画面で枠線の部分を編集してOKボタンを押します。

Home画面にもどり矢印で作った項目をトップに持っていきます。

右上のpowerの文字をドロップダウンしてリブートすれば、再びクローバーブートローダーが立ち上がるようになります。

5. Linuxのインストール

BIOSをUEFIMBR両方の設定にしてLive用Linuxを起動します。

USBメモリでLiveモードのLinuxをブートします。インストールは通常のインストール通りですが、このとき注意することは、ブートローダーのインストール先をディスクではなくパーティションを選択します。私の場合はboot用のパーティションとLinuxシステム用と分けているので、boot用パーティションにブートローダーをインストールしてます。ブートローダーが変わってしまった場合、WindowsのEasyUEFIを使って修正します。

インストーラーを起動します。

パーティションでManualを選択し、mac OSで作ったLinux用のパーティションを消して作り直します。

BootloaderのインストールはUEFIのある/dev/sda1を選択します。

以上でインストールは完了です。

リブートしてLinuxのブートローダーからWindowsを起動してEasyUEFIを使ってUEFIを修正します。

Optional 1: Windowsのダウングレード

Windows10からWindows7にダウングレードする場合です。

2.バックアップで保存しておいたリカバリーパーティションのイメージファイルをマウントします。その中にcdrivebackup.wimを探します。WindowsのシステムファイルなのでこれをUSBディスクにコピーします。リカバリイメージを 例としてlenovo-m73-sda3-rescue-win7.imgとします。

sudo mount lenovo-m73-sda3-rescue-win7.img /mnt
sudo cp /mnt/FactoryRecovery/cdrivebackup.wim /<USB Disk>

Windows 10のUSBインストールディスクで、Command Promptを起動してdiskpartを実行します。

  1. Windows10のパーティションをフォーマットします
  2. Windows10のパーティションはすでにドライブ名が割り当てられているのを確認します(例:d)
  3. EFIパーティションにドライブ名を割り当てます(例:b)
  4. Dism.exeを使って次のようにWindows7をインストールします
c:\>dism /apply-image /imagefile=e:\cdrivebackup.wim /index:1 /applydir:d:\

追記: 7z形式の書庫ファイルなのでp7zipでも解凍できます。

5.ブートシステムをインストールします。

c:\>bcdboot d:\windows /s b: /f UEFI

以上でWindows7へのダウングレードは終了です。

Optional 2: システム時計の調整

Windows, mac OS, Linuxのシステム時計の仕組みが違うのでOSを変えて起動すると時間がずれて表示されます。mac OSとLinuxのシステム時計はUTCになっているのでLocalが標準のWindowsのシステム時計をUTCに合わせます。

追記:9/9/2018

Linuxとmac OSはUTC、Windowsのみローカルタイムなのでシステムレジストリを変更してUTCを使うようにする方法がありました。HKEY_LOCAL_MACHINE>SYSTEM > CurrentControlSet > Control > TimeZoneInformation >RealTimeIsUniversal(「新規 (N)」>「DWORD (32ビット) 値(D)」=> 1)

またはコマンドで、

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

» Windows Server 2008 以降の時刻設定を設定する

システム時計を強制的に調整する場合は次の方法があります。

Windows

NetTimeというソフトをインストールします。

設定はNTPサーバを設定するだけです。

Mode: Windows Serviceボタンをクリックしてサービスを実行します。

Linux

cronに追加します。ルート権限で、crontab -eを実行します。

@reboot sleep 60 && /usr/sbin/ntpdate <NTP server>

cronをリスタートします。

sudo systemctl restart cron.service

macOS

スクリプトをダウンロードします。

アーカイブを展開しファイルを編集します。

ntp-fix-time.sh:

...
sleep 60
NAME="$0:t:r"
HOST=`hostname -s`
HOST="$HOST:l"
NTPHOST='<NTP server>'
...
...
if [ "$EUID" = "0" ]
then
 [ -d $HOME/Library/Logs/metalog/$NAME/$HOST ] || mkdir -p $HOME/Library/Logs/metalog/$NAME/$HOST
 LOG="$HOME/Library/Logs/metalog/$NAME/$HOST/$TIME.log"
 SUDO=""
else
 SUDO='sudo'
 LOG="/var/log/$NAME.$HOST.$TIME.log"
fi
...

ファイルをコピーします。

sudo chown <User ID>:admin *
sudo mkdir -p /usr/local/bin
sudo cp -a ntp-fix-time.sh /usr/local/bin
sudo cp -a com.tjluoma.fixtime.plist /Library/LaunchDaemons

リブートします。

確認するには次のようにします。

sudo launchctl list | grep fixtime

トラブルシュート

mac OSのアップデート等でWindowsの起動でエラーが起きることがあります。0xc000000eエラーは比較的多く起こるのでその対処法です。

References:

Leave a Reply

Your email address will not be published. Required fields are marked *