Modprobed-db

提供: ArchWiki
2018年1月31日 (水) 21:02時点におけるKusakata.bot (トーク | 投稿記録)による版 (文字列「リムーバルメディア」を「リムーバブルメディア」に置換)
ナビゲーションに移動 検索に移動

関連記事

modprobed-dbAUR はシステムで使われているモジュールを全て記憶して簡単に呼び出せるようにします。make localmodconfig を使って最小のカーネルをビルドしたいと思っているユーザーならとても役に立ちます。現在ロードされている全てのモジュールを調査して .config でロードされていない機能をオフにすることでカーネルパッケージを小さくしてコンパイル時間も短縮できます。

インストールとセットアップ

AUR から modprobed-dbAUR パッケージをインストールできます。

  1. modprobed-db を実行すると $XDG_CONFIG_HOME/modprobed-db.conf が (存在してない場合) 作成されます。
  2. modprobed-db store を実行すると現在ロードされているモジュールが保存されます。

任意: 無視したいモジュールは 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 を使います。

ノート: /usr/bin/modprobe は root 権限を必要とするため、データベースを使用するには root か sudo で /usr/bin/modprobed-db を実行する必要があります。

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 にネイティブで対応しているものがあります。例:

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
ノート: The server pkgbuild.com is rather slow and the git clone can take a while.

もしくは、こちらのリンク から .tar.xz スナップショット (約 90 MB) をダウンロードして、最新のコミットメッセージをクリックしてください。

推奨事項

make localmodconfig でカーネルをビルドする前に、パッケージをインストールしてから相当期間はシステムを"使用"して、システムの使用状況に応じてデータベースがシステムに必要なモジュールを全て収集するまで成長させることが推奨されています。適当なモジュールをロードしてカタログ化させるために以下のような操作をすることが推奨されます:

  • あらゆるリムーバブルメディア (USB, DVD, CD など) を挿入
  • マシンに接続された全てのデバイスを使用 (wifi, ネットワーク, カメラや ipod などの USB デバイスなど)
  • あらゆるファイルシステムのマウント (ext2/3/4, fat, vfat, CIFS 共有, NFS 共有など)
  • 必要とするモジュールを確認するため出来る限り多数の (いつも使っている) アプリケーションを使用。例えば、pgl-cliAUR などの IP ブロック/フィルタリングソフトウェア。
  • iso イメージファイルをマウントすることがある場合はマウントしてください (loopisofs モジュールが記録されます)。
  • truecrypt などの暗号化ソフトウェアを必要とする場合は、データベースに crypto モジュールが記録されるように、ソフトウェアをロードして暗号化コンテナをマウント。
  • 別の Linux カーネルを試用。デフォルトのカーネルでは有効になっていないモジュールが含まれている可能性があります。

推奨モジュール

  • cifs
  • ext2
  • ext3
  • ext4
  • fat
  • isofs
  • loop
  • efivars
  • vfat
  • usb_storage

カスタムカーネルで make localmodconfig と modprobed-db を使用するメリット

  1. ファイルシステム上のカーネル容量の縮小
  2. コンパイル時間の短縮

Arch カーネルのバージョン 3.8.8-1 による比較 (ABS を使用):

ノート: The modprobed.db on the test machine contains 209 lines; YMMV based on specific usage and needs.
マシン 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
ノート: 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.