2024-11-16
# archinstall のログを削除
# ログにユーザーパスワードが含まれているので削除。
sudo rm -rf /var/log/archinstall/
# 高速なミラーサーバを選択
sudo pacman -Sy
sudo pacman -S --needed archlinux-keyring reflector rsync
sudo reflector -c tw -f 5 --save /etc/pacman.d/mirrorlist
sudo pacman -Sy
mkdir -p ~/tmp_arch
cd ~/tmp_arch/
# AUR パッケージをビルドするときのスレッド数を論理プロセッサ数にする
sudo pacman -S --needed wget
wget https://gitlab.archlinux.org/archlinux/packaging/packages/pacman/-/raw/main/makepkg.conf
sed -i -e 's,#MAKEFLAGS="-j2",MAKEFLAGS="-j\$(nproc)",g' makepkg.conf
# debug パッケージを作らない
sed -i -e 's,purge\ debug\ lto,purge\ \!debug\ lto,g' makepkg.conf
sudo cp -f makepkg.conf /etc/
# 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
# パッケージのキャッシュを削除
sudo rm -rf /var/cache/pacman/pkg/
# パッケージのダウンロード先を tmpfs にする
cp /etc/pacman.conf .
sed -i -e 's,.*CacheDir.*,CacheDir\ \ \ \ \=\ \/tmp\/cache\/pacman\/pkg\/,g' pacman.conf
sudo cp -f pacman.conf /etc/
# ファイアウォールを設定
yay -S --needed ufw
sudo ufw default deny
sudo ufw allow from 192.168.0.0/24
sudo ufw limit ssh
sudo ufw enable
sudo systemctl enable ufw
# 許可するアプリを追加
sudo ufw allow qBittorrent
# 追加したアプリを削除
# sudo ufw delete allow qBittorrent
# ファイアウォールの状態を確認
sudo ufw status
# NetworkManager が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/
# DNSサーバを Cloudflare に変更
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/
# NetworkManager を再起動してDNSサーバを確認
sudo systemctl restart NetworkManager
yay -S --needed bind
dig https://www.youtube.com | grep SERVER
# ;; SERVER: 2606:4700:4700::1111#53(2606:4700:4700::1111) (UDP)
# 日本の時刻サーバに変更
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 systemctl enable ntpd
# ntpd の動作確認
systemctl status ntpd | grep Active
# Active: active (running)
# 「デスクトップ」などのディレクトリが作られるのを止める
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
# コアダンプを無効にする
printf "kernel.core_pattern=/dev/null" > 50-coredump.conf
sudo mv 50-coredump.conf /etc/sysctl.d/50-coredump.conf
sudo sysctl -p /etc/sysctl.d/50-coredump.conf
# 既存のダンプファイルを削除
sudo rm /var/lib/systemd/coredump/*
# CPUの脆弱性が緩和されているかを確認
# 「SUMMARY」がすべて「OK」(緑色)になっていれば問題ない。
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
# systemd-boot の起動メニューを自動的に更新
yay -S --needed kernel-install-mkinitcpio
# ディスプレイマネージャのフォントを NotoSansCJK-Regular.ttc に変更
# 日中韓の文字を表示でき、容量が小さめ(19MB)。
# フォントのファイル名からフォント名を調べるには次のようにする。
# LC_ALL=C fc-match -a | grep NotoSansCJK-Regular.ttc
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 をインストール
# 日本語フォントがないディストリビューションをインストールしたときでも、
# 管理者権限で実行するアプリ(SDDM など)以外なら日本語を表示できるようになる。
mkdir -p ~/.local/share/fonts/
cp -f NotoSansCJK-Regular.ttc ~/.local/share/fonts/
# AMD の GPU を使用する場合: ドライバをインストール
yay -S --needed xf86-video-amdgpu libva-mesa-driver vulkan-radeon libva-utils
# fcitx5 と mozc をインストール
rm -rf ~/.cache/bazel/
yay -S --needed fcitx5 fcitx5-configtool fcitx5-gtk fcitx5-qt fcitx5-mozc-ut
# fcitx5 をデフォルトの入力メソッドにする
printf 'export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
' > ~/.xprofile
# ログアウト/ログインして設定を有効にする。
fcitx5-configtool
「入力メソッド」タブを開き、「現在の入力メソッド」に Mozc
があるのを確認する。なければ右側の「有効な入力メソッド」から追加して、「適用」を押す。
「グローバルオプション」タブを開き、一番下までスクロール。「第1入力メソッドの情報を表示する」のチェックを外して、「適用」を押す。
「アドオン」タブを開く。検索欄に「クラシック」と入力して、ヒットした「クラシックユーザーインタフェース」の「設定」を押す。
フォントを変更する。
変換候補を横に並べたいときは「候補ウィンドウを縦にする」のチェックを外す。
「アドオン」タブを開く。検索欄に「mozc」と入力して、ヒットした「Mozc」の「設定」を押す。
「用例を表示」を「ホットキー」にする。
「プリエディットカーソルをプリエディットの先頭に固定する」のチェックを外す。
変換候補を横に並べたいときは「候補を縦に並べる」のチェックを外す。
/usr/lib/mozc/mozc_tool --mode=config_dialog
「辞書」タブを開き、「学習履歴のクリア」をクリック。
rm -rf ~/.config/fcitx/
rm -rf ~/.config/fcitx5/
rm -rf ~/.local/share/fcitx5/
yay -S --needed pavucontrol
pavucontrol
「設定」タブを開いて、使用しないデバイスを「オフ」にする。
BootCurrent の番号を確認。
efibootmgr
# BootCurrent: 0000
# Timeout: 1 seconds
# BootOrder: 0000,0001
# Boot0000* Linux Boot Manager
# Boot0001* ubuntu
BootCurrent 以外のエントリを削除。
sudo efibootmgr -b 0001 -B
# BootCurrent: 0000
# Timeout: 1 seconds
# BootOrder: 0000
# Boot0000* Linux Boot Manager
# SDDM をインストール
yay -S --needed sddm
sudo systemctl -f enable sddm
# 古いディスプレイマネージャの削除は再起動後に行う。
# 現在使用しているディスプレイマネージャを削除するとフリーズする。
rm -rf ~/.config/dconf/
sudo pacman -Rdd xdg-desktop-portal-gnome
sudo pacman -S xdg-desktop-portal-lxqt
他のデスクトップの場合はこちらを参考にする。
次のコマンドをショートカットキーに登録する。
# 音量アップ
pactl set-sink-volume @DEFAULT_SINK@ +2%
# 音量ダウン
pactl set-sink-volume @DEFAULT_SINK@ -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
暗めの場面のとき一時的に明るくできて便利。
udevadm info -e | grep -e MEMORY_DEVICE | grep SPEED
# E: MEMORY_DEVICE_1_SPEED_MTS=4000
# E: MEMORY_DEVICE_1_CONFIGURED_SPEED_MTS=4000
# E: MEMORY_DEVICE_3_SPEED_MTS=4000
# E: MEMORY_DEVICE_3_CONFIGURED_SPEED_MTS=4000
$HOME にある 100MB 以下のファイルを、$HOME/_tmp/home_backup/ にバックアップする。
mkdir -p $HOME/_tmp
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/home_backup/
home_backup を tar.zst 形式で圧縮して、USBメモリに保存。
これがあれば、SSD が壊れても最低限のファイルは残せる。
cd $HOME/_tmp/
tar --zstd -cf home_backup.tar.zst home_backup/
# tmpfs に圧縮ファイルをコピー
cp home_backup.tar.zst /tmp
cd /tmp
tar -xf home_backup.tar.zst
rsync -av /tmp/home_backup/ $HOME/
再起動する。
yay -S --needed smartmontools
sudo smartctl -a /dev/nvme0 | grep "Data Units Written"
# Data Units Written: 462,559 [236 GB]
# オフラインテスト
sudo smartctl -a /dev/nvme0 | grep "SMART overall-health"
# SMART overall-health self-assessment test result: PASSED
# ショートテスト
sudo smartctl -t short /dev/nvme0
sudo e4defrag -c /dev/nvme0n1p2
ext4 のデフォルトでは、5%の領域が予約ブロックになっている。これを解放すると空き容量が増える。
/home パーティションのデバイスを確認する。
df | grep home
# /dev/nvme0n1p3 1856024M 350985M 1411670M 20% /home
/dev/nvme0n1p3 の予約ブロックを 0 にする。
sudo tune2fs -m 0 /dev/nvme0n1p3
この処理はUSB接続だとできない。SATAに接続する。
現在は無効にできない製品が多い。その場合は下の「一時的に回避する」を行う。
yay -S --needed idle3-tools
sudo idle3ctl -d /dev/sdX
電源を切る(再起動ではなく完全にオフにする)。
電源を入れて、IntelliPark が無効になっているか確認する。
sudo idle3ctl -g /dev/sdX
# Idle3 timer is disabled
この処理はUSB接続だとできない。SATAに接続する。
sudo idle3ctl -s80 /dev/sdX
電源を切る(再起動ではなく完全にオフにする)。
電源を入れて、IntelliPark が有効になっているか確認する。
sudo idle3ctl -g /dev/sdX
# Idle3 timer set to 80 (0x50)
IntelliPark
を無効にできない製品の場合は、7秒ごとにHDDにアクセスして発動を回避する。
このとき内容が不変のものにアクセスすると、キャッシュが効くので
IntelliPark
が発動してしまう。内容が変化し続けるものを読み取るか書き込む必要がある。
printf '#!/bin/sh
while true
do
sudo smartctl -a $1 | grep Load_Cycle_Count
sleep 7
done' > prevent-intellipark
chmod a+x prevent-intellipark
sudo cp prevent-intellipark /usr/bin/
/dev/sdX の IntelliPark を一時的に回避する。
prevent-intellipark /dev/sdX
r8168 ドライバを使用している場合は r8169 ドライバに変更する。
yay -Rs r8168
再起動する。
xset r on
date && sleep 60m && systemctl suspend
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 bash-completion chromium cmake dosfstools evince file-roller fcitx5 fcitx5-configtool fcitx5-gtk fcitx5-qt filezilla gnome-disk-utility less libva-mesa-driver libva-utils lm_sensors mousepad mpv noto-fonts noto-fonts-emoji ntfs-3g p7zip pavucontrol pngquant poppler-data python-pip ripgrep ristretto rsync vulkan-radeon webp-pixbuf-loader wget xf86-video-amdgpu xfce4-sensors-plugin xorg-xrandr yt-dlp
# pip のエラーを回避
sudo rm /usr/lib/python3.*/EXTERNALLY-MANAGED
pip install jaconv
# 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/
cp /etc/pacman.conf .
sed -i -e 's,#IgnorePkg =,IgnorePkg = fcitx5-mozc-ut,g' pacman.conf
sudo mv -f pacman.conf /etc/pacman.conf
# マウスカーソル
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
export XCURSOR_PATH="~/.local/share/icons/"
alias df="df -h -x tmpfs"
alias du="du -h"
# ディレクトリをサイズ順に並べる
alias duu="du -BM -d1 | sort -n"
# ファイルリストを縦に並べる
alias ls="ls -1"
alias rg="rg --ignore-case \
--colors path:fg:0x34,0x83,0xE3 \
--colors line:fg:0x34,0x83,0xE3 \
--colors match:bg:0x34,0x83,0xE3 \
--colors match:fg:white"
alias yt-dlp-fhd="yt-dlp -S res:1080"
# For pip
export PATH=$PATH:$HOME/.local/bin
' > ~/.bashrc