Arch LinuxでXfce+i3wm環境を作る方法を解説します。
やり方をすべて網羅しているサイトが見つからなかったので自分で作ることにしました。
isoのダウンロード
公式サイトから日本のミラーを選択してisoをダウンロードします。
(ファイル名の例:archlinux-2024.11.01-x86_64.iso)
必要ならチェックサムを計算します。任意。
USBの作成
WindowsならRufus、MacならRaspberry Pi Imagerが楽で良いです。
起動
可能ならUEFIで起動しましょう。PCの設定を弄ってください。
自分はUEFI環境にインストールしましたが、BIOS環境ではパーティション・ブートローダーあたりの設定が異なるので適宜他の記事も参考にしてください。
(ちなみに、私の環境ではArch LinuxのインストールUSBがBIOSモードで起動したんですが、インストール後の環境はなぜかUEFIで運用できています。よく分かりません。有識者の方教えてください。)
普通にUEFI環境が使える方は気にする必要はありません。
ライブ環境を設定する
キーボードを設定します
loadkeys jp106
Wi-Fi接続をします。デスクトップの場合はLANケーブルを繋げば特にやることはありません。
iwctl
以下を入力します。
device list
ここで表示された無線LANデバイス名をdeviceNameとします。
station deviceName scan
station deviceName get-networks
ここで表示されたアクセスポイントの名前をWifiNameとします。
station deviceName connect WifiName
exitでiwctlから抜けます。
これでWi-Fiの設定は終わりです。ネットに繋がっているかpingで確認しましょう。
ping google.com
(PingはControl+Cで終了)
システムクロックを以下のコマンドで合わせます。
timedatectl set-ntp true
パーティション分け
デュアルブート環境の場合はミスったら簡単に環境が吹き飛んでしまうのでよく調べましょう。怖いなら物理的にディスクを分けるのも良い手です。
以下のコマンドでディスクの名前を確認します。
lsblk
sdaにインストールすると仮定します。
cgdisk /dev/sda
EFIパーティション
freespaceを選択し,Newを押す
そのままEnter
+512Mを入力 (始めから512MiB)
ef00を入力
名前を入力(ここでは"EFI")
rootパーティション
freespaceを選択し,Newを押す
そのままEnter
-3Gを入力 (終わりから3GiB)
そのままEnter
名前を入力(ここでは"ROOT")
swapパーティション
freespaceを選択し,Newを押す
そのままEnter
そのままEnter
8200を入力
名前を入力(ここでは"swap")
Writeを選択して変更を確定させた後、Quitで終了します。
フォーマット
もう一度lsblkでパーティションを確認します。
lsblk
EFIパーティション(ここではsda1)をフォーマットします。
mkfs.fat -F32 /dev/sda1
ROOTパーティション(ここではsda2)をフォーマットします。
Btrfsはext4に代わるなんか新しいやつらしいです。
mkfs.btrfs /dev/sda2
swapパーティション(ここではsda3)をフォーマットします。
mkswap /dev/sda3
マウント
rootパーティションをマウントします。必要に応じてまたlsblkで確認します。
mount /dev/sda2 /mnt
/mnt/bootを作成し,EFIパーティションをマウントします。
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
swapを起動します。
swapon /dev/sda3
システムのインストール
さて、ここまででもう嫌気が差しましたがいよいよ本体をインストールします。
ミラーを選択します。
reflector --country Japan --age 12 --protocol http,https --sort rate --save /etc/pacman.d/mirrorlist
pacstrapコマンドで"Arch Linux"本体を形成します。
Arch Linuxのインストールではこれを手動で行う必要があり面倒ですが、一番Linuxについて勉強になる部分だと思います。
余談ですがWindowsとかと違いLinuxにはchrootという便利なものがあります。
例えばdebootstrapでDebian環境を作りchrootすれば「Arch Linux上でDebianのパッケージ管理ツールであるaptを使う」なんてこともできてしまいます。
また、既存のisoからsquashfsを抽出しchrootで(isoは起動せずとも)中身に変更を加え、再度squashfsをisoに戻すことでオリジナルディストリビューションを作ることもできます。(同じパッケージに同じ.configを用意すれば簡単に同じ環境を再現できる)
例えば日本のNN Linux等はこういった方法で作成されていると思います。
Arch Linuxの場合はarchisoでビルドされているのですが(公式も)、こういった手動での編集も可能なのです。
pacstrapで必須の linux linux-firmware base パッケージと、パッケージのビルドに必要な base-devel パッケージグループをインストールします。また、パッケージ管理に便利な pacman-contrib もインストールします。
nano や neovim など好みのテキストエディタも追加でインストールしましょう。
pacstrap /mnt linux linux-firmware base base-devel pacman-contrib nano
システムの設定
fastabを設定します。
genfstab -U /mnt >> /mnt/etc/fstab
pacstrapでインストールしたArch Linuxの中にchrootします。
これにより/mntがルートディレクトリになります。
arch-chroot /mnt
タイムゾーンをTokyoに設定します。
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ハードウェアクロックを設定します。
hwclock --systohc
ローカライゼーション
/etc/locale.gen の 「en-US.UTF-8」 と 「ja_JP.UTF-8」 の行の#を消してコメントを解除します。
nanoで編集します。
nano /etc/locale.gen
コメントを解除したらlocale-genでロケールを生成します。
locale-gen
使用するロケールを /etc/locale.conf に書き込みます。
echo LANG=en_US.UTF-8 > /etc/locale.conf
日本語配列のキーボードを使用している場合はコンソールキーマップを設定します。
echo KEYMAP=jp106 > /etc/vconsole.conf
コンピュータ名の設定
コンピュータ名を設定します。(ここではarch)
好きな名前で良いです。
決められないときは「OS名+PCやCPUの名前」で良いでしょう。
echo arch > /etc/hostname
この名前を /etc/hosts にも書き込みます。
nano /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.0.1 arch.localdomain arch
ネットワーク設定
現在のライブ環境とは異なりインストールされたシステムではネットワーク接続自体が有効になっていません。
pacman -S networkmanager wpa_supplicant dialog iw iwd dhcpcd netctl
networkmanagerが起動時に立ち上がるようにします。
systemctl enable NetworkManager
パスワード
rootアカウントのパスワードを設定します。
passwd
ブートローダーの設定
systemd-bootを使います。
bootctl --path=/boot install
/boot/loader/loader.confを弄ります。
nano /boot/loader/loader.conf
default arch
timeout 2
editor no
arch エントリを /boot/loader/entries/arch.conf に作成します。
(お使いの環境に応じてsda2をrootパーティションの値に置き換えてください)
blkid -s PARTUUID /dev/sda2 > /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のダブルクオーテーションは要らないので外しましょう。
Intelの場合は intel-ucode を、 AMDの場合は amd-ucodeをインストールします。
pacman -S intel-ucode
再起動
exitコマンドでchroot環境から抜け、rebootコマンドで再起動します。
長かったですがArch Linux本体のインストールはここで終了です。お疲れ様でした!
起動とログイン
正しくインストールできていると以下の画面が出ます。
rootと打ってログインしましょう。
ネット関連の設定をします。
nmtui
activate a connectionを選択してWi-Fiに接続してください。
また、念の為pacmanでパッケージのアップグレードをしておきましょう。
pacman -Syu
一般ユーザーの作成
rootのまま作業を続けるのは好ましくないので、一般ユーザーを作成します。
ここではユーザー名はarch-userとしていますが、好きな名前で構いません。
useradd -mg wheel arch-user
一般ユーザーのパスワードを設定します。
passwd arch-user
wheelグループのユーザーがsudoコマンドを使用して一時的に特権を得られるように設定を変更します。
以下のコマンドを打った後、「%wheel ALL=(ALL:ALL) NOPASSWD: ALL」という行を探してコメントアウトします。
EDITOR=nano visudo
logoutコマンドでrootからログアウトし、先程作成した一般ユーザーでログインしましょう。
logout
AURヘルパーのインストール
AURヘルパーをインストールします。
AURとはArch User Repositoryの略で、AURヘルパーを用いると公式リポジトリにないパッケージのビルドとインストールがコマンド一つでできます。Arch Linuxの一番便利なところです!
yayが好きなのでyayをインストールします。
sudo pacman -S git go
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
homeディレクトリに戻ります。
cd ~
zshのインストール
bashはいやなのでzshを入れます!
yayでzshをインストールします
(yayにはsudoをつける必要がありません)
yay -S zsh
ログインシェルをzshに変更します。
chsh -s $(which zsh)
zshの設定を書きます。
nano ~/.zshrc
以下を記述します。
autoload -Uz compinit promptinit
compinit
promptinit
export EDITOR=nano
ログインシェルを手動で起動します。
exec zsh -l
pacman の出力をカラー化します。
「Color」と書いてある行を探してコメントアウトします。
sudoedit /etc/pacman.conf
GUI環境のインストール
ディスプレイサーバーをインストールします。
yay -S xorg-server
グラフィックドライバのインストール
私の環境では特に必要ないので割愛しますが、必要な場合は適宜調べてください。
フォントのインストール
Google Noto Fontsをインストールします。
yay -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra
ディスプレイマネージャのインストール
ディスプレイマネージャとはログイン画面とウィンドウマネージャの起動を担うソフトウェアです。
yay -S lightdm lightdm-gtk-greeter
以下のコマンドでLightDMを有効化します。
sudo systemctl enable lightdm
デスクトップ環境とウィンドウマネージャのインストール
ここからが醍醐味です。本記事ではXfce+i3wmというかなり尖った構成にしていきます。
まずXfceをインストールします。
sudo pacman -S xfce4 xfce4-goodies
続いてi3wmを入れちゃいます。
(i3wmを入れる時はi3statusとか余計なアドオンは不要です)
yay -S i3
picomとrofi、fehをインストールします。
ついでにxarchiverも入れます。
sudo pacman -S picom rofi xarchiver feh
後で必要になるのでブラウザを入れます。
yay -S google-chrome
キーボードとロケールの設定
Xorgでのキーボードレイアウトを設定します。
sudo localectl set-x11-keymap jp
システム全体のロケールを日本語へ変更します。
「LANG=en_US.UTF-8」をコメントアウトして「LANG=ja_JP.UTF-8」を追記します。
sudoedit /etc/locale.conf
さて、ここで再起動です。
sudo reboot
GUI環境を起動
起動するとこういう画面になります。
右上からXfceを選択して起動します。
本題です。i3wmをXfceに統合していきましょう。
設定から「セッションと起動」を開いてxfwm4とxfdesktopを「しない」に変更します。
その後「セッションを保存」をクリックします。
次に「自動開始アプリケーション」を開きます。
i3を自動起動アプリケーションに追加してください。
(名前もコマンドも「i3」)
さて、本来はi3wmやrofi、picomの設定をする必要があるのですが、自力で1からやるのはめんどくさいです。(←経験者)
というわけで、予めすごい人が作った設定ファイルを移植して無理やり動かすことにしましょう。
(Linuxのソフトウェアの設定ファイルは基本的にホームディレクトリと「~/.config」の中の2箇所にあります。同じパッケージに同じ設定ファイルがあれば簡単に環境を移植できます。)
Archmageというディストリビューションがあります。そのソースコードを拝借してきましょう。
airootfs/home/liveuser以下のディレクトリのファイルを、すべて自分のホームディレクトリにコピペします。普通にまるごとコピペするだけでいいと思います。
途中ファイルを置き換えるか否か訊かれますが、全て置き換えてください。
終わったら再起動します。
sudo reboot
再起動したらXfce+i3wmの環境ができているはずです。(いよいよ)
細々とした設定
スクリーンロッカーをインストールします。
yay -S light-locker
ログイン時に自動起動するようにします。
.xprofileに「light-locker --lock-on-suspend &」と追記します。
nano ~/.xprofile
おなじみFcitxとMozcをインストールします。
yay -S fcitx fcitx-mozc fcitx-im fcitx-configtool
これも.xprofileに記述します。
nano ~/.xprofile
↓以下の文章を書きます
ーーーーーーーーーーーーーーーー
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
fcitx
ーーーーーーーーーーーーーーーー
仕上げに、サウンドに必要なPluseAudioと、パネルから音量を管理するのに必要なpavucontrolをインストールします
yay -S pulseaudio pavucontrol
これで基礎的なソフトウェアのインストールは本当に本当に終わりです。お疲れ様でした!
Optionalな設定
・マウスを自動的に非表示にするツールのunclutterをインストール
sudo pacman -S unclutter
i3の時と同じように、xfceでログイン時に自動起動するように設定をします
・Powerlineをインストール
(後で書きます)
参考文献
参考文献の作者様に感謝申し上げます。
https://blog.livewing.net/install-arch-linux-2021
https://qiita.com/Hayatann/items/09c2fee81fcb88d365c8
https://zenn.dev/imzrust/articles/28f8f5babd23ed
https://forum.endeavouros.com/t/tutorial-easy-setup-endeavour-xfce-i3-tiling-window-manager/13171
†Arch Linux† 沼をenjoyしよう!
(Arch Linuxというかi3wm)使うと普通のWindowsとかMacOSには戻れなくなります