2020/12/07

linux-zenの導入について

これまでカスタムカーネルにはほとんど縁がなかった。僕はオーディオ好き(と言っても住居環境の制約からヘッドフォンに限定されているが)なので、リアルタイムカーネルには少しだけ関心を持っていたが、システムの安定性に影響を及ぼしそうなので試用には至っていない。聞いた話では、カーネルレベルで遅延を軽減させることで出音の品質を改善させるものらしい。

一方、linux-zen、俗にZENカーネルと呼ばれるカスタムカーネルにはもっと普遍的な付加価値がありそうに思われた。なんせArch LinuxのWikiでは下記のように説明されている。

ZEN Kernel はカーネルハッカーたちの知恵の結晶です。日常的な利用にうってつけの最高の Linux カーネルになります。詳しい情報は https://liquorix.net を見てください (Debian 向けの ZEN ベースのカーネルバイナリ)。

なるほど、いかにもすごそうだ。しかしこれでは抽象的すぎて説明になっていない。文中のリンク先にもそのものズバリの情報はなかったので、自ら調べたところ下記の解説が得られた。

Well I think the Zen Kernel (or the patches that are applied to it) increases your system’s responsiveness and lowers your latency at the expense of some performance hit (I’d say about 1-3% at best).

簡単に言えばわずかなパフォーマンスの犠牲(1~3%くらい)と引き換えにシステムの応答性を向上させてくれるカーネルということらしい。やはり試すだけの価値はありそうだ。なお、下記の一連のコマンドはArch Linux環境を前提にしている。

$ sudo pacman -S linux-zen linux-zen-headers

さっそくZENカーネルを導入する。インストールが完了したら以前のカーネルを削除しなければならないが、nVidiaのプロプライエタリなドライバーを使用している人はこちらの方もカスタムカーネル用のものに変更しておく必要がある。

$ sudo pacman -S nvidia-dkms

続いて、以前のドライバーとlinuxカーネルを削除する。

$ sudo pacman -R nvidia linux

環境によっては先にnvidiaドライバーを削除してからでなければPacmanに怒られるかもしれない。また、LTSカーネルを使用している場合はlinux-ltsを指定すること。

これらの作業を終えたらinitramfsイメージを生成する。

$ sudo mkinitcpio -p linux-zen

最後にブートローダの再設定を行う。

$ sudo bootctl update #systemd-bootの例
$ sudo grub-mkconfig -o /boot/grub/grub.cfg #grubの例
$ sudo vim /boot/loader/entries/arch.conf #エントリの編集
#以下、編集画面
title   Arch Linux
linux   /vmlinuz-linux-zen #zenを付け足す
initrd  /intel-ucode.img
initrd  /initramfs-linux-zen.img #zenを付け足す

保存後、再起動してuname -rを実行した結果が下記の形になっていればZENカーネルの導入に成功している。

5.9.12-zen1-1-zen

ぶっちゃけ今のところ特に何かが改善された実感はないが、ZENカーネルに関して日本語の情報がほとんど見当たらなかったので共有しておこうと思った。Linuxコミュニティに栄光あれ。

©2011 Rikuoh Tsujitani | Twitter | 小説