Arch Linux インストール俺々式完全版

# 概要 
私事ですが、初めてArch Linux をインストールして利用し始めてから2 年近くが経ちました。
Arch Linux はLinux の中でも特にカスタマイズ性に優れている魅力がありますが、一方でそれが選択肢を多くさせてインストール手順を難解にさせている部分もあるかと思います。
ここでは自分がこの2 年間で少しずつ試行錯誤してアップデートさせてきた個人的Arch Linux のインストール手順について公開しようと思います。

Arch Linux は先に述べたとおりカスタマイズ性に優れていますので、インストールする人によって全然違う環境となるものなのですが、個人的に最高と思われる環境を構築する手順を公開しますので、これからArch Linux のインストールに挑戦する人や、既にインストールされている方々にも、一つの参考と慣ればと思います。

# 前提条件 
今回は以下の環境にArch Linux をインストールするものとして説明を進めていきます。

* インストール環境概要
<table><tbody>
  <tr>
    <th> 項目</th>
    <th> 値</th>
    <th> 備考</th>
  </tr>
  <tr>
    <th> ブート形式</th>
    <td> (U)EFI</td>
    <td> BIOS 形式のboot については、手順が冗長になりすぎるため今回は割愛します。</td>
  </tr>
  <tr>
    <th> デスクトップ環境</th>
    <td> KDE</td>
    <td> Linux でも特に人気で美麗なデスクトップ環境を今回はインストールしていきます。</td>
  </tr>
</tbody></table>

# USB ディスクを作成する 

- 参考
    - https://wiki.archlinux.org/index.php/USB_flash_installation_media#In_GNU.2FLinux

USB boot イメージを作成するワークステーション上でArch Linux のiso ファイルをdd コマンドによって書き込みます。
今回は`/dev/sdc` が対象のUSB であることを想定しています。


```console
# wipefs --all /dev/sdc
# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdc status=progress && sync
```


イメージを書き終えたらUSB を抜き取り、インストール対象のマシンに差し込みUSB から起動するようにBIOS を調整してください。

## UEFI によるセキュリティでUSB からイメージをUSB イメージから起動できない場合 
Windows などがプレインストールされていたマシンにArch Linux をインストールする場合など、UEFI によるSecure boot 機能が有効になっている可能性があり、USB からArch Linux を起動できないことがあります。
その場合はUEFI Set Up (BIOS) 画面を開きこのSecure Boot 機能を無効にしてください。手順についてはお使いのハードウェアベンダ毎に異なるので割愛します。

# UEFI ブートかBIOS ブートかを確認する 
今回のArch Linux インストール手順はUEFI ブート環境下を想定しています。BIOS ブート環境下ではありません。
そこで、お使いの環境がUEFI ブートであることを確認するために、USB に焼いたArch Linux を起動した時に/sys/firmware/efi/efivars ディレクトリと、その下にファイルがあることを確認してください。

```
$ ls -l /sys/firmware/efi/efivars
```

また、その他の方法としてUSB にインストールしたArch Linux を起動する時のPOST 画面がどのようになっているかでもUEFI boot かBIOS boot かを確認することができます。

* BIOS ブートの場合のPOST 画面 
![InstallArch_POST0001.png](https://qiita-image-store.s3.amazonaws.com/0/70152/3a04821d-cc24-f283-33a4-ea6e0e7718e5.png)


* UEFI ブートの場合のPOST 画面 
![InstallArch_POST0002.png](https://qiita-image-store.s3.amazonaws.com/0/70152/a9a342b3-ed17-193a-3f33-721acaabc7cc.png)

これより先の手順はUEFI ブート環境でのインストールを想定していますのでご了承ください(とはいっても最初のパーティション作成とGRUB インストールのオプションを幾つか変更すれば良い程度ですが…)。
また、最近のハードウェアを使っていながらBIOS 起動となってしまった場合はUEFI(BIOS) セットアップ画面からUEFI ブートがOFF になっていないか確認してください。最近のハードウェアではUEFI 起動のON/OFF の切り替えができるようになっているものがあるようです。

# パーティションを作成する 
USB からArch Linux を起動したらArch Linux をローカルのディスクにインストールするためにパーティションを作成します。
今回はローカルのディスクは`/dev/sda` にあるものとし、既にパーティションなどは削除されているものとします。

今回は次のような構成でパーティションを作成していこうと思います。


* パーティション構成
<table><tbody>
  </tr>
  <tr>
    <th> partition</th>
    <th> size</th>
    <th> file system</th>
    <th> mount point</th>
  </tr>
  <tr>
    <td> /dev/sda1</td>
    <td> 512MiB</td>
    <td> vfat</td>
    <td> /boot/efi</td>
  </tr>
  <tr>
    <td> /dev/sda2</td>
    <td> 512MiB</td>
    <td> ext4</td>
    <td> /boot</td>
  </tr>
  <tr>
    <td> /dev/sda3</td>
    <td> 256 GB (残り全部)</td>
    <td> xfs</td>
    <td> /</td>
  </tr>
</tbody></table>

今回swap パーティションは作成せず動的に容量が変化するswap ファイル方式で実現することにします。

## UEFI について簡単に理解する 
UEFI はOS とfirmware 間でやり取りをするための変数を定義しており、これらはboot-loader とOS 起動時の初期の段階でのみ使用されます。
これらの変数ではfirmware のUEFI Boot Manager やUEFI Secure Boot Protocol で使用される鍵の管理等に使用することができます。
また、これらの変数として具体的にどのようなものがあるかを調べるには、`efivar -l` コマンドを実行することで確認できます。


```console
$ efivar -l
```


### Linux カーネルにおけるUEFI 変数のサポートについて 
Linux kernel version 3.8 からはuser space にefivarfs(EFI VARiable FileSystem) インタフェース(CONFIG_EFIVAR_FS) を通して変数をファイルとして公開しています。
そのファイルは`/sys/firmware/efi/efivars` ディレクトリ以下にあり、変数毎のサイズ制限はなく且つUEFI Secure Boot 変数をサポートしています。

### UEFI 変数のサポートについて 
USB 等のメディアからArch Linux のiso を起動したら、あなたのコンピュータがUEFI をサポートしているか確認してみ見てください。
具体的な手順としては例えば以下のような手順があります。

(1) EFI Runtime Services が有効となっていること
　-> `zgrep CONFIG_EFI /proc/config.gz` コマンドで`CONFIG_EFI=y` が表示されれば有効
(2) Kernel processor bitness とEFI bitness が同じである。`/sys/firmware/efi`ディレクトリが存在していれば同じである
(3) kernel がEFI モードで起動されていること
　-> `/sys/firmware/efi` ディレクトリが存在していればOK
* kernel のEFI Runtime Service がkernel コマンドライン経由でdisable になっていないこと(i.e `noefi` kernel parameter が使われていないこと)
　-> `dmesg | grep noefi` で何もヒットしない。
　　[    0.000000] Lernel command line: BOOT_IMAGE=/vmlinuz-linux ... noefi ...
* efivarfs ファイルシステムが`/sys/firmware/efi/efivars` にマウントされていること(注釈1)
* `efivar -l` コマンドでエラー無く変数がリストアップされること

(注釈1) マウントされていない場合は下記ページを参考
https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#Mount_efivarfs

上記を実施してもEFI 変数のサポートが働いていない場合、以下の事を確認してみてください。
`/sys/firmware/efi/efivars/dump-*` ファイルの存在を確認する。存在する場合はそれらを削除してマシンを再起動する。
上記で改善しない場合は`efi_no_storage_paranoia` kernel parameter をつけた上で起動し、efi 変数を書き込み/変更する可能性のあるkernel efi variable storage space チェックを防いだ上でマシンを再起動します。

### Userspace tools 

* EFI 関連の tool
<table><tbody>
  </tr>
  <tr>
    <th> コマンド名</th>
    <th> 説明</th>
    <th> 備考</th>
  </tr>
  <tr>
    <td> efivar</td>
    <td> UEFI 変数を操作するためのlibrary, tool</td>
    <td> https://github.com/vathpela/efivar-devel</td>
  </tr>
  <tr>
    <td> efibootmgr</td>
    <td> UEFI Firmware Boot Manager Settings を操作するtool</td>
    <td> https://github.com/vathpela/efibootmgr-devel</td>
  </tr>
  <tr>
    <td> uefivars</td>
    <td> PCI 関連のinfo も含めたEFI 変数を出力するtool</td>
    <td> https://github.com/fpmurphy/Various/tree/master/uefivars-2.0</td>
  </tr>
  <tr>
    <td> efitools</td>
    <td> UEFI secure boot platforms を操作するtool</td>
    <td> </td>
  </tr>
  <tr>
    <td> Ubuntu's Firmware Test Suite</td>
    <td> Intel, AMD のPC のfirmware に問題がないかをチェックするtool</td>
    <td> https://wiki.ubuntu.com/FirmwareTestSuite/</td>
  </tr>
</tbody></table>

これからの説明はArch Linux をインストールするコンピュータがUEFI に対応していること前提で進めていきます。

## パーティションを作成する 
EFI System Partition (ESP) はFAT32 でフォーマットされたパーティションである必要があります。パーティションのサイズですが、推奨は512MiB ですがそれよりも小さいもしくは大きいサイズも可能です。
Microsoft の記述(1)によると最小で100MB となっていますが、それはUEFI の規定では述べられていません。
セクターあたり4 KB となっているドライブでは少なくとも256 MiB 必要となり、その理由はFAT32 形式のドライブのパーティションの最小サイズが(4 KB * 65527 = 256 MB)となっているためです。

- 参考: EFI System Partition
    - https://wiki.archlinux.org/index.php/EFI_System_Partition

Arch Linux を焼いたUSB ISO 等でArch Linux を起動したらgdisk コマンドでパーティションを作成していきます。


```console:gdiskでEFIパーティション領域を作成する
# sgdisk -z /dev/sda
# timeout 10 dd if=/dev/zero of=/dev/sda bs=4M
# sgdisk -n 1:0:+512M -t 1:ef00 -c 1:"EFI System" /dev/sda
# sgdisk -n 2:0:+512M -t 2:8300 -c 2:"Linux filesystem" /dev/sda
# sgdisk -n 3:0: -t 3:8300 -c 3:"Linux filesystem" /dev/sda
```


## フォーマット 
新規作成したパーティションをフォーマットします


```console:フォーマット
# mkfs.vfat -F32 /dev/sda1
# mkfs.ext4 /dev/sda2
# mkfs.xfs /dev/sda3
```


## インストール先デバイスのマウント 
Arch Linux をインストールするために先程フォーマットしたパーティションをマウントしていきます。
root ファイルシステムを`/mnt` ディレクトリにマウントし、`/boot`, `/boot/efi` 用に作成したファイルシステムをそれぞれ`/mnt/boot`, `/mnt/boot/efi` ディレクトリへマウントしていきます。


```console:mount
# mount /dev/sda3 /mnt
# mkdir /mnt/boot
# mount /dev/sda2 /mnt/boot
# mkdir /mnt/boot/efi
# mount /dev/sda1 /mnt/boot/efi
```

## 任意: Wi-Fi ネットワーク接続
インストール対象のマシンを無線LAN でつないでパッケージインストールする場合は、<code>wifi-menu</code> を使って接続してください。

```console:CLIでWi-Fi接続する
# wifi-menu
```

あとは画面の指示にしたがって、SSID をパスワードを入力しします。

# Arch Linux のインストール 
## mirror の選択 
これから`/dev/sda` にArch Linux をインストールしていきますが、それらのファイル類は`/etc/pacman.d/mirrorlist` に記載されているリポジトリからダウンロードされます。
USB などから起動しているlive システム上では全てのリポジトリが有効になっていますが、作業場所の地理的な事情を考慮してパッケージをダウンロードするリポジトリの優先度が変えられるようになっています(とりあえずインストールできれば良いという場合は特に変更する必要はありません)。
`/etc/pacman.d/mirrorlist` ファイルを開き日本のリポジトリを上に持ってきます。


```console:/etc/pacman.d/mirrorlist
Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch
```


## base パッケージのインストール 
`pacstrap` コマンドを使用してbase パッケージをインストールしていきます。
`base-devel` パッケージはArch User Repository(AUR) もしくはArch Build System(ABS) からパッケージをビルドする時に必要になりますので、ここでインストールしておきます。
その他、今回はboot loader としてgrub の関連するパッケージ、また、ネットワークに関する設定を適用するために必要なnetctl、xfs ファイルシステム、エディタのvi 等々、必要なパッケージをこの時点でインストールしておきます。

```console:pacstrap(grubを使う場合の例)
# #有線LAN 接続マシンの場合の例
# pacstrap /mnt base base-devel linux linux-firmware grub dosfstools efibootmgr netctl xfsprogs vi

# #無線LAN 接続マシンの場合の例。Wi-Fi に関するパッケージもこの時点で入れてしまう
# pacstrap /mnt base base-devel linux linux-firmware grub dosfstools efibootmgr netctl iw wpa_supplicant networkmanager dialog xfsprogs vi
```


## fstab の作成 
`genfstab` コマンドを使用してfstab ファイルを作成します。


```console:genfstab
# genfstab -U /mnt >> /mnt/etc/fstab
```


## ファイルシステムへchroot 
`arch-chroot` コマンドを使用して作業場所のroot を変更します。


```console:arch-chroot
# arch-chroot /mnt /bin/bash
```


## Locale の設定 
Arch Linux のLocale を`en_US.UTF-8 UTF-8` に設定します。
`/etc/locale.gen` をvi 等のエディタで開き、`en_US.UTF-8 UTF-8`, `ja_JP.UTF-8 UTF-8` のコメントを解除し、`locale-gen` のコマンドを実行します。


```console:/etc/locale.gen
...
en_US.UTF-8 UTF-8
...
ja_JP.UTF-8 UTF-8
...
```

sed で実行する場合。

```console:sedで置換する例
# sed -i -e 's/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' /etc/locale.gen
# sed -i -e 's/#ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/g' /etc/locale.gen
# grep -E '^(en_US|ja_JP)\.UTF\-8 UTF\-8' /etc/locale.gen
en_US.UTF-8 UTF-8  
ja_JP.UTF-8 UTF-8 
```


```console:locale-gen
# locale-gen
```

LANG 環境変数を設定するために`/etc/locale.conf` ファイルを作成し、以下の値を記入します。

```text:/etc/locale.conf
echo "LANG=en_US.UTF-8" > /etc/locale.conf
```

## time zone 
time zone を日本に設定します。


```console:tzselect
# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent, ocean, "coord", or "TZ".
 1) Africa
 2) Americas
 3) Antarctica
 4) Asia
 5) Atlantic Ocean
 6) Australia
 7) Europe
 8) Indian Ocean
 9) Pacific Ocean
10) coord - I want to use geographical coordinates.
11) TZ - I want to specify the time zone using the Posix TZ format.
#? 4                                     // <- "4" を入力
Please select a country whose clocks agree with yours.
 1) Afghanistan           18) Israel                35) Palestine
 2) Armenia               19) Japan                 36) Philippines
 3) Azerbaijan            20) Jordan                37) Qatar
 4) Bahrain               21) Kazakhstan            38) Russia
 5) Bangladesh            22) Korea (North)         39) Saudi Arabia
 6) Bhutan                23) Korea (South)         40) Singapore
 7) Brunei                24) Kuwait                41) Sri Lanka
 8) Cambodia              25) Kyrgyzstan            42) Syria
 9) China                 26) Laos                  43) Taiwan
10) Cyprus                27) Lebanon               44) Tajikistan
11) East Timor            28) Macau                 45) Thailand
12) Georgia               29) Malaysia              46) Turkmenistan
13) Hong Kong             30) Mongolia              47) United Arab Emirates
14) India                 31) Myanmar (Burma)       48) Uzbekistan
15) Indonesia             32) Nepal                 49) Vietnam
16) Iran                  33) Oman                  50) Yemen
17) Iraq                  34) Pakistan
#? 19                                   // <- "19" を入力

The following information has been given:

        Japan

Therefore TZ='Asia/Tokyo' will be used.
Local time is now:      Sat Jun 18 21:00:10 JST 2016.
Universal Time is now:  Sat Jun 18 12:00:10 UTC 2016.
Is the above information OK?
1) Yes
2) No
#? 1                                    // <- "1" を入力

You can make this change permanent for yourself by appending the line
        TZ='Asia/Tokyo'; export TZ
to the file '.profile' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Tokyo
```


`/usr/share/zoneinfo`ディレクトリ配下に`Zone/Subzone` 形式でTZ 値がありますので、それを/etc/localtime シンボリックリンクを作成して参照できるようにします。
※今のArch Linux では既に/etc/localtime のシンボリックリンクがUTC 向けに作成されてしまっている。本手順は不要！？

```console
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
```


ハードウェアクロックの時間のズレを調整します。


```console
# hwclock --systohc --utc
```


## Initramfs 
`mkinitcpio` コマンドを使用してinitramfs のイメージを作成します。
`mkinitcpio` コマンドの特殊なオプションについては`/etc/mkinitcpio.conf` 内に記載されています。


```console:mkinitcpio
# mkinitcpio -p linux
```



## boot loader のインストール 
grub でboot ローダーをインストールします。


```console
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch --boot-directory=/boot/efi/EFI --recheck
# grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg
```



boot ローダのインストールに成功したらchroot のセッションを抜けてマシンを再起動します。
デスクトップ環境のインストールについては後ほど行います。デスクトップ環境をインストールする前に一旦Linux が起動することを確認します。


```console
# exit
# shutdown -h now
// -> Arch Linux のiso が入ったUSB を抜く
// -> Power On
```

起動後、CUI でログイン画面が出れば成功です。以降もroot でログインして作業を続行します。

## 任意: Wi-Fi 接続の実施
Wi-Fi 接続のみのlaptop の場合、後のパッケージインストール時に困るので、一旦CLI でWi-Fi 接続をしておきます。

```console:CLIでWi-Fi接続
# systemctl start NetworkManager
# systemctl enable NetworkManager
# nmcli d wifi list
> 接続可能なSSID を確認する
# nmcli d wifi connect <SSID> password <password>
> 接続完了
```

## hostname の設定 
`/etc/hostname` ファイルを編集して`hostname` を設定します。


```console:/etc/hostname
arch
```


## ネットワークの設定 
有線LAN DHCP、有線LAN 固定IP、無線LAN の設定方法について説明していくのであったものを選択してください。

### 有線LANの設定(DHCP) 
下記コマンドを実行しますが、<interface> の部分には自分のマシンに表示されるインタフェースを指定するようにしてください(ip a コマンド等で確認)。


```console:有線LANのDHCP設定(インタフェース名がenp0s31f6の場合の例)
# systemctl enable dhcpcd@<interface>.service
ex)
# systemctl enable dhcpcd@enp0s31f6.service
```


### 有線LANの設定(固定IP) 
`/etc/netctl` ディレクトリに設定ファイルを作成します。
サンプルの設定ファイルがあるので、それを参考に設定するとよいでしょう。


```console:サンプルの設定ファイルをコピー
# cd /etc/netctl
# cp ./examples/ethernet-static ens33
※"ens33" はネットワークインタフェース名

# vi ens33
```



```text:/etc/netctl/ens33
Description='Ethernet config of ens33.'
Interface=ens33
Connection=ethernet
IP=static
Address=('192.168.1.102/24')
Gateway='192.168.1.1'
DNS=('8.8.8.8' '8.8.4.4' '192.168.1.1')
```


設定ファイルを編集したら、作成した設定を有効化します。


```console:netctl
# netctl enable <profile>
↓　↓　↓
# netctl enable ens33
```


上記コマンドを実行することで、OS を再起動したときに自動的にインタフェースも起動するようになります。

### 無線LAN の設定 
無線LAN アンテナが付いている場合は、無線LAN のパッケージもインストールしておきます。

```console
# pacman -S iw wpa_supplicant dialog
```


Arch Linux ではいくつかの方法で無線LAN に接続する方法がありますが、個人的にはデスクトップ環境がある場合はNetworkManager を使う方法が直感的で操作できて簡単なのでおすすめです。


```console:NetworkManagerを起動する
# systemctl enable NetworkManager
# systemctl start NetworkManager
```


NetworkManager が起動すると、デスクチップ(後ほどインストールします)の右下のタスクトレイにネットワークアイコンが表示されるので、それをクリックして無線LAN 接続を直感的に行えるようになります。

#### 補足: 無線LAN アンテナの情報について取得する(マイナーな無線LAN カードのドライバ調査) 
無線LAN に関しては追加で無線LAN ドライバが必要になるかもしれません。
メジャーなIntel 系チップの無線LAN アンテナであれば大抵はkernel のベースパッケージに含まれているので追加でインストールする必要は無いでしょう。
その他の無線LAN ドライバについては以下のページを参考にしてください。

    - Installing driver/firmware
- https://wiki.archlinux.org/index.php/Wireless_network_configuration#Installing_driver.2Ffirmware

自分が使っている無線LAN アンテナが何なのかについて情報を取得する方法について説明していきます。
`lspci` コマンドを実行し、以下のような結果を確認することができます。


```console
# lspci | grep -i wireless
04:00.0 Network controller: Intel Corporation Wireless 8260 (rev 3a)
```


上記結果の`バス番号:スロット番号.機能番号` である`04:00.0` の詳細情報を検索してみます。


```console
# lspci -vv -s 04:00.0
......
        Kernel driver in use: iwlwifi
        Kernel modules: iwlwifi
```


上記の結果より、この無線LAN アンテナは`iwlwifi` モジュールを要求し、現在`iwlwifi` モジュールを使っています。
更に`modinfo` コマンドを使って`iwlwifi` のmodule の詳細を見る場合は次のようにします。


```console
# modinfo iwlwifi
......
```


また、ベンダとプロダクトコードを取得するコマンドは次のようになります。

```console
# lspci -n -s 04:00.0
04:00.0 0280: 8086:24f3 (rev 3a)

0280 -> Network controller
8086:24f3 -> Intel 
```


上記の結果より必要なWifi ドライバのインストール方法をGoogle 等で検索してインストールを実施してください。
今回は既にドライバがインストール済みだったので特に何もしません。

## 一般ユーザ(管理者権限あり)の作成 
後々デスクトップをインストールした時にログインするためのユーザを作成しておきます。


```console:useradd
# useradd -d /home/tsutomu -s /bin/bash -m tsutomu
# passwd tsutomu
# usermod -aG wheel tsutomu
# EDITOR=vi visudo

# %wheel ALL=(ALL) ALL
↓　↓　↓
%wheel ALL=(ALL) ALL
```


## pacman の設定 
`/etc/pacman.conf` ファイルに`Color` と`ILoveCandy` のを追加します。

```text:/etc/pacman.conf
# Misc options
#UseSyslog
Color
#TotalDownload
CheckSpace
#VerbosePkgLists
ILoveCandy
```


# KDE を導入する 
## 任意: KDEを入れる前に、NVIDIA のグラフィクスカードを搭載しているマシンでNVIDIA 専用のドライバを使用する 
インストールするマシンにNVIDIA のグラフィクスカードが搭載されている場合、汎用的なドライバではなくNVIDIA 用のドライバを入れて少しでも良いグラフィクスを実現したいですよね？
そんな場合はマシンがどのグラフィクスカードを積んでいるのかをしっかり調べ、それに適したドライバをインストールしてあげるようにしましょう。
なお本手順はIntel 内臓のグラフィクスを使用するにしろ、NVIDIA のグラフィクスカードを使用するにしろ、とりあえずデスクトップ環境を動かしたいというのであれば実施不要ですので飛ばしてしまってください。

以下手順はNVIDIA GTX680 を搭載しているマシンで実際に行ったときの手順です。

### グラフィクスカードの特定 
lspci コマンドを使ってあなたのマシンが搭載しているグラフィクスカードの情報を取得します。


```text:lspci
# lspci -k | grep -A 2 -E "(VGA|3D)"
lspci: Unable to load libkmod resources: error -12
01:00.0 VGA compatible controller: NVIDIA Corporation GK104 [GeForce GTX 680] (rev a1)
        Subsystem: Micro-Star International Co., Ltd. [MSI] GK104 [GeForce GTX 680]
        Kernel driver in use: nouveau
```


GeForce GTX 680 を積んでいることがわかります。
出力結果から、はっきりとしたグラフィクスカードがわかりずらい場合は、"NV" や"GK" で始まるグラフィクスカードのコードネームを確認します。
そして以下のページからコードネームとグラフィクスカードの対応表を見て、どのカードであるかをより詳細に特定してください。

    - https://nouveau.freedesktop.org/wiki/CodeNames/

自分の場合は"GK104(NVE4)" がコードネームで、形式的にはGeforce GTX600番台、Geforce GTX700番台で形式がだいたい同じっぽいことがわかります。

### ドライバのダウンロード 
カードの型番が特定できたら、カードに応じたドライバをインストールしていきます。
大雑把なドライバの選択肢としては以下の通りです。


* 選択すべきドライバ一覧
<table><tbody>
  </tr>
  <tr>
    <th> カードの種類</th>
    <th> 意味</th>
  </tr>
  <tr>
    <td> GeForce GTX 400 より新しいもの</td>
    <td> nvidia, nvidia-dkms(DKMS サポート), nvidia-lts(長期サポート) のいずれかのドライバをインストールしてください。もし搭載しているカードが結構新しいやつで、これらのドライバで動かない場合、nvidia-beta (AUR リポジトリ: https://aur.archlinux.org/packages/nvidia-beta/) をインストールしてみたら動くかもしれません。</td>
  </tr>
  <tr>
    <td> GeForce 8000/9000, ION 100-300 番台(コードネーム: NV5x, NV8x, NV9x, NVAx) の場合(2006 - 2010 年代メインの製品)</td>
    <td> nvidia-340xx, nvidia-340xx-lts のいずれかをインストールしてください。</td>
  </tr>
  <tr>
    <td> GeForce 6000/7000 番台(コードネーム: NV4x, NV6x)の場合(2004 - 2006 年代メインの製品)</td>
    <td> nvidia-304xx, nvidia-304xx-lts のいずれかをインストールしてください。</td>
  </tr>
</tbody></table>

今回はGTX 680 なのでnvidia パッケージをインストールすることにしました。

* nvidia パッケージのインストール

```console
# pacman -S nvidia

resolving dependencies...
:: There are 3 providers available for libgl:
:: Repository extra

  1) libglvnd  2) nvidia-304xx-utils  3) nvidia-340xx-utils

Enter a number (default=1):     # <- デフォルトの1 で良いはず
```

nvidia ドライバをインストールすることで`nouveau` ドライバがブラックリスト化(新しくインストールしたり、利用したりしないようにすることだと思う)されるので、それを反映させるために一旦再起動してください。


```text
# shutdown -r now
```


再起動したら、グラフィックスカードを確認してnvidia ドライバが利用されていることを確認します。


```text
# lspci -k | grep -A 2 -E "(VGA|3D)"
lspci: Unable to load libkmod resources: error -12
01:00.0 VGA compatible controller: NVIDIA Corporation GK104 [GeForce GTX 680] (rev a1)
        Subsystem: Micro-Star International Co., Ltd. [MSI] GK104 [GeForce GTX 680]
        Kernel driver in use: nvidia    ## <- "nvidia" となっていれば成功
```


## KDE をインストールする 

- KDE
    - https://wiki.archlinux.org/index.php/KDE

- Arch Linuxにデスクトップ環境KDEを導入する
    - http://note.kurodigi.com/archlinux-kde/


```console
# pacman -S plasma-meta
```


すると、下記のような選択肢が出力されます。

```console
resolving dependencies...
:: There are 3 providers available for libgl:
:: Repository extra
   1) libglvnd  2) nvidia-304xx-utils  3) nvidia-340xx-utils    ## <- nvidia のドライバが既にインストールされている場合はおそらく出ないメニュー

Enter a number (default=1):    # <- そのままEnter。CPU 内臓のグラフィクスを利用する場合や、NVIDIA グラフィクスカードを搭載していてもとりあえず動かせれば良い場合は"libglvnd" を選択

:: There are 2 proviers available for phonon-qt5-backend:
:: Repository extra
   1) phonon-qt5-gstreamer  2) phonon-qt5-vlc

Enter a number (default=1):    # <- そのままEnter
:: There are 2 providers available for libx264.so=148-64
:: Repository extra
   1) libx264  2) libx264-10bit

Enter a number (default=1):    # <- そのままEnter
......

:: Proceed with installation? [Y/n] Y    # <- "Y" を入力してEnter
```


<!--
##########################################################################
# 下記内容は別記事にまとめるなどした方が良いかもしれない。
##########################################################################

KDE 入れたら起動しなくなった…。
SSHD でログインしてjournalctl すると、以下のようなログが出力される

```text:journalctl
Jun 20 23:40:41 arch systemd[1]: Stopping Getty on tty1...
Jun 20 23:40:41 arch login[348]: pam_unix(login:session): session closed for user root
Jun 20 23:40:41 arch systemd[1]: Stopped Getty on tty1.
Jun 20 23:40:41 arch systemd[1]: Started Simple Desktop Display Manager.
Jun 20 23:40:41 arch systemd-logind[269]: Removed session c1.
Jun 20 23:40:41 arch sddm[3679]: Initializing...
Jun 20 23:40:41 arch sddm[3679]: Starting...
Jun 20 23:40:41 arch sddm[3679]: Adding new display on vt 1 ...
Jun 20 23:40:41 arch sddm[3679]: Display server starting...
Jun 20 23:40:41 arch sddm[3679]: Running: /usr/bin/X -nolisten tcp -auth /var/run/sddm/{d8299b13-dcc7-4728-b6bc-33c687c86402} -background none -noreset -displayfd 18 vt1
Jun 20 23:40:41 arch sddm[3679]: Failed to start display server process.
```


* Hot
- 以下にsddm 同じ事象で動いていない人がいるので参考にしてみる？？
    - https://bbs.archlinux.org/viewtopic.php?id=193286

```text
 -> xorg をインストールすることで解消
```

次のコマンドを実行してみる。

```console
# pacman -S xorg-xinit xterm
```


以下のページにIntel 系のドライバ及びXorg 系のページがある。display manager によってxorg は起動される。
https://wiki.archlinux.org/index.php/xorg
-->

KDE のインストールが完了したら、追加で以下のパッケージを入れておきます。


```text
# pacman -S mesa-libgl xorg
```


## 任意: Intel 内臓グラフィクスを利用する場合、追加でインストールするパッケージ 
Intel 内臓のグラフィクスを使用している場合、追加で`xf86-video-intel` をインストールしてください。

```console
# pacman -S xf86-video-intel
```


## 任意: Nvidia グラフィクスカードを利用していて、Xorg の設定をする場合 
本手順は、Nvidia ドライバとKDE をインストールしてそれでもデスクトップがうまく動かない(例えばマルチモニタ等)、もしくは細かい設定をしたいという場合のみ実施してください。

Xorg の設定を行う場合、以下のコマンドを実行します。マルチディスプレイ環境にしたい場合などは、それらのディスプレイが繋がれた状態で実行すると良いでしょう。


```text
# nvidia-xconfig
```


上記コマンドを実行することで`/etc/X11/xorg.conf` ファイルに定義が追加されます。一部だけ抜粋すると、グラフィクスデバイスやモニタについての設定がされていることがわかります。


```text:/etc/X11/xorg.conf
...略...
Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
EndSection
...略...
```


nvidia-xconfig コマンドを使って自動的に設定ファイルを作成しましたが、手動で設定する場合は`/etc/X11/xorg.conf` ファイルに追記するよりも`/etc/X11/xorg.conf.d/20-nvidia.conf` に記述するのが良いでしょう。

- Xorg
    - https://wiki.archlinux.org/index.php/Xorg

## 任意: VMWare 環境で動かしている場合、open-vm-tools のインストール 
VMWare 環境上で動かしている場合はopen-vm-tools パッケージもインストールしておきましょう。


```console:open-vm-toolsのインストール
# pacman -Sy open-vm-tools xf86-video-vmware
```


インストール後、`vmtoolsd` の起動設定をします。


```console:vmtoolsdのdaemon設定
# systemctl enable vmtoolsd
# systemctl start vmtoolsd
```


## sddm の設定ファイル作成 
デスクトップテーマの設定ファイルを作成します。


```console:sddm.conf
# sddm --example-config > /etc/sddm.conf
```


## 任意: sddm のログイン画面テーマの設定 
テーマを自分のお気に入りの`breeze` に変更します。


```console:/etc/sddm.conf
......
[Theme]
Current=breeze
......
```



次にsddm の自動起動設定を行います。
これでLinux 起動時にデスクトップ画面が自動的に起動するようになります。


```console:enablesddm
# systemctl enable sddm
```


## その他必要なパッケージのインストール 
Linux デスクトップ環境で基本的な操作をするために必要なターミナル(gnome-terminal) とファイルエクスプローラのdolphin をはじめ、その他開発作業などで必要なもの等、適宜好みのパッケージをインストールしてください。


```console:基本的なオペレーションに必要なパッケージのインストール
# pacman -S gnome-terminal dolphin git atom unzip
```


## 再起動とデスクトップ画面表示の確認 

```text
# shutdown -r now
```


再起動後にログイン画面が表示されれば成功です。以上にて基本的なArch Linux のインストール作業は完了です。
あとはあなたの好きなようにLinux にどんどんカスタマイズしていってください！

これ以降も説明は続けますが、完全に私個人の好みの設定になりますのであくまでも参考程度にご覧いただければと思います。

# デスクトップ環境のカスタマイズ 
ログイン画面が出てきてログインに成功したら、ガシガシデスクトップ環境をカスタマイズしていきます。

## Web ブラウザのインストール 
Web ブラウザは個人の好みで大きく分かれるところですが、ここでは自分のお気に入りのGoogle chrome(AUR), Firefox の2 つをインストールします。
Arch Linux ではChromium は公式リポジトリからインストールすることができますが、Google chrome は標準で用意されておりません。
なのでここではAUR で有志により公開されているものを利用させていただきます。


```text:Googlechromeのインストール(https://aur.archlinux.org/packages/google-chrome/)
$ git clone https://aur.archlinux.org/google-chrome.git
$ cd google-chrome
$ makepkg -sri
```


Firefox は公式リポジトリからインストールできます。


```text:Firefoxのインストール
# pacman -Sy firefox
```


Chromium をインストールしたい場合も公式リポジトリからインストールできます。


```text:補足)Chromiumをインストールする
# pacman -S chromium
```


## 任意: デスクトップテーマの変更 
KDE Plasma のデフォルトではウィンドウの縁や背景がシルバー調のテーマになっていますが、これをDark 系のテーマに変更します。
`System Settings -> Colors Breeze Dark` を選択肢、Apply ボタンを押下します。

## 任意: ログイン画面の背景色を変更する 
breeze テーマのログイン画面の背景はビビットな水色で、個人的に少し眩しく感じます。
少し色が明るすぎるのでこれをグレー色に変更したい場合はbreeze のtheme ファイル`/usr/share/sddm/themes/breeze/theme.conf`をエディタで開き`color` 変数の箇所をあなたの好みの値(例えばグレーであれば"#333333")に変更します。


```bash:/usr/share/sddm/themes/breeze/theme.conf
color=#1d99f3
↓　↓　↓
color=#333333
```


## 任意: スクリーンロック画面の設定 
ユーザのスクリーンロック画面(操作しないで暫く放置しておくと現れるパスワードの入力画面)の背景も変更します。
また、ログインした後にユーザが何も操作しないで放置しておくと標準で5 分経過するとログイン画面に戻りロックされるようになっています。
仕事使いでは5 分くらいの短い時間にしておくべきでしょうが、家使いでは5 分は少し短いのでこれを30分に変更します。

`Alt + F1 (or metakey)` を押下しLauncher を起動します。

```text
System Settings -> Desktop Behaivior(Workspace内) -> Screen Locking(左ペイン内)
```
をクリックし、Screen Locking メニューを開きます。
`Lock screen automatically after:` にチェックを入れ、30 mins を設定します。
![InstallArch_0000.png](https://qiita-image-store.s3.amazonaws.com/0/70152/14dc4623-5316-648e-06b7-f1527ac5b721.png)

次に背景色を変更します。Activation タブから`Wallpaper Type: Plain Color` を選択し、Color は`#333333` としました。
また、Lock screen をクリックして、スクリーンロック画面を出すためのコマンドを`Meta + L`(Windows と同じ)にしておくのも良いでしょう。
設定が完了したらApply ボタンを押下します。
![InstallArch_0001.png](https://qiita-image-store.s3.amazonaws.com/0/70152/052ef673-8267-a436-158c-f1cf1b5318ea.png)


## 任意: アカウントのアイコンを変更する 
Launcher から`System Settings` をクリックします。
左側のペインから`Account Details` をクリックし、アカウントの画像を変更してください(画面を見れば感覚的にわかると思うので詳細は割愛します)。

## 【実施不要】Launcher (スタートメニュー)起動キーの設定(ksuperkey) 
※最近のArch Linux ではこの事象は解消されているので実施不要。備忘録として残しておきます。

KDE では標準でLauncher(スタートメニュー)を開くためにショートカットキーとして`Alt + F1` が標準で割り当てられています。
`Alt + F1` では使用しにくいので、今回はmeta key(Windows 用のキーボードで窓のマークのキー) を押すことでLauncher を起動するようにキーを割り当てます。

- ksuperkey
    - http://kde-apps.org/content/show.php?content=154569

`ksuperkey` は公式のリポジトリから取得することができるようになっています。


```console:ksuperkeyのインストール
# pacman -S ksuperkey
```


インストールが完了したら、`ksuperkey` コマンドを実行します。


```console
# ksuperkey
```


コマンドを実行したら、meta key を押下してみて、Launcher が起動することを確認してください。
内部的にはmeta key を押下して約500msec 以内にmeta key を離すと`Alt + F1` と同じキーが送られ、Launcher が起動するようになっています。
これは単純に`Alt + F1` を送信するだけなので、例えば事前にショートカットキーの設定でLauncher の起動を`Alt + F1` 以外に割り当てていた場合、起動しないので注意してください。
また、標準ではmeta key を押下してから500ms 以内に離すとLauncher が起動し、それ以上押しっぱなしの場合は今までのmeta key (ショートカットキーの組み合わせの一部のkey)として使用することができます。
このタイムリミットを変更したい場合は`-t` オプションを使用して`ksuperkey -t 300ms` といったように、キーを話すまでの時間を変更することができます。

次に ksuperkey がKDE 起動時に実行されるように登録します。
KDE にログインするユーザのHOME ディレクトリ配下に以下のファイルを作成します。


```console:~/.config/autostart/ksuperkey.desktop
$ cat << EOF > ~/.config/autostart/ksuperkey.desktop
[Desktop Entry]
Exec=ksuperkey
Icon=system-run
Path=
Terminal=false
Type=Application
EOF
```


ファイルを作成したら再ログインし、meta key でLauncher が起動することをテストしてみてください。

## 【実施不要】HHKB (キーボード)で右◇でランチャーが起動するようにする(キーバインドの変更) 
※最近のArch Linux ではこの事象は解消されているので実施不要。備忘録として残しておきます。

特殊なシチュエーションですが、自分はHHKB の`右◇` キーにmeta キーを割り当てています。
しかしArch Linux で`右◇` キーを押下してもLauncher が起動しませんでした。
そこで、問題なく動作している他のキーボードをArch Linux に接続し、meta キーのキーコードを取得、同様にHHKB の`右◇`のキーコードを取得し比較してみることにしました。
すると問題なく動いているキーボードでは`134(Super_L)`が取得できたのに対し、うまく動かなかったHHKB の`右◇`は`133(Super_R)` が割り当てられていることが確認できました。
そこで、ここではうまく動いている方のキーコードに合わせHHKB の`右◇` も`134(Super_L)` に割り当てれば解決するはずなので、`134(Super_L)`を割り当てるように設定をしていきます。

- 参考) Xmodmap でお好みのキーバインド
    - http://bearmini.hatenablog.com/entry/2013/07/12/161637

`~/.Xmodmap` ファイルを作成し、以下の内容を書きます。


```text:~/.Xmodmap
remove mod4 = Super_R
keycode 134 = Super_L NoSymbol Super_L
```


ファイルを作成したら`xmodmap` コマンドを実行し、`右◇` キーを押下してKDE メニューが開くことを確認してください。

```console:xmodmap
$ xmodmap ~/.Xmodmap
```


本設定は再ログインしたときにはリセットされてしまうので、ログインしたときに`xmodmap` コマンドが自動的に走るように設定します。

ここでは先ほど紹介したksuperkey を使用している想定でログインしたときに`xmodmap` コマンドが実行されるようにします。
`ksuperkey.desktop` ファイルに`xmodmap` コマンドを追加します。


```console:~/.config/autostart/ksuperkey.desktop
$ cat << EOF > ~/.config/autostart/ksuperkey.desktop
[Desktop Entry]
Exec=xmodmap ~/.Xmodmap && ksuperkey
Icon=system-run
Path=
Terminal=false
Type=Application
EOF
```


これでログインしたときに自動的に`xmodmap` コマンドが実行されるようになりました。

## 任意: マシン起動時もしくは終了時にプロセスの起動・停止が極端に遅い問題を解消するためにwatch dog タイマーを導入する 
マシン起動時、もしくは終了時に以下のようなメッセージが出力されて、起動/停止に数分以上待たされることがあります。この現象はwatch dog タイマーを導入してハングアップしているプロセスを定期的に検出して例外処理を行わせてあげることで解消することがあります。


```console:エラー時のメッセージ例
[  ***] A start job is running for ......
[  ***] A stop job is running for ......
```


watch dog は公式リポジトリからインストールできます。


```console:watchdogのインストールと起動設定
# pacman -S watchdog
# systemctl enable watchdog.service
# systemctl start watchdog.service
```


watch dog でタイムアウト検出するための値を設定します。この値については正解を述べることは難しいので、自己責任でお願いします。


```console:/etc/systemd/system.conf
DefaultTimeoutStartSec=15s
DefaultTimeoutStopSec=15s
```


- 参考
    - https://www.reddit.com/r/archlinux/comments/4bawf7/a_stop_job_is_running_for_session_c2_of_user/d17th3u

## 任意: dotfiles のインストール 
自分用のdotfiles 等がある人はそれもインストールしちゃいましょう。
自分の場合は以下のコマンドでインストールできるようにしているので、以下のコマンドを実行して再ログインして完了です。


```text:実行するときはrootユーザではなく、dotfilesをインストールしたいログインユーザにて実施
$ bash <(curl -o- https://raw.githubusercontent.com/TsutomuNakamura/dotfiles/master/install.sh)
```


自作のdotfiles はzsh をメインに作成されているので、ログインシェルをzsh に切り替えることも忘れずに実施します。


```text
# usermod -s /bin/zsh tsutomu
```


## 日本語フォントのインストール 
日本語フォントをインストールして、Web ブラウザなどで綺麗に日本語を表示させましょう(自分の場合はdotfiles をインストールするときに自動的にフォントもダウンロードしてくるので今回はこの作業は不要)。
日本語のフォントとして個人的におすすめなのは
* M+ フォント (or Ricty系)
* IPA フォント
* 源ノ角
あたりです。

IPA フォントと源ノ角フォントはリポジトリからインストールできるので、以下のコマンドを実行するだけです。


```text
pacman -Sy adobe-source-han-sans-jp-fonts otf-ipafont
```


M+ フォントはダウンロードサイト(https://ja.osdn.net/projects/mix-mplus-ipa/) からzip ファイルをダウンロード(例: migu-1m-YYYYMMDD.zip)してきて、中身をログインユーザのホームディレクトリは以下`~/.local/share/fonts` に置いて以下のコマンドを実行します。


```text
$ ~/.local/share/fonts
※Ricty 系のフォントも同じ手順です
```


なお、英語フォントではInconsolata が個人的にお勧めで、vim やtmux のairline で使用するパッチ適用済みフォントは以下の場所からダウンロードできます。
- https://github.com/ryanoasis/nerd-fonts
これらのフォントもM+ とかと同様にユーザのホームディレクトリ配下のfonts ディレクトリに置いてfc-cache コマンドを実行すればOK です。

# 日本語入力IME: Mozc のインストール 

```text:参考
http://note.kurodigi.com/post-0-19/
```

今回はfcitx-mozc をインストールして日本語入力ができるようにします。
`fcitx-mozc` とそれに関するパッケージをインストールします。


```console:installfcitx-mozc
# pacman -S fcitx-im fcitx-configtool fcitx-mozc
```


`fcitx-mozc` を使用する各ユーザの環境変数を`~/.xprofile`設定します。


```text:~/.xprofile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
```


設定が完了したら、一度ログアウトして再度ログインします。

Input Method としてMozc を追加します。
右下のタスクトレイからキーボードのマークを右クリックし、`Configure` をクリックします。
![MozcForArch0000.png](https://qiita-image-store.s3.amazonaws.com/0/70152/a1a0d107-e1e0-075e-6438-52e77ca84274.png)

左下の`+` マークをクリックします。
![MozcForArch0001.png](https://qiita-image-store.s3.amazonaws.com/0/70152/ef61e300-cfaa-6428-69d7-11b7664cb965.png)

Mozc を検索し、選択し、OK をクリックします。
![MozcForArch0002.png](https://qiita-image-store.s3.amazonaws.com/0/70152/2b4295ef-bbf4-3399-440e-55e66ab64a6a.png)

Input Method としてMozc が表示されるようになれば追加完了です。
もし使っているキーボードが完全に日本語配列のキーボードである場合、English のキーボードは不要なので`-` をクリックしてEnglish のキーボードは削除してください。

## 半角/全角キーで全角日本語と半角英数字の入力をきりかえられるようにする(日本語キーボードの場合は不要) 
デスクトップの右下のタスクバーからキーボードのマークを右クリックし、`Configure` をクリックします。
`Input Method Configuration` ウィンドウが出てきたら`Global Config` タブをクリックし、`Trigger Input Method` をクリックして、英字キーボードと日本語キーボードの切り替えに使用するHotKey を設定します。
自分の環境では`Alt + `` に設定しておきました。

![MozcForArch0004.png](https://qiita-image-store.s3.amazonaws.com/0/70152/896fa141-3232-1522-8a11-083312ee3794.png)

# ショートカットのカスタマイズ 
必要に応じてショートカットキーのカスタマイズを行います。

## KDE 全般のショートカットのカスタマイズ 
KDE の`メニュー` -> `System Settings` -> `Shortcuts` 


* 編集するショートカット一覧
<table><tbody>
  </tr>
  <tr>
    <th> ショートカット名</th>
    <th> 変更前</th>
    <th> 変更後</th>
    <th> 変更できる場所</th>
    <th> 備考</th>
  </tr>
  <tr>
    <td> Run Command</td>
    <td> Alt + Space</td>
    <td> Meta + R</td>
    <td> Global Shortcuts -> Run Command -> Run Command</td>
    <td> ウィンドウのポップアップメニューのために退避する</td>
  </tr>
  <tr>
    <td> Walk Through Windows of Current Application</td>
    <td> Alt + `</td>
    <td> Alt + &#x7c;</td>
    <td> Global Shortcuts -> KWin -> Walk Through Windows of Current Application</td>
    <td> 開いているアプリケーションを切り替えるショートカット。Alt + Tab で使えるのでこちらは退避</td>
  </tr>
  <tr>
    <td> Window Operations Menu</td>
    <td> Alt + F3</td>
    <td> Alt + Space</td>
    <td> Global Shortcuts -> KWin -> Window Operations Menu</td>
    <td> Web ブラウザやエクスプローラでサイズの変更や移動をするポップアップメニューを出すショートカット</td>
  </tr>
  <tr>
    <td> Move Zoomed Area Downwards</td>
    <td> Meta + Down</td>
    <td> None</td>
    <td> Global Shortcuts -> KWin -> Move Zoomed Area Downwards</td>
    <td> 使わないので削除</td>
  </tr>
  <tr>
    <td> Move Zoomed Area to Left</td>
    <td> Meta + Left</td>
    <td> None</td>
    <td> Global Shortcuts -> KWin -> Move Zoomed Area to Left</td>
    <td> 使わないので削除</td>
  </tr>
  <tr>
    <td> Move Zoomed Area to Right</td>
    <td> Meta + Right</td>
    <td> None</td>
    <td> Global Shortcuts -> KWin -> Move Zoomed Area to Right</td>
    <td> 使わないので削除</td>
  </tr>
  <tr>
    <td> Move Zoomed Area Upwards</td>
    <td> Meta + Up</td>
    <td> None</td>
    <td> Global Shortcuts -> KWin -> Move Zoomed Area Upwards</td>
    <td> 使わないので削除</td>
  </tr>
  <tr>
    <td> Quick Tile Window to the Bottom</td>
    <td> None</td>
    <td> Meta + Down</td>
    <td> Global Shortcuts -> KWin -> Quick Tile Window to the Bottom</td>
    <td> 現在アクティブなウィンドウを下側に詰めるショートカット</td>
  </tr>
  <tr>
    <td> Quick Tile Window to the Left</td>
    <td> None</td>
    <td> Meta + Left</td>
    <td> Global Shortcuts -> KWin -> Quick Tile Window to the Left</td>
    <td> 現在アクティブなウィンドウを左側に詰めるショートカット</td>
  </tr>
  <tr>
    <td> Quick Tile Window to the Right</td>
    <td> None</td>
    <td> Meta + Right</td>
    <td> Global Shortcuts -> KWin -> Quick Tile Window to the Right</td>
    <td> 現在アクティブなウィンドウを右側に詰めるショートカット</td>
  </tr>
  <tr>
    <td> Quick Tile Window to the Top</td>
    <td> None</td>
    <td> Meta + Up</td>
    <td> Global Shortcuts -> KWin -> Quick Tile Window to the Top</td>
    <td> 現在アクティブなウィンドウを上側に詰めるショートカット</td>
  </tr>
</tbody></table>

上記のショートカットを設定済みのテキストデータがあるので、System Settings のShortcuts からインポートすることができます。
    - https://gist.github.com/TsutomuNakamura/f52dfe162bf1dbf8c10369c2c5ca88a9

## CapsLock とCtrl キーの入れ替え 
CapsLock とCtrl キーの入れ替えを実施します。
`System Settings -> Input Devices -> Advanced -> Ctrl position -> Swap Ctrl and Caps Lock` を選択し、Apply キーを押下します。

# 参考 

- UEFI パーティション
    - https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#EFI_System_Partition

- EFI System Partition (Secure Boot を実現するにはこれを作成する必要がある)
    - https://wiki.archlinux.org/index.php/EFI_System_Partition

    - Master Boot Record
- https://wiki.archlinux.org/index.php/GUID_Partition_Table

    - GUID Partition Table
- https://wiki.archlinux.org/index.php/Master_Boot_Record

    - gdisk でEFI パーティションを作成する
- https://bbs.archlinux.org/viewtopic.php?id=157652

- UEFI でArch Linux をインストールする手順
    - http://archlinux-blogger.blogspot.jp/2016/03/arch-linux-uefi-gpt-xfs.html

- grub を使用してUEFI boot を設定する
    - http://opamp.hatenablog.jp/entry/2013/10/30/233548

- VMware に Arch Linux をインストール
    - https://wiki.archlinuxjp.org/index.php/VMware_%E3%81%AB_Arch_Linux_%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

- UEFI のboot エントリを削除する
    - http://askubuntu.com/questions/63610/how-do-i-remove-ubuntu-in-the-bios-boot-menu-uefi

- [SOLVED] Timed out waiting for device sys-subsystem-net-devices-
    - https://bbs.archlinux.org/viewtopic.php?id=166607