Alienware 13 R13 OLEDにUbuntu 18.04をインストールする

# はじめに

## TL;DR

1. 一応無事にUbuntuがインストール出来て運用出来ている
2. PCのディスプレイの解像度が高いためサイズ調整を200%で表示しているが、サブモニターと独立して設定出来ないので、普通のフルHDのモニターを繋ぐと200%表示になってしまうのが辛い
3. 画面の輝度が設定から変更出来ないため、シェルで設定する必要がある
4. カーネルのアップデートの度にWiFiドライバーのインストールをする必要がある

### ※インストールのやり方だけ知りたい方は読み飛ばしてください

もう数カ月前の話になってしまったのですが、新しい開発用の性能がいいノートブックを買いたくなったので調べていました。
第一候補のMacbookがスペック的にちょっと物足りず（2018モデルが出る前だった）、Ryzenで組んだデスクトップ機＋Ubuntuの構成が中々気に入っていたのもあって、WindowsゲーミングノートにUbuntuを入れる方向で検討していました。
いくつか見ていたところAlienware 13インチが一番スペック辺りの値段がよさそうで、かつOLEDディスプレイが興味をそそられたのでこちらに決めました。
もちろん性能は良かったのですがトレードオフがあり、かなり悩みました。
何しろ

- 重い
- デカイ

んですよね。
13インチながら2.6kg(カスタマイズで変動あり)かつアダプタがレンガの様なデカさなのでトータル3kg位あり、サイズも排熱のために本体から出っ張った箇所があるため、15インチ用のケースでないと入らない。
おまけに当時はWinノートにLinuxを入れて使うという試みにちょっとアウェイ感があったのですが、結局は何とかなるだろうという楽観思考で購入に踏み切りました。

と、なぜAlienwareにしたのかはこの辺りにして、実際に行った作業のメモを書きます。

### 参考にしたリンク

[【罠がいっぱい！】ubuntu 16.04 LTS をMSI製ノート(GE62 6QC)にinstall](https://qiita.com/Urushibara01/items/b64f86afe5908bd30d5c)
[Windows10とUbuntu16.04のデュアルブート環境構築](https://qiita.com/medalotte/items/4bb5cfa709e93d044f1c)
[PCIe M2ドライブを搭載したシステム上でのUbuntuのロード](https://www.dell.com/support/article/jp/ja/jpdhs1/sln299303/pcie-m2%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%82%92%E6%90%AD%E8%BC%89%E3%81%97%E3%81%9F%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E4%B8%8A%E3%81%A7%E3%81%AEubuntu%E3%81%AE%E3%83%AD%E3%83%BC%E3%83%89?lang=ja)
[NMI watchdog: BUG: soft lockup - CPU#2 stuck for 23s! [plymouthd:305]](https://askubuntu.com/questions/875173/nmi-watchdog-bug-soft-lockup-cpu2-stuck-for-23s-plymouthd305)
[Alienware 17 R4 Ubuntu 16.04 WiFi driver](https://askubuntu.com/questions/1016903/alienware-17-r4-ubuntu-16-04-wifi-driver)
[alienware-13-r3-ubuntu-16.04](https://github.com/andrewwakeling/alienware-13-r3-ubuntu-16.04)
[18.04: How to get Wayland back after upgrade to 18.04?](https://askubuntu.com/questions/1033004/18-04-how-to-get-wayland-back-after-upgrade-to-18-04)

## UEFI

結構ハマりました。
先ずはUbuntu公式ページでイメージをダウンロードしてきます。
[Ubuntu公式](https://www.ubuntu.com/)
以下のツールでUSBの起動ディスクを作成します。
[UNetbootin](https://unetbootin.github.io/)
もし有線のネット環境がない場合はWiFiのセクションのソースも予めCloneしておくと良いかもしれません。

その後にディスク管理からCドライブの縮小を行います。
ディスク管理は `Windows 管理ツール` → `コンピューターの管理` を起動し、 `記憶域` → `ディスクの管理` にあります。
Cドライブを右クリックすると `ボリュームの縮小` があるので、必要なサイズを縮小します。

そして先程作った起動USBで起動するのですが、普通に起動するとBIOS読み込み画面も表示されずにWindowsが起動されるため、以下の手順でUEFIファームウェアの設定画面を出します。
※[【罠がいっぱい！】ubuntu 16.04 LTS をMSI製ノート(GE62 6QC)にinstall](https://qiita.com/Urushibara01/items/b64f86afe5908bd30d5c)に画像付きの説明があります。

1. 一度起動した後にShiftキーを押しながら再起動を選択
2. トラブルシューティングを選択
3. 詳細オプションを選択
4. UEFIファームウェアの設定

ここで `Secure Boot` を無効化し、Windowsが最初の読み込み画面をスキップして立ち上がってしまうのを防ぎます。
`UEFI` の設定はそのままにします。
どのサイトを見たかは忘れてしまいましたが、 `UEFI` を `Legacy` にすると書いてあったので変更したら後にWindows 10が立ち上がらなくなってしまったので、 `UEFI` のままで大丈夫です。
また、SATAインターフェースを `RAID` から `AHCI` に変える必要があります。
そうしないと後にM.2ドライブが認識されなかったです。
ただ、 [alienware-13-r3-ubuntu-16.04](https://github.com/andrewwakeling/alienware-13-r3-ubuntu-16.04) にはブルースクリーンの可能性があると書かれているので（私は今まで使用していて特に起きたことはないですが）一応覚悟の上でお願いします。

## Ubuntuの起動オプション

起動はするもののしばらくするとフリーズする…。
どうしたものかと調べていると以下の記事に対応方法が書かれていました。
[【罠がいっぱい！】ubuntu 16.04 LTS をMSI製ノート(GE62 6QC)にinstall](https://qiita.com/Urushibara01/items/b64f86afe5908bd30d5c)
[NMI watchdog: BUG: soft lockup - CPU#2 stuck for 23s! [plymouthd:305]](https://askubuntu.com/questions/875173/nmi-watchdog-bug-soft-lockup-cpu2-stuck-for-23s-plymouthd305)
どうやらnVidia製のグラボが載っているときは対応が必要なようです。
Ubuntuを起動してGNU GRUBが表示されている時に[E]キーを押すことでカーネルオプションの編集画面を表示できます。
[こちらの記事](https://qiita.com/Urushibara01/items/b64f86afe5908bd30d5c#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%8C%E9%80%B2%E3%81%BE%E3%81%AA%E3%81%84%E7%97%85)を参考にしてみてください。
私は `pci=nomsi nomodeset` の代わりに `nouveau.modeset=0` をセットしました。
`nomodeset` の場合は解像度がとても低くなりますが、 `nouveau.modeset=0` の場合は解像度は高いままでした。
[こちら](https://www.dell.com/support/article/jp/ja/jpdhs1/sln299303/pcie-m2%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%82%92%E6%90%AD%E8%BC%89%E3%81%97%E3%81%9F%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E4%B8%8A%E3%81%A7%E3%81%AEubuntu%E3%81%AE%E3%83%AD%E3%83%BC%E3%83%89?lang=ja)のDELL公式のナレッジベースにはM2ドライブが認識されない場合は 「"nvme_load=YES"を追加してブートオプションを更新し、"quiet splash ---"を削除します。」と書かれているので、もし `AHCI` にしただけでは認識されない場合は追加しましょう。

## WiFi

無事にUbuntuが起動したもののWiFiが認識されない…。
有線につないで調べたところ、IntelのWiFiドライバーをインストールする必要があるようです。
[参考にしたQA](https://askubuntu.com/questions/1016903/alienware-17-r4-ubuntu-16-04-wifi-driver)
IntelのWiFiドライバーのバックポートがGitで管理されているらしく、そちらをCloneしてきて `make install` すれば良いとのことでした。
[レポジトリのURL](https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git)

```shell
sudo apt-get install git
git clone https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git
cd backport-iwlwifi
make defconfig-iwlwifi-public
sed -i 's/CPTCFG_IWLMVM_VENDOR_CMDS=y/# CPTCFG_IWLMVM_VENDOR_CMDS is not set/' .config
make -j4
sudo make install
```

これで再起動すればWiFiが認識されていると思います。
注意点として、この作業は **カーネルのアップデートがある度に行う必要があります。**
Ubuntuのアップデートの後に起動するとWiFiがつながらない、その時は慌てずに再度レポジトリに移動して以下手順です。

```shell
make clean
make defconfig-iwlwifi-public
make -j4
sudo make install
```

最悪 `make install` さえすればWiFiが繋がるようにはなるはず…。
定期的に `git pull` でレポジトリの最新化も行いましょう。

## グラフィックカード

WiFiが使えるようになったら公式のnVidiaのドライバーをインストールする。
ソフトウェアの更新→設定→追加のドライバー からNVIDIAのプロプライエタリなドライバーを選択します。
もし問題があった場合はオープンソースのドライバーに戻してください。
このノートPCにはnVidiaのグラボとオンボードのIntelのグラボがあり、バッテリー使用量が大分変わります。
`sudo prime-select intel` でIntelのドライバーに変えるとバッテリーの持ちが長くなります。
重い作業をする時は `sudo prime-select nvidia` でnVidiaに戻します。
`prime-select` がインストールされていない場合は `sudo apt install nvidia-prime` で追加しますが、ないと言われた時は以下手順でレポジトリを追加します。

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

## ディスプレイの光度

残念ながらディスプレイの光度がメニューバーから変更できません。
メニューバーからいじっても100%のままです。
以下のコマンドで変更出来ますので、shellスクリプトにして実行すると良いと思います。
`0.35` の箇所が割合になっているので、自分の好きな値を設定してください。

```shell
xrandr --output eDP1 --brightness 0.35
```

## 外部ディスプレイ

本体のディスプレイの解像度が高いために200%の表示サイズにしないとまともに見えず、しかし外部ディスプレイと共通の値のため普通の外部ディスプレイではやたら大きなサイズで表示されてしまうという辛い状態になります。

WAYLANDに戻すことでDPIを個別に設定出来るとのことでやってみましたが、アプリによってうまくサイズが切り替わったり切り替わらなかったりします。
また、輝度も上記の方法で切り替えられなくなります。
[18.04: How to get Wayland back after upgrade to 18.04?](https://askubuntu.com/questions/1033004/18-04-how-to-get-wayland-back-after-upgrade-to-18-04)
という訳で外部ディスプレイはちと諦め気味です。
ブラウザで情報を出す程度なら縮小して表示すればいいので、メインモニターでIDEを操作して外部ディスプレイでブラウザを見るくらいなら問題なく出来ます。
後は解像度が高いディスプレイを繋ぐか、大きめのディスプレイでクラムシェルで使えばいいかなーとは考えています。

## まとめ
取り敢えず外出した時に使える強力な開発環境は出来ました。
しかしガンガンバッテリーが減るので電源は必須です。
サブモニターや輝度の問題などありますが、他は今の所問題ありません。
サブモニターがちと辛いかな…。
私はそこまでカスタマイズにこだわりのない人間なので大丈夫なのかもしれませんが。
万人にオススメとまではいかないですが、比較的安価でパワフルな開発環境が欲しい方は自己責任でチャレンジしてみてもよいかと思います。