Surface Pro5(2017)にArchLinuxをインストールする。

# はじめに

Surface Pro5(2017)にArchをインストールする方法についての記事です。

またこの記事では、WindowsとArchLinuxの**デュアルブート**の構築を前提に書いています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1446859/5e1ea3ea-b92a-0614-03d0-5119fa09428d.png)


手順を大きく分けると、  
「パーティションの設定」→「セキュアブート無効化」→「OSインストール」→「カーネルインストール」→「ドライバ等インストール」. 
といった感じです。

# USBメモリの作成
まずここからArchLinuxの公式からisoファイルをダウンロードしてきます。

https://www.archlinux.jp/download/

ダウンロードしたら、balenaEtcherなどを使ってUSBメモリにArchLinuxのisoファイルを焼きます。

# パーティション縮小
デュアルブートをするために、まずWindowsのパーティションを縮小します。
まず、Windowsボタンを右クリックしてディスクの管理を押します。
そこで、Windowsが入っているパーティションを選択して、好きなサイズに縮小します。（64GB以上がおすすめです）
# セキュアブートの無効化
セキュアブートを**無効**にしないとうまく行きません。
 - Surfaceの**電源を切る**
 - 電源ボタンと、音量アップを**同時押し**でUEFIを起動する。
 - Securityタブから、Secure Bootの**ChangeConfiguration**を押す
 - **None**を押す
これで**無効**にできます。
# USBから起動する
- Archを焼いたUSBメモリをSurfaceに挿す
- 電源ボタンと、音量アップの**同時押し**でUEFIを起動する
- Boot configureタブからUSB Storageを一番上に持ってくる。
- **Exit**をおしてUEFIから抜ける
- 電源を入れるとArchlinuxが**起動する**
ここで起動しなかった場合、セーフブートが無効になっているかもう一度確認してください。
# Archlinuxのインストール
基本的にインストール自体は普通の手順と同じです。私は以下のサイトを参考にさせてもらいました。

https://neko-mac.blogspot.com/2021/05/arch-linux.html


インストール時にchroot環境で、**linux-firmware-marvell**というパッケージを追加でインストールしてください。じゃないと、インストール後WiFiが動作しません。

```bash
sudo pacman -S linux-firmware-marvell
```
# ArchLinuxインストール後
デフォルトのカーネルだとタッチ操作やカメラなどが動作しないため、「**linux-surface**」という別のカーネルをインストールします。

https://github.com/linux-surface/linux-surface
### 署名インポート
```bash
curl -s https://raw.githubusercontent.com/linux-surface/linux-surface/master/pkg/keys/surface.asc \
    | sudo pacman-key --add - #キーのインポート

sudo pacman-key --finger 56C464BAAC421453 ##署名の確認
sudo pacman-key --lsign-key 56C464BAAC421453 #ローカルで署名
```

### リポジトリに追加
 **/etc/pacman.conf**の**末尾**に以下のものを追加します。
```config
[linux-surface]
Server = https://pkg.surfacelinux.com/arch/
```
### linux-surfaceのインストール
```bash
sudo pacman -Syu
sudo pacman -S linux-surface linux-surface-headers iptsd
```
インストール後、再起動をし下記のコマンドでカーネルが変更されているか確認してください。
```bash
uname -a
```
## カメラ
下記のコマンドでカメラを有効にすることができます。
```bash
sudo pacman -S libcamera libcamera-tools v4l2loopback-dkms
sudo modprobe v4l2loopback video_nr=42 card_label="virtualcam" exclusive_caps=1
```
## タッチ・ペン操作
libwacom-surfaceというAURにあるパッケージをいれます。これを入れることで、タッチ操作やペン操作が可能になります。
yayが必要なので、入れてなかったら入れてください。
```
yay -Sy
yay -S libwacom-surface
```

インストールし再起動すると、Gnomeでは以下の設定が新しく追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1446859/02f2b4d5-20c4-2276-dbec-821ef9f1fc55.png)
# SIM
はじめに、下記のコマンドでModemManagerをインストールします。

```bash
sudo pacman -S modemmanager
```

そして、下記のような内容のシェルスクリプトを作成し実行することで、4Gを使うことができるようになります。
また、このスクリプトは起動時に毎回実行する必要があるので、スタートアップなどに登録しておきましょう。
```bash
#!/bin/bash

echo 16383 | sudo tee /sys/bus/usb/devices/2-3/2-3:1.0/net/wwp0s20f0u3/cdc_ncm/rx_max
echo 16383 | sudo tee /sys/bus/usb/devices/2-3/2-3:1.0/net/wwp0s20f0u3/cdc_ncm/tx_max

echo 16384 | sudo tee /sys/bus/usb/devices/2-3/2-3:1.0/net/wwp0s20f0u3/cdc_ncm/rx_max
echo 16384 | sudo tee /sys/bus/usb/devices/2-3/2-3:1.0/net/wwp0s20f0u3/cdc_ncm/tx_max

systemctl restart ModemManager
```
# その他
 - DEはジェスチャーが使えるGnomeがおすすめ。(タッチ操作も他DEよりしやすい)
 - FireFoxはタッチ操作がうまくいかない。(Chromium系おすすめ)
 - krita筆圧検知は使える。
 - Surface Pen使える。