Dynabook VZ72 に openSUSE Leap 42.2 をインストールする

はじめに
==================

新しい PC を購入したので、開発環境を整えていくまでの第1弾です。まずは Linux ディストリビューションの1つ openSUSE をインストールします。

## インストールのポイント

インストールする対象は、コンパチブルタブレット PC の Dynabook VZ72（RAM 16GB、SSD 512GB モデル）です。構成違いの V72、V62、V42 でも同じ方法でインストールできるはずです。

この手の普通ではないPCや最新のCPUを搭載したPCに Linux ディストリビューションをインストールするときは、面倒なことになりがちです。ここでは次の手順でインストールします。

* Windows 10 のパーティションの縮小して openSUSE Leap 42.2 をインストール（デュアルブート）
* カーネルを最新版にアップデート
* 非公式カーネルを使うために、セキュアブートを無効化

事前に想定していた、ハードウェアが新しいことによる問題以外は、あっけなくインストールできてしまいました。

## 注意

データが失われる可能性がありますので、かならずバックアップをして下さい。またリカバリー領域が失われても大丈夫なように、リカバリーメディアを作成しておきましょう。くれぐれも自己責任でお願いします。


# インストール手順

## openSUSE Leap 42.2 のインストール

### 1. インストールメディアの作成

1. openSUSE Leap 42.2 の ISO インストールイメージファイルをダウンロードする: 
https://software.opensuse.org/422/ja （※速いネットワークがある場合は、ネットワークインストール よりも DVD イメージがオススメです）
2. Win32 Disk Imager（Windows の場合）で USB メモリーに ISO ファイルを書き込む

### 2. インストール

インストール作業自体は、特別な操作は必要ありません。

1. 電源を入れ、F12 キーを押し、起動メニューから USB を選択し、インストールを開始する。
2. インストーラの指示に従ってインストールを進める。
3. 必要に応じてパーティションレイアウトを変更する。   
openSUSE のインストーラーは Windows の領域を縮めたパーティションレイアウトを自動的に提案してきます。パーティションのサイズを変更したいときは、「熟練者向け設定」で変更して下さい。

### 3. カーネルの差し替え

openSUSE Leap 42.2 のカーネルは 4.4 のため（Ubuntu 16.04 と同じ）、Kaby Lake（Core iX 7000番台）の CPU に対応していません。そのため、画面の明るさの変更ができなかったり、Wi-Fi が使えないなどの制限があります。

付属の USB Type-C アダプターで有線 LAN に接続して、以下の手順で開発用のリポジトリを追加して、カーネルを最新の安定版に差し替えます。なお、開発用リポジトリからパッケージをインストールすることは、openSUSE としては推奨していませんのでご注意下さい（パワーユーザーや開発者が最新版をテストできるように提供されています）。

zypper ar で kernel:stable/standard リポジトリを追加し、このリポジトリから kernel-default をインストールします。

```shell-session
$ sudo zypper ar -c obs://kernel:stable/standard kernel:stable
$ sudo zypper ref kernel:stable
$ sudo zypper in --from kernel:stable kernel-default kernel-firmware
```

インストールが完了したら、再起動して下さい。

openSUSE 自体はセキュアブートに対応していますが、公式の鍵で署名されていないカーネルに変更したため、セキュアブート環境下では起動ができなくなります。このような場合は、セキュアブートを無効化するか、マシンオーナーキーをインポートするかの2つの方法がありますが、ここではセキュアブートを無効化することにします。

1. 電源を入れたあとに、F2 キーを押して、TOSHIBA Setup Utility に入る
2. Security タブの Secure Boot を `Disabled` に変更する
3. 設定を保存して再起動する

# タッチパッドの調整

## ３本指のスワイプに「戻る」「進む」を設定する

[libinput-gesture](https://github.com/bulletmark/libinput-gestures) で簡単に実現できます。この機能は Windows 10 では使えません。（タッチパッドが異なる R734 では設定できるにも関わらず）

```
# コマンドラインからキーを送る xdotool をインストールする
$ sudo zypper in xdotool git

# 使用するユーザーを input グループに追加する
$ sudo usermod -a -G input geeko

# libinput-gestures をインストール
$ git clone https://github.com/bulletmark/libinput-gestures
$ cd libinput-gestures
$ sudo ./libinput-gestures-setup install

# libinput-gestures を自動起動するように設定
$ libinput-gestures-setup autostart
```

一度ログアウトして、再ログインすると、ジェスチャーが使えるようになります。

3本指のスワイプは libinput-gestures の以下のルールで実現されています。`left` の後に指の本数を明示的に指定することもできるようです。

```/etc/libinput-gestures.conf
# Browser go forward (works only for Xorg, and Xwayland clients)
gesture swipe left      xdotool key alt+Right

# Browser go back (works only for Xorg, and Xwayland clients)
gesture swipe right     xdotool key alt+Left
```

よく swipe と pinch-in/out が誤判定されるようなので、pinch-in/out のジェスチャーを止めておいたほうが良いかもしれません。



# 動作状況

現状の各デバイス等の動作状況は次の通りです。

## 画面

* グラフィックスアクセラレーション: OK
* 画面の明るさ設定: OK ※カーネル 4.10 に更新後
* 画面の自動回転: 動作せず
    * 画面を傾けると `toshiba_acpi: Unknown event received 86` が出るので、コードの追加が必要そうです
        * https://github.com/torvalds/linux/blob/master/drivers/platform/x86/toshiba_acpi.c#L3269
* USB Type-C アダプター HDMI: OK（4K 30 Hz で動作）
* USB Type-C アダプター VGA: 未検証

フォントは GNOME なら 1.2 倍、KDE 等では 120 DPI 程度に設定するとよいでしょう（お好みで）

## 入力機器

* キーボード: OK
    * Fn キーのショートカットも動作しています
    * 画面反転時のキーボード無効化も動作しています（ファームウェアで制御？）
* タッチパッド: OK
* タッチパネル: OK
* スタイラスペン: OK
    * GIMP で筆圧機能を使うときは「追加された入力デバイスの設定」で「Wacom Co.,Ltd. Pen and multitouch sensor Stylus」を`不可`から`スクリーン`に変更する
* 指紋リーダー: 未検証
* カメラ: 未検証
* Windows Hello カメラ: 未検証

## ネットワーク

* Wi-Fi: OK ※カーネル 4.10 に更新後
    * Intel Dualband Wireless-AC 8265
* USB Type-C アダプターの有線 LAN: OK
    * Realtek RTL8153
* Bluetooth: 動作 ※kernel-firmware を更新後

## 電源管理
* スタンバイ＆スタンバイ復帰: OK
* ハイバネーション: 未検証
* 電池
    * 5時間程度、メモを取るなど使用して、残りが 50% 程度でした。
    * Windows より消費電力が多いです。`powertop` コマンドで省電力化を調整しつつ様子見をしています。
* eco 充電モード: OK
    * 80(79) % で充電が止まります
    * 設定の変更は Windows からのみ可能です（`/proc/acpi/toshiba` に見当たらず）

## 未解決・TODO

### openSUSE Leap 42.3

openSUSE Leap 42.3 では Kernel 4.4 に Kaby Lake 用のドライバが追加されました。しかしながら、スタンバイから復帰時にディスプレイのバックライトが点灯しない問題が確認されており、引き続き新しいカーネルが必要な状態です。

### USB Type-C アダプタのエラー

次のようなメッセージが繰り返し出ています

```
[  249.398042] pcieport 0000:00:1d.0: AER: Corrected error received: id=00e8
[  249.398059] pcieport 0000:00:1d.0: PCIe Bus Error: severity=Corrected, type=Data Link Layer, id=00e8(Transmitter ID)
[  249.398072] pcieport 0000:00:1d.0:   device [8086:9d18] error status/mask=00001000/00002000
[  249.398080] pcieport 0000:00:1d.0:    [12] Replay Timer Timeout  
```

AER によるエラーメッセージの出力は `pci=noaer` を起動時のカーネルオプションに追加することで抑制できます。

### Bluetooth ヘッドセットのモード切替

A2DP デバイスとしては使えますが、ヘッドセットに切り替えられれていません

### タッチパッドの調整

タッチパッドのタップ誤検知が多いので調整したい

* libevent で無効領域を設定する
* DWT: disable touchpad while typing のタイムアウト時間を眺めに設定する
    * 500 ms にハードコーディングされている ([コード](https://cgit.freedesktop.org/wayland/libinput/tree/src/evdev-mt-touchpad.c?id=980ad92c886425cb7fb4cead44618c9c15692b14&h=1.5-branch#n34))
    * libevent 1.5 以降でも、活発に誤タッチ検知防止の機能が開発されている