【Wilma】Linux Mint 22にアップグレードした話【Ubuntu 24.04ベース】
※ 実はLinux mint 21からの自動アップグレード(mintupgrade)は失敗したので、クリンインストール+手作業移行です。
いつもLinux Mintで驚かされる事は、大型アップデートなのに、見た目は何も変わっていない事です。内部はかなり変更されているのですが、ユーザーインターフェースや操作方法が全く変わっていません。
昨今のソフトウェアはアップデート・アップグレードという名目のただの仕様変更を頻繁に行います(ボタンの左右や色を入れ替えたりするような無意味な変更や、一過性のパラダイムに流されたUIなど)。ユーザー目線からはやめてほしいの一言なのですが、商業的理由と新しいパラダイムに挑戦する開発者の士気の観点からは理解できます。保守&バグ修正だけほど楽しくない作業はないですから。
一方でLinux Mintは、ユーザー目線に立って「変わらない事こそ至上」を貫いているのでしょう。基本的にWindows7世代のUIパラダイムを貫いています。(新しい技術を試せないので)技術者にはあまり好かれないディストリビューションですが、これからも頑張ってほしいものです。
筆者のLinuxデスクトップ設定の紹介
システム
ファイルシステム
ホームフォルダはzfsファイルシステムを利用しています。zfsとは商用UNIXの最大手Sun/Oracle社が推しているもので、全部入りの超高機能のファイルシステムです。ただし筆者が利用する機能は下記機能だけです。
圧縮ファイルシステム
処理速度に重点が置かれたlz4圧縮アルゴリズムを利用しています。
同じパターンやゼロ埋めが連続する仮想ファイルやライブラリ、テキストファイルに効果があります。
読み取り速度は向上しますが、書き込み速度は低下します。暗号化ファイル等のランダムデータなファイルは書き込み・読み込み共に低下します。例えば、AIモデルファイルも該当します。
dedup機能
ブロック単位で重複を防ぎます。同じファイルであれば、いくつ重複しても使用量は増加しません。ブロック単位なので、一部変更だけの似たファイルでもかなり効果があります。
差分しか新規に保存しないため、ほとんど同じファイルで構成される、仮想マシンやPython仮想環境で絶大な効果を発揮します。
SATA世代の遅いSSDならパフォーマンスはほとんど変わりません。ただしシステムメモリは大量に占有します。※ 高速すぎるSSDだとCPU側のボトルネックにひっかかると思います
RAID0
SATAタイプのSSD×2を利用しているため、速度重視の分散保存型の構成(RAID0)にしています。
zfsは基本的に(UbuntuやMintでは)サポートされない技術なので、玄人・技術者向けかもしれません。
Zram
Windowsも10から似た機能が導入されましたが、システムメモリをスワップする際に、低速ディスクへ書き込むのではなく、メモリ上に圧縮する技術です。メモリ上のデータは基本的にゼロ埋めである事がほとんどなので、圧縮すると1/2〜1/3程度になります。Androidでもデフォルトで有効になっています。
以前はファイルシステムと同じ速度優先の lz4 圧縮アルゴリズムを利用していましたが、Mint 22からは圧縮率優先の新しい zstd を利用する事にしました。
Zramは非常に優秀です。同じ32GBのシステムメモリのWindowsと同じ処理において、Windowsではメモリ不足エラーで終了してしまうものでも、Linuxではちゃんと処理できます。
※ Linuxのチューニングでは、よく swappiness=0 などの解説を見かけますが、zramの場合は逆です。そもそも低速ストレージデバイスは使用しません。少しでも利用可能メモリを増やすために、無駄な0埋めメモリは積極的に圧縮させた方が効率的になります。つまり、
# デフォルトのストレージ上のスワップファイルをオフにする
swapoff /swapfile
# できる限りスワップさせ、その頻度・粒度を増やす
echo "100" > /proc/sys/vm/swappiness
echo "0" > /proc/sys/vm/page-cluster
とします。
仮想マシン
WindowsではVmwareやVirtualBoxが有名です。もちろんLinux版もありますが、Linuxには標準でkvm+qemu+libvirtという仕組みがあります。メリットは安定性、デメリットは機能利用が不親切、基本的にhw OpenGLは利用できないぐらいでしょうか。
kvm
Kernel-based Virtual Machine で、仮想マシンのエンジン部です。Windowsで言うHyper-Vです。
Qemu
昔はCPUの仮想化ツールでしたが、今はなんでも屋になっているようです。
libvirt
仮想マシンの管理ツールです。
筆者のパソコンはWindows11 HomeとLinux mint mateをバックグラウンドで起動させています。仮想Linux mint MATEは、互換性などでホストマシンで動作しないものを動かすために起動させています。Dockerのような使い方で、Documentsフォルダのみを共有させて ssh -X で利用します。※ Dockerはリソースの節約になりますが、変更や微妙なカスタマイズが面倒なので。
パソコン起動時に実行するには、virshを利用します。
virsh start "Linux_mint_22_MATE"
virsh start "Windows_11_Home"
基本的にヘッドレスのバックグラウンドで動作するので、Linux作業中に気にする事はほとんどありません。上記のzramを利用すると、圧縮されておとなしくしています。(qemu-system-x86_64)
ブラウザ
Google ChromeのマニフェストV3の強制移行がはじまったので、この際にメインのブラウザをChromeからFirefoxに移行する事にしました。
主な理由は広告ブロックです。広告ブロックです。…
久しくFirefoxを利用していませんでしたが、ちゃんとChromeに匹敵する機能を獲得していました。筆者が利用する機能すべてを代替できそうです。外せない要件は以下です。
Windows/Linux/Androidで同期出来ること
uBlock Origin / uBlacklist / Vimium 機能拡張が動作すること
ちゃんと uBlacklist もインポートできました。SEOサイト&見たくないもの&タイトル詐欺は静かに登録する事にしています。
perplexity.ai のようなAIツールが一般的になれば、ブラックリストを作る必要も無くなるのでしょうか。それとも巨大AI企業が独占して悪を働くのでしょうか。それともSFのようにAIが人間の情報を支配するのでしょうか。
気になった事は、Firefoxのクラッシュが多いことです。Google Chromeでクラッシュした事はほとんどないように思います。
日本語入力
Linuxデスクトップ普及を妨げる最大の要因が日本語入力環境だと思います。Google 日本語入力のオープン版とされるMozcがデフォルトですが、積極的にはメンテナンスされていないようです。
Linux Mint 22のデフォルトはfcitx4ですが、筆者はWikipediaタイトルなどのut-dictionariesを追加したfcitx5+mozcを利用しています。※ 自分でビルドする必要があるので、ちょっと面倒です。
しかしながら、WindowsのIMEやGoogle日本語入力にはまだ劣るように感じます。
ゲーム環境
筆者はあまりゲームをしませんが、動作環境の確認やパフォーマンス計測用です。
Steam(公式deb利用)とHeroic Games Launcher(Epic games用)を利用しています。両者とも以前と変わりません。
AI環境
Python pipの非明示的なローカルインストールが禁止されてしまったため、自作Pythonアプリすべてを仮想動作させる必要があります。Anacondaで統一するのが楽なので、ラッパーコマンドで対応しました。仮想環境を利用するためには、Python実行の前に
. ~/anaconda3/etc/profile.d/conda.sh
conda activate base
を記述します。
LLM
LLMをローカルで実行できるOllamaを導入すると、専用GUIが無くても便利です。例えば、※ elyza3を導入しておく必要があります。
alias llm="ollama run elyza3"
とaliasを設定しておけば、llmコマンドを実行するとすぐにチャットを始められます。
さらに特定のLLMタスクを登録したコマンドを作っておけば、便利なコマンドが簡単にできます。例えば、画像生成プロンプトを生成するコマンドを作っておけば、プロンプト例を即時に生成できます。
その他にも、スクリーンショットアプリのflameshotと連動させて、様々な事ができます。
まとめ
Linux Mint 22にアップグレードして、いくつか動作しないマイナーなアプリケーションがありましたが、仮想動作で対応できています。大きな問題は発生しませんでした。
気になるところは、サウンドに時々ノイズが入る事ですが、pulseaudioからpipewireに変わった事が原因でしょう。