みくにまるのブログ

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

GNOME+英語環境のLinuxのVSCodeで日本語入力が有効にならない場合の対処方法

ディレクトリ名を英語にしたいがために
言語設定そのものを英語にしていまうと日本語関連で様々な不具合が発生します。

入力メゾットを正しく設定したにも関わらず
VSCode上での日本語入力ができない状態というのもその一つ

対処法は、Gnome側に正しい入力メゾットを伝えること。
下記のコマンドの実行で解決します。(他の日本語入力関連の設定が正しいことが前提)

gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/IMModule':<'fcitx5'>}"  

上記の「fcitx5」の部分は、各自置き換えてください。

Arch Linuxでヘッドホンとスピーカーの音量の切り替えがうまく行かない場合の対処方法

Arch Linuxをインストールした直後に
音量関連で不具合が発生する場合がある。

大抵はpulseaudioをインストールしていないのが原因なのでインストールしておく

sudo pacman -Sy pulseaudio

Arch Linuxのフォントが汚い問題の直し方

Arch Linuxに限らず
大半のLinuxディストリビューションでは
日本語を表示するとフォントが汚かったりします。

これは手動で調整するのはかなり大変なので
font-managerというパッケージを利用して調整します。
ArchならARUから、他のディストリビューションなら恐らく普通にapt install等で入手してください。

font-managerを起動したら

  • 右上のパフォーマンスボタンからRenderingを選択
  • AntialiasとHintingを有効化
  • Autohinterを有効化
  • ヒンティングスタイルはSlightを選択
  • 瀬底項目Displayに移動
  • LCD Filter を Defaultに設定する
  • Subpixel GeometryをRGBに設定
  • Saveをタップして再起動

以上でいい感じのフォントへと調整されます。

【令和最新版】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  

lvm Luks時にsystemd-bootでmkinitcpioをsystemd系にする方法

初心者が読む可能性はないので情報の羅列だけ書きます。

/etc/mkinitcpio.conf
HOOKS=(systemd autodetect modconf block keyboard sd-vconsole sd-encrypt lvm2 filesystems)
/boot/loader/entries/arch
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
initrd /intel-ucode.img
options luks.uuid=暗号化パーティションのUUID luks.name=暗号化パーティションのUUID=解除後に指定したいなまい
 root=UUID=暗号化解除したルートのUUID resume=UUID=暗号化解除したswapのUUID rw

Arch Linuxで入手できる様々な最適化カーネル

Arch LinuxではAURを通してざまざまなカスタムカーネルを入手可能です。
結構色々と試してみたので概要とその感想

Zenカーネル

公式リポジトリで配布しているカーネル
公式配布なのでビルド不要なのが強み
ただしCPUの温度が常に高くなるという報告が一部あるので
普段遣いには向いていないかもしれない。

個人的にZenカーネルの利用時にAndroidエミュレータが起動しなかったりと
zenカーネル由来っぽい不具合に当たった経験があるので
常時利用は厳しいのではと思っている。

pfカーネル

カーネルに高速化のパッチを当てた上で
CPUの種類ごとに最適化ビルド済みのバイナリまで配布してくれている
非公式リポジトリを追加すれば、pacmanで簡単に更新を受け取ることが可能。
しかもArchのカーネルよりもカーネル更新への追従が早い。
(上流カーネルのリリースから数時間後には上がる)

パッチというよりも最適化ビルド済みというのがありがたく
個人的にはこのカーネルをメインで利用してる。

使用感としては高負荷時の作業がかなりスムーズになる。
裏でカーネルをビルドしながらVSCodeを動かしても動作の遅れは殆ど感じない。
CPU使用率が100%でもユーザーファンの音さえなければ気付かないレベル。
YouTube動画などを見てもCPU温度の上昇が緩やかでノートパソコンにも優しい。
いや、緩やかというか殆ど上がらない、最高。

ゲームに関してもzenカーネルとの違いがあまり分からなかった。

デメリットは必要以上のパッチは当てていないので
wineへの最適化などが行われていないことか
(これはメリットでもある)

右の方にある[download package]をクリックするとリポジトリを追加できる
x86_64_v3
AMD Zen 2

xanmodカーネル

phoronixで最高ランクのベンチマークを叩き出しているカスタムカーネル
https://www.phoronix.com/vr.php%3Fview%3D29870&sa=U&ved=2ahUKEwjdnZPFlpDxAhV1xosBHc30AzgQFjAAegQIAhAC&usg=AOvVaw2cK76uogXbt7X_5zYOUcuO
https://www.phoronix.com/scan.php?page=article&item=xanmod-liquorix-510&num=3

ビルド時にpkgbuildを編集してuse_pds=yを加えると
ゲームで凄まじいfpsを叩き出すという情報を発見したので試してみた
https://www.reddit.com/r/archlinux/comments/i5llis/linuxtkgpds_or_linuxzen/
FPSは特に上がらなかったが、たしかに体感では操作がキビキビしている気もする。
ただし自分でビルドした事による最適化の効果という可能性もある。

FPSが上がるというよりは
FPSが低下してるシーンでも操作までは遅延しなくなるという印象か。
起動時に凄まじい量のログを吐き出すが
PKGBUILDが丁寧に作られていないのではと心配になる。

ゲーム以外の用途では
裏で全コアでカーネルをビルドしながら
ブラウザを開いてYouTubeを見ても全くカクつかない。
これはすごい。

ただし低負荷時のCPU温度はpfカーネルの方が低いので
ラップトップ向きではなさそう。

xanmod-caculeカーネル

前述のxamodカーネルにCacule modパッチを加えたもの
最速の異名を持つ
https://www.reddit.com/r/pop_os/comments/kmnqno/xanmod_cacule_kernel_for_high_responsiveness/
使ってみたが、少し動画を見るだけでCPU温度が凄まじく上昇して実用性に乏しかった

やはり余計なオプションを加えず高速化パッチに絞っているpfカーネルが最強か?

kernel-cacul

元プロゲーマーで某Arch派生ディストリのコミュニティメンバーがチューニングしたカーネル
本人曰く、各パッチの開発者積極的にコミュニケーションを取って丁寧にマージしているのが売りらしい。

レビュワーによるとCPU温度が低いらしいので期待大。
ビルド時に聞かれるrtオプションにはnと回答してビルドしてみた。

実際に試して見るとやはり低負荷時にはpfカーネルの方がcpu温度が低い。
普段遣い向けではなさそう。

結論

サクサク感ではゲーム中、普段遣い共にuse_pds=yにしたxanmodカーネルが一番だった。
裏で全コアフル稼働してカーネルをビルドしていても操作がサクサクという異様さ。
ただし低負荷時のCPUの温度の高さや、毎回ビルドが必要な煩雑さを考えると
各CPU用に最適化済みのバイナリが配布されていて、低負荷時の温度も低いpfカーネルに軍配。
(まあCPUごとの最適化の影響はそこまでないという気もする
https://www.phoronix.com/scan.php?page=article&item=linux-50-march&num=6

また、pfカーネルは独自パッチを最小限にしてあるのも
普段使いで不具合が出にくそうでいい。

という訳でArch Linuxのカスタムカーネルはpfカーネルを利用することにした。

Btrfsでzstd圧縮を使う際のベストな圧縮レベルの指定を比較検討して最強を導き出す

  • いきなり結論、zstd:1がベスト

先に結論から言うと
通常のデスクトップ用途の場合
Btrfsでの透過圧縮の圧縮レベルはzstd:1にしてください。

  • zstdのcompress levelは1が最適だという理由

これは最近zstdでの透過圧縮をデフォルトにしたFedoraのコミュニティが実験した結果に基づきます。

実験結果を要約すると

  • Fedoraインストールでは
    zstd:1で約40%のディスク削減
    zstd:9で約43%のディスク削減

  • ランダムデータ(圧縮効果なし)を書き込んだ場合
    zstd:1で基準値+9%のシステム時間
    zstd:9で基準値+15%のシステム時間

  • ゼロ埋めデータを書き込んだ場合
    zstd:1で基準値+16% zstd:9で基準値+82%

要は圧縮レベルを上げても割に合わないということです。

BtrfsでZstdの圧縮をする際のマウントオプションでcompressにするかcompress-forceどっちにするかの比較

Btrfsでの圧縮オプション、意外と圧縮されていないと思うことありませんか?

Btrfsでは圧縮を有効化する際のマウントオプションにcompressとcompress-forceという二種類のオプションがあり

compressは事前にBtrfsで圧縮が効果的なのかを判定してから圧縮アルゴリズムにデータを渡し
ompress-forceではとりあえず全部圧縮アルゴリズムにデータを渡すという仕組みになっています。

これだけ読むと一見compress-forceは全部圧縮してしまって非効率に思えるのですが
実際にcompress-forceを有効化しても全てのファイルが圧縮される訳ではありません。

どうも調べるとzstdは内部でも圧縮が有効かどうかを判定するアルゴリズム保有して
このアルゴリズムがまたえらい高速なのだとか。
しかも、Btrfs側でも、実際に圧縮の後で実際にサイズが有効なレベルで縮小されているかを確認して
縮小されていなかったら圧縮を取りやめる機能が付与されています。

forceという用語のせいで分かりにくいですが、要は

  • compress
    Btrfsで圧縮可能か判定 → zstdで圧縮可能か判定 → 実際に圧縮後に効果的な圧縮できているか判定

  • compress-force
    zstdで圧縮可能か判定 → 実際に圧縮後に効果的に圧縮できてるか判定

このような解釈。

3段階で判定するか2段階で判定するかというだけですね。

forceというのは、圧縮を強制するというよりは
要は圧縮アルゴリズム側に渡すのを強制するかどうか。

forceにしても効果的でないファイルは圧縮を自動で回避してくれるので
zstdの場合はマウントオプションはforceで良さそうです。

Btrfsの圧縮機能でストレージの容量をどれだけ節約できたか調べる方法(Ubuntu Debian Arch Linux)

Btrfsの圧縮機能を利用していると
実際にどのくらい容量を節約できたのか気になる場合があります。

そのときはcompsizeというコマンドを使いましょう

Arch Linuxの場合、compsize、UbuntuDebianではbtrfs-compsizeというパッケージ名で公式リポジトリから入手可能です。

使い方はシンプルにどの程度の圧縮されているか知りたい場所でコマンドを叩くだけ。
対象となるディレクトリ内の全てのファイルへのアクセス権が必要なので、sudoで叩くことを推奨します。

sudo compsize 対象のディレクトリ

Arch LinuxでKDEを利用した際に動画のサムネイルが表示されない問題への対処方法

Arch Linuxは導入時点では動画のサムネイルが表示されません。

この問題を解決するにはffmpegthumbsという追加のパッケージが必要となります。

sudo pacman -S ffmpegthumbs

とコマンドを打ち込んで解決。

LinuxのKDE Plasmaでアプリケーションのインストールや検索(Discover)が動かない問題の対処法(Arch Linux用)

Arch Linuxなどでディストリビューションに同梱ではない状態でKDEを導入すると Discoverというアプリケーション検索ソフトウェアが正常に動作しない場合いがあります 。

しかし、これはディストビューションが未対応なのではなく、単に依存関係が足りていないだけなのでご安心ください。

packagekit-qt5

というパッケージを導入することで問題が解決します。