概要

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

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

前提条件

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

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

USB ディスクを作成する

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

# 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

  • UEFI ブートの場合のPOST 画面
    InstallArch_POST0002.png

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

パーティションを作成する

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

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

  • パーティション構成
    partition size file system mount point
    /dev/sda1 512MiB vfat /boot/efi
    /dev/sda2 512MiB ext4 /boot
    /dev/sda3 256 GB (残り全部) xfs /

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

UEFI について簡単に理解する

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

$ 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

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

パーティションを作成する

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

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

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

フォーマット

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

フォーマット
# 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 ディレクトリへマウントしていきます。

mount
# mount /dev/sda3 /mnt
# mkdir /mnt/boot
# mount /dev/sda2 /mnt/boot
# mkdir /mnt/boot/efi
# mount /dev/sda1 /mnt/boot/efi

Arch Linux のインストール

mirror の選択

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

/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 を使用するので、grub の関連するパッケージもインストールしておきます。

pacstrap(grubを使う場合の例)
# pacstrap /mnt base base-devel grub dosfstools efibootmgr

fstab の作成

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

genfstab
# genfstab -U /mnt >> /mnt/etc/fstab

ファイルシステムへchroot

arch-chroot コマンドを使用して作業場所のroot を変更します。

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 のコマンドを実行します。

/etc/locale.gen
...
en_US.UTF-8 UTF-8
...
ja_JP.UTF-8 UTF-8
...
locale-gen
# locale-gen

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

/etc/locale.conf
LANG=en_US.UTF-8

time zone

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

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 向けに作成されてしまっている。本手順は不要!?

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

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

# hwclock --systohc --utc

Initramfs

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

mkinitcpio
# mkinitcpio -p linux

boot loader のインストール

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

# 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 が起動することを確認します。

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

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

hostname の設定

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

/etc/hostname
arch

ネットワークの設定

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

有線LANの設定(DHCP)

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

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

有線LANの設定(固定IP)

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

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

# vi ens33
/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')

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

netctl
# netctl enable <profile>
↓ ↓ ↓
# netctl enable ens33

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

無線LAN の設定

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

# pacman -S iw wpa_supplicant dialog

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

NetworkManagerを起動する
# systemctl enable NetworkManager
# systemctl start NetworkManager

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

補足: 無線LAN アンテナの情報について取得する(マイナーな無線LAN カードのドライバ調査)

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

- Installing driver/firmware

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

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

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

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

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

# modinfo iwlwifi
......

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

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

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

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

一般ユーザ(管理者権限あり)の作成

後々デスクトップをインストールした時にログインするためのユーザを作成しておきます。

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 ファイルにColorILoveCandy のを追加します。

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

KDE を導入する

任意: KDEを入れる前に、NVIDIA のグラフィクスカードを搭載しているマシンでNVIDIA 専用のドライバを使用する

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

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

グラフィクスカードの特定

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

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番台で形式がだいたい同じっぽいことがわかります。

ドライバのダウンロード

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

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

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

  • nvidia パッケージのインストール # 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 ドライバがブラックリスト化(新しくインストールしたり、利用したりしないようにすることだと思う)されるので、それを反映させるために一旦再起動してください。

# shutdown -r now

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

# 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 をインストールする

# pacman -S plasma-meta

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

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 のインストールが完了したら、追加で以下のパッケージを入れておきます。

# pacman -S mesa-libgl xorg

任意: Intel 内臓グラフィクスを利用する場合、追加でインストールするパッケージ

Intel 内臓のグラフィクスを使用している場合、追加でxf86-video-intel をインストールしてください。

# pacman -S xf86-video-intel

任意: Nvidia グラフィクスカードを利用していて、Xorg の設定をする場合

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

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

# nvidia-xconfig

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

/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 に記述するのが良いでしょう。

任意: VMWare 環境で動かしている場合、open-vm-tools のインストール

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

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

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

vmtoolsdのdaemon設定
# systemctl enable vmtoolsd
# systemctl start vmtoolsd

sddm の設定ファイル作成

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

sddm.conf
# sddm --example-config > /etc/sddm.conf

任意: sddm のログイン画面テーマの設定

テーマを自分のお気に入りのbreeze に変更します。

/etc/sddm.conf
......
[Theme]
Current=breeze
......

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

enablesddm
# systemctl enable sddm

その他必要なパッケージのインストール

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

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

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

# shutdown -r now

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

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

デスクトップ環境のカスタマイズ

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

Web ブラウザのインストール

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

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

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

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

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

補足)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")に変更します。

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

任意: スクリーンロック画面の設定

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

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

System Settings -> Desktop Behaivior(Workspace内) -> Screen Locking(左ペイン内)

をクリックし、Screen Locking メニューを開きます。
Lock screen automatically after: にチェックを入れ、30 mins を設定します。
InstallArch_0000.png

次に背景色を変更します。Activation タブからWallpaper Type: Plain Color を選択し、Color は#333333 としました。
また、Lock screen をクリックして、スクリーンロック画面を出すためのコマンドをMeta + L(Windows と同じ)にしておくのも良いでしょう。
設定が完了したらApply ボタンを押下します。
InstallArch_0001.png

任意: アカウントのアイコンを変更する

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

【実施不要】Launcher (スタートメニュー)起動キーの設定(ksuperkey)

※最近のArch Linux ではこの事象は解消されているので実施不要。備忘録として残しておきます。

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

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

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

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

# 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 ディレクトリ配下に以下のファイルを作成します。

~/.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 ファイルを作成し、以下の内容を書きます。

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

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

xmodmap
$ xmodmap ~/.Xmodmap

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

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

~/.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 タイマーを導入してハングアップしているプロセスを定期的に検出して例外処理を行わせてあげることで解消することがあります。

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

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

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

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

/etc/systemd/system.conf
DefaultTimeoutStartSec=15s
DefaultTimeoutStopSec=15s

任意: dotfiles のインストール

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

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

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

# usermod -s /bin/zsh tsutomu

日本語フォントのインストール

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

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

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 に置いて以下のコマンドを実行します。

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

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

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

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

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

installfcitx-mozc
# pacman -S fcitx-im fcitx-configtool fcitx-mozc

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

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

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

Input Method としてMozc を追加します。
右下のタスクトレイからキーボードのマークを右クリックし、Configure をクリックします。
MozcForArch0000.png

左下の+ マークをクリックします。
MozcForArch0001.png

Mozc を検索し、選択し、OK をクリックします。
MozcForArch0002.png

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

半角/全角キーで全角日本語と半角英数字の入力をきりかえられるようにする(日本語キーボードの場合は不要)

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

MozcForArch0004.png

ショートカットのカスタマイズ

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

KDE 全般のショートカットのカスタマイズ

KDE のメニュー -> System Settings -> Shortcuts

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

上記のショートカットを設定済みのテキストデータがあるので、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 キーを押下します。

参考

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.