今日は20から21に更新しましたが、21で起動すると、起動時間が途方もなく長くなることがわかりました。結果systemd-analyze blame
:http://pastie.org/9794252
systemctl status akmods.service
:
● akmods.service - Builds and install new kmods from akmod packages
Loaded: loaded (/usr/lib/systemd/system/akmods.service; enabled)
Active: active (exited) since Mon 2014-12-22 15:00:42 CET; 5min ago
Main PID: 849 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/akmods.service
Dec 22 15:00:42 fundora akmods[849]: Checking kmods exist for 3.17.7-200.fc20.x86_64[ OK ]
Dec 22 15:00:42 fundora systemd[1]: Started Builds and install new kmods from akmod packages.
akmod.serviceはなぜそんなに時間がかかりますか?
ベストアンサー1
Akmodは、デフォルトで現在のカーネルで利用可能ないくつかの(通常はサードパーティの)モジュール/ドライバがあることを確認します。
RPM Fusion / Livnaは、Fedoraの最新のカーネルリリース用にプリコンパイルされたモジュールを含むkmodパッケージにカーネルモジュールを展開します。これはほとんどの人にとってうまく機能しますが、自己コンパイルされたカーネル、古いFedoraカーネル、または最新のテスト/レザーから急速に変化するカーネルなど、他のカーネルを使用するシステムでは機能しません。 rpmbuildを使用すると、これらのカーネルのkmods-srpmsを簡単に再構築でき、kmod固有のパラメータを使用してkmodが構築されるカーネルを定義できます。しかし、これにはrpmsの構築方法に関する知識が必要です。したがって、akmodsスクリプトは、実行中のカーネル用にkmod-srpmでkmod.rpmを構築するために必要なすべての手順を実行するので、エンドユーザーはそれを簡単に作成しようとします。
ただし、ユーザーが新しくインストールされたカーネルにkmodを提供する必要がある場合は、まだいくつかの手動操作を実行する必要があります。これが、akmodsdデーモンが修正しようとしていることです。これは通常、起動時にinitで起動され、すべてのkmodがあることを確認するスクリプトです。 kmodが見つからない場合、akmodsはファイルシステムのどこかで見つかったkmod.srpmを再構築しようとします。有効な場合は、再構築されたkmodを実行中のカーネルに自動的にインストールします。
これはdkmsに似ていますが、重要な利点があります。 1つのkmod仕様ファイルのみが維持され、必要に応じてストレージビルドシステムとクライアントシステムの両方で使用できます。
ソース: RPMfusion:Packaging/KernelModules/Akmods
そのため、新しいモジュールを構築する必要があるか、正しいモジュールが利用可能であることを確認する必要があり、時間がかかる可能性があるため、時間がかかることがあります。
方法1: 次の方法で無効にできます。
sudo systemctl disable akmods
ただし、カーネルを更新するときにakmmodsを手動で実行しないと、正しいドライバを使用できない可能性があります。
sudo akmods
適切なkernel-devel
パッケージをインストールして最新の状態に保つ必要があります。これは+ debugカーネルでは機能しないかもしれません。
私はこれをやってきて、今まで働いているようです(1分以内に始まります。ジャーナルサイズの縮小(ハードドライブ付きの古いシステムの場合))。他のさまざまなサービスをさらに無効にすることができます(参照:窒素オート第二elow)、しかし、それはすべて、より簡潔で高速なシステムが必要なのか、それともほとんどの作業に適したシステムが必要なのかによって異なります(たとえば、私は以前のシステムでLVMを使用していません)。これらのサービスは一般的に有用な理由で存在します。
方法2:
あるいは、アンインストールを使用するsudo dnf erase akmods
がそれに依存するモジュール(通常はRPMfusionまたは同様のサードパーティモジュール)を削除することができます。次のコマンドを使用すると、akmodが必要なパッケージを確認できますsudo rpm -q --whatrequires akmods
。
~$ sudo rpm -q --whatrequires akmods
akmod-wl-6.30.223.248-9.fc22.x86_64
akmod-VirtualBox-4.3.32-1.fc22.x86_64
したがって、私の場合は、VirtualBoxおよびワイヤレスドライバ用のakmodsだけが必要です。
サービスの開始などを確認するもう1つの方法は、次を実行することです。
systemd-analyze plot > systemd-analyze.svg
これにより、どのサービスが最も時間がかかるかを判断するために使用できるイメージが生成されます。また扱われるここ。