Arch Linux + Xfce 快適環境を構築したときのログ

更新: 2021 年版の Arch Linux インストール記事 を書きました。下記の情報は古くなっていますのでご注意下さい。

自宅の Arch Linux 環境を一新したくなったので、再インストールがてら手順を記事にしてみました。どなたかの参考になれば幸いです。

Arch Linux とは

Arch Linux は、x86_64 向けに独自に開発された、あらゆる用途に対応できる万能 GNU/Linux ディストリビューションです。その開発は、シンプリシティ、ミニマリズム、およびコードの簡潔性に焦点を当てています。Arch は最小限の基本システムの状態でインストールされ、ユーザー自身が、ユーザーの理想とする環境のために必要なものだけをインストールして構築することができます。 Arch Linux - ArchWiki

Arch Linux はこんな人におすすめな Linux です。

  • 常に最新バージョンを使いたい
  • 余計なソフトウェアは入れたくない
  • もっと Unix 系 OS の操作に慣れたい
  • でも Gentoo Linux みたいに全部ビルドするのは面倒

逆にこんな人には向いてないかもしれません。

  • 他力本願寺
  • 安定しているサーバー用の OS を求めている
  • 全部自分でやるの面倒
  • 英語を読む気が更々ない

Arch Linux のインストールは例えるなら「自作 PC 〜 OS 編 〜」といったところでしょうか。 OS のインストール直後でも GUI すらありません。全部自分で選択してインストールするのです。

インストールする環境

UEFI が使えるマザーボードが乗っかった x86_64 PC にインストールします。

Intel の CPU と NVIDIA の GPU を使用しています。

ストレージの構成は以下の通りです。

/dev/nvme0n1       <- Windows が入っている M.2 接続 NVMe SSD
|- /dev/nvme0n1p1  <- リカバリ用パーティション
|- /dev/nvme0n1p2  <- EFI パーティション
|- /dev/nvme0n1p3  <- よくわからんパーティション
|- /dev/nvme0n1p4  <- C ドライブ用パーティション
`- /dev/nvme0n1p5  <- リカバリ用パーティション

/dev/sda           <- データ保存用 SATA 接続ハードディスク
|- /dev/sda1       <- よくわからんパーティション
`- /dev/sda2       <- NTFS フォーマットのデータ用パーティション

/dev/sdb           <- Arch Linux をインストールする SATA 接続 SSD

今回は /dev/sdb に Arch Linux をインストールします。各自の環境で読み替えてください。

メモリは 32 GB あるのでスワップパーティションは作りません。

また、インターネット環境が必須です。自分の環境は有線インターネットで、 IP アドレスは DHCP で自動構成されます。

インストールする前に

心構え

基本的に インストールガイド - ArchWiki に従ってインストールしていきます。スマートフォンなどで開いておきましょう。

この記事と環境が違う時や、分からなくなった時はまず最初に自分で調べてください。 ArchWiki は非常に充実しており、大体のことが載っています。また、 Google なども適宜活用してください。

Arch Linux のインストールは慣れていないとすごく疲れます (Gentoo Linux ほどではないですが) 。根気よくこなしていきましょう。試行錯誤して自分に最適なシステムを構築したら天国です。

読み方

基本的には ヘルプ:読み方 - ArchWiki に従います。

行頭が # で始まっているコマンドは root で実行するコマンドです。行頭が $ で始まっているコマンドは通常ユーザーで実行するコマンドです。

# mkinitcpio -p linux
$ makepkg -si

ファイル編集において、変更箇所を diff 形式で表す場合があります。先頭がマイナス (-) になっている行は削除行、先頭がプラス (+) になっている行は追加行を表します。

-LANG=en_US.UTF-8
+LANG=ja_JP.UTF-8

また、この記事においてテキストファイルを編集するときは宗教戦争を避けるため nano コマンドで編集するように表記します。

# nano /etc/pacman.conf

もちろん vim なんかを使ってもらっても全然構いません。 emacs  でも OK です。 emacs はライブ環境にデフォルトで入っていないのでご了承ください。自分で調べてインストールしましょう。そういうことです。

1. ライブ環境の起動

1.1. ライブ USB の作成

最初に Arch Linux をダウンロードします。ダウンロードページから ISO ファイルをダウンロードして光ディスクに焼くか、 USB メモリに直接書き込みます。光ディスクはかなり遅いので、 USB 3.0 以上対応の USB メモリに書き込むのがおすすめです。

自分は既存の Linux 環境から USB メモリに書き込みました。コンピュータに USB メモリを挿して、どのデバイスファイルが USB メモリかを確認します。

$ fdisk -l

おそらく、 /dev/sda とか /dev/sdb とか /dev/sdc とかが USB メモリだと認識されていると思います。自分の環境では /dev/sdc でした。

どのデバイスファイルが USB メモリか分かったら、 dd コマンドを使用して ISO イメージを USB メモリに書き込みます。 USB メモリ内のデータは全て失われるので注意してください。 /dev/sdc の部分は USB メモリのデバイスファイルです。各自の環境に合わせて変更してください。これを間違えると他のストレージのデータが全て失われます。 Enter キーを押す前にもう一度よく確認してください。

# dd if=/path/to/archlinux.iso of=/dev/sdc status=progress && sync

これで USB メモリがブータブルになりました。

Windows とかの人は頑張ってください。

1.2. ライブ環境の起動

この USB メモリを、 Arch をインストールするコンピュータに挿して起動し、ブートメニューで USB メモリを選び起動します。 UEFI 環境の人は必ず UEFI モードで起動しましょう。

以下のようなシェルが立ち上がったらライブ環境の起動は完了です。

ここからコマンドをゴリゴリ叩いてインストール作業を行います。

1.3. ライブ環境の設定

この後の作業を進める前に、キーボードとインターネットの設定を行います。

デフォルトのキーボードレイアウトは US 配列になっています。日本語キーボードの配列に変更するには、以下のコマンドを実行します。

# loadkeys jp106

キーボードレイアウトが一致していないと、記号の入力で大変なことになるので、環境に合わせて実行するようにしましょう。この設定は起動毎にリセットされます。

次にインターネットへの接続ですが、ライブ環境の起動後は DHCP クライアントが動いているので、有線接続の PC ならすでに接続可能になっていることが多いです。以下のコマンドでインターネット接続を確認することができます。

# ping -c4 archlinux.jp

接続できない場合は ArchWiki などを参考に設定を行ってください。

2. パーティションを切る

2.1. UEFI モードの確認

パーティションを切る前に、システムが UEFI モードで立ち上がっているかどうかを確認します。

# ls /sys/firmware/efi/efivars

コマンド名やパス名は Tab キーで補完できます。 UEFI モードで起動している場合、 /sys/firmware/efi/efivars ディレクトリの内容が表示されるはずです。

No such file or directory (そのようなファイルやディレクトリはありません) と出た場合、 UEFI モードではなく BIOS モードで起動しています。

UEFI モードと BIOS モードでパーティションの切り方やブートローダーの構成は異なります。この記事では UEFI モードでの手順を説明します。

2.2. パーティションテーブルの作成

最初に、 Arch Linux をどのストレージにインストールするのかを確認します。以下のコマンドを実行すると、システムに接続されているストレージが全て表示されます。

# fdisk -l

スクロール量が多すぎて全体を見れないときは less にパイプしましょう。

# fdisk -l | less

自分の環境では /dev/sdb にインストールするものとします。

次に、ディスクを初期化してパーティションテーブルを作成します。パーティションテーブルは MBR と GPT の 2 種類ありますが、今回は UEFI 環境に最適な GPT でパーティションテーブルを作成します。以下のコマンドを実行してパーティショニングを行います。

# cgdisk /dev/sdb

上下キーでパーティションの選択、左右キーで操作の選択、 Enter キーで操作の実行を行うことができます。

すでに何かしらのパーティションが存在していたら、一旦全部削除しましょう。パーティションが free space のみの状態からスタートします。

1 つめのパーティションは、 /boot 用の EFI システムパーティションを作ります。 New を実行し、 First sector は Enter キーを押してデフォルトの値を使用します。 Size in sectors512M と入力します。 Hex code or GUIDef00 を入力し、 EFI System に設定します。 Enter new partition name はお好みで。自分は EFI System にしました。

2 つめのパーティションは、 / (ルート) 用の Linux パーティションを作ります。後ろの方の free space を選択し、 New を実行します。 First sectorSize in sectors は Enter キーを押してデフォルトの値を使用します。 Hex code or GUID8300 を入力し、 Linux filesystem に設定します。 Enter new partition name はお好みで Linux filesystem にしました。

これで、パーティションは以下のようになったと思います。

Part. #SizePartition TypePartition Name
1007.0 KiBfree space
1512.0 MiBEFI System (ef00)EFI System
2(残り全て)Linux filesystem (8300)Linux filesystem

問題が無いようなら、 Write を実行してパーティションテーブルを書き込みます。対象ストレージの内容が全て失われるため確認入力がありますが、構わず yes と入力します。書き込みが完了したら Quit で終了します。

パーティションを見るときは、以下のコマンドを実行します。

# fdisk -l /dev/sdb

/dev/sdb の中に /dev/sdb1/dev/sdb2 が作られ、パーティショニングができていることを確認できました。

2.3. パーティションのフォーマット

パーティションテーブルの作成が終わったら、各パーティションをフォーマットし、ファイルシステムを構築します。

EFI システムパーティション (/dev/sdb1) は FAT32 形式でフォーマットします。

# mkfs.fat -F32 /dev/sdb1

Linux パーティション (/dev/sdb2) は ext4 形式でフォーマットします。

# mkfs.ext4 /dev/sdb2

2.4. パーティションのマウント

フォーマットが終わったら、 2 つのパーティションを /mnt にマウントします。

最初にルートパーティションである Linux パーティションをマウントします。

# mount /dev/sdb2 /mnt

次に、 EFI システムパーティション用のディレクトリを作ってからマウントします。

# mkdir /mnt/boot
# mount /dev/sdb1 /mnt/boot

正しくマウントが行われているかどうかは以下のコマンドで確認できます。

# lsblk /dev/sdb

これで、 /mnt 経由でファイルシステムの中身を操作できるようになりました。

3. システムのインストール

3.1. システムクロックの調整

まず、 NTP を用いてシステムクロックを合わせます。

# timedatectl set-ntp true

3.2. ミラーの選択

次に、 /etc/pacman.d/mirrorlist を編集して、ミラー (パッケージのダウンロード先) を選択します。位置的に近い日本国内のミラーを 2 つほどコピーし、リストの上の方へペーストしましょう。日本以外のミラーを全て削除してしまうのも一つの手です。

# nano /etc/pacman.d/mirrorlist
mirrorlist
 ##
 ## Arch Linux repository mirrorlist
 ## Filtered by mirror score from mirror status page
 ## Generated on ****-**-**
 ##

+## Japan
+Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch
+## Japan
+Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch

 ## Taiwan
 ## ...

3.3. パッケージのインストール

いよいよシステムのインストールです。 linux カーネル、必要最低限の base パッケージグループと base-devel パッケージグループをインストールします。

# pacstrap /mnt linux base base-devel

もし、これに加えてパッケージをインストールしたいなら、スペース区切りで列挙することで一緒にインストールすることができます。自分は neovim を追加でインストールしました。パッケージは後からでも追加インストールできるのでここでは最低限必要なもののみに留めておきましょう。

# pacstrap /mnt linux base base-devel neovim

pacstrap は時間がかかる可能性があります。気長に待ちましょう。ギガビット回線なら大体 1 分くらいで終わります。

4. システムの初期設定

4.1. fstab の生成

パーティションがどのようにマウントされるのかを記述する fstab を生成します。

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

4.2. chroot

fstab の生成後、新しくインストールしたシステムに chroot します。これで、 /mnt/ として扱うことができます。

# arch-chroot /mnt

ここから、システムの設定を行っていきます。

4.3. 時計の設定

最初にタイムゾーンの設定を行います。ここでは Asia/Tokyo に設定します。

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

ハードウェアクロックの設定を行います。

# hwclock --systohc --utc

4.4. ロケールの設定

/etc/locale.gen を編集して、ロケールを設定します。 en_US.UTF-8 UTF-8 の行と ja_JP.UTF-8 UTF-8 の行をコメント解除しておきましょう。

# nano /etc/locale.gen
locale.gen
 # ...
 #en_SG ISO-8859-1
-#en_US.UTF-8 UTF-8
+en_US.UTF-8 UTF-8
 #en_US ISO-8859-1
 # ...
 #ja_JP.EUC-JP EUC-JP
-#ja_JP.UTF-8 UTF-8
+ja_JP.UTF-8 UTF-8
 #ka_GE.UTF-8 UTF-8
 # ...

編集が終わったら以下のコマンドを実行してロケールを生成します。

# locale-gen

メインのロケールを /etc/locale.conf に書きます。セットアップ中は英語にしておくと便利です。

# echo LANG=en_US.UTF-8 > /etc/locale.conf

日本語キーボード配列を使っているなら、コンソールキーマップを設定します。

# echo KEYMAP=jp106 > /etc/vconsole.conf

4.5. コンピュータ名の設定

コンピュータ名を /etc/hostname に書き込みます。ここで名前は myhostname としています。

# echo myhostname > /etc/hostname

/etc/hosts にも書き込みます。

# nano /etc/hosts
hosts
127.0.0.1 localhost
::1       localhost
127.0.0.1 myhostname.localdomain myhostname

4.6. ネットワークの設定

ライブ環境ではデフォルトで DHCP クライアントが動いておりネットワーク接続が可能でしたが、新規にインストールされたシステムではネットワーク接続がデフォルトで有効になっていません。

ネットワークを設定する方法はいくつかありますが、ここでは systemd-networkd を使用した有線アダプタによるネットワーク接続の設定をします。

まず有線アダプタのデバイス名を確認します。

# networkctl list

lo はループバックデバイスで、 enp で始まるデバイスは有線アダプタです。自分の環境では enp0s31f6 でした。

デバイス名を確認したら、 /etc/systemd/network/20-wired.network に設定を記述します。

# nano /etc/systemd/network/20-wired.network
20-wired.network
[Match]
Name=enp0s31f6

[Network]
DHCP=ipv4

IP アドレスを固定する場合は、以下のように設定します。ネットワーク環境に合わせて各自で設定を変更してください。

20-wired.network
[Match]
Name=enp0s31f6

[Network]
Address=192.168.1.123/24
Gateway=192.168.1.254
DNS=192.168.1.2
DNS=8.8.8.8

2 つのネットワークサービスの有効化 (スタートアップに登録) を行います。

# systemctl enable systemd-networkd
# systemctl enable systemd-resolved

これで次回システムの起動時に自動で systemd-networkd サービスと systemd-resolved サービスが立ち上がるようになります。

4.7. initramfs の生成

ネットワーク設定が終わったら、 Linux の起動に必要である initramfs を生成します。

# mkinitcpio -P

4.8. root のパスワード設定

root アカウントのパスワードを設定します。 root 権限はシステムのあらゆるものに効力が及ぶので、十分セキュアなパスワードを設定することをお勧めします。

# passwd

4.9. ブートローダーの設定

最後にブートローダーの設定を行います。 UEFI 環境では systemd-boot を使うのが一番シンプルです。

まずブートローダーをインストールします。

# bootctl --path=/boot install

次にブートローダーの設定を行います。 /boot/loader/loader.conf を編集します。

# nano /boot/loader/loader.conf
loader.conf
default arch
timeout 3
editor  no

ブートローダーのエントリを /boot/loader/entries/arch.conf に作成します。

# nano /boot/loader/entries/arch.conf
arch.conf
title   Arch Linux
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
options root=PARTUUID=********-****-****-****-************ rw

********-****-****-****-************ の部分は、以下のコマンドで確認できます。

# blkid -s PARTUUID -o value /dev/sdb2

/dev/sdb2 の部分にはルートパーティションを指定します (/boot のパーティションではありません) 。

最後にプロセッサのマイクロコードをインストールします。

# pacman -S intel-ucode

4.10. 再起動

お疲れ様でした。以下のコマンドを実行して chroot 環境から抜けます。

# exit

そして以下のコマンドでマシンを再起動します。

# reboot

ブートメニューで Linux Boot Manager を選択して、 Arch Linux が正常に起動したらシステムのベースのインストールは完了です。ユーザー名を root 、パスワードは設定したパスワードを入力してログインしておきます。

5. インストール後の設定

5.1. ネットワークの設定の続き

systemd-resolved を使用しているので、 DNS の名前解決設定ファイルのシンボリックリンクを張ります。これをやっておかないと gpg や dig などのツールが正しく動作しません。

# mv /etc/resolv.conf /etc/resolv.conf.org
# ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

5.2. 通常ユーザーの作成

ずっと root で作業するのは危ないので、ユーザーを作成し、パスワードを設定します。

# useradd -m -g wheel myusername
# passwd myusername

myusername のところは好きなものに変えてください。これで管理者グループである wheel グループに所属するユーザーを作成できました。

続いて、 wheel グループに sudo 権限を与えるために sudoers ファイルの編集を行います。 nano の部分はお好みのエディタで。 # %wheel ALL=(ALL) ALL の部分をコメント解除しておきましょう。

# EDITOR=nano visudo
sudoers
 ## Uncomment to allow members of group wheel to execute any command
-# %wheel ALL=(ALL) ALL
+%wheel ALL=(ALL) ALL

編集が終わったら、以下のコマンドで root からログアウトします。

# logout

ログアウトしたら、先ほど作成したユーザーでログインしておきましょう。

5.3. AUR ヘルパーのインストール

Arch Linux のパッケージは pacman というパッケージマネージャで管理することができます。 pacman 自体は base パッケージグループに含まれているのですぐ使えます。

公式リポジトリにあるパッケージは pacman を使ってインストールすることになりますが、非公式のコミュニティによるリポジトリ (AUR: Arch User Repository) にあるパッケージは pacman のみで簡単に管理することができません。

そこで、 AUR から簡単にパッケージを入れられるようにするため AUR ヘルパーを導入します。

一昔前なら pacaurAURyaourtAUR を使うのが定番でしたが、どちらもメンテナンスされなくなってしまいました。今時の AUR ヘルパーは yayAUR が一番高機能らしいのでこれを使うことにします。

最初に、 yay のビルドに必要な git を pacman でインストールします。

$ sudo pacman -S git

次に、 AUR から手動で yay を clone します。

$ git clone https://aur.archlinux.org/yay.git

ディレクトリに入って、パッケージをビルドしインストールします。この時、 yay のビルドに必要な go が自動的にインストールされます。

$ cd yay
$ makepkg -si

これで yay のインストールは完了しました。ビルド用ファイルはもういらないので削除します。

$ cd ..
$ rm -rf yay

go が不要な場合は削除します。

$ sudo pacman -Rs go

また、 AUR パッケージの圧縮に使う xz はデフォルトでシングルスレッドであるため、 CPU をフルに活用するよう設定を変更します。 /etc/makepkg.confCOMPRESSXZ の行を変更します。

$ sudo nano /etc/makepkg.conf
makepkg.conf
-COMPRESSXZ=(xz -c -z -)
+COMPRESSXZ=(xz -T 0 -c -z -)

これでパッケージの圧縮が高速化されました。これでサイズが大きいパッケージを AUR から入れる時も安心です。

5.4. zsh のインストール

デフォルトのシェルは bash ですが、ここではより高機能な zsh をインストールして使います。

$ sudo pacman -S zsh

ログインシェルを zsh に変更します。

$ chsh -s $(which zsh)

最低限の設定を ~/.zshrc に記述します。

$ nano ~/.zshrc
.zshrc
autoload -U compinit; compinit
PROMPT='%n@%m:%~ %# '

設定が終わったらログアウトしてから再びログインします。

これでコマンドのオプションの補完もバリバリ効くようになりました。

5.5. pacman 出力のカラー化

色がついていたほうが見やすいので、 pacman の出力をカラー化しておきます。 Color と書いてある行をコメント解除します。

$ sudo nano /etc/pacman.conf
pacman.conf
-#Color
+Color

6. GUI 環境のインストール

6.1. ディスプレイサーバーのインストール

全部真っ黒な画面はもう嫌だ!という声が聞こえてきそうなので、そろそろ GUI 環境を整えます。

まず最初にディスプレイサーバーである Xorg をインストールします。緊急用の端末として xterm も一緒にインストールします。

$ sudo pacman -S xorg-server xterm

6.2. ディスプレイドライバのインストール

搭載している GPU に合わせたドライバをインストールします。

自分は新しめな NVIDIA の GPU なので nvidia パッケージをインストールします。

$ sudo pacman -S nvidia

古い NVIDIA の GPU だったり AMD や Intel などの人は Xorg - ArchWiki を見てインストールと設定を行ってください。

6.3. フォントのインストール

見づらいフォントで作業するのはとても苦痛なので、自分の好みのフォントをインストールします。

自分は 2 つのフォントをインストールします。まず 1 つめは Google 謹製の Noto Fonts をインストール。

$ sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra

2 つめは、プログラミング用フォントの Ricty を AUR からインストールします。 Ricty はライセンスの関係上、自分でフォントをビルドする必要がありますが、 AUR パッケージと AUR ヘルパーを使えば面倒なビルドやインストールまでコマンド一発で全部勝手にやってくれます。

$ yay -S ttf-ricty

6.4. ディスプレイマネージャのインストール

ディスプレイマネージャは、ログイン画面の表示やデスクトップ環境などの起動 (startx) を行うソフトウェアです。

ここでは LightDM をインストールします。

$ sudo pacman -S lightdm lightdm-gtk-greeter

インストールが終わったら、 LightDM の有効化 (スタートアップに登録) を行います。

$ sudo systemctl enable lightdm

6.5. デスクトップ環境のインストール

デスクトップ環境は、ログイン後の GUI を司るソフトウェアです。おそらく一番好みが分かれるポイントでしょう。

GNOME や MATE 、 KDE や LXDE などお好みの環境を デスクトップ環境 - ArchWiki から選んでインストールし、設定してください。

この記事では、シャキシャキ動く Xfce をインストールします。

$ sudo pacman -S xfce4 xfce4-goodies gamin

また、日本語配列のキーボードを使用している場合、 Xorg でのキーボードレイアウトの設定も済ませておきます。

$ sudo localectl set-x11-keymap jp

ついでにロケールを日本語に設定しておきます。

$ sudo nano /etc/locale.conf
locale.conf
-LANG=en_US.UTF-8
+LANG=ja_JP.UTF-8

設定が終わったら、再起動します。

$ sudo reboot

グラフィカルなログイン画面が表示されるはずです。ログインすると Xfce デスクトップ環境が表示されます。

パネルについて聞かれると思うので、「デフォルト設定を使用する」を押しておきます。空のパネルから色々なアイテムを追加していっても OK です。自由にカスタマイズしましょう。

マルチモニタ環境の人は、もしかしたらディスプレイ配置の設定が正しくないかもしれませんが、次のセクションで設定するのでもう少しだけ我慢しましょう。

7. GUI 環境の設定

7.1. ディスプレイの設定

NVIDIA の設定は /etc/X11/xorg.conf に書き込みます。本当は /etc/X11/xorg.conf.d/20-nvidia.conf とかに書いた方がいいんですが、あとでインストールする light-locker が正しく動かないのでここに設定を書きます。

設定を書くといっても、テキストエディタでゴリゴリ書くわけではなく、ツールに自動生成してもらいます。最初に以下のコマンドで /etc/X11/xorg.conf ファイルを生成します。

$ sudo nvidia-xconfig

次に、 GUI を通して NVIDIA の設定を行える nvidia-settings をインストールします。

$ sudo pacman -S nvidia-settings

そして nvidia-settings を管理者権限を付与して起動します。 nvidia-settings はアプリケーションメニューに登録されるのでそこから起動することもできるのですが、この場合は管理者権限はついていません。コマンドを叩きましょう。

$ sudo nvidia-settings

すると、 NVIDIA の設定画面が出てきます。 X Server Display Configuration を選択して、 Advanced… ボタンを押しておきます。

ここで、ディスプレイ配置をマウスでドラッグ & ドロップして変更します。

自分の環境では画面のティアリングが発生していたので、 Force Composition Pipeline のチェックをすべてのディスプレイに入れています。これで画面のティアリングを防ぐことができます。

設定を変更したら、 Apply ボタンを押した後、 Save to X Configuration File を忘れずに押して設定を保存しましょう。

この時、設定ファイルの場所を聞かれると思いますが、デフォルト (/etc/X11/xorg.conf) で大丈夫です。

NVIDIA の設定が終わったら、 Xfce 側のディスプレイ設定を無効化します。 Xfce でも独自でディスプレイ設定を持っていますが、 NVIDIA の設定と競合してしまいます。残念ながら Xfce 側のディスプレイ設定を無効化する正規の手段が存在しない (自分で Xfce をビルドすればいいのですが面倒臭い) ので、 Xfce 側の設定ファイルを削除しリセットします。

$ rm ~/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml

ディスプレイの設定は nvidia-settings から行なった後、 Xfce 側の設定ファイルを削除するようにしましょう。ディスプレイの設定を頻繁に変更するなら、シェルスクリプトを書いておくのもいいかもしれません。

display-settings.sh
#!/bin/sh

sudo nvidia-settings
rm ~/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml

7.2. スクリーンロッカーの設定

LightDM を使ったスクリーンロッカー light-locker をインストールします。

$ sudo pacman -S light-locker

スクリーンをロックするには、 light-locker-command -l と実行すればいいのですが面倒すぎるので、ロックコマンドを設定します。

$ xfconf-query -c xfce4-session -p /general/LockCommand -s "light-locker-command -l" --create -t string

ロックコマンドを設定すると、 xflock4 コマンドでスクリーンをロックすることができるようになり、パネルのアクションボタンからでもロックすることができます。また、 Ctrl+Alt+L でもロックできます。キーボードショートカットは設定マネージャーのキーボード設定から変更することができます。

7.3. フォントの設定

現段階では UI のフォントがすべて Ricty になっているため、フォントの設定を作成します。

$ sudo nano /etc/fonts/local.conf
local.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>serif</family>
    <prefer>
      <family>Noto Serif</family>
      <family>Noto Serif CJK JP</family>
    </prefer>
  </alias>
  <alias>
    <family>sans-serif</family>
    <prefer>
      <family>Noto Sans</family>
      <family>Noto Sans CJK JP</family>
    </prefer>
  </alias>
  <alias>
    <family>monospace</family>
    <prefer>
      <family>Noto Sans Mono</family>
      <family>Noto Sans Mono CJK JP</family>
    </prefer>
  </alias>
</fontconfig>

セリフ (明朝体) フォントの決定は Noto Serif → Noto Serif CJK JP → Fontconfig による自動決定 といった優先順位になるよう設定しました。サンセリフ (ゴシック) とモノスペース (等幅) フォントも同様に設定しました。

設定を書いたら、フォントのキャッシュを更新します。

$ fc-cache -f

再ログインすると、フォントの変更が反映されています。

Monospace フォントは Noto Sans Mono をデフォルトとしたので、ターミナルエミュレーターのフォントも Noto Sans Mono になっています。ターミナルエミュレーターの設定からフォントを Ricty に設定しておきましょう。

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

流石にそろそろこれがないとキツくなってきたのでインストールしておきます。下にメジャーなモダンブラウザを並べておきますので、お好みのブラウザをインストールしてください。

chromium firefox google-chromeAUR opera vivaldiAUR

今回は Google Chrome をインストールします。

$ yay -S google-chrome

7.5. 日本語入力環境のインストール

インプットメソッドフレームワークとして Fcitx を、日本語インプットメソッドエンジンとして Mozc をインストールします。

$ sudo pacman -S fcitx fcitx-mozc fcitx-im fcitx-configtool

入力途中の文字が正しく表示されるように、設定を ~/.xprofile に追加します。

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

設定を書いたら、再ログインで設定が有効になります。

エディタなどで半角/全角キーを押すと IME のオンオフができます。設定から、無変換キーに IME オフ、変換キーに IME オンを割り当てるとより便利です。

7.6. サウンドシステムのインストール

サウンドサーバーとして PulseAudio をインストールします。

$ sudo pacman -S pulseaudio pavucontrol

インストール後 PC を再起動して、 PulseAudio 音量調節アプリケーションから音量を調節しておきます。

7.7. ファイルマネージャーの強化

GNOME 仮想ファイルシステムをインストールすることによって、自動マウントとゴミ箱の機能を追加します。

$ sudo pacman -S gvfs

Windows のファイル共有 (SMB) を利用する場合は以下のパッケージも一緒にインストールします。

$ sudo pacman -S gvfs-smb

zip ファイルなどをファイルマネージャーから解凍するためには、 file-roller をインストールします。

$ sudo pacman -S file-roller

8. その他

このセクションでは自分が追加でインストールしているパッケージを紹介しています。

一応おさらいしておくと、公式リポジトリからパッケージをインストールするには以下のコマンドを実行します。

$ sudo pacman -S package-hoge package-fuga package-piyo

AUR: Arch User Repository からパッケージをインストールするには以下のコマンドを実行します。

$ yay -S aur-package-foo aur-package-bar aur-package-baz

yay でも公式リポジトリにあるパッケージをインストールすることができますが、 pacman の使い方に慣れていたほうが ArchWiki も読みやすくなると思うので、ここでは pacman で公式リポジトリのパッケージをインストールするように書いています。

以下、独断と偏見成分が大いに含まれますので適当に流し見する程度で OK です。

8.0. ランタイム

jre-openjdk

8.1. メッセージングアプリ

discord slack-desktopAUR

8.2. 文書作成

gimp libreoffice-fresh texlive-most texlive-langjapanese typoraAUR

8.3. リモートログイン

openssh remmina freerdp

8.4. 開発ツール

vim code docker virtualbox virtualbox-host-modules-arch vagrant clang lldb nodejs npm pycharm-community-edition anacondaAUR webstormAUR

8.5. マルチメディア

evince ffmpeg vlc youtube-dl

8.6. ネットワークツール

bind-tools wireshark-qt

8.7. ゲーム

32 ビットライブラリのリポジトリを有効にします。

$ sudo nano /etc/pacman.conf
pacman.conf
-#[multilib]
-#Include = /etc/pacman.d/mirrorlist
+[multilib]
+Include = /etc/pacman.d/mirrorlist

そして steam と 32 ビットグラフィックスドライバーをインストール。

$ sudo pacman -Syu steam lib32-nvidia-utils

PC を再起動して Steam (Runtime) を起動すれば SteamOS + Linux 対応のゲームが大体プレイできます。僕は Getting Over It with Bennett Foddy の動作を確認して安心しました。

おわり

これで、かなり実用的な Linux 環境が出来上がりました。 一般的な推奨事項 - ArchWiki には、 Arch Linux を使っていく上で重要なことが記載されているので、よく読んでおいてください。

また、 Arch Linux はローリングリリースであるため、時間があるときにはシステムの更新などシステムメンテナンスを行うことを強くおすすめします。 AUR パッケージを含めたシステム全体の更新は

$ yay

で行うことができます。

ここから先は ~/.zshrc みたいな設定をいじるのもよし、他の色々なパッケージを探してみるのもよし、 Web ブラウジングやゲームを楽しむのもよし、プログラミングに勤しむのもよし。自由にやってください。