Arch 系ディストリビューションの共通設定

2023-01-29

基本の設定

DNSサーバを変更

# DNSサーバの自動設定を止める
mkdir -p ~/tmp_arch
cd ~/tmp_arch
cp /etc/NetworkManager/NetworkManager.conf .
printf "
[main]
dns=none" >> NetworkManager.conf
sudo mv NetworkManager.conf /etc/NetworkManager/

# Cloudflare のDNSサーバに変更
printf "nameserver 2606:4700:4700::1111
nameserver 2606:4700:4700::1001" > resolv.conf
sudo mv resolv.conf /etc/

# Cloudflare に障害が発生した場合は Google Public DNS
# printf "nameserver 2001:4860:4860::8888
# nameserver 2001:4860:4860::8844" > resolv.conf
# sudo mv resolv.conf /etc/

# DNSサーバの設定が自動的に上書きされないか確かめる
sudo systemctl restart NetworkManager.service
drill https://www.youtube.com

# ;; SERVER: 2606:4700:4700::1111

2606:4700:4700::1111 に接続している。次回からは resolv.conf の内容が即座に反映されるので、書き換えたあとの systemctl restart は不要。

ネットワークの自動マウントをオフにする

ネットワークの自動マウントをオフにすると Thunar の起動速度が改善される。

mkdir -p ~/tmp_arch
cd ~/tmp_arch
cp /usr/share/gvfs/mounts/network.mount .
sed -i -e 's,AutoMount=true,AutoMount=false,g' network.mount
sudo cp network.mount /usr/share/gvfs/mounts/network.mount

パッケージ管理を設定

# ~/.bashrc が上書きされている場合は削除
rm ~/.bashrc

# 高速なミラーサーバを選択
sudo pacman -Sy
sudo pacman -S --needed archlinux-keyring reflector rsync
sudo reflector -c jp,kr,cn -f 5 --save /etc/pacman.d/mirrorlist

mkdir -p ~/tmp_arch
cd ~/tmp_arch/

# AUR パッケージをビルドするときのスレッド数を論理プロセッサ数にする
sudo pacman -S --needed wget
wget https://raw.githubusercontent.com/archlinux/svntogit-packages/packages/pacman/trunk/makepkg.conf
sed -i -e 's,#MAKEFLAGS="-j2",MAKEFLAGS="-j\$(nproc)",g' makepkg.conf
sudo cp -f makepkg.conf /etc/

# 公式の pacman.conf をダウンロード
wget https://raw.githubusercontent.com/archlinux/svntogit-packages/packages/pacman/trunk/pacman.conf

# pacman.conf を変更して multilib を有効にする
sed -z -i -e 's,#\[multilib\]\n#,\[multilib\]\n,g' pacman.conf

# pacman.conf をインストールして非公式リポジトリを削除
sudo cp -f pacman.conf /etc/

# EndeavourOS の場合: 非公式パッケージを削除
# yay などの AUR パッケージも削除されるので、必要なものは後で再インストール。
pacman -Qqm | sudo pacman -Rs -

# yay をインストール
wget https://aur.archlinux.org/cgit/aur.git/snapshot/yay-bin.tar.gz
tar xf yay-bin.tar.gz
cd yay-bin/
makepkg -is
cd ~/tmp_arch/

# ソースパッケージのビルドディレクトリを tmpfs にする
yay --builddir=/tmp/yay --save

# パッケージのダウンロード先を tmpfs にする
yay -Scc
cp /etc/pacman.conf .
sed -i -e 's,.*CacheDir.*,CacheDir\ \ \ \ \=\ \/tmp\/cache\/pacman\/pkg\/,g' pacman.conf
sudo cp -f pacman.conf /etc/

# システムをアップデート
yay

# EndeavourOS の場合
yay -S --needed kernel-install-mkinitcpio

# kernel-install-mkinitcpio を削除すると、
# linux kernel をアップデートしたあと起動できなくなった。

Grub を使用している場合: テーマをインストール

mkdir -p ~/tmp_arch
cd ~/tmp_arch/
wget https://github.com/vinceliuice/grub2-themes/archive/refs/heads/master.zip -O grub2-themes-master.zip
unzip -q grub2-themes-master.zip

cd grub2-themes-master/
sudo ./install.sh -t vimix -s 1080p

# 次のメッセージが出ることを確認
# テーマを見つけました: /usr/share/grub/themes/vimix/theme.txt

AMDのGPUを使用している場合: ドライバをインストール

yay -S --needed xf86-video-amdgpu libva-mesa-driver vulkan-radeon libva-utils

「デスクトップ」などのディレクトリが作られるのを止める

printf 'XDG_DESKTOP_DIR="$HOME"
XDG_DOWNLOAD_DIR="$HOME"
XDG_TEMPLATES_DIR="$HOME"
XDG_PUBLICSHARE_DIR="$HOME"
XDG_DOCUMENTS_DIR="$HOME"
XDG_MUSIC_DIR="$HOME"
XDG_PICTURES_DIR="$HOME"
XDG_VIDEOS_DIR="$HOME"
' > ~/.config/user-dirs.dirs

コアダンプを無効にする

# 設定ファイルを編集
sudo sed -z -i -e 's,\n\n#\ End\ of\ file,\n\n*\ hard\ core\ 0\n#\ End\ of\ file,g' /etc/security/limits.conf

# 既存のダンプファイルを削除
sudo rm /var/lib/systemd/coredump/*

CPUの脆弱性緩和を確認

mkdir -p ~/tmp_arch
cd ~/tmp_arch/
wget https://github.com/speed47/spectre-meltdown-checker/raw/master/spectre-meltdown-checker.sh
sudo sh spectre-meltdown-checker.sh

SUMMARYがすべて「OK」(緑色)になっていれば問題ない。

時刻サーバを変更

yay -S --needed ntp

# 設定ファイルを変更
printf 'server 0.jp.pool.ntp.org iburst
server 1.jp.pool.ntp.org iburst
server 2.jp.pool.ntp.org iburst
server 3.jp.pool.ntp.org iburst
' > ntp.conf

sudo mv ntp.conf /etc/ntp.conf

# 正常に動作しているか確認
sudo date -s 00:00:00 && sudo systemctl restart ntpd && sleep 10s && date

# 2021年  4月 13日 火曜日 00:00:00 JST
# 2021年  4月 13日 火曜日 06:15:23 JST

ディスプレイマネージャを SDDM に変更

# SDDM をインストール
yay -S --needed sddm
sudo systemctl -f enable sddm

# 再起動後に LightDM を削除
# 起動中のディスプレイマネージャを削除するとフリーズする
# yay -Rs lightdm lightdm-slick-greeter

ディスプレイマネージャのフォントを Noto Sans CJK に変更

ディスプレイマネージャのフォントを Noto Sans CJK に変更する。容量が小さめ(19MB)で日中韓の文字を表示できる。

mkdir -p ~/tmp_arch
cd ~/tmp_arch/
wget -N https://github.com/googlefonts/noto-cjk/raw/main/Sans/OTC/NotoSansCJK-Regular.ttc
sudo mkdir -p /usr/share/fonts/TTF/
sudo cp NotoSansCJK-Regular.ttc /usr/share/fonts/TTF/

printf '<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
  <description>Set preferable fonts for non-Latin</description>
    <alias>
        <family>serif</family>
        <prefer>
            <family>Noto Sans CJK JP</family>
        </prefer>
    </alias>
    <alias>
        <family>sans-serif</family>
        <prefer>
            <family>Noto Sans CJK JP</family>
        </prefer>
    </alias>
    <alias>
        <family>monospace</family>
        <prefer>
            <family>Noto Sans Mono CJK JP</family>
        </prefer>
    </alias>
    <alias>
        <family>system-ui</family>
        <prefer>
            <family>Noto Sans Mono CJK JP</family>
        </prefer>
    </alias>
</fontconfig>' > 65-nonlatin.conf

sudo cp -f 65-nonlatin.conf /usr/share/fontconfig/conf.avail/

# /home にも Noto Sans CJK をインストール
# 日本語フォントを持たないディストリビューションをインストールしたときでも、
# 管理者権限以外でなら日本語を表示できるようになる。
mkdir -p ~/.local/share/fonts/
cp -f NotoSansCJK-Regular.ttc ~/.local/share/fonts/

フォントのファイル名からフォント名を調べるには次のようにする。

LC_ALL=C fc-match -a | grep NotoSansCJK-Regular.ttc

# NotoSansCJK-Regular.ttc: "Noto Sans Mono CJK JP" "Regular"
# NotoSansCJK-Regular.ttc: "Noto Sans CJK JP" "Regular"

使用しない音声出力をオフにする

音が出ない場合は、現在使用しているデバイス以外をオフにする。

yay -S --needed pavucontrol
pavucontrol

「設定」タブを開いて、使用しないものを「オフ」にする。

Calam-Arch-Installer の場合: PipeWire に切り替える

PulseAudio から PipeWire に切り替える。

yay -Rs pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack pulseaudio-lirc pulseaudio-zeroconf

yay -S --needed pipewire pipewire-alsa pipewire-jack pipewire-pulse wireplumber

rm -f ~/.config/systemd/user/pipewire-session-manager.service 

systemctl --user enable --now pipewire pipewire-pulse wireplumber

音量がデフォルトに戻っているかもしれないので、必要なら下げる。
mpv で音が出るか確認する。

mpv -ao=pipewire https://www.youtube.com/watch?v=Dt1C4ERoCro

# AO: [pipewire] 48000Hz stereo 2ch floatp

日本語対応を整える

Qtアプリのフォントを設定

yay -S --needed qt5ct
qt5ct

「フォント」タブを開き、デフォルトフォントを指定する。「fonts.conf を作成」ボタンを押す。

「アンチエイリアス」と「ヒンティング」にチェックを入れる。「ヒンティングスタイル」は「なし」にする。

fcitx5 と mozc をインストール

yay -S --needed fcitx5 fcitx5-configtool fcitx5-gtk fcitx5-qt fcitx5-mozc

# 古い設定ファイルを削除
rm -f ~/.pam_environment

# fcitx5 をデフォルトの入力メソッドにする
printf 'export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
' > ~/.xprofile

ログアウト/ログインして設定を有効にする。

fcitx5 を設定

fcitx5-configtool 

「入力メソッド」タブを開き、「現在の入力メソッド」に Mozc があるのを確認する。なければ右側の「有効な入力メソッド」から追加して、「適用」を押す。

「グローバルオプション」タブを開き、一番下までスクロール。「第1入力メソッドの情報を表示する」のチェックを外して、「適用」を押す。

「アドオン」タブを開く。「クラシックユーザーインターフェース」の歯車アイコンを押す。

「候補ウィンドウを縦にする」にチェックを入れる。ただし Mozc ではチェックを外していても強制的に縦になる。「フォント」「メニューフォント」を変更する。

「アドオン」タブを下にスクロールして、「Mozc」の歯車アイコンを押す。

「用例を表示」を「ホットキー」にする。
「プリエディットカーソルをプリエディットの先頭に固定する」のチェックを外す。

コンソールのキーボード配列を jp106 にする

localectl set-keymap --no-convert jp106

その他

音量をショートカットキーで調節

デフォルトの出力デバイスを確認。

LC_ALL=C pactl info | grep "Default Sink"

# Default Sink: alsa_output.pci-0000_04_00.1.hdmi-stereo

次のコマンドをショートカットキーに登録する。

# 音量アップ
pactl set-sink-volume alsa_output.pci-0000_04_00.1.hdmi-stereo +2%
# 音量ダウン
pactl set-sink-volume alsa_output.pci-0000_04_00.1.hdmi-stereo -2%

画面の明るさをショートカットキーで調節

アクティブなモニタを確認。

xrandr --listactivemonitors

# 0: +*HDMI-A-0 1920/708x1080/398+0+0  HDMI-A-0

次のコマンドをショートカットキーに登録する。

# 画面の明るさを上げる
xrandr --output HDMI-A-0 --brightness 1.2

# 画面の明るさを元に戻す
xrandr --output HDMI-A-0 --brightness 1

暗めの場面のとき一時的に明るくできて便利。

$HOME のファイルをバックアップ

$HOME にある 100MB 以下のファイルを、$HOME/_tmp/_backup/ にバックアップする。

rsync -av --delete --delete-excluded \
--max-size=100m \
--exclude=.cache \
--exclude=.ccache \
--exclude=.config/chromium/Default/Service\ Worker \
--exclude=.config/chromium/Safe\ Browsing \
--exclude=.icons \
--exclude=.local/share/icons \
--exclude=.local/share/Trash \
--exclude=_tmp \
$HOME/ $HOME/_tmp/_backup/

tar.zst 形式で圧縮して、USBメモリに保存。
これがあれば SSD が壊れたときでも、最低限のファイルを復元できる。

cd $HOME/_tmp/
tar --zstd -cf _backup.tar.zst _backup/

$HOME のファイルを復元

確認が不十分だが自分用のメモ。

# tmpfs に圧縮ファイルをコピー
cp _backup.tar.zst /tmp

# 圧縮ファイルを展開
cd /tmp
tar xf _backup.tar.zst
# 展開時にシンボリックリンクのエラーが出る

# /home/name を削除して置き換える
sudo rm -rf /home/name
sudo mv _backup /home/name
sudo chmod 777 /home/name

# 再起動
shutdown -r

/home パーティションの予約ブロックを 0 にする

ext4 では 5% の領域が予約ブロックになっている。これを解放すると空き容量が増える。

/home パーティションのデバイスを確認する。

df | grep home

# /dev/sda2        438G  286G  152G   66% /home

/dev/sda2 の予約ブロックを 0 にする。

sudo tune2fs -m 0 /dev/sda2

Ryzen: メモリクロックを確認

yay -S --needed ryzen_monitor ryzen_smu-dkms-git

# 再起動

sudo ryzen_monitor

# ── Memory Interface 
# Fabric Clock 2000 MHz │
# Uncore Clock 2000 MHz │
# Memory Clock 2000 MHz │

Ryzen 5000 では「FCLK:UCLK:MCLK = 1:1:1」がベスト
Ryzen 7000 では「FCLK:UCLK:MCLK = Auto:1:1」がベスト。

Realtek: サスペンドから復帰するとネットに接続できない

r8168 ドライバを使用しているときは r8169 ドライバに変更する。

ネットワークデバイスを確認。

ip a | grep enp

# 2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP>

ネットワークデバイスが使用しているドライバを確認。

ethtool -i enp3s0 | grep driver

# driver: r8168

r8168 ドライバを削除。

yay -Rs r8168

再起動する。

キーリピートが効かないときは

xset r on

60分後にサスペンド

date && sleep 60m && systemctl suspend

Openbox: マウスホイールでウィンドウを前面に出す

mousepad ~/.config/openbox/rc.xml

<context name=“Client”> の下に次の行を加える。

    <context name="Client">
      <mousebind button="Up" action="Click">
        <action name="Focus"/>
        <action name="Raise"/>
      </mousebind>
      <mousebind button="Down" action="Click">
        <action name="Focus"/>
        <action name="Raise"/>
      </mousebind>

個人的に必要なパッケージをインストール

# 公式パッケージ
yay -S --needed p7zip chromium cmake evince poppler-data file-roller p7zip filezilla gnome-disk-utility mousepad mpv noto-fonts-emoji ripgrep rsync ruby ruby-irb ruby-rdoc gpicview webp-pixbuf-loader pngquant pavucontrol wget yt-dlp lm_sensors xfce4-sensors-plugin xf86-video-amdgpu libva-mesa-driver vulkan-radeon libva-utils fcitx5 fcitx5-configtool fcitx5-gtk fcitx5-qt

# AURパッケージ
yay -S --needed pkgbrowser

# Rubyライブラリ
gem install bzip2-ffi parallel

# アップデートが来ても無視するパッケージを追加
mkdir -p ~/tmp_arch
cd ~/tmp_arch/
cp /etc/pacman.conf .
sed -i -e 's,#IgnorePkg   =,IgnorePkg   = fcitx5-mozc-ut,g' pacman.conf
sudo cp pacman.conf /etc/pacman.conf

# mousepad のカーソル位置を常に1行目にする
mkdir -p ~/tmp_arch
cd ~/tmp_arch/
cp -f /usr/share/applications/org.xfce.mousepad.desktop .
sed -i -e 's,Exec=mousepad %U$,Exec=mousepad -l 1 %U,g' org.xfce.mousepad.desktop
sudo cp org.xfce.mousepad.desktop /usr/share/applications/org.xfce.mousepad.desktop

# マウスカーソル
mkdir -p ~/tmp_arch
cd ~/tmp_arch/
wget https://github.com/yeyushengfan258/Future-cursors/archive/refs/heads/master.zip -O Future-cursors-master.zip
7z x Future-cursors-master.zip
cd Future-cursors-master/
sh install.sh

# アイコン
mkdir -p ~/tmp_arch
cd ~/tmp_arch/
wget https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/archive/refs/heads/master.zip -O papirus-icon-theme-master.zip
7z x papirus-icon-theme-master.zip
mkdir -p ~/.local/share/icons
rm -rf ~/.local/share/icons/Papirus*
mv papirus-icon-theme-master/Papirus* ~/.local/share/icons/
cd ~/.local/share/icons/

# Mozc 用のモノクロアイコンを削除
rm -f Papirus*/*/*/*mozc*

gtk-update-icon-cache Papirus
gtk-update-icon-cache Papirus-Dark
gtk-update-icon-cache Papirus-Light

# テーマ
mkdir -p ~/tmp_arch
cd ~/tmp_arch/
wget https://github.com/daniruiz/skeuos-gtk/archive/refs/heads/master.zip -O skeuos-gtk-master.zip
7z x skeuos-gtk-master.zip
mkdir -p ~/.local/share/themes
rm -rf ~/.local/share/themes/Skeuos-Blue-*
mv skeuos-gtk-master/themes/Skeuos-Blue-* ~/.local/share/themes/
# ~/.bashrc の設定
printf 'EDITOR=/usr/bin/mousepad
alias df="df -h"
alias du="du -h"
alias irb="irb --noautocomplete"
alias mousepad="mousepad -l 1"
alias xterm="xfce4-terminal"
export XCURSOR_PATH="~/.local/share/icons/"

# ディレクトリをサイズ順に並べる
alias duu="du -BM -d1 | sort -n"

# ファイルリストを縦に並べる
alias ls="ls -1"

# rg
alias rg="rg --smart-case --colors path:fg:0x34,0x83,0xE3 \
--colors line:fg:0x34,0x83,0xE3 --colors match:bg:0x34,0x83,0xE3 \
--colors match:fg:white"

# yt-dlp の解像度を1080pに制限
alias yt-dlp-fhd="yt-dlp -S res:1080"' > ~/.bashrc

HOME