目的
Autoware 動作環境構築に NVIDIA Docker の利用が推奨されているため、NVIDIA GPUマシンに Ubuntu をインストールする必要があります(参照)。
今回別途 Windows の利用も必要だったので、 Ubuntu - Windows のデュアルブート環境を構築することを目指しました。
環境
Autoware のハードウェア要件は下記です。特徴としてはそこそこスペックの高い NVIDIA GPU が要件に挙げられていることです。
- Generic x86
- Intel Core i7 (preferred), Core i5, Atom
- 16GB to 32GB of main memory
- More than 30GB of SSD
- NVIDIA GTX GeForce GPU (980M or higher performance)
今回環境構築に使ったPC/OSスペックは下記です。
- Intel Core i5-7400 CPU @ 3.00GHz
- NVIDIA GTX 1080
- Memory 32 GB
- HDD 1 TB
- Windows 10(元々はデュアルブート環境ではない)
Autoware のソフトウェア要件は下記です。注意点としては、環境構築に NVIDIA Docker を利用するため Linux である必要があり、ROSのバージョンが Kinetic に限定されているため、Ubuntu の場合 16.04 である必要があります。
- Ubuntu 16.04 LTS
- ROS Kinetic
今回遭遇した問題
今回下記2点の問題or不具合の回避策を見つけるのに時間がかかりました(要注意点)。
- NVIDIA GPU マシンに Ubuntu をインストールする際に GPU Driver を正しく認識できず画面が真っ黒になる問題
- Ubuntu 自体の不具合のためインストール時に EFI 用のパーティションを事前に区切らないとインストール時にフリーズする問題
それぞれ下記の記事を参考に試行錯誤することで解決しました。
手順
1. 通常通りデュアルブート環境のインストール
記事(windows10 PCでUbuntuをデュアルブート)を参考に通常通りUbuntu-Windowsデュアルブート環境のインストールを実施します。
今回記事(windows10 PCでUbuntuをデュアルブート) 4.2 の 「try ubuntu without install」 を実行した時点でGPU Driver を正しく認識できず画面が真っ黒になる問題に遭遇しました。
2. GPU Driver を正しく認識できず画面が真っ黒になる問題の回避
USBからUbuntuをインストールする際に下記手順でGPU Driver を正しく認識できず画面が真っ黒になる問題の回避を行います。
記事(windows10 PCでUbuntuをデュアルブート) 4.2 の 「try ubuntu without install」 を選択しキーボード "e" ボタンを押して grub の編集画面に移ります。
grub 編集画面の quiet splash
を pci=nomsi nomodeset
と置き換えることで kernel mode setting(画面の解像度やビット数を変更するための規格) を無効にする設定をします。
Ctrl - x or F10 を押してブートします。
3. UEFIでパーティションが一つもないHDDにUbuntuをインストールしようとすると、インストーラーがフリーズする不具合の回避
記事(windows10 PCでUbuntuをデュアルブート) 4.3 を実行する前に、そのままインストールすると記事(UEFIでパーティションが一つもないHDDにUbuntuをインストールしようとすると、インストーラーがフリーズする不具合)に遭遇するため、そちらの手順を参考に回避策を実施しておきます。
4. Ubuntu のインストール
記事(windows10 PCでUbuntuをデュアルブート) 4.3を参考に Ubuntu をインストールします。
ここで注意点としては、今回デュアルブート環境を構築するためインストールの種類を 「それ以外」 に選択する必要がある点です。ここで 「それ以外」にしないと Windows 環境に上書きされてしまう ため気をつける必要があります。
その他詳細はこちらの記事(Ubuntu 18.04 インストール(UEFI) その1 )が参考になります。
5. Ubuntu の起動
そのまま再起動するとまた 2.と同様にGPU Driver を正しく認識できず画面が真っ黒になる問題が発生する ため、ブートローダ(grub) の設定ファイルで nomodeset
等を指定してやる必要があります。
4.のインストール終了後再起動します。起動時 F2 を押して、BIOS 画面に入り Boot の順番で Ubuntu が一番上に来るようにします(※Windows を利用したいときは Windows が一番上に来るように変更します)。
Ubuntu のブート時にコマンドラインモードで実行するため Esc キー(Shift キーの場合もあります)を押します。
コマンドラインモードで grub の設定ファイル(/boot/grub/grub.cfg
)を編集します
sudo vi /boot/grub/grub.cfg
grub.cfg の中の 'Ubuntu' という menuentry(Bootの順番メニューで指定した文字列)のブロックの中の quiet splash
を pci=nomsi nomodeset
に置き換えて保存+終了し再起動します。
正しく再起動されると Ubuntu が起動し、画面が表示されます。
また、Boot の順番で Windows を一番上に設定し起動するとWindows が立ち上がります。