Lenovo Legion Y740にUbuntu18.04をインストール

Lenovo Legion Y740(15) に Ubuntu18.04.4 LTS をインストールする手順を記します．

### 機種と構成

- [Lenovo Legion Y740(15)](https://www.lenovo.com/jp/ja/notebooks/legion-laptops/legion-y-series/Lenovo-Legion-Y740-15/p/88GMY701059)
    - Intel Core i7-9750H (2.60GHz, 12MB)
    - 32GB PC4-21300 DDR4 SDRAM SODIMM (16GBx2)
    - 1TB SSD
    - GeForce RTX 2080 Max-Q 8GB GDDR6

### インストール対象

- Ubuntu18.04.4 LTS
- NVIDIA Driver

### 注意事項

- Windows10 がインストールされている状態から始めます．
- Ubuntuをクリーンインストールし，Windowsとのデュアルブートにはしません．
- Autowareをインストールしたいことが背景にあり，その方法は別記事にまとめます．
- 本記事ではLive USBを使用します．PXEブートが使える方は，以下の手続きの一部を改変すればそのまま使えると思われます．

### 手順１　Live USBの作成

[こちら](https://itlogs.net/ubuntu-bootable-usb/)などを参考に，Ubuntu 18.04 LTSのLive USBを作成します．

作成し終わったら，Live USBを本体（Y740）に刺しておきます．

### 手順２　Bios編

Ubuntuをインストールするための準備を行います．

起動時にF2キーを連打してBIOSメニューに入ります．

- `Configuration`タブの`Controller Mode`を，`RST mode`から`AHCI mode`に変更．
    - [RST(Rapid Storage Technology)](https://www.intel.co.jp/content/www/jp/ja/support/products/55005/technologies/intel-rapid-storage-technology-intel-rst.html)というのは，通称IRSTまたはIntel RSTと呼ばれ，SATAのディスクをAHCI対応チップセットでいい感じに動かしてくれるコントローラです．
    - [AHCI(Advanced Host Controller Interface)](http://e-words.jp/w/AHCI.html)とは、SATA接続のストレージとコンピュータ本体の通信を制御するコントローラの仕様の一つです．

<img width="600" alt="鯖の味噌煮" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/0eeb7531-1c75-7863-7a45-d2261e98139e.jpeg">

- `Security`タブで`Secure Boot`を`Disabled`に変更
    - secure bootは対応するOSが限られていたり，OSの起動に障害を発生させやすいので無効にするのが無難です．実際，Y740ではこれを有効にしているとUbuntuが起動しませんでした．
- `Security`タブで`Intel Platform Trust Technology`を`Disabled`に変更

<img width="600" alt="鯖の味噌煮" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/175933b3-5391-2851-91c0-bad9aa81afda.jpeg">

- `Boot`タブでLive USBを一番上にもってくる（私の場合は`Linpus lite`でした） 

<img width="600" alt="鯖の味噌煮" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/3bd2ae17-239d-aab4-cae5-718a8ebf751a.jpeg">

- `Exit`タブから`Exit Saving Changes`を選択して，BIOSを抜ける．

<img width="600" alt="鯖の味噌煮" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/1bf057ee-291a-b502-2125-421a4208d9b6.jpeg">


### 手順３　GNU編


- `Install Ubuntu`にカーソルをあわせ、`e`キーを押す
- 矢印キーで移動しつつ，`quiet splash`を`nomodeset`に書き換える
    - nomodesetとは，kernel mode settingを無効にする設定のことです．技術的には色々あるらしいのですが，とりあえず**画面の表示が変なときはnomodesetにするとよくわからんけどうまくいく**，と認識しています．

<img width="600" alt="鯖の味噌煮" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/fabddc68-3792-d25a-ec83-0b3522dbad6a.jpeg">


- ctrl+Xで起動
- Ubuntuのインストール画面が表示されたらひとまず成功です．上記の手順のどれか一つでも怠ると，私の環境では正しくこの画面が表示されませんでした．

<img width="600" alt="鯖の味噌煮" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/e416af3d-3465-4aa1-4cb6-2b4a5b533ef6.jpeg">




### 手順４　ubuntuインストール編

適当で大丈夫です．[こちら](https://eng-entrance.com/ubuntu-install)などを参考にしつつインストールしてシャットダウン．

### 手順５　初回起動編

インストールしたUbuntuを起動するときも，`nomodeset`の設定をする必要があります．（nouveauを無効にしても同じだと思いますが，ここではnomodesetを設定します）

- 起動時にF2を連打してBIOSメニューへ．
- USBメモリがついている場合は起動時の優先度を下げておく．
- BIOSを抜けて起動中に`ESC`を連打して`GNU GRUB`の画面に行く．
    - もし，ESCを連打しすぎてGRUB shellまで行ってしまった場合には，`normal`を入力して`Enter`後に`esc`を押すとGRUBメニューに戻れます．

<img width="600" alt="鯖の味噌煮" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/c31f932b-2ea5-750d-6a24-49ed8bf0db11.jpeg">

- GRUBに行けたら、`e`を押して、`quiet splash`となっているところを`nomodeset`に書き換える．
- 書き換えたら、Ctrl-xで起動．

<img width="600" alt="鯖の味噌煮" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193401/543699f9-4c62-55c4-6ad7-65b01cb51064.jpeg">

おめでとうございます！起動完了です．

しかしこのままでは起動の度にnomodesetを指定することになるので，ファイル`/etc/default/grub`の中のbootパラメータを以下のように書き換えます．

```text
#GRUB_CMDLINE_LINUX=""
GRUB_CMDLINE_LINUX="nomodeset"
```

以下のコマンドで反映します．

```bash
sudo update-grub
```

念のため，再起動して画面が正しく映ることを確認してみるとよいでしょう．

### 手順６　NVIDIAドライバのインストール

- インストール時に日本語を指定した場合は，最初にドキュメントなどの日本語を英語に直しておきます．

```bash
LANG=C xdg-user-dirs-gtk-update
```

- packageのアップグレードを行います

```
sudo apt-get update
sudo apt-get upgrade
```

- [公式ページ](https://www.nvidia.com/Download/index.aspx)にて、使用したいドライバーが対応している最新バージョンをダウンロード
- ダウンロードしたファイルの実行に必要なものをインストール

```
sudo apt-get install build-essential
```

- ダウンロードしたファイルを実行（ファイル名の`NVIDIA-Linux-x86_64-440.82.run`はダウンロードしたものに変更してください）
- この時, **--no-opengl-files**, **--no-libglx-indirect**, **--dkms**を指定します
- `--noうんたら`の指定が足りないとログインループにハマったり，`--dkms`が足りないと再起動するたびにnvidia driverが無効になったりします．

```bash
chmod +x ./NVIDIA-Linux-x86_64-440.82.run
sudo ./NVIDIA-Linux-x86_64-440.82.run --no-opengl-files --no-libglx-indirect --dkms
```

- 再起動後に，GPUの稼働状況が確認できればインストール成功です．

```
nvidia-smi
```

以上です．

### その他

- [Ubuntu18.04 USキーボードで日本語切り替えをaltキーで行う](https://qiita.com/ys-0-sy/items/b969c3224f97a0002829)