「Modprobed-db」の版間の差分
(→インストールとセットアップ: 同期) |
("参照" を追加) |
||
149行目: | 149行目: | ||
{{Note|The Arch standard is to gzip each module; the numbers shown in the table above are not gzip'ed but the savings ratio will be unaffected by this.}} |
{{Note|The Arch standard is to gzip each module; the numbers shown in the table above are not gzip'ed but the savings ratio will be unaffected by this.}} |
||
+ | |||
+ | == 参照 == |
||
+ | |||
+ | * https://docs.kernel.org/admin-guide/README.html#configuring-the-kernel {{ic|make localmodconfig}} のドキュメント |
||
+ | * https://docs.kernel.org/kbuild/kconfig.html とその親ディレクトリ |
2023年6月11日 (日) 21:18時点における版
modprobed-db は、システムの実行中にロードされている全てのカーネルモジュールのリストを生成するユーティリティです。このリストを使うことで、自分でカーネルをビルドする際に未使用のモジュールを全て無効化し、コンパイル時間を劇的に削減することができます。
目次
インストール
modprobed-dbAUR パッケージをインストールしてください。
modprobed-db
を実行してください。まだ存在しないならば$XDG_CONFIG_HOME/modprobed-db.conf
が作成されます。modprobed-db store
を実行してください。$XDG_CONFIG_HOME/modprobed.db
データベースファイルが作成され、現在ロードされているモジュールが記録されます。
任意: 記録したくないモジュールは ignore 配列に追加してください。例えば、ビルドされるモジュールや、他のパッケージによって提供されているモジュールなどです。 無視されるべき一般的なモジュールは、いくつかすでに追加されています:
$ cat ~/.config/modprobed-db.conf
IGNORE=(nvidia vboxdrv vboxnetflt vboxnetadp vboxpci lirc_dev lirc_i2c osscore oss_hdaudio oss_usb tp_smapi thinkpad_ec zavl znvpair zunicode zcommon zpios zfs spl splat)
使用方法
最初にデータベースが作成されたら、通常通りにシステムを使って (USB スティックを接続したり、モジュールを必要とするハードウェアを使ったり、モジュールを必要とするファイルシステムをマウントするなど)、以下の方法のどちらかで定期的にデータベースを更新します:
Cron
modprobed-db を使用する最も便利な方法は /usr/bin/modprobed-db store
を定期的に実行する crontab エントリを追加することです。
1時間ごとにスクリプトを実行する例:
$ crontab -e 0 */1 * * * /usr/bin/modprobed-db store &> /dev/null
Systemd
cron を使いたくない Systemd ユーザーは付属のサービスを使うことができます: modprobed-db.service
。起動時とシャットダウン時、それと1時間ごとに store モードで modprobed-db を実行します。
$ systemctl --user enable modprobed-db.service $ systemctl --user start modprobed-db.service
データの使用
上述したとおり、このスクリプトはカーネルをコンパイルするときに make localmodconfig と組み合わせて使われることが想定されています。十分なデータベースが作成されたら、カーネルをコンパイルする前に /usr/bin/modprobed-db recall
を実行して全てのモジュールをロードしてから make localmodconfig を使います。
Arch の公式カーネルの PKGBUILD を使う
Arch の公式カーネルの PKGBUILD はネイティブの対応はしていませんが、以下のように簡単に設定することができます:
... # get kernel version make prepare sudo /usr/bin/modprobed-db recall <---- insert this line make localmodconfig <---- insert this line # load configuration # Configure the kernel. Replace the line below with one of your choice. #make menuconfig # CLI menu for configuration #make nconfig # new CLI menu for configuration #make xconfig # X-based configuration #make oldconfig # using old config from previous kernel version # ... or manually edit .config ...
AUR のカーネルを使う
AUR のカーネルパッケージの中には PKGBUILD ファイルで modprobed-db にネイティブで対応しているものがあります。例:
- linux-bfsAUR[リンク切れ: アーカイブ: aur-mirror]
- linux-bridge-plAUR[リンク切れ: アーカイブ: aur-mirror]
- linux-ck-fbcondecorAUR
- linux-ckAUR
- linux-lqxAUR
- linux-lts310AUR[リンク切れ: パッケージが存在しません]
- linux-lts312AUR[リンク切れ: パッケージが存在しません]
- linux-lts-ckAUR
- linux-pfAUR
- linux-uksm-ckAUR[リンク切れ: アーカイブ: aur-mirror]
- linux-iceAUR[リンク切れ: パッケージが存在しません]
- linux-uksmAUR
modprobed-db を使用する他のパッケージを調べるには:
cd /scratch git clone --depth 1 http://pkgbuild.com/git/aur-mirror.git find /scratch/aur-mirror -iname "PKGBUILD" -print0 | xargs -0 grep -i 'modprobed-db recall\|modprobed_db recall' | sort
もしくは、こちらのリンク から .tar.xz スナップショット (約 90 MB) をダウンロードして、最新のコミットメッセージをクリックしてください。
推奨事項
make localmodconfig でカーネルをビルドする前に、パッケージをインストールしてから相当期間はシステムを"使用"して、システムの使用状況に応じてデータベースがシステムに必要なモジュールを全て収集するまで成長させることが推奨されています。適当なモジュールをロードしてカタログ化させるために以下のような操作をすることが推奨されます:
- あらゆるリムーバブルメディア (USB, DVD, CD など) を挿入
- マシンに接続された全てのデバイスを使用 (wifi, ネットワーク, カメラや ipod などの USB デバイスなど)
- あらゆるファイルシステムのマウント (ext2/3/4, fat, vfat, CIFS 共有, NFS 共有など)
- 必要とするモジュールを確認するため出来る限り多数の (いつも使っている) アプリケーションを使用。例えば、pgl-cliAUR などの IP ブロック/フィルタリングソフトウェア。
- iso イメージファイルをマウントすることがある場合はマウントしてください (loop と isofs モジュールが記録されます)。
- truecrypt などの暗号化ソフトウェアを必要とする場合は、データベースに crypto モジュールが記録されるように、ソフトウェアをロードして暗号化コンテナをマウント。
- 別の Linux カーネルを試用。デフォルトのカーネルでは有効になっていないモジュールが含まれている可能性があります。
推奨モジュール
- cifs
- ext2
- ext3
- ext4
- fat
- isofs
- loop
- efivars
- vfat
- usb_storage
カスタムカーネルで make localmodconfig と modprobed-db を使用するメリット
- ファイルシステム上のカーネル容量の縮小
- コンパイル時間の短縮
Arch カーネルのバージョン 3.8.8-1 による比較 (ABS を使用):
マシン CPU | スレッド数 | make localmodconfig | モジュール数 | HDD 上のモジュール容量 | コンパイル時間 |
Intel i7-3770K @ 4.50 GHz | 8 | No | 3,025 | 129 MB | 7分37秒 |
Intel i7-3770K @ 4.50 GHz | 8 | Yes | 230 | 18 MB | 1分13秒 |
Intel Q9550 @ 3.40 GHz | 4 | No | 3,025 | 129 MB | 14分21秒 |
Intel Q9550 @ 3.40 GHz | 4 | Yes | 230 | 18 MB | 2分20秒 |
Intel E5200 @ 3.33 GHz | 2 | No | 3,025 | 129 MB | 34分35秒 |
Intel E5200 @ 3.33 GHz | 2 | Yes | 230 | 18 MB | 5分46秒 |
- ビルドされるモジュールの数が 1/13
- 容量が 1/7
- コンパイル時間が 1/6
モジュールの数を確認:
find /scratch/linux-3.8 -name '*.ko' | wc -l
HDD 上の容量を確認:
find /scratch/linux-3.8 -name '*.ko' -print0 | xargs -0 du -ch
設定済みの linux-3.8.8 のコンパイル時間を確認 (標準の Arch 設定を使用):
$ time make -jx modules
参照
- https://docs.kernel.org/admin-guide/README.html#configuring-the-kernel
make localmodconfig
のドキュメント - https://docs.kernel.org/kbuild/kconfig.html とその親ディレクトリ