Milkのメモ帳

日々の思いつきを忘れないようにのメモ用です。

Milkのメモ帳

【Ubuntu】SurfaceにUbuntuは入れられるのか?! デュアルブートを試してみる【Windows】


f:id:maxminkun:20170903080946p:plain

こんにちは。Milkです。
最近、Surfaceを買いましてね・・・これを改造したくてたまらない衝動にかられるのです。

仕事では、Windowsのアプリ開発が専門なんですけど、Mac案件も増えたりして先日衝動買いを致しました。
(だって安かったから・・・)

しかもタイミングが悪いことに、「ワイはWindowsで行くんや!」と決意した後にアウトレットに出会ったんだよね- (´;ω;`)

http://www.milkmemo.com/entry/kaden_outlet_neraimewww.milkmemo.com

今回は、デュアルブートに関しての話なんですけど、これは以前少し書きました。

www.milkmemo.com

デュアルブートとは、OSをひとつのPCの中に入れて、起動時にOSを選択できるようにすることなんですけど、この時は「UEFI」というのが壁になり、これを「Legacy mode」に(従来のBIOSモード)に切り替えることで回避しました。

最近、Linuxの開発の話も周りでぐるんぐるんしてるんで、Linuxの環境も整えようと思ったんですよ。

でだ。「Surface Book」が手元にあるけど・・・これに入れられるんか? UEFIだけど・・・

まぁ、試してみようか!


Surfaceをデュアルブートにする

これからお話する内容は、皆さんのWindowsマシンでも同様に出来る話なので、デュアルブートを試してみたいと思う方は頑張ってみて下さい。
(MacもLinuxのデュアルブートって出来るのかな? いつか試してみようかな。)

そもそも、デュアルブートにする意味は?

「そこに山があったから。」

あ・・・違った。

「そこにWindowsマシンがあったから!」

もう、バカ丸出しです。おとなしくWindowsを使ってればいいのに、UbuntuとかのLinuxも入れられるはずと思うと試したくてしょうがなくなるのです。

もう一つ利点と言えば、仮想マシンでLinuxを扱うという方法もありますが、これはフルにマシンのスペックを利用できません。

www.milkmemo.com

どうしても、ベースになっているOSとスペックのリソースを分け合うことになるので、どちらも操作が遅くなるんです。
(つまり、メモリやCPUを共同で2つのOSが使うので、マシンが手一杯になるということです。)

ですから、スペックを十分に引き出すには、OSを直接的に入れる方がいいわけです。

ただし。これは普通のWindowsマシンの話。

Surfaceのように、「純正Microsoft製品」は、別のOSを入れさせてくれるのか?という疑問があったのです。

結局、どうだってばよ?

結論から先に申し上げると、デュアルブートは可能です!

ただし。ただしです。

Surface特有の問題点がチラホラありまして、そこを解決しなければなりません。
(厳密にはSurface特有でないものも一部含まれます。)

でも、そこまで深刻な話ではなく、あっさりと解決と回避が出来たので、備忘録として残します。

Ubuntuを入れる場所を作る

さて、先ず考えなければいけないのは「UbuntuのOSを入れる場所を確保する」と言うこと。

Win10になってから、ちと「設定」がやりにくくなりましたし、パーティションの操作ツールが変な場所に存在するようになりました。
(トホホ・・・)

パーティション操作のツールは、Windowsマークを右クリックしたメニューの中にあります。「ディスクの管理」です。

f:id:maxminkun:20170903084112p:plain

すると以下のような画面が立ち上がります。

f:id:maxminkun:20170903084408p:plain

ここでは、必ずCドライブ(EFIシステムパーティション、回復パーティション以外)を選択して下さい。

これを間違うと、OSの再インストールが必要になりますし、出荷時の状況には戻せなくなります。

怖い場合は、環境をUSBメモリにバックアップして下さい。

www.microsoft.com

私は一応しておきました。万が一に間違ってデータを壊すと、あびゃ~ってなりますから。

では、パーティションに空きを作って、Ubuntuを入れる場所を確保するのですが、必要なパーティションを選択して右クリックして下さい。

すると、「ボリュームの縮小」があるはずです。

これを使って、空きを作ります。出来た空間は「未割り当て」になりますが、そのままにしておいて下さい。

f:id:maxminkun:20170903090223p:plain

Ubuntuをインストールする

では、Ubuntuをインストールします。

Ubuntuは、「16.04 LTS」バージョンを利用しました。

こちらのisoイメージとインストーラーの用意は、こちらの記事を参照下さい。

www.milkmemo.com

私はUSBメモリにisoイメージを入れて、ここからbootを行いました。
(起動時にOSを読み出すのをbootと言います。)

当然のことながら、boot先はUSB経由を優先にして下さい。

UEFI(従来ではBIOSのこと)の起動は、Surface Book の場合は、電源ボタン + 音量を上げるボタンの同時押しです。

電源が入ったタイミングで、電源ボタンだけ押すのを止めます。

この設定が終われば「Exit」で再起動です。

USBメモリからisoイメージの読み出しが始まります。

画面では違う所を選択してますけど、「UbuntuをWindows Boot Managerとは別にインストール」にして下さい。

これ間違うと、WindowsのOSの内容が消し飛びます(●´ω`●)

f:id:maxminkun:20170903091302j:plain

後は、必要事項を入力すれば、OKです。

キーボードが認識されない

実は、Surface Book 特有の問題として、「キーボードが認識されない」と言う事象が発生しました。

正確に言うと、外付けのキーボードは認識しますが、ノートPC側のキーボードは認識しません。

ですから、外付けのキーボードを使ってインストール作業を行っていました。

これは、恐らく「16.04 LTS」がリリースされた時に、Surface Book with performance base が発売されていなかったからだと思われます。

制御するためのドライバがない状態だったのでは?

インストールの後に、一時的に安定版から、最新版へのアップデートに切り替えてUbuntuのOSアップデートを行いました。

f:id:maxminkun:20170903094049p:plain

すると、キーボードは認識されるようになりました。


インストールが完了

さぁ! インストールが完了すればUbuntuが選択できるようになるはず。

このように、Ubuntuが起動出来るようになります。

f:id:maxminkun:20170903095446p:plain

たぶんね・・・

BitLockerにブロックされる

普通だと、UbuntuのBootManagerが起動して、OSの選択が出来るようになります。

Wiindowsを立ち上げたい時には、「Windows Boot Manager」を選択すれば良いのですけど、そうするとSurfaceの場合は以下の画面で止まります。

起動しようとすると、BitLockerにブロックされます。

実は、Windowsを入れているパーティションが暗号化されていて、この「BitLocker」と言う機能が働いているため、UbuntuのBootManagerはWindowsを読み出せません。

回避策には幾つか方法があります。


1つはBitLocker自体を解除する方法。

暗号化されているパーティションで「BitLockerの管理」を選択します。

f:id:maxminkun:20170905222405p:plain


「BitLockerを無効にする」を選択して下さい。

f:id:maxminkun:20170905222605p:plain


すると解除がされるはずです。これで、UbuntuのBootManagerはWindowsのOSを呼び出せます。

f:id:maxminkun:20170905222624p:plain


暗号化を外したくない場合は、少々面倒ですがWindows側からUbuntuを指定して再起動するという方法があります。

Windowsをメインに使用する人にお勧めです。

先ずは、「Windows Boot Manager」が優先されて起動されるようにしておきます。


次にWindowsからUbuntuに切り替えたい時は、「設定」から「更新とセキュリティ」を選択します。

f:id:maxminkun:20170905222932p:plain


そして、「今すぐ再起動する」を選択するのです。

f:id:maxminkun:20170905223013p:plain


これにより、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でなくても、デュアルブートの仕方は同じなので、皆さんも試して見てね!