みくにまるのブログ

意識低い系ブロガー、みくにまるが送るブログ。

【令和最新版】Arch Linuxのインストール方法と日本語環境設定

  • 構築済みARUみたいなリポジトリは追加しない
    ARUをビルドしてあるような便利そうなリポジトリが時々ありますが
    バージョンの衝突を引き起こすことがあるのでやめておきましょう。
    カーネルなんかはビルドが面倒なので便利ですけど
    その際にもビルド済みのカーネル単独で提供している小型のリポジトリがある場合はそちらを優先していきます。

  • pyenvでglobalのpythonを変更しない
    ピンポイントすぎる話ですが
    Arch LinuxではAURのパッケージのビルドの際に
    /usr/bin/pythonではなくpythonコマンドを利用する場合がるので
    pyenvでglobalのpythonを変更しているとハマります。
    これはAURでパッケージを配布したユーザーが
    内部のスクリプトで"python"と決め打ちしてるのが原因なので回避は結構大変です。
    これを防ぐために、pyenvなどを利用する際には、globalのpythonのバージョンを変更しないようにしておきましょう。

  • KDEを使わない
    KDEは不安定なので使わないことをオススメします。
    日本語環境設定でKDEは特有のハマり箇所が結構あります。 -->

今回解説すること

単なるインストールと起動までの解説ではなく
快適に利用できる状態にまで持っていく方法を詳細に解説していきます。
可能なことは全部盛りで導入していくので
必要ない部分は適宜飛ばして作業してください。
Btrfsで圧縮とTrimを有効化しておきます。
SSDかつデュアルブートなしで使うことを想定

インストール手順の概要

細かい手順を解説する前に
ざっくりと手順の概要を列挙しておきます。
Arch Wikiにはない、日本語環境設定特有の手順もあるので最初に眺めておきましょう。

  • 環境共通のインストール手順の実行
  • cfdiskを利用したパーティショニング (ホームディレクトリ暗号化の設定あり)
  • マウント(ここでBtrfsのTrimと圧縮を有効にしておく)
  • https://www.reddit.com/r/archlinux/comments/dbip45/is_there_any_advantaged_in_using_systemd/
  • nanoの使い方を予習
  • pacmanの最低限の設定
  • インストールとchroot (networkmanagerとbluezとnanoを忘れずに)
  • systemd-hooksを利用する(起動時間が短いから) (暗号化特有の手順あり)
  • systemd-bootの設定 (起動時間が短いから) (暗号化特有の手順あり)
  • ユーザーの作成
  • ユーザーにsudo権限を与える
  • 暗号化ホームパーティション特有の設定 (設定しないとログイン時にマウントしてくない)
  • pacmanの最低限の設定
  • 【オプション】zshの導入
  • 日本語環境の必須パッケージのインストール(入力関連パッケージ(fcitx5-mozc)と最低限のフォント)
  • 日本語入力の最小限の設定 (CUI上でも簡単に行える設定はこの段階で実行しておきます)
  • ホームディレクトリ名の英語化の設定 (日本語のままでは一部ソフトでハマるので推奨)
  • Xfceのインストール (DEは好みがあると思いますが、とりあえずXfceで話を進めます)
  • DMのインストール
  • systemd enableでネットワークとDMとBluetoothを有効化
  • 再起動 (ここからはGUI上で作業可能なはずです)
  • 【オプション】ccacheの導入、キャッシュ容量の設定、環境設定
  • 【オプション】pacmanの設定 (ビルド時の最適化など)
  • paruの導入 (AURの管理ソフト、事実上必須)
  • 日本語環境特有の推奨パッケージのインストール (追加フォントなど、強く推奨、結構時間かかります)
  • フォントの設定 (Xfceのフォントと、コンソールのフォント、文字化け対策でシステムのフォントも変更)
  • 【オプション】フォントの更に細かい設定 (ヒンティングなどを変更してギザギザ感を軽減しておく)
  • 【オプション】zramの導入 (特にデメリットはないので導入を推奨、設定はFedoraの初期設定を流用します)

環境共通のインストール手順の実行

インストール用のDVD(USB)を起動したら
最初にキーボードレイアウトを変更しておきます。

loadkeys jp106

これで準備完了

cfdiskを利用したパーティショニング

cfdiskを使ってgptでパーティショニングを実行していきます。

今回の構成は

/dev/sda1 EFI System (2GB程度)
/dev/sda2 Linux FileSystem (ルートとswapで使う、多くても120GBで十分)
/dev/sda3 Linux FileSystem (ユーザーのホームディレクトリ用、個別に暗号化しないならsda2とまとめてもいい)

上記のような構成にしておきます

bootパーティションは作るべき?

デュアルブートやBootの暗号化をしないのであれば
BootもまとめてEFIパーティションに突っ込むほうが管理が楽です。

他のディストリビューションのようなecryptfsでのフォルダ単位での暗号化ではダメ?

ecryptfsでの暗号化をすると
ファイル名の最大長の制限が短くなるので
ユーザーディレクトリ内でのアプリの動作で不具合が出ることがあります。
またパフォーマンスも悪いのでオススメはしません。

luksの作成

sda2とsda3をluksでフォーマットしていきます。
確認画面では、大文字で「YES」と打ち込まないと続行できないので注意。

cryptsetup luksFormat /dev/sda2 # 起動時に入力する解除パスワードを設定
cryptsetup luksFormat /dev/sda3 # ユーザーのログインパスワードと同一にしておく

フォーマットが終わったらluksを開いておきましょう

cryptsetup open /dev/sda2 root
cryptsetup open /dev/sda3 userdir

lvmの作成

/dev/sda2にlvmを作成しておきましょう

pacman -S lvm2  
pvcreate /dev/mapper/root 
vgcreate crypt /dev/mapper/root 
lvcreate -L 20G crypt -n swap # Swapパーティションの作成、ハイバーネートしないなら不要  
lvcreate -l 100%FREE crypt -n root # ルートパーティション  

フォーマット

フォーマットしていきます

mkfs.vfat /dev/sda1  
mkfs.btrfs /dev/mapper/crypt-root  
mkfs.btrfs /dev/mapper/userdir  
mkswap /dev/mapper/crypt-swap  

パーティションを確認する

fdisk -l   

特にdev/sda1が EFI Systemになっているかを念入りに確認してください。
ここが違っていた場合、作業終盤で最初から仕切り直しになります。

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

フォーマットが完了したらマウントしましょう
マウントオプションが入るので注意
ホームディレクトリ用のパーティションはまだマウントしなくていいです。

mount -o compress-force=zstd:1,discard=async /dev/mapper/crypt-root /mnt
mkdir /mnt/boot  
mount /dev/sda1 /mnt/boot  
swapon /dev/mapper/crypt-swap

「zstd:1」はFedoraのデフォルトで
Fedoraコミュニティの計測の結果、最もパフォーマンスの利益が大きいと判断された値。
compressにするかcompress-forceかに関しては
個人的にはcompress-force=zstd:1で何の問題もなく、容量の削減効果も大きいのでこちらを勧めたいのですが
とりあえずFedoraのデフォルトということで通常のcompressオプションも十分にありかと思います。
forceの有無に関しては現時点ではFedoraコミュニティでも計測結果が出ていないので
今後どちらが良いと判断されるかはまだ不明。

nanoの使い方の予習

Arch Linuxのインストールでは
マウス操作可能なテキストエディタを利用しません。
今回はnanoという比較的初心者にも優しいエディタで解説します。
その前に軽く操作を予習しておきしましょう。

保存 Ctrl + s
終了 Ctrl + x
切取 Ctrl + k
貼付 Ctrl + u
コピ Alt + 6
取消 Shft + Alt + u

とりあえず上記の6操作を覚えておけば大丈夫です。

pacmanの設定

この後のインストールを高速化させるために
並列ダウンロードを有効化しておきます。
この設定はインストーラー内でしか使われないので注意

nano /etc/pacman.conf  
  
ParallelDownloads = 5 # ← この行のコメントアウトを外しておく

pacstrapの実行

ディスクにArch Linuxの必須パッケージをインストールしておきます。
この後の作業で使う一部パッケージと
無線LANBluetooth関連の必須パッケージもインストールしておきます。
pulseaudioもこの段階でインストールしておきましょう
(pipewireはイヤホンとの切り替えで不具合が出る場合があるので、最初にpulseaudioで動作確認してから切り替えることを推奨)
最後のintel-ucodeは、AMDユーザーの方はamd-ucodeに置き換えてください。

pacstrap /mnt base base-devel lvm2 linux linux-firmware nano networkmanager bluez bluez-utils pulseaudio intel-ucode

fstabの作成

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

chroot

arch-chroot /mnt  

タイムゾーンの設定

ln -sf /usr/share/zoneinfo/Japan /etc/localtime  
timedatectl set-timezone Japan  
pacman -S nano-syntax-highlighting
## 言語関連の最低限の設定
nano /etc/locale.gen  
  
ja_JP.UTF-8 UTF-8 # ← ここのコメントアウトをはずす
言語設定を作成
locale-gen  
言語をセット
nano /etc/locale.conf  
  
LANG=ja_JP.UTF-8
キーボードレイアウトをセット
nano /etc/vconsole.conf  
  
KEYMAP=jp106
locale -a  
  

hostnameの設定

hostnameのセット

nano /etc/hostname  
  
<hostname> # なんでもいい
nano /etc/hosts

127.0.0.1   localhost
::1     localhost
127.0.1.1   <hostname>

mkinitcpioの設定

今回は起動が高速なsystemd hooksを採用します。
順番も大事なのでそのまま書き写してください。(HOOKS=(xxxx)の部分)

nano /etc/mkinitcpio.conf  
  
#    usr, fsck and shutdown hooks.  
HOOKS=(systemd autodetect modconf block keyboard sd-vconsole sd-encrypt lvm2 filesystems fsck)  
  
# COMPRESSION  

上記のようにセットしておく。

完了したら更新

mkinitcpio -P

ブートの設定

今回は起動が高速なsystemd-bootを採用します。
最初に解説したパーティション構造を前提にするので
独自のパーティション構造を採用した場合には適宜読み替えてください。

とりあえずEFI関連のインストール
パーティションの作り方を間違えているとここで失敗します。(振り出しに戻る)

bootctl install  

ローダーの設定

nano /boot/loader/loader.conf  
  
default  arch.conf  
timeout  4 # ←慣れたら0に設定しなおしてください。スペースを押しながらの起動で開けます。  
console-mode max  
editor   no  

エントリーの設定。
UUIDを打ち込むのが面倒なので最初に貼り付けておきます。

blkid >> /boot/loader/entries/arch.conf

エントリーを編集します。
AMDの場合はintel-ucodeをamd-ucodeに置き換えてください。
先程コピーしたIDをうまく活用しながら完成させましょう。

nano /boot/loader/entries/arch.conf
  
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options luks.uuid=/dev/sda2のUUID luks.name=/dev/sda2のUUID=crypt luks.options=discard root=UUID=/dev/mapper/cryptーrootのUUID resume=UUID=/dev/mapper/cryptーswapのUUID  rw

zsh等のインストール

あとで楽になるので、この段階でzshをインストールしておきます。

pacman -S zsh  

ユーザーの作成

とりあえずrootを作成

passwd  

ユーザーを作成

useradd -m -G wheel -s /bin/zsh ユーザー名  

パスワードを割り当て
このとき、最初に作ったユーザーの暗号化ディレクトリ用のパーティションと同じパスワードに設定してください。

passwd ユーザー名  

ユーザーにsudoを付与

一応sudoが入っているか確認

pacman -S sudo  

wheelを編集します

EDITOR=nano visudo  

スクロールすると
「%wheel ALL=(ALL) ALL」という行があるので
コメントアウトを外して保存します。

## Uncomment to allow members of group wheel to execute any command  
%wheel ALL=(ALL) ALL  

暗号化ホームディレクトリの設定

ログイン時に、最初に作成したホームディレクトリ用の暗号化パーティションをマウントするように設定しておきます。
暗号化ホームディレクトリを作ってない場合はこの作業は不要です。

必要なパッケージをインストール

pacman -S pam_mount  

pamの編集

nano /etc/pam.d/system-login  
  
auth       required   pam_shells.so  
auth       requisite  pam_nologin.so  
auth       optional pam_mount.so ← 追加  
auth       include    system-auth  
  
account    required   pam_access.so  
account    required   pam_nologin.so  
account    include    system-auth  
  
password   optional   pam_mount.so ← 追加  
password   include    system-auth  
  
session    optional   pam_loginuid.so  
session    optional   pam_keyinit.so       force revoke  
session    optional   pam_mount.so ← 追加  
session    include    system-auth  
(・・・以下略)  

マウントオプションなどの設定

最初に対象となるディスクのUUIDをコピーしておきます
要はホームディレクトリ用に切ったパーティションのUUIDを引っぱっておきます。

blkid | grep sda3 >> /etc/security/pam_mount.conf.xml  

次に、メモ用にコピーしたしておいたUUIDを利用して 設定を完成させましょう。
メモ用のメッセージが設定ファイルの末尾に付与されているのでコピーを駆使してください。
メモ部分が残ったままにならないように注意してください。
(長いですが打ち込まないと起動しないので頑張りましょう)

nano /etc/security/pam_mount.conf.xml  
  
<!-- requires ofl from hxtools to be present -->  
<logout wait="0" hup="no" term="no" kill="no" />  
  
  
                <!-- pam_mount parameters: Volume-related -->  
  
<volume user="ユーザー名" fstype="crypt" path="/dev/disk/by-uuid/先程メモしたUUID" mountpoint="/home/user" options="crypto_name=userdir,compress-force=zstd:1,discard=async" />  
  
<mkmountpoint enable="1" remove="true" />  
  
  
</pam_mount>  

この後の作業で使うのでマウントしておきます

mount -o compress-force=zstd:1,discard=async /dev/mapper/userdir /home/ユーザー名

ちゃんとマウントされているか確認しておきます

lsblk    

userdirの右端の項目が/home/"ユーザー名"になっていればOK

ホームディレクトリの権限をユーザーに戻す

この時点ではホームディレクトリなのにユーザーにアクセス不可な状態ですので
ホームディレクトリの権限をユーザーに戻します

chown -R ユーザー名:ユーザー名 /home/ユーザー名

pacmanの最低限の設定

ここから大量のインストールが入るので
pacmanの並列ダウンロードを有効化しておきます。

nano /etc/pacman.conf  
  
ParallelDownloads = 5 # ← この行のコメントアウトを外しておく

日本語環境の必須パッケージのインストール

日本語の表示と入力に使うパッケージをインストールします。

zsh  
パッケージをインストールします。
pacman -S fcitx5-mozc fcitx5-configtool fcitx5-gtk fcitx5-qt noto-fonts-cjk
## 日本語入力の最小限の設定 ログイン後に日本語入力が可能になるように設定を加えておきます。 打ち間違いに注意してください。 sudo -u ユーザー名をつけておかないと 後で編集が難しくなります。
sudo -u ユーザー名 nano /home/user/.pam_environment  
  
GTK_IM_MODULE DEFAULT=fcitx5
QT_IM_MODULE  DEFAULT=fcitx5
XMODIFIERS    DEFAULT="@im=fcitx5"
## ディレクトリ名の英語化
pacman -S xdg-user-dirs
sudo -u ユーザー名 LANG=C xdg-user-dirs-update  
英語のディレクトリが出来上がっていたら成功
ls /home/ユーザー名  
## デスクトップ環境とディスプレイマネージャーのインストール 好みはあると思いますが、今回はXfceで話を進めます。 途中の選択肢は特にこだわりがなければデフォルトにしておくと問題を抑えられます。
pacman -S xorg xfce4 xfce4-goodies lightdm lightdm-gtk-greeter  
## Xfce用の追加パッケージのインストール (ゴミ箱など) Xfceは初期状態ではゴミ箱すらないので追加のパッケージを導入しておきます。
pacman -S gvfs network-manager-applet blueman
## ブラウザのインストール ブラウザをインストールしておきます ここは特にこの先の解説には影響しないので好みで選んでください
pacman -S firefox firefox-i18n-ja
## systemd enableでネットワークとDMとBluetoothを有効化 再起動の前に必要なサービスを有効化しておきます
systemctl enable lightdm  
systemctl enable bluetooth  
systemctl enable NetworkManager  
## 再起動 一旦再起動します。 簡素なパスワード入力画面になるので そこで最初に設定した暗号化解除用のパスワードを入力してください。
exit  
exit  
reboot  
## キーボードレイアウトを調整する ログイン後にキーボードレイアウトがjp106から外れている場合があります。 これについては別記事で対処方法をまとめたので修正しておきましょう。 - 日本語環境の必須パッケージのインストール(入力関連パッケージ(fcitx5-mozc)と最低限のフォント) - 日本語入力の最小限の設定 (CUI上でも簡単に行える設定はこの段階で実行しておきます) ## ccacheの導入 ここからはARUはふんだんに扱う作業となります。 早い話がビルドをしまくるので、ccacheを導入しておきましょう。
sudo pacman -S ccache
インストール完了したら .zshrcに以下を追記します。
nano ~/.zshrc  
  
# ccacheの設定
export PATH="/usr/lib/ccache/bin/:$PATH"
最大キャシュ容量も設定しておきましょう 自身のストレージ容量とのバランスを見て決めてください。 例えば50GBまでに設定する場合にはこのようにします。
ccache -M 50G
## pacmanの設定(ビルド関連) AURを扱うにあたって pacmanのビルド関連の設定も多少煮詰めておきます。 好みに合わせて、複数コアでのビルドを許可する設定を追加しておきます。
sudo nano /etc/makepkg.conf  
  
MAKEFLAGS="-j$(nproc)" # ← コア数分だけ並行してビルドする設定
他にも最適化の調整をしたい場合には このファイルで調整をしてみてください。 ## paruの導入 いよいよAURの管理ソフトparuを導入します。 以下のコマンドで導入しましょう。 途中で必要パッケージを聞かれるので適宜追加してください。
sudo pacman -S git
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si
## paruの設定 デフォルトでは1つだけ使いにくいオプションがあるので設定変更します。
sudo nano /etc/paru.conf  
  
BottomUp # ← ここのコメントアウトを外しておく
## 日本語フォントのインストール paruの導入が完了したら いよいよ日本語フォントのインストールに入ります。 ビルド時にコケるので 先にビルドで扱う依存パッケージをインストールしておきます。 上書き警告が出ますが気にせず続行してください。
paru -S unzip-iconv
とりあえずAURで入手可能な日本語フォントを並べておくので ここから適当に抜き出してインストールしてください。
paru -S adobe-source-han-sans-jp-fonts adobe-source-han-serif-jp-fonts otf-ipaexfont otf-ipafont otf-ipamjfont ttf-hanazono ttf-sazanami mplus-font nerd-fonts-noto-sans-mono nerd-fonts-noto-sans-regular-complete nerd-fonts-ubuntu-mono noto-fonts-sc otf-harenosora-mincho otf-kodomo-maru-gothic otf-kodomo-maru-gothic-narrow otf-oriental otf-source-han-code-jp otf-takao otf-takaoex otf-takaomj ttf-choc ttf-genshin-gothic ttf-ipa-mona ttf-kh-dotfont ttf-kochi-substitute ttf-komatuna ttf-koruri ttf-meguri ttf-meslo-nerd-font-powerlevel10k ttf-mgenplus ttf-migu ttf-mikachan ttf-misaki ttf-mona ttf-monapo ttf-mplus ttf-ms-win10-auto-japanese ttf-mutsuki ttf-nasu ttf-noto-sans-kannada ttf-oradano-mincho ttf-osaka-sans-serif ttf-ricty ttf-ricty-diminished ttf-rounded-mplus ttf-sawarabi-gothic ttf-sawarabi-mincho ttf-ume ttf-umeplus ttf-vlgothic  
## 細かいフォントの設定 フォントのヒンティングなどの設定を行うと 字が見やすくなるとか。
nano /etc/fonts/conf.d/71-no-embedded-bitmaps.conf  
  
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit mode="assign" name="embeddedbitmap">
      <bool>false</bool>
    </edit>
    <edit mode="assign" name="hintstyle">
       <const>hintnone</const>
    </edit>
  </match>
</fontconfig>
## Zramの導入 必要パッケージを導入して
sudo pacman -S zram-generator  
sudo pacman -S zram-generator.conf  
zramctl  
設定はFedoraのデフォルトを流用。
sudo nano /usr/lib/systemd/zram-generator.conf  
  
  
[zram0]  
zram-fraction = 1.0  
max-zram-size = 8192