今回記す内容は以下を求めている方には 適さない 可能性が多いにある:
タイトルは完全に『湾岸ミッドナイト・マキシマムチューン』を意識したものの、内容は大変薄っぺらい。
そしてしっかりとしたベンチマークを取ってもいないし、後記の事を行っていてもなお sudo journalctl -b-1 -xe
と叩けば;
M月 dd hh:mm:ss manzyun-greed gnome-shell[dddddd]: Gnome Shell crashed with signal 11
...
M月 dd hh:mm:ss manzyun-greed gnome-shell[dddddd]: [email protected]: Main process exited, code=killed, status=11/SEGV
と吐かせる様な事をしているのだ。
もちろんながら、同様の方法を試みて読者に何か損失・不利益が生じたとしても、私は何も責任を取らない(相談には乗るかもしれないが)。
linux-zen
カーネルのPPA追加とインストール。freedesktop.org
製グラフィックドライバのPPAの追加とインストール。見ての通り、とてつもなく『フリーライド(無賃乗車)』で『スクリプトキディ(コピペスクリプトを組む事しか能の無い小便臭いガキンチョ)』な事しかやってない。
ましてやベータリリースのディストロでやっているのだから、ディストロ開発をしている方々(主に『Canonical Ltd』に所属している方々やそれ以外のDebianパッケージメンテナの皆々様)には迷惑を掛けているかもしれない。
もし以降を実施するのであれば、 ベータリリースでは行わない で頂けると筆者個人は大変有り難い。「まずお前が止めろよ」と言わ……いや、言って良い。石を投げてくれ
neofetch
の結果より:
.-/+oossssoo+/-.
`:+ssssssssssssssssss+:`
-+ssssssssssssssssssyyssss+-
.ossssssssssssssssssdMMMNysssso. manzyun@manzyun-greed
/ssssssssssshdmmNNmmyNMMMMhssssss/ ---------------------
+ssssssssshmydMMMMMMMNddddyssssssss+ OS: Ubuntu Impish Indri (development branch) x86_64
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Host: MS-7693 4.0
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Kernel: 5.13.19-xanmod1
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Uptime: 1 hour, 15 mins
ossyNMMMNyMMhsssssssssssssshmmmhssssssso Packages: 3403 (dpkg), 58 (flatpak), 28 (snap)
ossyNMMMNyMMhsssssssssssssshmmmhssssssso Shell: fish 3.1.2
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Resolution: 3840x2160
.ssssssssdMMMNhsssssssssshNMMMdssssssss. DE: GNOME
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/ WM: Mutter
+sssssssssdmydMMMMMMMMddddyssssssss+ WM Theme: Adwaita
/ssssssssssshdmNNNNmyNMMMMhssssss/ Theme: Yaru-dark [GTK2/3]
.ossssssssssssssssssdMMMNysssso. Icons: Yaru [GTK2/3]
-+sssssssssssssssssyyyssss+- Terminal: gnome-terminal
`:+ssssssssssssssssss+:` CPU: AMD FX-8320E (8) @ 3.200GHz
.-/+oossssoo+/-. GPU: AMD ATI Radeon R7 370 / R9 270/370 OEM
GPU: AMD ATI Radeon R7 370 / R9 270/370 OEM
Memory: 3317MiB / 32056MiB
察しの良い方なら、
「5年落ちのマシン構成に、4Kディスプレイのモニタを差してる……だと?」
と困惑するだろう。
流石に『Radeon R7 370』が可哀想なので、2880x1620
と控えめにしている。
ほぼ盆栽弄りの様なものだ。
パソコンを組み立てた事のある方には常識とは思うが;
やってる事はその程度である。
以降の工程に入る前に、「せっかくならもっとマシンに本気を出してもらう設定を組むきっかけ作りとして、BIOSやUEFIの内容をまっさらにする」為に、CMOS内のデータ保存用のボタン電池を取り外して作業をしてても良いだろう。
⛔ ::手先の感覚や力加減に自信のある人 だけ ここの章はやれたらやりましょう。
同じ調子で簡易水冷クーラーもオーバーホール。 pic.twitter.com/ZPLM33rpyp
— まんじゅ(´ん`)@現世人型害畜 (@manzyun) 2021年9月16日
『勝手に修理・気ままに工作』さんの『PCファンの分解、メンテナンス』を参照しながら行った。
### 用意するもの
グリースについてはスプレーで十分とは思うが、ペースト状の物を今回は使用。
2 の過程については、自分も初めてやった割には上手く行ってしまったので『コツ』と言える様なものがほぼ無い。しいて挙げるなら;
羽根を押し込む前に銅線(コイル)があまりにも乱れていたら、ととのえる
くらいしか無い。
そんな調子で、簡易水冷クーラーのラジエーターのファンとビデオカードのファンをメンテナンスした。ケース側面のファンについては「破壊する不安」を感じたので諦めた。
初めから期待はしていなかったが、
『ビデオカードのシリコングリースの塗り直し』
をやった:
MSIサポートの対象外へと足を踏み入れました。グリースをつけ直しても対して変わらないだろうけど。自己責任の覚悟、完了! pic.twitter.com/zOP8MjoGoS
— まんじゅ(´ん`)@現世社会的アウター (@manzyun) April 8, 2022
残念な期待通りだったが、そこまで変わらなかった。
上記を機会にと、ビデオカードの設定見直しを、
「常時高火力(演算性能)」
から、
「自動演算能力性能制御」
に切り替えたり、ビデオカードのネジのトルク(締め加減)を高め(強め)にした。
『コンコルドの誤り』もあるだろうが、多少ファンの回転中に生じていた振動音が消えた様ではある。
## ラジエーターやヒートシンクの清掃
⚠ :: 清掃対象に適する洗剤や清掃方法を事前によく確認しましょう。
大抵はエアーダスターで綿ホコリを飛ばすだけで十分かと思う。
うっかり錆が付いていたら丁寧に取り除き、その部位には材質に適した防錆剤を塗布したら良いかもしれないが……今時そういったパーツに鉄を使っている事自体がまれなので、 気にしなくて良い。
## ビデオカードやRAMのマザーボードとの接触端子の清掃
ここまで神経質にならなくても良いが、組み立ててから5年も使ってると、
「ねぎらいの心情」
でやりたくなった。
ごく普通に『無水エタノール』を染み込ませた綿棒で端子部分を拭いただけである。
## BIOS・UEFIの設定
⚠ :: マシンのBIOS・UEFIのドキュメント(説明書)を事前に確認し、調整可能項目を踏まえてから操作しましょう
分解清掃したパーツ群を適切に再装着をしたら、マシン起動直後にBIOS・UEFIの画面に遷移するコマンドキーを5回毎秒程度で連打し、それらの画面に遷移する。
丁寧にCMOSの内容を破棄した方は見慣れないメッセージが出るかもしれないが、冷静に読めば内容の判る英語のはずなので、適切に『セットアップ画面』へ遷移する様に操作する。
特筆する事は無いとは思うが、一応書いておく。
おそらくこの記事の一番のお題。
自分が下手に説明するより、『点と接線。』さんの『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%くらい)と引き換えにシステムの応答性を向上させてくれるカーネルということらしい。
Ubuntu含むDebianディストリビューションでは2つの選択肢がある。『Liquorix』と『XanMod』である。
Liquorixをかい摘んで筆者の言葉で述べるなら、
「 最新のLinuxカーネル に ZEN なカスタムを施したカーネルバイナリパッケージ」
である。
最新のLinuxカーネル というのがやや難儀なもので、テキトーな比較資料として筆者のマシンで ls /boot/ -l | grep -e "^vmlinuz.*
を叩いてみる:
~ $ ls /boot/ | grep -e "^vmlinuz.*"
vmlinuz
vmlinuz-5.10.65-rt53-xanmod1
vmlinuz-5.13.0-16-generic
vmlinuz-5.13.19-xanmod1
vmlinuz-5.14.0-6.4-liquorix-amd64
vmlinuz-5.14.0-7.1-liquorix-amd64
vmlinuz.old
注目して頂きたいのは、 vmlinuz-5.13.0-16-generic
と vmlinuz-5.14.0-6.4-liquorix-amd64
, それと vmlinuz-5.14.0-7.1-liquorix-amd64
の行である。マイナーバージョンがガラリと変わっている事がお判り頂けるだろうか。
差し当って「ホームユース」には支障は無いので神経質になる必要は無いものと思う。 「Ubuntuをホームユースしている人が稀」とは言わないでくれ。ここに居るんだ。
筆者も初めはこちら(ただしベータリリース起動後しばらくは除く)を使っていたが、
「UbuntuでDTMを真面目にやるとすると、RealTimeカーネルかねえ……」
と魔が差してしまった為、次に紹介するカスタムカーネルを用いる様になった。
Webページが「ゲーマー向け」だったので当初は避けてしまっていたが最近は、
「いや、ゲームを作りたいんだったら、ゲーム向けにカスタムされたカーネルを使うのは必然だったのでは?」
とか、
「 stable
パッケージを作っていて、かつUbuntuのgenericカーネルとの開きはそこまで無い」
「RealTimeカーネルも有り難いなあ」
とつい思い抱いて浮気する形となっている。
とはいえ、そこまでRealTimeを意識する事があるかと問われると……それこそJACKオーディオサーバーもカリッカリにチューニングした上でMixxxやArdourで高サンプリング周波数の音声ファイルを扱ったDJ,DAWをする時に必要になるのかもしれない。 つまり直近では無い
マシンの用途に合わせて選んで、PPAを追加し、インストールして頂きたい。
freedesktop.org
製グラフィックドライバ次に、 oibaf氏がLaunchpadで提供しているPPAを追加してビデオカードのアップグレードを行う。(コマンドは省略)
freedesktop.org
製(フリーソフトウェア)を使うのかPRIMEを使いたいので。
当初これをしたかった訳では無いが、デスクトップマシンはたまたまビデオカードが2枚になったので、思う存分にビデオカードの演算能力を発揮してもらおうと。
そしてラップトップマシンはNvidiaのビデオカードだが、プロプライエタリなドライバだとあまり応答速度が良くない印象だったので。
カーネルモジュールが何なのかについて、雰囲気解釈で良いなら「Linuxカーネルのアドオン」と解釈しておけば良いかと。
Linuxで仮想カメラを実現する v4l2loopback
もその一つ。
パッケージをインストールしただけで本領を発揮する事が多いとは思うが、筆者は、
「ビデオチャットのクライアントアプリ(ZoomとかJitsiとかDiscordとか……)と仮想カメラ制御用ソフト(OBS Studio)を起動しても平気」
という状態まで持って来るまで異様に時間が掛ってしまった為、この様に健忘対策で記している。
この辺りの情報は 賞賛するが悔しいものの 『ArchWiki』の『AMDGPU』の項が大変参考になった。
ただしUbuntuの場合(というより筆者の場合)は多少読み換えが必要な箇所があった。
『ArchWiki』に倣い /etc/modprobe.d/radeon.conf
の内容は ;
options radeon_si_support=0
/etc/modprobe.d/amdgpu.conf
の内容は;
options amdgpu_si_support=1
とし、念の為 /etc/modules
ファイルに amdgpu
と1行追記した。
ここまで行った後で一度 update-initramfs -u -k 'all'
を行なうのは 必須 なので、忘れぬ様。
🛈 :: 必須では無いですが、あると便利なツールの紹介です。
amdgpu-fan
GitHubリポジトリ :: Python製のRadeonビデオカードのファン制御スクリプト。後記するカーネルパラメーターの設定によってはこれが必要になる。 pip3 install amdgpu-fan
でインストール。bpytop
GitHubリポジトリ :: CPUやRAMの使用率やプロセス一覧と制御を行えるCUIツール。ターミナル上で動かすからと侮る無かれ。 pip3 install bpytop
でインストール。radeontop
GitHubリポジトリ :: ビデオカードのVRAMやクロック周波数の確認ができるCUIツール。ちゃんとグラフ表示なので安心。 apt install radeontop
でインストール。カーネルパラメーターとは何かについては、また雰囲気解釈で良いなら「ビルド済みのLinuxカーネルそのものに後から設定できる値」と解釈しておくのが良いかと。
こちらに関しては「Windowsとのデュアルブート」をしている方々にはお馴染みで 嫌悪される事もある? grub2
の設定で、
「全てのカーネルに対してのカーネルパラメーター」
を当てた。以下筆者の、 /etc/default/grub
の先頭から数十行抜粋:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
# [NOTE] This section was enabled auto select kernel from before booted.
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
# [HACK] I don't know `GRUB_TIMEOUT` values effect too...
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=3
GRUB_HIDDEN_TIMEOUT=3
GRUB_HIDDEN_TIMEOUT_QUIET=true
# [CAUTION] Do NOT remove this section!
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
# [NOTE]::
# - amd_iommu=on :: Enable IOMMU on Kernel. Of course, Enabled IOMMU on UEFI
# - amdgpu.runpm=0 :: Turn off power management on VGA board, maybe.
# - amdgpu.audio=0 :: Interesting bug. Turn off audio support amdgpu:
# The kernel was supported HDMI audio. but, If that option was enabled,
# HDMI display make buggy view.
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd_iommu=on amdgpu.runpm=0 amdgpu.audio=0"
GRUB_CMDLINE_LINUX=""
最初の4行は元々あるコメントだが、それ以外のコメント部分は「筆者の知性と教養」で書いたテキトー英語なので、頭の悪さが垣間見えるだろう。
一番重要なのは GRUB_CMDLINE_LINUX_DEFAULT=...
の中の amd_iommu=on
である。
ハイパーバイザー型の仮想環境からのビデオカードへのアクセスの用途で使う記憶ではあるが、筆者の学習不良につき、
「なぜIOMMUがPRIMEの利用可否に影響を与えるのか」
について解説できない現状である。
さて、ここまで来たら再起動…… の前に update-grub2
をしっかり叩いてビルド完了を見送る事。
🛈 :: 必須では無いですが、できると今後のチューニングが捗ります。
Ubuntuの再起動後は、マシンのファンの音やデスクトップ環境の挙動を眺めて調整していくのも一つかと思う。
もし「サブモニタ」を使えるならば、上に載せた画像の様にいくつかのツールを起動しておいて観測しておくと、ファンの適切な回転数やプロセッサの限界値が垣間見えるかもしれない。
それでは、良きLinuxデスクトップライフを……え、嫌?
update-initramfs
や update-grub2
についての詳しい話は『Ubuntu Weekly Recipe』の下記をご覧頂けると幸い:
* 第638回 Ubuntuに「普通に」ログインするいろいろな方法
* 第639回 Ubuntuに「トラブル時に」ログインするいろいろな方法
また、Ubuntuでの「Steamで配信されているゲーム」については、下記も非常に参考になった:
* 第626回 UbuntuでもSteamのWindowsゲームを!
* AMD GPUを使用してLinux/Ubuntu 20.04でCyberPunk 2077をプレイする方法 - Qiita
さらに、「『Wayland』上での『GNOMEデスクトップ環境』で『OBS Studio』の画面・ウィンドウキャプチャをする」に当ってはOBS StudioにWaylandのスクリーンキャプチャが入ったので試してみた - チラシの裏とかそういう類のに助けられた。
これらの記事を記して下さった皆々様、もちろんArchWikiのページを編集している皆様には、改めてこの場で感謝申し上げさせて頂く。
以降、この記事を書き終えた後で色々気づいた事を書き留めてる。
カーネルのアップグレードが入ると(ベータリリースのディストリビューションを使っているので尚更)高頻度で、
「一部のソフトウェア・アプリケーションが画面表示されない」
事象が発生する。
対処方法は単純に(思考停止だが)「再インストール」で何とかしているので、それについて追記する:
sudo ppa-purge oibaf/graphics-drivers -- # oibafさん提供の最新ドライバを一旦消してダウングレード
sudo apt autoremove && sudo apt autoclean -- # 念の為消せるパッケージや設定は削除する
sudo sed 's/^# deb /deb /' /etc/apt/sources.list.d/oibaf-ubuntu-graphics-drivers-{DistroCodeName}.list -- # ppa-purgeで無効にしたリポジトリを有効化する。不安な人は『ソフトウェアとアップデート』などの他プログラムで編集する事を強く勧める。なお {DistroCodeName} は「PPAを追加した時のUbuntuのコードネーム」になる。
sudo apt update && sudo apt upgrade -- #アップデート(パッケージリストの更新)とアップグレード(パッケージそのものの更新)
sudo systemctl reboot -- # 再起動。古いコマンドではあるが `sudo shutdown -r now` でも良い。
カーネルパラメーター を以下の様に変更;
- GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd_iommu=on amdgpu.runpm=0 amdgpu.audio=0"
+ GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd_iommu=on"
理由というより、こうなるに至った展開は;
amdgpu-fan
が YAML
ファイルの読み込みで起動しなくなったこの後で amdgpu-fan
の本体であるPythonスクリプトを少し弄るが問題の根が深そうなので諦め、川音リオ氏にお勧め頂いた『CoreCtrl』で、ビデオカードのファンの回転数を高めにするのであった。幸いパッケージの衝突は無かった。
env DRI_PRIME=1 %command%
と指定するのが良さそうではある。*.desktop
ファイルでも同じく env
コマンドで環境変数を指定する事ができる。/etc
配下を弄り倒すのは割と勇気が要る。しかし etckeeper
と brz
や git
を入れておくと、多少心配事が少なくなると思う。Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント