ろぐれこーど

限界組み込みエンジニアの学習記録とちょっぴりポエム

空のHDDにUbuntuインストール(ブートローダー作成してマルチブート)

複数のHDDを用意してそれぞれwindows, linuxとマルチブートして使い分けたかったので、その手順をメモする。

環境
windows10のSSD, windowsデータ用HDD, Ubuntu16.04のHDDの三つがSATA接続済み
GTX970使用


Ubuntu16.04を空のHDDにインストール

DVDなりUSBなりにUbuntu16.04を入れてブートする。以下のサイトとかがわかりやすいかも。

okuzawats.com

chee-s.net

若干情報が古いかもしれない。。まあ大きくやり方は変わっていないはず

BIOSに入り、boot priority を入れ替えてDVD or USBからUbuntuイメージを起動する。大体起動時にdelとかF2とかポチポチしとけば入れると思う。

その後ubuntuをブートできると真っ黒の画面(GNU GRUBとか書いてる)に

Try ubuntu without installing
Install Ubuntu
...

みたいな表示が出てくる。"Install Ubuntu"を選べばインストールが始まる...と思いきや、nvidiaGPUを導入している場合、インストール画面に進まないという不具合が起こる可能性があるらしい。

qiita.com

対処としては"Install Ubuntu"にカーソルを合わせ、"e"を入力
出てくる文字列の中の"quiet splash"の部分を"nomodeset"に変更する。
nvidiaドライバ周りの不具合らしいが、その内改善されるのかもしれない。

同様の症状が出る場合はとりあえず"nomodeset"と書き換えるとログインまではいけるはず。ログイン後にドライバを正常に導入できれば不具合は起こらない。

HDDにubuntuインストール(ブートローダー作成)

自分の環境のように、UbuntuのほかにSSDやHDDが繋がっている場合は消さないように注意する。念のためバックアップしておくことを推奨

以下のサイトの流れに従ってパーティションテーブルを作成し、ubuntuをインストールする

kledgeb.blogspot.jp

バージョンが14.04だけど手順は変わらない。流れとしては

となる。ubuntuパーティションフォーマットはext4windowsはnftsな点に注意。

  1. パーティションテーブル作成
    インストールするHDDを選択し、"新しいパーティションテーブル"のボタンを押す。自分の場合は/dev/sdc/とした。HDDの数、順番によって変更する。

  2. EFIパーティション作成
    先ほど選択したHDDの下にある"空き領域"を選択し、左下の"+"からパーティションを選択する。利用方法を"EFIシステムパーティション"、サイズを128MBとする。
    パーティションタイプは"基本パーティション"、場所は空き領域の始点とする。この操作は以下でも共通。これによりEFIパーティション(/dev/sdc1/とか)ができており、タイプが"efi"となっていることを確認する。サイズの数値は異なることがあるが問題ない。

  3. ルートパーティション作成
    同様に"+"からパーティションを追加する。今度は利用方法を"efi ジャーナリングファイルシステム"とし、マウントポイントは"/"を入力する。
    サイズはスワップに充てる領域以外全て使用する。例えばスワップを4GBにする場合、ルートのサイズは(空き容量-4000)MBみたいになる。

  4. スワップパーティション作成
    同様に"+"から、利用方法を"スワップ領域"として残りの空き領域サイズを入力し、スワップパーティションを作成する。

  5. ブートローダの設定 最後に"ブートローダをインストールするデバイス"の項目で、2. で作成したEFIシステムパーティションを指定する。タイプがefiになっていることを確認。

以上でubuntuのインストールはおわり。boot priority をubuntuのHDDに指定しておけば、ubuntuブートローダが立ち上がり起動するOSを選択することができるようになる。

ついでにNVIDIAドライバとCUDAも入れる(自分用)

とりあえずGPUドライバを入れる手順。万が一ブートローダ画面からubuntuを選択した後に画面が暗転して先に進まない不具合が起こった場合、もう一度先ほどの"nomodeset"を試す。
ログイン出来たらターミナルを立ち上げ、

sudo apt update
sudp apt upgrade

する。

古い情報だとNVIDIAドライバダウンロードからドライバを取ってきてインストール...としていることが多いが、これをするとubuntuのアップデートが来た時にログインができなくなる不具合が発生する恐れがある。今は修正されたのかも知れないけど・・・

Ubuntuアップデートしたらログインできなくなった(nvidia GPU使用) - 備忘録とか日常とか

なのでaptのリポジトリからドライバをインストールする。

sudo apt search nvidia

とかして出てくるnvidia-***みたいなパッケージをインストールする。新しめのGPUとかだとそれに対応したバージョンがaptのリポジトリに入ってないこともあるらしいので

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

リポジトリ追加する。その後、

sudo apt install nvidia-381

とかしてインストールする。最近は研究用とかでcudaとnvidia driverのバージョンアップの速度が半端ないので、最新のバージョンを入れた後でもこまめにアップデートしたほうがいいのかもしれない。

ついでにcudaも入れとく。
CUDA Toolkit Download | NVIDIA DeveloperからCUDA toolkitをダウンロードする。Ubuntuならlocalの.deb形式が一番簡単。

ダウンロードできたらディレクトリ移動して以下のコマンドを叩く。

sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb     # ファイル名は適当に読み替えて
sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

これでインストールできる・・・が、cudaを利用するライブラリ(主にディープラーニング系)のバージョンによっては現在(2017/11/19)の最新のcuda-9.0に対応していないということもある。

そんな時は CUDA Toolkit Download | NVIDIA Developer の下のほうの"Additional Resources"の"Legacy Releases"から過去バージョンをとってこれる。.debファイルならインストール方法は同じ。