こんにちは。Milkです。
最近、Surfaceを買いましてね・・・これを改造したくてたまらない衝動にかられるのです。
仕事では、Windowsのアプリ開発が専門なんですけど、Mac案件も増えたりして先日衝動買いを致しました。
(だって安かったから・・・)
しかもタイミングが悪いことに、「ワイはWindowsで行くんや!」と決意した後にアウトレットに出会ったんだよね- (´;ω;`)
http://www.milkmemo.com/entry/kaden_outlet_neraimewww.milkmemo.com
今回は、デュアルブートに関しての話なんですけど、これは以前少し書きました。
デュアルブートとは、OSをひとつのPCの中に入れて、起動時にOSを選択できるようにすることなんですけど、この時は「UEFI」というのが壁になり、これを「Legacy mode」に(従来のBIOSモード)に切り替えることで回避しました。
最近、Linuxの開発の話も周りでぐるんぐるんしてるんで、Linuxの環境も整えようと思ったんですよ。
でだ。「Surface Book」が手元にあるけど・・・これに入れられるんか? UEFIだけど・・・
まぁ、試してみようか!
Surfaceをデュアルブートにする
これからお話する内容は、皆さんのWindowsマシンでも同様に出来る話なので、デュアルブートを試してみたいと思う方は頑張ってみて下さい。
(MacもLinuxのデュアルブートって出来るのかな? いつか試してみようかな。)
そもそも、デュアルブートにする意味は?
「そこに山があったから。」
あ・・・違った。
「そこにWindowsマシンがあったから!」
もう、バカ丸出しです。おとなしくWindowsを使ってればいいのに、UbuntuとかのLinuxも入れられるはずと思うと試したくてしょうがなくなるのです。
もう一つ利点と言えば、仮想マシンでLinuxを扱うという方法もありますが、これはフルにマシンのスペックを利用できません。
どうしても、ベースになっているOSとスペックのリソースを分け合うことになるので、どちらも操作が遅くなるんです。
(つまり、メモリやCPUを共同で2つのOSが使うので、マシンが手一杯になるということです。)
ですから、スペックを十分に引き出すには、OSを直接的に入れる方がいいわけです。
ただし。これは普通のWindowsマシンの話。
Surfaceのように、「純正Microsoft製品」は、別のOSを入れさせてくれるのか?という疑問があったのです。
結局、どうだってばよ?
結論から先に申し上げると、デュアルブートは可能です!
ただし。ただしです。
Surface特有の問題点がチラホラありまして、そこを解決しなければなりません。
(厳密にはSurface特有でないものも一部含まれます。)
でも、そこまで深刻な話ではなく、あっさりと解決と回避が出来たので、備忘録として残します。
Ubuntuを入れる場所を作る
さて、先ず考えなければいけないのは「UbuntuのOSを入れる場所を確保する」と言うこと。
Win10になってから、ちと「設定」がやりにくくなりましたし、パーティションの操作ツールが変な場所に存在するようになりました。
(トホホ・・・)
パーティション操作のツールは、Windowsマークを右クリックしたメニューの中にあります。「ディスクの管理」です。
すると以下のような画面が立ち上がります。
ここでは、必ずCドライブ(EFIシステムパーティション、回復パーティション以外)を選択して下さい。
これを間違うと、OSの再インストールが必要になりますし、出荷時の状況には戻せなくなります。
怖い場合は、環境をUSBメモリにバックアップして下さい。
私は一応しておきました。万が一に間違ってデータを壊すと、あびゃ~ってなりますから。
では、パーティションに空きを作って、Ubuntuを入れる場所を確保するのですが、必要なパーティションを選択して右クリックして下さい。
すると、「ボリュームの縮小」があるはずです。
これを使って、空きを作ります。出来た空間は「未割り当て」になりますが、そのままにしておいて下さい。
Ubuntuをインストールする
では、Ubuntuをインストールします。
Ubuntuは、「16.04 LTS」バージョンを利用しました。
こちらのisoイメージとインストーラーの用意は、こちらの記事を参照下さい。
私はUSBメモリにisoイメージを入れて、ここからbootを行いました。
(起動時にOSを読み出すのをbootと言います。)
当然のことながら、boot先はUSB経由を優先にして下さい。
UEFI(従来ではBIOSのこと)の起動は、Surface Book の場合は、電源ボタン + 音量を上げるボタン
の同時押しです。
電源が入ったタイミングで、電源ボタンだけ押すのを止めます。
この設定が終われば「Exit」で再起動です。
USBメモリからisoイメージの読み出しが始まります。
画面では違う所を選択してますけど、「UbuntuをWindows Boot Managerとは別にインストール」にして下さい。
これ間違うと、WindowsのOSの内容が消し飛びます(●´ω`●)
後は、必要事項を入力すれば、OKです。
キーボードが認識されない
実は、Surface Book 特有の問題として、「キーボードが認識されない」と言う事象が発生しました。
正確に言うと、外付けのキーボードは認識しますが、ノートPC側のキーボードは認識しません。
ですから、外付けのキーボードを使ってインストール作業を行っていました。
これは、恐らく「16.04 LTS」がリリースされた時に、Surface Book with performance base が発売されていなかったからだと思われます。
制御するためのドライバがない状態だったのでは?
インストールの後に、一時的に安定版から、最新版へのアップデートに切り替えてUbuntuのOSアップデートを行いました。
すると、キーボードは認識されるようになりました。
インストールが完了
さぁ! インストールが完了すればUbuntuが選択できるようになるはず。
このように、Ubuntuが起動出来るようになります。
たぶんね・・・
BitLockerにブロックされる
普通だと、UbuntuのBootManagerが起動して、OSの選択が出来るようになります。
Wiindowsを立ち上げたい時には、「Windows Boot Manager」を選択すれば良いのですけど、そうするとSurfaceの場合は以下の画面で止まります。
起動しようとすると、BitLockerにブロックされます。
実は、Windowsを入れているパーティションが暗号化されていて、この「BitLocker」と言う機能が働いているため、UbuntuのBootManagerはWindowsを読み出せません。
回避策には幾つか方法があります。
1つはBitLocker自体を解除する方法。
暗号化されているパーティションで「BitLockerの管理」を選択します。
「BitLockerを無効にする」を選択して下さい。
すると解除がされるはずです。これで、UbuntuのBootManagerはWindowsのOSを呼び出せます。
暗号化を外したくない場合は、少々面倒ですがWindows側からUbuntuを指定して再起動するという方法があります。
Windowsをメインに使用する人にお勧めです。
先ずは、「Windows Boot Manager」が優先されて起動されるようにしておきます。
次にWindowsからUbuntuに切り替えたい時は、「設定」から「更新とセキュリティ」を選択します。
そして、「今すぐ再起動する」を選択するのです。
これにより、bootする場所を選択出来るようになります。「デバイスの使用」を選んで下さい。
おまけ
さぁ。もうこの状態でデュアルブートは完了しましたね。
どちらのOSも呼び出せるようになりました。
因みに、私はBitLockerは解除して、UbuntuのBootManagerを利用するようにしています。
ですが、Windowsを主に使うので、OSのデフォルト指定をWindowsにしておきたい・・・
その場合は、Ubuntuの設定ファイルを少し変更します。
参考にした記事はこちらです。
http://robotics4society.com/2016/06/15/ubuntu-boot/
grubファイルを修正するのですが、その前にgrub.cfgでWindowsのBootManager名を探します。
Terminalを起動して、以下のコマンドを入力しましょう。
$ gedit /boot/grub/grub.cfg
すると、私の場合は「Windows Boot Manager (on /dev/nvme0n1p1)」と言う記述を見つけました。
これをgrubファイルに書き込みます。念のためにファイルはコピーしてバックアップをしておきましょう。
$ sudo cp /etc/default/grub /etc/default/grub_copy $ sudo gedit /etc/default/grub
ファイルの編集画面が起動するので、以下の部分を編集します。
#GRUB_DEFAULT=0 GRUB_DEFAULT='Windows Boot Manager (on /dev/nvme0n1p1)'
OSの選択時間を調整したい場合は、以下の項目を変更しましょう。
GRUB_TIMEOUT=10
保存して編集画面を終了します。後は、このファイルを読み込ませます。
$ sudo update-grub
これで、デフォルトはWindowsが選択された状態で、OS選択画面が出るようになるはずです。
削除する場合
もし削除する場合は、Windowsの方からUbuntuの入っているパーティションを削除して下さい。
また、Windowsの起動が出来ない場合(UEIFはBootの項目からUbuntuを削除するだけでOKかも)は、WindowsのBootManagerが上手く機能していません。
その場合は、OSインストーラーを動かしてコマンドプロンプトを起動させます。
http://www.ubuntu-d.com/_uninstall/rebuild_bl_7.htmlwww.ubuntu-d.com
後は、以下のコマンドを入力してWindowsのBootManagerを修復させます。
> bootrec /fixboot > bootrec /fixmbr > exit
また、Ubuntuが入っていたパーティションは空白になりますから、新しい領域を割り当てるか、既存のパーティションを拡張させるかして利用して下さい。
追記:UEIFからUbuntuのBootManagerを削除するだけでOKでした。
最後に
と言う訳で、Surfaceはデュアルブートに出来ることは分かりました。
問題は・・・やっぱりSSDなんで容量が小さくなっちゃうことかな(;・∀・)
Ubuntuは爆速なんですけどね!(笑)
Surfaceでなくても、デュアルブートの仕方は同じなので、皆さんも試して見てね!