Arch Linux + i3 快適環境を構築したときのログ
以前の Arch Linux + Xfce のインストール記事 がだいぶ古くなり、インストール方法が変わりましたので新しく記事を書きます。また、筆者の Arch Linux 環境も大きく変わりましたので、それも併せて紹介します。
Arch Linux とは
Arch Linux は、常に最新・最先端を追い求める人に最適な Linux ディストリビューションです。シンプル・最新・実用的・ユーザー中心・汎用であることを原則としています。必要なものを必要なだけインストールするので、自分の求めるようにシステムを構成できます。
Arch Linux はこんな人におすすめです。
- 常に最新のものを使いたい
- 余計な物は入れたくない
- 自分で理解して構成したい
- Linux の勉強のきっかけが欲しい
Arch Linux はユーザーフレンドリーというわけではなくユーザー中心なディストリビューションです。こんな人にはおすすめできないかもしれません。
- 他力本願寺
- 全部自分でやるの面倒
- 英語を読む気が更々ない
- 黒画面アレルギー
自分でドキュメントを読んで問題を解決する DIY (Do It Yourself) の姿勢を持った人にぴったりのディストリビューションだと思います。
インストールする環境
UEFI (Unified Extensible Firmware Interface) が使えるコンピュータにインストールします。 BIOS のシステムでもインストールできますが、インストール方法はこの記事と大きく異なります。 CPU は Intel で、 GPU は NVIDIA のものを使用します。 OS をインストールするストレージは SSD で、 Arch Linux 専用にします。なお、インターネット接続が必須です。
Linux メインのマシンを仕立てるなら GPU は AMD の方が良いかもしれません。 NVIDIA はドライバをオープンにしていないため、 Linux では面倒なことになる場合があります。 Linux の生みの親である Linus Torvalds 氏が中指を立てて "NVIDIA, f*ck you!" と言った のはあまりにも有名です。
インストールの構成
インストール作業は自分の手でコマンドを打ってインストールします。最近は archinstall
という実験的なインストーラが付属するようになりましたが、 OS の構成の理解のためこれは使わないようにします。
ディスプレイサーバは Xorg をインストールします。 AMD の GPU なら Xorg の後継の Wayland でも問題ないでしょう。
ディスプレイマネージャは LightDM で、ウィンドウマネージャは軽量な i3 をインストールします。 i3 は Windows や macOS などのスタック型とは違い、タイル型のウィンドウマネージャです。ウィンドウが重ならないよう自動的に敷き詰められるので、情報の見落としがなくなります。また、ウィンドウの操作のほとんどをキーボードで行えるため、手の移動量が圧倒的に少なくなり作業効率が上がります。 Vim のキーバインドが好きならきっと気に入るでしょう。 Web ブラウザに Vimium を入れれば Web ブラウジングですらキーボードでできます。
システムが少し大きくなってしまいますが、 Windows や macOS のようなウィンドウマネージャをサクッと使いたい人は GNOME や KDE や Xfce など、 ウィンドウマネージャとアプリケーションがセットになったデスクトップ環境をインストールするのがおすすめです。
パーティションは簡単のためブートパーティションとルートパーティションの 2 つのみ作成します。メモリ 32 GB の環境下でスワップパーティション無しで困ったことは今のところありませんのでスワップパーティションは作りません。メモリが少ないコンピュータならスワップパーティションが効果を発揮するでしょう。
インストールする前に
ArchWiki はスマートフォンなど別の端末で開いておきましょう。この記事と環境が違う場合や、分からなくなったときに役に立ちます。また、この記事が古くなった際はインストール方法が変わっている可能性がありますので、 ArchWiki で最新の情報を必ず確認しましょう。
記事の読み方
コマンド入力表記で、行頭が #
で始まっているコマンドは root
や root
権限で実行します。
# fdisk -l
行頭が $
で始まっているコマンドは一般ユーザーで実行します。
$ nano ~/.xprofile
行頭の #
や $
自体は入力する必要はありません。
コマンドを実行する前にコマンドの意味を考えましょう。何も考えずコピペして実行すると危険な場合もありますし、勉強になりません。
ファイル編集で変更箇所を diff 形式で表す場合があります。行頭が -
の行は削除行、 +
の行は追加行です。
-LANG=en_US.UTF-8
+LANG=ja_JP.UTF-8
ファイルに行を追記する場合、追加行のみ表記する場合があります。
+light-locker --lock-on-suspend &
いずれの場合も、行頭の +
を実際に書く必要はありません。
ライブ環境の起動
Arch Linux のダウンロード
まずは Arch Linux JP Project - ダウンロード から Arch Linux の ISO イメージをダウンロードします。 Arch Linux は毎月頭に最新の ISO イメージが公開されます。改竄されたイメージを掴まされないよう、 HTTPS のミラーサイトからダウンロードすることをおすすめします。
チェックサムの計算や PGP 署名の検証を行うことで、ダウンロードしたものが正しいファイルであることを確認することができます。これは任意ですが推奨です。
ISO イメージの検証
ISO イメージのチェックサムを計算することで、ダウンロードしたファイルが壊れていないか確認することができます。ダウンロードページに記載されているチェックサムと比較します。
$ sha1sum archlinux-xxxx.xx.xx-x86_64.iso
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx archlinux-xxxx.xx.xx-x86_64.iso
PowerShell の場合は Get-FileHash
コマンドレットを使用してチェックサムを計算します。
> Get-FileHash -Algorithm SHA1 archlinux-xxxx.xx.xx-x86_64.iso | Select-Object Hash
Hash
----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
また、 PGP 署名を検証することで、ダウンロードしたファイルが改竄されていないかどうか確認することができます。署名ファイル (archlinux-xxxx.xx.xx-x86_64.iso.sig
) をダウンロードし ISO ファイルと同じディレクトリに配置して、 GPG を実行します。 正しい署名
と表示されれば OK です。
$ gpg --keyserver keyserver.ubuntu.com --keyserver-options auto-key-retrieve --verify archlinux-xxxx.xx.xx-x86_64.iso.sig
ライブ USB の作成
ISO イメージをダウンロードしたら、 USB メモリなどのストレージに書き込みます。光ディスクや USB 2.0 のストレージなど低速なものは非推奨です (今時そんなものを使っている人はいないと思いますが) 。
Linux を使用して作成
既存の Linux 環境から書き込む場合は、コンピュータに USB メモリを挿して、デバイスファイルを確認します。
# fdisk -l
/dev/sda
や /dev/sdb
や /dev/sdc
などのデバイスが USB メモリだと認識されているはずです。筆者の環境では /dev/sdc
でした。
dd
コマンドを使用して ISO イメージを USB メモリに書き込みます。 USB メモリの内容は全て失われます。 dd
コマンドは確認なしでデータを書き込むので、書き込み対象の指定には十分注意して下さい。間違えた場合は大事なデータが吹き飛びます。
# dd if=archlinux-xxxx.xx.xx-x86_64.iso of=/dev/sdc status=progress && sync
これで ISO イメージの書き込みは完了です。
macOS を使用して作成
macOS を使用する場合、手順は Linux とほぼ同じです。 Mac に USB メモリを挿して、デバイスファイルを確認します。
$ diskutil list
/dev/disk0
や /dev/disk1
や /dev/disk2
などのデバイスが USB メモリだと認識されているはずです。筆者の環境では /dev/disk2
でした。 dd
コマンドで書き込む前にアンマウントしておきます。
$ diskutil unmountDisk /dev/disk2
アンマウントしたら dd
コマンドを使用して ISO イメージを USB メモリに書き込みます。 USB メモリの内容は全て失われます。 dd
コマンドは確認なしでデータを書き込むので、書き込み対象の指定には十分注意して下さい。間違えた場合は大事なデータが吹き飛びます。
# dd if=archlinux-xxxx.xx.xx-x86_64.iso of=/dev/disk2 && sync
これで ISO イメージの書き込みは完了です。
Windows を使用して作成
Rufus を使用して DD モードで書き込むのが簡単です。 Cygwin など別の方法でも構いません。
USB メモリからのブート
インストール対象のコンピュータに USB メモリを挿して起動します。起動方法はマザーボードの説明書を参照してください。 BIOS モードか UEFI モードで起動できると思いますが、必ず UEFI モードで起動しましょう。 BIOS は古い形式です。
USB メモリを選択してブートすると以下のようなメニューが現れますので、 Arch Linux install medium (x86_64, UEFI)
を選択します。
すると、シェルが立ち上がります。
このシェルでコマンドを叩いて Arch Linux をインストールします。
ライブ環境の設定
ライブ環境で作業を開始する前に、ライブ環境の設定を行います。ライブ環境の設定は保存されませんので、起動毎に設定する必要があります。
ライブ環境のキーボード配列はデフォルトで US 配列に設定されています。日本語配列のキーボードを使用している場合は以下のコマンドで変更します。キーボード配列が合っていないと記号の入力で苦労することになります。
# loadkeys jp106
ちゃんと UEFI モードで起動しているかどうかを確認します。
# ls /sys/firmware/efi/efivars
ヒント: Tab キーでコマンド名やパス名などを補完できます。
このコマンドを実行し No such file or directory
(そのようなファイルやディレクトリはありません) と出た場合、 UEFI モードではなく BIOS モードで起動しています。
インターネット接続も必要です。ライブ環境では DHCP クライアントが自動的に動いていますので、有線接続のコンピュータならほとんどの場合で接続可能になっているでしょう。 DHCP サーバが動いていない場合や Wi-Fi 接続の場合は適宜設定をして下さい。インターネット接続を確認するには、 ping
を飛ばしたり curl
でリクエストを投げるなどの方法があります。
# ping -c4 archlinux.jp
インターネット接続を確認したら、システムクロックを合わせます。
# timedatectl set-ntp true
ディスクのフォーマット
Arch Linux をインストールするストレージにパーティションテーブルを作成し、パーティションとファイルシステムを作成します。
最初に、 Arch Linux をインストールするストレージを確認します。
# fdisk -l
Disk /dev/nvme0n1: 238.47 GiB, 256060514304 bytes, 500118192 sectors
(略)
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
(略)
Disk /dev/sdb: 223.57 GiB, 240056459264 bytes, 468860272 sectors
(略)
NVMe ストレージは /dev/nvme0n1
などと認識され、 SATA ストレージは /dev/sdb
などと認識されます。本記事では /dev/sdb
にインストールするものとします。各自インストール先に合わせて適宜読み替えてください。
パーティションテーブルの作成
ディスクを初期化してパーティションテーブルを作成します。 パーティションテーブルは MBR (Master Boot Record) と GPT (GUID Partition Table) の 2 種類あります。今回は UEFI に最適な GPT で作成します。 cgdisk
コマンドを実行します。
# cgdisk /dev/sdb
カーソルキーの左右でコマンドの選択、上下でパーティションの選択を行います。すでにパーティションがあったらそれらをすべて Delete
で消去しておきましょう。 free space
のみの状態からスタートします。
最初にブートパーティションを作成します。これは UEFI ブートのために必要です。 New
を実行し、下記の値を設定していきます。デフォルト値を入力する場合は、空欄のまま Enter キーを押します。
質問 | 値 |
---|---|
First sector | デフォルト |
Size in sectors or {KMGTP} | 512M |
Hex code or GUID | ef00 |
Enter new partition name | EFI System |
入力が完了すると、 1007.0 KiB の free space
の後にブートパーティションが作成されます。
次にルートパーティションを作成します。カーソルキーの下を押して後ろの方の free space
を選択してから New
を実行し、下記の値を設定していきます。
質問 | 値 |
---|---|
First sector | デフォルト |
Size in sectors or {KMGTP} | デフォルト |
Hex code or GUID | デフォルト (8300 ) |
Enter new partition name | Linux |
値の入力が完了したら、 Write
を選択してディスクに書き込みます。パーティションテーブルを上書きするので、ストレージの内容が失われます。確認の入力がありますので yes
と入力して書き込んだら Quit
を選択して cgdisk
を終了します。
パーティションは fdisk
や lsblk
コマンドで確認できます。
# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb 8:16 0 223.6G 0 disk
|-sdb1 8:17 0 512M 0 part
`-sdb2 8:18 0 223.1G 0 part
/dev/sdb1
がブートパーティション、 /dev/sdb2
がルートパーティションとなります。
パーティションのフォーマット
各パーティションをフォーマットしてファイルシステムを作成します。
ブートパーティション (/dev/sdb1
) は FAT32 形式でフォーマットします。
# mkfs.fat -F32 /dev/sdb1
ルートパーティションは Btrfs 形式でフォーマットします。
# mkfs.btrfs /dev/sdb2
Linux では以前から ext4 形式がよく使われてきましたが、今回は次世代のファイルシステム Btrfs を採用しています。
パーティションのマウント
作成したパーティションをマウントし、ファイルシステムを /mnt
経由で操作できるようにします。
最初にルートパーティション (/dev/sdb2
) を /mnt
にマウントします。
# mount /dev/sdb2 /mnt
次に /mnt
中に boot
ディレクトリを作成し、そこにブートパーティション (/dev/sdb1
) をマウントします。
# mkdir /mnt/boot
# mount /dev/sdb1 /mnt/boot
マウントポイントは lsblk
コマンドで確認できます。
# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb 8:16 0 223.6G 0 disk
|-sdb1 8:17 0 512M 0 part /mnt/boot
`-sdb2 8:18 0 223.1G 0 part /mnt
システムのインストール
Arch Linux のシステムをインストールします。
ミラーの選択
パッケージ取得先のミラーサーバを選択します。 reflector
コマンドで自動的に最適なミラーサーバを選択できます。今回は 日本国内のミラーサーバ の中で 12 時間以内に同期されているものを選択し、ダウンロード速度で並び替えます。使用されるミラーサーバのリストは /etc/pacman.d/mirrorlist
に書き込まれます。
# reflector --country Japan --age 12 --protocol http,https --sort rate --save /etc/pacman.d/mirrorlist
パッケージのインストール
pacstrap
コマンドで、必須の linux
linux-firmware
base
パッケージと、パッケージのビルドに必要な base-devel
パッケージグループをインストールします。また、パッケージ管理に便利な pacman-contrib
もインストールします。 base
パッケージには vi
どころか ed
すらありませんので、 nano
や neovim
や emacs
など好みのテキストエディタも追加でインストールしておきます。本記事では nano
をインストールします。エディタに迷ったら nano
で良いでしょう。
# pacstrap /mnt linux linux-firmware base base-devel pacman-contrib nano
回線速度にもよりますが、ほとんどの場合はカップラーメンを調理する間もなくインストールが完了します。
システムの設定
fstab の生成
パーティションのマウント状態を記述する fstab を生成し、 /mnt/etc/fstab
に追記します。
# genfstab -U /mnt >> /mnt/etc/fstab
chroot
インストールしたシステムへ chroot します。これにより、 /mnt
を /
として扱うことができます。
# arch-chroot /mnt
時刻の設定
タイムゾーンを Asia/Tokyo
に設定します。
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ハードウェアクロックを設定します。
# hwclock --systohc
Windows とのデュアルブートを考えている場合は時刻系に注意してください。 Windows ではデフォルトでハードウェアクロックにローカル時刻を設定する クソ 仕様であり、その他の OS では UTC (協定世界時) の時刻を設定します。 Windows のレジストリを設定し、ハードウェアクロックが UTC を設定するようにすることをおすすめします。設定せずそのまま放置してデュアルブートすると時刻が 9 時間ずれます (日本の場合) 。
ロケールの設定
生成するロケールを設定します。 /etc/locale.gen
の en-US.UTF-8
と ja_JP.UTF-8
の行のコメントを解除します。
# nano /etc/locale.gen
-#en_US.UTF-8 UTF-8
+en_US.UTF-8 UTF-8
# ...
-#ja_JP.UTF-8 UTF-8
+ja_JP.UTF-8 UTF-8
nano
エディタは画面下部にショートカットキーが表示されているので操作に迷うことは無いはずです。ショートカットキーの ^
は Ctrl キー、 M-
は Meta キー (Alt キー) を表しています。例えば、 ^X
は Ctrl+X です。
neovim
や emacs
をインストールして使用するような人に操作説明は不要でしょう。いつも通り編集して下さい。
コメントを解除したら locale-gen
コマンドでロケールを生成します。
# locale-gen
使用するロケールを /etc/locale.conf
に書き込みます。コンソールではほぼ ASCII 文字しか表示できないので一旦英語 (en_US.UTF-8
) に設定しておきます。
# echo LANG=en_US.UTF-8 > /etc/locale.conf
日本語配列のキーボードを使用している場合は /etc/vconsole.conf
にコンソールキーマップを設定します。
# echo KEYMAP=jp106 > /etc/vconsole.conf
コンピュータ名の設定
コンピュータ名を /etc/hostname
に書き込みます。ここでコンピュータ名は myhostname
としています。好きな名前を設定しましょう。
# echo myhostname > /etc/hostname
この名前を /etc/hosts
にも書き込みます。
# nano /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.0.1 myhostname.localdomain myhostname
ネットワークの設定
ライブ環境では DHCP クライアントが自動的に動いていますが、インストールされたシステムではネットワーク接続自体が有効になっていません。本記事では systemd-networkd を使用して有線ネットワーク接続の設定を行います。
まずは有線アダプタのデバイス名を networkctl
コマンドで確認します。
# networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 enp0s31f6 ether routable configured
2 links listed.
TYPE
が ether
となっているものがイーサネットアダプタです。ここでは enp0s31f6
が該当のデバイスです。
デバイス名を確認したら、 /etc/systemd/network/20-wired.network
に設定を書き込みます。 DHCP による動的 IP を設定する場合は以下のように記述します。
# nano /etc/systemd/network/20-wired.network
[Match]
Name=enp0s31f6
[Network]
DHCP=ipv4
IP アドレスを固定する場合は以下のように記述します。サブネットマスクは /24
のように CIDR (Classless Inter-Domain Routing) 表記で記述します。
[Match]
Name=enp0s31f6
[Network]
Address=192.168.1.123/24
Gateway=192.168.1.254
DNS=192.168.1.1
DNS=8.8.8.8
設定ファイルを書いたら、 systemd-networkd
と systemd-resolved
サービスを有効化 (スタートアップに登録) します。
# systemctl enable systemd-networkd systemd-resolved
root パスワードの設定
root アカウントのパスワードを設定します。セキュアなものを設定しましょう。
# passwd
ブートローダーの設定
ブートローダーの設定を行います。 UEFI モードでは systemd-boot が一番簡単に設定できます。
まずはブートパーティションがマウントされている /boot
ディレクトリにブートローダーをインストールします。
# bootctl --path=/boot install
/boot/loader/loader.conf
に書かれているブートローダーの設定を変更します。
# nano /boot/loader/loader.conf
default arch
timeout 3
editor no
デフォルトで arch
というエントリを起動するよう設定しました。 arch
エントリを /boot/loader/entries/arch.conf
に作成します。
# nano /boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=PARTUUID=********-****-****-****-************ rw
AMD の CPU を使用している場合は /intel-ucode.img
を /amd-ucode.img
に変更してください。 ********-****-****-****-************
の部分にはルートパーティションの PARTUUID を指定します。これはパーティション識別用の ID で、 blkid
コマンドで確認できます。
# blkid -s PARTUUID /dev/sdb2
/dev/sdb2: PARTUUID="386a4e69-46c9-443b-85f7-a9ea7f8f5015"
PARTUUID はブートパーティションではなくルートパーティションのものを使用します。間違えないようご注意下さい。
最後に CPU のマイクロコードをインストールします。 Intel の場合は intel-ucode
を、 AMD の場合は amd-ucode
をインストールします。
# pacman -S intel-ucode
これで最低限の設定は完了しました。
コンピュータの再起動
exit
コマンドで chroot 環境から抜け、 reboot
コマンドでコンピュータを再起動します。
# exit
# reboot
マザーボードのブートメニューで Linux Boot Manager
を選択して、インストールしたシステムを起動します。起動が完了すると以下のようなログイン画面が出るはずです。
ユーザー名 root
を入力して、先程設定したパスワードでログインします。引き続きシステムの設定をしていきます。
もしも起動しない時は
インストールに問題があったり設定をいじりすぎて起動しない場合は、ライブ USB を起動しディスクをマウントすることで、自分で問題を修正することができます。
# loadkeys jp106
# mount /dev/sdb2 /mnt
# mount /dev/sdb1 /mnt/boot
# arch-chroot /mnt
インストール後の設定
DNS ネームサーバー設定のリンク
古いツールでは /etc/resolv.conf
の DNS 設定を参照します。 systemd-resolved で DNS を設定した場合、 resolv.conf
互換の設定ファイルが生成されるので、シンボリックリンクを張ります。
# mv /etc/resolv.conf /etc/resolv.conf.org
# ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
一般ユーザーの作成
root に直接ログインして作業を続けるのは好ましくないので、一般ユーザーを作成します。また、作成したユーザーを管理者グループ wheel
に所属させます。ここでユーザー名は myusername
としています。好きな名前を設定しましょう。
# useradd -mg wheel myusername
passwd
コマンドでパスワードを設定します。これもセキュアなパスワードを設定しましょう。
# passwd myusername
最近は systemd-homed によるユーザー管理方法が登場しました。ホームディレクトリの暗号化やディスククォータなどの特徴を持っていますが、ログインできるようにする追加の設定が必要になったり、ホームディレクトリ暗号化時 SSH でのログインに公開鍵認証を使用していてもパスワードが必須になるなど少々面倒なので、今回は古典的なユーザーを作成しました。ログインする人が 1 人しかいないなど個人的な使用なら従来通りのユーザーで十分です。
sudo の設定
wheel
グループのユーザーが sudo
コマンドを使用して一時的に特権を得られるようにするため、 sudoers
ファイルの編集を行います。環境変数 EDITOR
にエディタを設定して visudo
コマンドで編集を開始し、 %wheel ALL=(ALL) NOPASSWD: ALL
の行のコメントを解除します。
# EDITOR=nano visudo
## Same thing without a password
-# %wheel ALL=(ALL) NOPASSWD: ALL
+%wheel ALL=(ALL) NOPASSWD: ALL
後述する dmenu で sudo
を利用する際、パスワード入力が要求されない方が使い勝手が良いので、パスワード入力なしで sudo
コマンドを使用できるように設定しました。設定が終わったら、 logout
コマンドで root
からログアウトし、先程作成した一般ユーザーでログインします。
# logout
AUR ヘルパーのインストール
Arch Linux のパッケージマネージャは pacman です。公式リポジトリにあるパッケージは pacman を使ってインストールします。コミュニティのパッケージは AUR (Arch User Repository) から clone して手動でビルドしインストールすることになります。これを自動化するため AUR ヘルパーの paru をインストールします。 paru 自体も AUR にありますので、最初は手動でインストールします。
まずはリポジトリを clone するため Git をインストールします。
$ sudo pacman -S git
AUR から paru を clone します。
$ git clone https://aur.archlinux.org/paru.git
paru
ディレクトリに入って、ビルド情報が記されている PKGBUILD
ファイルの内容を確認します。 AUR にはユーザーが自由にパッケージを投稿できるので、悪意のあるものが紛れ込んでいないか必ず確認する必要があります。
$ cd paru
$ less PKGBUILD
PKGBUILD
の内容が問題無いなら、 makepkg
コマンドで paru をビルドします。 paru は Rust で書かれているため、 Rust のパッケージマネージャ cargo
のインストールが要求されます。 rust
と rustup
のうち rust
を選択してビルドを続行します。
$ makepkg -si
(略)
:: There are 2 providers available for cargo:
:: Repository extra
1) rust
:: Repository community
2) rustup
Enter a number (default=1):
paru のビルドとインストールが完了したら、ビルド用ファイルはもう不要なので削除します。
$ cd ..
$ rm -rf paru
Rust が不要な場合は削除します。
$ sudo pacman -Rs rust
Rust で開発する予定のある人は、後程 rustup.rs でインストールしましょう。リポジトリにある Rust は AUR パッケージのビルド専用だと考えましょう。
注意: Rust に詳しい人は cargo install paru
でインストールすれば良いと考えるかもしれません。しかし、 AUR 版はシェルの補完関数も同梱されています。
これで paru
コマンドが使用可能になりました。 sudo pacman
の代わりに paru
と打つことができます。今後、本記事では paru
で表記します。
AUR パッケージを圧縮する際、 Zstandard が使用されます。デフォルトではマルチスレッドにならないため、マルチスレッドで圧縮するよう設定を変更します。 sudoedit
コマンドで /etc/makepkg.conf
を編集開始し、 COMPRESSZST
の行を編集します。
$ EDITOR=nano sudoedit /etc/makepkg.conf
-COMPRESSZST=(zstd -c -z -q -)
+COMPRESSZST=(zstd -T0 -c -z -q -)
これで、サイズが大きいパッケージを扱う場合でも高速に圧縮処理を行うことができます。
zsh のインストール
デフォルトでは Bash (Bourne-again shell) がインストールされていますが、よりパワフルな Zsh (Z shell) をインストールしてログインシェルを変更します。 Bash の方が良いという人はそのままでも構いません。もちろん他のシェルをインストールして設定しても OK です。むしろ自由にやってください。
$ paru -S zsh
ログインシェルを zsh に変更します。
$ chsh -s $(which zsh)
最低限の設定を ~/.zshrc
に記述します。ついでに EDITOR
環境変数を export するよう設定しておきます。もちろん自分のこだわりの設定を書いても構いません。
$ nano ~/.zshrc
autoload -U compinit && compinit
PROMPT='%n@%m:%~ %# '
export EDITOR=nano
ログインシェルを手動で起動します。
$ exec zsh -l
pacman 出力のカラー化
pacman の出力をカラー化すると見やすくなるので設定します。 /etc/pacman.conf
を編集し、 Color
と書いてある行をコメント解除します。
$ sudoedit /etc/pacman.conf
-#Color
+Color
GUI 環境のインストール
Xorg による GUI 環境を設定していきます。
ディスプレイサーバーのインストール
X サーバーをインストールします。
$ paru -S xorg-server
グラフィックドライバのインストール
NVIDIA の GPU を使用しているので、 nvidia
パッケージをインストールします。これはプロプライエタリなドライバです。
$ paru -S nvidia
KMS (Kernel Mode Settings) を有効化し、ブートプロセスの早い段階で GPU をセットアップ (Late KMS start) するよう設定します。 NVIDIA 以外のドライバなら以下の設定は必要ありません。
まずはブートローダーエントリ /boot/loader/entries/arch.conf
を編集し、カーネルパラメータ nvidia-drm.modeset=1
を追加します。
$ sudoedit /boot/loader/entries/arch.conf
-options root=PARTUUID=********-****-****-****-************ rw
+options root=PARTUUID=********-****-****-****-************ nvidia-drm.modeset=1 rw
/etc/mkinitcpio.conf
を編集し、 initramfs にロードするモジュールを追加します。
$ sudoedit /etc/mkinitcpio.conf
-MODULES=()
+MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
mkinitcpio
コマンドで initramfs を再生成します。
$ sudo mkinitcpio -P
最後に /etc/pacman.d/hooks/nvidia.hook
を作成し、 nvidia
パッケージのアップグレード時に自動的に initramfs を再生成するよう pacman フックを設定します。
$ sudo mkdir /etc/pacman.d/hooks
$ sudoedit /etc/pacman.d/hooks/nvidia.hook
[Trigger]
Operation=Install
Operation=Upgrade
Operation=Remove
Type=Package
Target=nvidia
[Action]
Depends=mkinitcpio
When=PostTransaction
Exec=/usr/bin/mkinitcpio -P
フォントのインストール
Google Noto Fonts とプログラミング用フォントの Ricty をインストールします。
$ paru -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra
$ paru -S ttf-ricty
ヒント: シェルのブレース展開を使用すると、入力文字数を減らすことができます。
$ paru -S noto-fonts{,-cjk,-emoji,-extra}
ディスプレイマネージャのインストール
グラフィカルなログイン画面とウィンドウマネージャの起動を行うディスプレイマネージャをインストールします。本記事ではシンプルな LightDM をインストールします。
$ paru -S lightdm lightdm-gtk-greeter
LightDM の有効化を行います。
$ sudo systemctl enable lightdm
ウィンドウマネージャのインストール
ウィンドウの管理を行うウィンドウマネージャをインストールします。タイル型ウィンドウマネージャの i3 をインストールします。
$ paru -S i3
アプリケーションのインストール
ウィンドウマネージャだけインストールしても、何もアプリケーションが付属していないので何もできません。コマンド操作もできません。
そこで、ターミナルエミュレータの Alacritty と、アプリケーションランチャーの dmenu をインストールします。 NTT ドコモの d メニューとは関係ありません。
$ paru -S alacritty dmenu
Alacritty の最低限の設定を ~/.config/alacritty/alacritty.yml
に書きます。
$ mkdir -p ~/.config/alacritty
$ nano ~/.config/alacritty/alacritty.yml
font:
normal:
family: Ricty
Alacritty を動作させるには GPU が GLSL 3.30 (OpenGL 3.3) に対応している必要があります。現代の GPU では対応しているはずですが、 GPU が古く対応していない場合は環境変数 LIBGL_ALWAYS_SOFTWARE
を設定します。
+env:
+ LIBGL_ALWAYS_SOFTWARE: "1"
font:
normal:
family: Ricty
キーボードとロケールの設定
Xorg でのキーボードレイアウトを localectl
コマンドで設定します。
$ sudo localectl set-x11-keymap jp
また、システム全体のロケールを日本語へ変更します。
$ sudoedit /etc/locale.conf
-LANG=en_US.UTF-8
+LANG=ja_JP.UTF-8
設定を変更したら、 reboot
コマンドでコンピュータを再起動します。
$ sudo reboot
GUI 環境の設定
コンピュータが起動すると、 LightDM のグラフィカルなログイン画面が表示されます。
パスワードを入力してログインすると i3 が自動的に立ち上がり、設定ファイルを作成するか聞いてきます。 Enter キーを押します。
i3 を操作するキー ($mod
キー) を設定します。カーソルキーの上下で <Win>
を選択し Enter キーで確定します。
すると、 i3 の設定ファイル ~/.config/i3/config
が作成されます。このファイルの中に i3 のキーバインドがすべて記述されています。
Windows キーを使用して i3 の操作を行います。以下のキー操作は覚えておきましょう。キーバインドは後で自由に変更できます。
- Windows+Enter: ターミナルエミュレータの起動
- Windows+D: アプリケーションランチャー dmenu の起動
- Windows+Shift+Q: ウィンドウを閉じる
- Windows+Shift+E: ログアウト
その他のデフォルトのキーバインドは i3 - Reference Card にまとまっています。
これ以降もコマンドを打って設定を行います。 Windows+Enter を押してターミナルエミュレータを起動しておきましょう。
フォント設定
Xorg で使用するフォントを設定します。
$ sudoedit /etc/fonts/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>
設定を書いたら fc-cache
コマンドでフォントのキャッシュを更新します。
$ fc-cache -f
Windows+Shift+E を押してログアウトしてから再度ログインすると、フォントの設定が反映されます。
ディスプレイの設定
$ paru -S nvidia-settings
Windows+D を押すとアプリケーションランチャーの dmenu が画面上部に表示されます。
dmenu に sudo nvidia-settings
と入力して、 NVIDIA X サーバー設定を管理者権限で起動します。
ヒント: ウィンドウをフロート表示させるには Windows+Shift+Space を押します。
X Server Display Configuration を選択し、 Advanced... を押して設定項目をすべて表示させます。
ディスプレイのレイアウトを設定します。ティアリングが発生する場合は Force Composition Pipeline や Force Full Composition Pipeline をオンにします。
設定が完了したら Apply を押して設定を適用し、 Save to X Configuration File を押して設定内容を /etc/X11/xorg.conf
に保存します。
Web ブラウザのインストール
Web ブラウザをインストールします。 firefox
や chromium
などをインストールします。 ArchWiki に Web ブラウザのリスト があるので、そこから自分好みのブラウザを選択してインストールしましょう。 Google Chrome の同期機能を使いたいなら AUR から google-chrome
をインストールします。
$ paru -S chromium
Web ブラウザは dmenu から起動します。 google-chrome
をインストールした場合、コマンドは google-chrome-stable
となります。
キーボード入力の設定
キーリピートの設定
キーボードのキーを押しっぱなしにすることで文字を連続入力するキーリピートの設定を xset
コマンドで行います。
$ xset r rate 300 25
このコマンドは、キーが押されてから 300 ミリ秒後にキーリピートが始まり、 1 秒間に 25 回リピートするよう設定します。コマンドを実行したら即座に反映されます。値を自由に調整して好みの値を設定します。
キーリピートの設定はログアウトすると消えてしまいます。設定を永続化するには、このコマンドを ~/.xprofile
に書いておきます。ウィンドウマネージャの起動前に ~/.xprofile
がシェルスクリプトとして自動的に実行されるので、 Xorg の設定コマンドや自動起動させるアプリケーションをここに書いておきます。
$ nano ~/.xprofile
#!/bin/sh
xset r rate 300 25
CapsLock キーを Ctrl キーに変更
続いて、 A キーの左にある CapsLock キーを Ctrl キーとして扱うよう設定します。 xmodmap を使用してキーマップを設定します。まずは xorg-xmodmap
をインストールします。
$ paru -S xorg-xmodmap
~/.Xmodmap
に xmodmap の設定を書きます。
$ nano ~/.Xmodmap
clear lock
clear control
keycode 66 = Control_L
add control = Control_L Control_R
このファイルを xmodmap
コマンドで読み込むことでキーマップが適用されます。
$ xmodmap ~/.Xmodmap
~/.xprofile
にこのコマンドを追記して、設定を永続化します。
$ nano ~/.xprofile
#!/bin/sh
xset r rate 300 25
+xmodmap ~/.Xmodmap
スクリーンロッカーのインストール
LightDM を使用して画面をロックすることができる light-locker
をインストールします。
$ paru -S light-locker
ログイン時に light-locker
を自動起動するよう ~/.xprofile
に追記します。
$ nano ~/.xprofile
+light-locker --lock-on-suspend &
再ログイン後、 dmenu などで light-locker-command -l
を実行すると画面をロックできます。 i3 の設定を変更しキーバインドを割り当てるとショートカットキー一発で画面をロックできます。キーバインドの設定は後述。
日本語入力システムのインストール
インプットメソッドフレームワークの Fcitx と日本語インプットメソッドエディタの Mozc をインストールします。
$ paru -S fcitx fcitx-mozc fcitx-im fcitx-configtool
ログイン時に fcitx
を自動起動するよう ~/.xprofile
に追記します。また、入力途中の文字を正しく表示するのに必要な環境変数の設定も行います。
$ nano ~/.xprofile
+export GTK_IM_MODULE=fcitx
+export QT_IM_MODULE=fcitx
+export XMODIFIERS=@im=fcitx
+fcitx
再ログインで日本語入力が使用可能になります。全角/半角キーで日本語入力の切り替えができます。
画面下部に表示されている i3 ステータスバーの右端に Fcitx のアイコンが表示されます。これを右クリックして設定を行えます。全体の設定 → ホットキー Show Advanced Options をオンにし、 入力メソッドをオンに
に変換キー、 入力メソッドをオフに
に無変換キーを割り当てると便利です。
サウンドサーバーのインストール
サウンドを管理するサウンドサーバー PulseAudio をインストールします。
$ paru -S pulseaudio pavucontrol
インストール後 dmenu で sudo reboot
と入力し、コンピュータを再起動します。再起動後 dmenu から pavucontrol
を起動して音量の調節を行います。
カスタマイズ
ここまでで基本的なセットアップが終わり、以下のような状態になりました。
しかし、このままではまだちょっと使いにくいので、自分好みのカスタマイズを行っていきます。ここからは参考程度にお読み下さい。もちろん自分なりのアレンジを加えたりするのも自由です。
i3 キーバインドの設定
i3 では Windows+JKL; でウィンドウのフォーカスを左・下・上・右に移します。 Vim のキーバインドと比較してキーが右に 1 つずれているので、 Vimmer は混乱する可能性があります。
これを Windows+HJKL に直します。すでに Windows+H はウィンドウ分割の操作が割り当てられているので、これは別のキーを割り当てます。
i3 の設定は ~/.config/i3/config
に書かれています。これを編集します。
$ nano ~/.config/i3/config
# change focus
-bindsym $mod+j focus left
-bindsym $mod+k focus down
-bindsym $mod+l focus up
-bindsym $mod+semicolon focus right
+bindsym $mod+h focus left
+bindsym $mod+j focus down
+bindsym $mod+k focus up
+bindsym $mod+l focus right
# (略)
-bindsym $mod+h split h
+bindsym $mod+b split h
ウィンドウの移動も Windows+Shift+JKL; になっているので、変更します。その他のキーバインドも自由に変更します。
また、スクリーンロッカー light-locker
で画面のロックを行うキーボードショートカットを定義します。
+bindsym $mod+Shift+x exec --no-startup-id light-locker-command -l
Windows+Shift+X を押すと light-locker-command -l
が実行され、画面がロックされるよう設定しました。
bindsym ショートカットキー exec コマンド
の行を追加して、プログラムを起動する新しいキーボードショートカットを定義できます。 exec
の直後に --no-startup-id
を書くと、起動時にマウスカーソルを変更しません。 Web ブラウザなど、よく使うアプリケーションを起動するショートカットキーを定義しておくと便利です。
+bindsym $mod+c exec chromium
保存したら Windows+Shift+R で i3 を再起動し、設定を適用します。
壁紙の設定
LightDM や i3 のデフォルトの壁紙は黒一色で地味です。 Arch Linux の公式リポジトリに壁紙集があるので、それをインストールします。もちろん自分で画像を用意しても構いません。
$ paru -S archlinux-wallpaper
archlinux-wallpaper
パッケージをインストールすると、 /usr/share/backgrounds/archlinux
に壁紙の画像が配置されます。
i3 の壁紙の設定
軽量な画像ビューアと壁紙設定ツールの feh
をインストールします。
$ paru -S feh
画像を見るには、 feh
コマンドに画像ファイルまたはディレクトリのパスを渡します。
$ feh /usr/share/backgrounds/archlinux
カーソルキーの左右で画像の切り替え、上下でズームを調整します。
壁紙を設定するには、画像を右クリックし、 File → Background から表示方法を選びます。
- Set Tiled: タイル表示
- Set Scaled: アスペクト比を変更して埋める
- Set Centered: 等倍で画面中央に表示
- Set Filled: アスペクト比を変更せず埋める
即座に i3 の壁紙が適用されます。この方法で壁紙を設定すると、壁紙を設定するシェルスクリプトが ~/.fehbg
に生成されます。
#!/bin/sh
feh --no-fehbg --bg-fill '/usr/share/backgrounds/archlinux/small.png'
壁紙の設定はログアウトすると消えてしまいますが、 ~/.fehbg
を ~/.xprofile
で呼び出せば壁紙の設定を永続化できます。
$ nano ~/.xprofile
+sh ~/.fehbg
LightDM の壁紙の設定
lightdm-gtk-greeter
を使用しているので、 /etc/lightdm/lightdm-gtk-greeter.conf
を作成して設定します。
$ sudoedit /etc/lightdm/lightdm-gtk-greeter.conf
[greeter]
background = /usr/share/backgrounds/archlinux/small.png
LightDM の壁紙は lightdm
というシステムユーザーがアクセスするため、 /usr/share/backgrounds/
や /usr/share/pixmaps/
以下に画像ファイルを配置することをおすすめします。
lightdm-gtk-greeter-settings
パッケージをインストールすれば、 GUI で設定することができます。
ランチャーの変更
i3 のデフォルトのランチャーは dmenu です。これはこれで使いやすいのですが、より多機能な rofi に変更しようと思います。
まずは rofi
をインストールします。
$ paru -S rofi
rofi の設定を ~/.config/rofi/config.rasi
に書きます。
$ mkdir ~/.config/rofi
$ nano ~/.config/rofi/config.rasi
configuration {
theme: "slate-mod";
modi: "combi,drun,run,window";
combi-modi: "drun,run,window";
show-icons: true;
}
表示するモードを combi
など 4 種類指定しました。使えば分かるのでここで理解する必要はありません。
combi
:combi-modi
に指定したモードのアイテムすべてdrun
: アプリケーションのデスクトップエントリrun
: コマンドwindow
: 現在開いているウィンドウ
テーマは slate-mod
を指定しました。これは同梱のテーマではないので、自分で定義します。 davatorium/rofi-themes の slate.rasi (MIT License) を少し改造したものになります。 CSS っぽい文法で定義します。
$ nano ~/.config/rofi/slate-mod.rasi
* {
background-color: #282C33;
border-color: #2e343f;
text-color: #8ca0aa;
spacing: 0;
width: 640px;
}
inputbar {
border: 0 0 1px 0;
children: [prompt, entry];
}
prompt {
padding: 16px;
border: 0 1px 0 0;
}
textbox {
background-color: #2e343f;
border: 0 0 1px 0;
border-color: #282C33;
padding: 8px 16px;
}
entry {
padding: 16px;
}
listview {
cycle: false;
margin: 0 0 -1px 0;
scrollbar: false;
}
element {
border: 0 0 1px 0;
padding: 8px;
}
element-text {
background-color: inherit;
text-color: inherit;
padding: 0 0 0 8px;
}
element selected {
background-color: #2e343f;
}
element-icon {
size: 24px;
background-color: inherit;
}
更新: rofi 1.7.0 リリースに伴い、スタイルを調整しました。 (2021/08/31)
rofi は rofi
コマンドで呼び出します。 i3 の設定で、 Windows+D で rofi を呼び出すよう変更します。最初に combi
モードを表示するよう引数を設定しておきます。
$ nano ~/.config/i3/config
-bindsym $mod+d exec --no-startup-id dmenu_run
+bindsym $mod+d exec --no-startup-id "rofi -show combi"
Windows+Shift+C を押して i3 の設定を再読込し、 Windows+D を押して rofi を起動してみましょう。
rofi が combi
モードで表示されました。文字を入力しアイテムを絞り込んで Enter キーを押すとそれが開かれます。 macOS の Spotlight や Alfred のような感じで使えます。 Ctrl+Tab を押すとモードを切り替えられます。
dmenu のようにコマンドを直接実行することもできます。例えば、 sudo shutdown -h now
と入力して Enter キーを押すと、自動的に run
モードで開かれコマンドが実行されます。結果としてコンピュータがシャットダウンします。別のモードで開かれてしまう場合は Ctrl+Tab を押して run
モードをアクティブにしてから実行します。
また、ユーザー独自のモードを作成することも可能です。電卓を rofi に組み込むなど柔軟にカスタマイズできます。
ステータスバーの設定
画面下部に表示されているステータスバーの表示をカスタマイズします。ステータスバーの表示はデフォルトで i3status が使われていますが、もう少し直感的に設定できる i3blocks に変更します。
i3blocks の設定を ~/.config/i3blocks/config
に書きます。
$ mkdir ~/.config/i3blocks
$ nano ~/.config/i3blocks/config
separator_block_width=16
[load average]
command=uptime | awk -F': ' '{print $2}'
interval=5
[time]
command=date '+%m/%d(%a) %H:%M'
interval=1
ステータスバーに表示するものを INI ファイルフォーマットで記述します。今回はロードアベレージと時刻を表示するよう設定しました。 command
に書いたコマンドの標準出力がそのまま表示されます。コマンドやシェルの知識を存分に発揮しましょう。 interval
に設定した秒数の間隔で表示が自動的に更新されます。
もちろん自分でシェルスクリプトを書いてそれを呼び出すこともできます。パッケージのアップデートを確認するスクリプトを書いて設定してみましょう。 ~/.config/i3blocks/
に check-updates.sh
を作ります。
$ nano ~/.config/i3blocks/check-updates.sh
#!/bin/sh
# Count number of updates
updatenum=$({ checkupdates; paru -Qua } | wc -l)
# Print
case $updatenum in
0) echo 'System is up to date' ;;
1) echo "$updatenum update available" ;;
*) echo "$updatenum updates available" ;;
esac
check-updates.sh
に実行パーミッションを付加します。
$ chmod +x ~/.config/i3blocks/check-updates.sh
~/.config/i3blocks/config
に設定を追加します。更新間隔は 3600 秒 (1 時間) に設定します。
$ nano ~/.config/i3blocks/config
separator_block_width=16
+[updates]
+command=./check-updates.sh
+interval=3600
[load average]
command=uptime | awk -F': ' '{print $2}'
interval=5
[time]
command=date '+%m/%d(%a) %H:%M'
interval=1
最後に i3 の設定を変更します。 i3status の代わりに i3blocks を使用するよう変更します。
$ nano ~/.config/i3/config
bar {
- status_command i3status
+ status_command i3blocks
}
Windows+Shift+R を押して i3 を再起動すると、 i3blocks によるステータスバーが表示されます。
/proc/meminfo
のメモリ情報を処理してメモリの使用率を表示したり、 df
コマンドの出力情報を処理してストレージの空き容量を表示させるなどはもちろん、 curl
コマンドで天気や為替の API を叩いて表示させるなども可能です。色々カスタマイズしてみてください。 API を叩く際、 JSON のパースには jq
が便利です。
また、 i3blocks の設定で color=#xxxxxx
を指定すれば文字色の変更、 markup=pango
を指定すれば、 Pango のマークアップ を使用して文字色の変更や装飾を行うことができます。
夜間の色温度の設定
夜間に作業する場合、ディスプレイの色温度が高くて目がしんどいので、色温度を調整する Redshift を導入します。 iOS や macOS の Night Shift と同じものです。 Amazon の Redshift とは関係ありません。
Redshift は Xorg で機能します。 Wayland ではサポートされていないようです。
redshift
をインストールします。通知アイコンから色温度を簡単に切り替えるために必要な python-gobject
もインストールします。
$ paru -S redshift python-gobject
緯度と経度から日の出と日の入りの時刻を計算し、時刻に基づいて自動的に色温度を調整するよう設定します。現在地の緯度と経度が必要になりますので Latitude and Longitude Finder などを使用して確認しておきます。このサイトに Tokyo
と入力すると新宿区にある東京都庁舎の座標が出てきます。本記事ではこの値を使用します。
~/.config/redshift.conf
に Redshift の設定を書きます。 lat
に緯度、 lon
に経度を指定します。
$ nano ~/.config/redshift.conf
[redshift]
location-provider=manual
[manual]
lat=35.689487
lon=139.691711
ログイン時に Redshift が自動起動するよう ~/.xprofile
に追記します。通知アイコンが有効な redshift-gtk
が起動するよう書きます。
$ nano ~/.xprofile
+redshift-gtk &
再ログインすると Redshift が有効になり、日が暮れると色温度が自動的に下がります。通知エリアの電球アイコンをクリックすると Redshift を一時的にオフにできます。
スクリーンショット機能の設定
スクリーンショットは imagemagick
パッケージに入っている import
コマンドで撮ることができます。
まずは imagemagick
をインストールします。
$ paru -S imagemagick
これで import
コマンドが使用可能になりました。画面全体のスクリーンショットは以下のコマンドで撮れます。
$ import -window root screenshot.png
また、フォーカスしているウィンドウのスクリーンショットは以下のコマンドで撮れます。
$ import -window $(xprop -root | awk '$1=="_NET_ACTIVE_WINDOW(WINDOW):"{print $5}') screenshot.png
もちろんこんな長いコマンドはいちいち打っていられないので、 i3 のキーバインドを設定して簡単に撮影できるようにします。
$ nano ~/.config/i3/config
+bindsym Print exec import -window root ~/screenshot-$(date "+%Y%m%d-%H%M%S").png
+bindsym $mod+Print exec import -window $(xprop -root | awk '$1=="_NET_ACTIVE_WINDOW(WINDOW):"{print $5}') ~/screenshot-$(date "+%Y%m%d-%H%M%S").png
Print
は PrintScreen キーを表しています。 PrintScreen キーを押すと画面全体、 Windows+PrintScreen でフォーカスしているウィンドウのスクリーンショットをホームディレクトリに出力します。
その他
ここらへんは筆者が個人的にインストール・設定しているものになります。流し見程度で OK です。
Docker
Linux なので Docker を使って開発などをすぐ行えます。 docker
パッケージをインストールします。
$ paru -S docker
そして docker
サービスを起動・有効化します。
$ sudo systemctl start docker
$ sudo systemctl enable docker
hello-world
イメージを pull して実行してみましょう。
$ sudo docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
(略)
docker
コマンドの実行には特権が必要になります。ユーザーを docker
グループに追加すれば特権なしで実行できます。
$ sudo gpasswd -a myusername docker
しかし、一般ユーザーが root になることと同じ意味になるようなのであまりおすすめしません。
GPG と Pass
以前投稿した GPG で始める暗号・署名ライフ で、 OpenPGP 鍵のセットアップとパスワードマネージャの設定方法を紹介しました。 Arch Linux 上でもセットアップしておくと便利です。
GPG を使うには gnupg
と pinentry
パッケージが必要になりますが、これらは Arch Linux の最小インストールに含まれているのでパッケージのインストール操作は特に必要ありません。そのまま使い始めることができます。
パスワードマネージャの Pass は pass
パッケージをインストールすれば使えます。また、 pass-otp
をインストールすると時刻同期型ワンタイムパスワードも使えるようになります。
$ paru -S pass pass-otp
Steam
SteamOS + Linux 対応の Steam ゲームが大体プレイできます。また、 Steam Play (Proton) 機能で Windows 用ゲームの約半数がプレイできます。 Steam Play を使用する際は、動作確認データベース ProtonDB を確認しておきましょう。
Steam クライアントは 32 bit のアプリケーションなので、まずは multilib
リポジトリを有効にする必要があります。
$ sudoedit /etc/pacman.conf
-#[multilib]
-#Include = /etc/pacman.d/mirrorlist
+[multilib]
+Include = /etc/pacman.d/mirrorlist
パッケージデータベースを同期した後、 steam
と 32 bit グラフィックドライバをインストールします。
$ paru
$ paru -S steam lib32-nvidia-utils
コンピュータを再起動し Steam (Runtime) を起動すればゲームをプレイすることができます。プレイできなかったり表示がおかしいなどの問題が発生した場合は、 Steam/トラブルシューティング - ArchWiki や Steam/ゲーム別のトラブルシューティング - ArchWiki を確認してみましょう。
ちなみに先日 Valve から発表された Steam Deck に搭載されている SteamOS 3.0 は Arch Linux がベースになっているようです。
システムの操作とメンテナンス
Arch Linux は定期的なメンテナンスを行う必要があります。
シャットダウンと再起動
コンピュータのシャットダウンは以下のコマンドで行えます。 rofi などのランチャーで実行しましょう。
$ sudo shutdown -h now
コンピュータの再起動は以下のコマンドで行えます。
$ sudo reboot
rofi の電源メニューのモードを自作して追加してみるのも面白いかもしれません。
システムの更新
Arch Linux はローリングリリースです。パッケージは頻繁に更新されますので、時間があるときはこまめにシステムの更新を行いましょう。 AUR ヘルパー paru
では以下のコマンドで公式リポジトリのパッケージを含むすべての更新を行います。
$ paru
パッケージに含まれる設定ファイルを変更していた場合、アップグレードによって *.pacnew
ファイルが生成される場合があります。既存の設定ファイルと比較しマージしましょう。
アップグレードによってシステムが壊れる可能性もあるので、忙しい時にアップグレードするのはやめましょう。壊れて起動しなくなったらライブ環境の出番です。
paru
を用いて AUR のパッケージをアップグレードする際、 PKGBUILD
などの差分が表示されますので必ず確認してから更新して下さい。
サービスの管理
サービスは systemctl
コマンドで管理することができます。ここでは sshd
(SSH サーバー) サービスを例に管理方法を紹介します。
サービスを開始するには start
サブコマンドを使用します。
$ sudo systemctl start sshd
これで sshd
が開始します。止めるには stop
サブコマンド、再起動するには restart
サブコマンドを使用します。
コンピュータの起動時にサービスも起動するには、サービスを有効化する必要があります。 enable
サブコマンドを使用します。
$ sudo systemctl enable sshd
これでコンピュータの起動時に sshd
が起動するようになりました。解除するには disable
サブコマンドを使用します。
サービスの状態は status
サブコマンドで確認できます。
$ systemctl status sshd
● sshd.service - OpenSSH Daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled)
(略)
サービスのログは journalctl
コマンドで確認できます。
$ journalctl -eu sshd
おわり
この記事で紹介したシステム構成や設定はあくまで一例です。シンプルであるが故カスタマイズ性が高いので、自分なりの最適な設定を見つけてみて下さい。
筆者はホームディレクトリの .
から始まるファイル群 dotfiles を公開しています。 zsh や i3 などの設定が載っていますので、ぜひ参考にしてみて下さい。 dotfiles を Git で管理すると、他の環境でも簡単に使い回せて便利です。
この記事で触れられなかった事項もたくさんあります。 一般的な推奨事項 - ArchWiki によく目を通しておきましょう。