極楽とんぼのロボット製作記

情報工学系大学院生がロボットとその周辺技術や身の回りの出来事について紹介するブログ

Ubuntu16.04をWindows10とデュアルブート in UEFI

機械学習の実行環境がほしいと思って買ったBTOパソコンがUbuntuを受け付けてくれない。Windows10とUbuntuのデュアルブートについて、調べあげた記録を残しておきます。最近のGPUがのったPCでUbuntu16.04をデュアルブートするにはWindows10,UEFIBoot,NvidiaGPUの3つがうまく動くように設定してやる必要があります。設定しないままインストールしようとするとインストールディスクが読み込めなかったり、画面が真っ暗になったりしてインストールできません。こうした設定があちらこちらのサイトに散らばっているので探すのに苦労しました。そうした設定を以下に全てまとめました。冗長な部分もあるかとは思いますが、最後までお付き合いいただければ幸いです。

インストール環境

まずは私が今回Ubuntu16.04をインストールした環境を説明します。
使用したPCはパソコン工房で買ったBTOパソコンです。
iiyama STYLE-R027-i7-XN [Windows 10 Home] | パソコン工房【公式通販】

インストール済みOS: Windows 10
インストールしたいOS: Ubuntu 16.04.3 GNOME
ブート環境: UEFI
GPU: GeForce GTX 1080 Ti 11GB GDDR5X

インストールディスク作成

まずは下記サイトからイメージデータをダウンロードしてきましょう
UbuntuGNOME/GetUbuntuGNOME - Ubuntu Wiki
f:id:gokuraku104robot:20171013121652p:plain:w350
"16.04.3 64bit Direct Download"を選択します。今回、GNOMEを選んだのはUbuntu18.04からGNOMEがデフォルトのデスクトップ環境になるためです。今のうちにGNOMEに慣れておきましょう。

USBにイメージファイルを書き込むためのソフト(Universal USB Installer)をダウンロードします。
Universal USB Installer 1.9.7.8 - ダウンロード
Universal USB Installerを使ってUSBにイメージファイルを書き込みます。
Step1:Ubuntu
Step2:Browseからubuntu-gnome-16.04.3-desktop-amd64.isoを選択
Step3:書き込むUSBメモリを設定
Fat32でフォーマットを選択
f:id:gokuraku104robot:20171018104108p:plain
Createを選択して書き込みをします。

Windowsでの設定

高速スタートアップの無効化

インストールしたいSSDまたはHDDがNTFSとして設定されている場合はWindowsで設定されている高速スタートアップを無効にする必要があります。これを無効にすることでUbuntuでNTFS領域をマウントできるようになります。
nagamitsu1976.hatenadiary.jp

Windowsキーを押す→設定→システム→電源とスリープ→電源の追加設定→電源ボタンの動作を選択する→現在利用可能ではない設定を変更します→「高速スタートアップを有効にする」のチェックを外す
f:id:gokuraku104robot:20171018112849p:plain:w500
f:id:gokuraku104robot:20171018112844p:plain:w500
f:id:gokuraku104robot:20171018112909p:plain:w500
f:id:gokuraku104robot:20171018112900p:plain:w500
f:id:gokuraku104robot:20171018112856p:plain:w500
f:id:gokuraku104robot:20171018112905p:plain:w500

Ubuntu用パーティション作成

WindowsからUbuntuをインストールするためのパーティションを切ります。Ubuntuをインストールする時にGparted等でパーティションを切っても良いのですが、Gpartedは時々落ちたりするので私はWindowsからパーティションを切っています。Windowsからパーティションを切るには(通常画面右下の)Windowsマーク上で右クリックして「コンピュータの管理」を選択します。
その後、「ディスクの管理」を選択、パーティションを切りたい場所(今回はWindows(C))で右クリックして、「ボリュームの縮小」を選択します。
f:id:gokuraku104robot:20171018120735p:plain:h300
f:id:gokuraku104robot:20171018120739p:plain:w500
f:id:gokuraku104robot:20171018120743p:plain:w500
縮小するボリュームのサイズでUbuntuに割り当てたい領域を決めます。今回は204800MiB(200GiB)を設定しました(後で分かりましたが、スワップ領域が作られるのでUbuntuに設定される領域は正確にはこの値ではありません)。
MiBからGiBへ変換するにはこちら
MiB GiB - Google 検索

UEFI BIOSでの設定

インストールの前にBIOSでいくつか設定を行います。BIOSを立ち上げるためのキーはPCのメーカーによりけりですが、私のPCはDELキーでした。他のメーカーでも多くは、F1,F2,F4,F8,F10,F12,Tabなどです。BIOSによって設定画面は異なりますが、参考までに私の設定画面を載せます。
f:id:gokuraku104robot:20171018150939p:plain

Secure Boot無効化

セキュアブートが設定されているとUbuntu等のOSがインストールできないので無効化します。
セキュアブートについてはこちら
UEFI の セキュアブートの設定について: 変更方法や注意点など - ぼくんちのTV 別館

Settings→Advanced→Secure Boot →Secure Boot Support→Disabledを選択
f:id:gokuraku104robot:20171018151214p:plain
f:id:gokuraku104robot:20171018151419p:plain
f:id:gokuraku104robot:20171018151426p:plain

Fast Boot無効化

Windowsの高速スタートアップとは別にBIOSが提供する機能としてFastBootというものがあります。詳しくは下の記事に書いてあります。BIOSの設定を変更したり、ハードウェア構成を変更する場合には無効にしておくべきものです。
UEFI の Fast Boot とはどんな機能なのか?無効化するのはどういう状況か? - ぼくんちのTV 別館
Settings→Advanced→Fast Boot→Disabledを選択
f:id:gokuraku104robot:20171018152434p:plain

Boot順序の設定

USBのインストールディスクを優先的にBootしてほしいので、ブート順序を変更します。UEFIではマウスで簡単に順番を変更できます。設定画面の上にBoot Priorityを設定する場所があり、ここで明るくなっている(認識されている)USBのアイコンをドラックアンドドロップするだけで、優先順位が変更できます。左から順番に解釈されるので、1番左に持っていけば再優先のBootになります。
f:id:gokuraku104robot:20171018152931p:plain

設定が完了したら、保存して再起動(Save&ExitのSave Changes and Reboot)しましょう。

Ubuntuのインストール

さて、ようやくUbuntuのインストールです。Try Ubuntuを選択してUbuntuが正常に動くか確認しましょう。

Try UbuntuまたはInstall Ubuntuを選択後画面が真っ暗になる。

Try UbuntuまたはInstall Ubuntuを選択後画面が真っ暗になってしまう場合、splash画面がうまく表示されていない可能性があります。
qiita.com
これはUbuntuがGPUをうまく認識できないために発生する不具合なようです。
Try Ubuntu にカーソルを合わせてeキーを押すと起動設定画面が出てきます。カーソルキーで移動して"quiet splash"のところを、"nomodeset"に変更してください。変更したらF10キーを押してBootします。

インストール画面

無事にTry UbuntuができたらUbuntuをインストールしましょう。Superキー(ウィンドウズマークのキー)を押してInstall Ubuntu GNOME 16.04.3 LTSを選択します。
f:id:gokuraku104robot:20171021115001p:plain
まずは言語選択です。Japaneseも選択できますが、後でフォルダ名を変更するのが面倒なので私はEnglishのままやります。言語を選択したらcontinueを選択します。
(前から疑問に思っているのですが、Linuxにはシンボリックリンクという素晴らしい機能があるのにもかかわらず、Japaneseを選択した時にフォルダ名が"ダウンロード"のように全角の名前を直書きしてしまうのでしょうか。シンボリックリンクで全角名を指定してくれていれば誰も文句を言わない気がするのですが...)
f:id:gokuraku104robot:20171021115916p:plain
インストールする際にサードパーティソフトウェアを入れるにチェックします。
f:id:gokuraku104robot:20171021120319p:plain:w500

ポップアップウィンドウが出て"Unmount partitions that are in use?"がと出てきますが、ここはNoを選択します。
f:id:gokuraku104robot:20171021121041p:plain:w500

Install typeは"Install Ubuntu GNOME alongside Windows Boot Manager"を選択して、"Install Now"を押します。
f:id:gokuraku104robot:20171021121804p:plain:w500

Write the changes to disks?と出るので、"Continue"を選択します。
f:id:gokuraku104robot:20171021123123p:plain:w500
上の画像の場合、インストールする領域としてパーティションの5,6を使うので、ここをフォーマットしますと出ています。もしWindowsを消してしまわないか心配という方はSuperキーを押してから"disks"と打って、ディスク管理を行うソフトを起動します。下の画像のようにパーティション3がWindowsの領域、パーティション5,6がUbuntu用に確保した領域だと確認できます。
f:id:gokuraku104robot:20171021133000p:plain:w500

ここからは面倒な確認もなく、必要なことを入力していくだけです。
まずはユーザーを登録しましょう。空欄を埋めて、Continueを選択します。
f:id:gokuraku104robot:20171021124000p:plain:w500
地域を選択しましょう。時刻同期や言語設定などに使われます。
f:id:gokuraku104robot:20171021124041p:plain:w500
キーボードを設定します。Japaneseを選択していれば問題ないとは思いますが、一応下の入力欄で確認しておきましょう。特に記号は重要です。時々パイプ | が別のキーに割り当てられたりしているので注意です。
f:id:gokuraku104robot:20171021124139p:plain:w500
お疲れ様でした。これでインストールは終了です、と言いたいところですが、まだやることが残っています。
f:id:gokuraku104robot:20171021124313p:plain:w500

再びBIOSの設定

現在の設定のまま、PCを起動しようとするとおそらくそのままWindowsが起動します。
Settings→Boot→UEFI Hard Disk Drive BBS Prioritiesを選択します。
f:id:gokuraku104robot:20171021124914p:plain:w500
ここでブートの優先順位をUbuntuが#1になるように変更します。
f:id:gokuraku104robot:20171021124951p:plain:w500
こうすることでPC起動時にGrubが起動し、GrubからUbuntuかWindowsのどちらを起動するのか選択することができるようになります。

NVIDIA Driverのインストール

さて、無事にインストールが完了して、Grubから起動できるようになりましたが、splash画面が崩れていた方は相変わらずeキーを押して、"quiet splash"のところを、"nomodeset"に変更しないと正常に起動しません。この問題も解決しましょう。
問題はGPUが正常に認識されていないことが原因なので、GPUのドライバを入れてやれば問題ありません。
nomodesetでの起動に成功したら、ターミナルを起動します。

以下のコマンドで利用可能なnvidiaのドライバを探します。

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ apt-cache search 'nvidia-[0-9]+$'
nvidia-331 - Transitional package for nvidia-331
nvidia-346 - Transitional package for nvidia-346
nvidia-352 - Transitional package for nvidia-361
nvidia-361 - Transitional package for nvidia-367
nvidia-367 - Transitional package for nvidia-375
nvidia-304 - NVIDIA legacy binary driver - version 304.137
nvidia-340 - NVIDIA binary driver - version 340.104
nvidia-375 - NVIDIA binary driver - version 375.82
nvidia-378 - NVIDIA binary driver - version 378.13
nvidia-381 - NVIDIA binary driver - version 381.22
nvidia-384 - NVIDIA binary driver - version 384.90
nvidia-387 - NVIDIA binary driver - version 387.12

どうやら本記事執筆時(2017/10)の最新バージョンはnvidia-387のようです。GPUによって対応しているドライバが異なることも考えられますので、古いGPUを使う場合は念の為調べておくと良いかもしれません。
どのドライバが使用可能かはこちらから調べられます。
NVIDIAドライバダウンロード
以下のコマンドでドライバをインストールします。

$ sudo apt install nvidia-387

インストール終了時に、ディスプレイマネージャーを選択する画面がでるかもしれません。GDM3かLightDMが選択できると思われますが、GNOMEデフォルトのディスプレイマネージャーであるGDM3を選択します。
eng-entrance.com

お疲れ様でした。以上でセットアップは完了です。ここからはプログラム環境の構築といったところでしょうか。dotfilesを作っておけば、自分好みの環境をコマンド1つで構築することも可能です。
www.g104robo.com


参考サイト
121ware.com > サービス&サポート > Q&A > Q&A番号 015493
大学推奨 Windows 8.1 PCでUbuntuとのデュアルブートに苦労した(TOSHIBA R732,Ubuntu14.04) - Qiita
Ubuntu16.04 + Windows10 のデュアルブート環境を構築する - 俺とプログラミング
UEFI の セキュアブートの設定について: 変更方法や注意点など - ぼくんちのTV 別館
UEFI の Fast Boot とはどんな機能なのか?無効化するのはどういう状況か? - ぼくんちのTV 別館