Difference between revisions of "Modprobed-db"

From ArchWiki
Jump to navigation Jump to search
m (Remove kernel compilation. Already merged to kernels.)
Line 7: Line 7:
{{Article summary wiki|Kernels}}
{{Article summary wiki|Kernels}}
{{Article summary wiki|Linux-ck}}
{{Article summary wiki|Linux-ck}}
{{Article summary wiki|Kernel Compilation}}
{{Article summary end}}
{{Article summary end}}

Revision as of 09:52, 18 February 2012

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.

Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어

External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary end

modprobed_dbAUR is a package in the AUR that will store a list of all modules probed on a system. This is very useful for users wishing to build a minimal kernel via the make localmodconfig script which simply takes every module currently probed and switches everything BUT them off in the .config for a kernel resulting in smaller kernel packages and reduced compilation times.

Benefits of Using This Script with make localmodconfig in Custom Kernels

  1. Reduced kernel footprint on FS
  2. Reduced compilation time

Comparisons using version 3.1.1-1 of the ARCH kernel (from ABS):

Note: The /var/log/modprobed.db on the test machines contains 171 lines, YMMV based on your specific usage and needs.
Machine CPU make localmodconfig # of Modules Modules' Size on HDD Compilation Time
Intel C2Q @ 3.4 GHz No 3,148 46 MB 13 min 50 sec
Intel C2Q @ 3.4 GHz Yes 596 13 MB 5 min 30 sec
AMD Athlon XP 3200+ @ 2.2 GHz No 3,148 46 MB 127 min 35 sec
AMD Athlon XP 3200+ @ 2.2 GHz Yes 596 13 MB 41 min 20 sec
  • Net decrease in number of modules: 5.2x
  • Net decrease in kernel footprint: 3.5x
  • Net decrease in compilation time: 2.5x - 3.1x

Number of modules found by:

find /lib/modules/3.1.1-1-ARCH/kernel -iname "*.ko.gz" | wc -l

Size on HDD found by:

$ du -ch /lib/modules/3.1.1-1-ARCH/kernel | grep total

Compilation time found by entering a preconfigured src/linux-3.1.1 (using stock ARCH config):

$ time make -jx bzImage modules

How It Works

The package installs two scripts:

  1. /usr/bin/modprobed_db keeps an alphabetical database of all modules ever probed for easy recall. It is ideal when building a custom kernel and using the make localmodconfig option.

Installation and Setup

  1. Download and build, and install modprobed_dbAUR from AUR.
  2. Edit /etc/modprobed_db.conf and select a path where the database will reside (default is /var/log) and optionally add some modules you wish to ignore to the ignore array. Some common ones are included in the PKG by default.


Data Collection

The most convenient method to "use" the script is to simply add an entry in either root's or your root user's crontab to invoke /usr/bin/modprobed_db store at some regular interval.

Example running the script once every 5 minutes:

crontab -e
*/5 * * * *   /usr/bin/modprobed_db store &> /dev/null

Data Recall

As mentioned earlier, this script is meant to be used in concert with the make localmodconfig step of compiling a kernel. After the database has been adequately populated, simply invoke /usr/bin/modprobed_db recall prior to compiling a kernel to load all modules followed by the make localmodconfig to do the magic.

Using the Official ARCH kernel PKGBUILD

The official ARCH kernel's PKGBUILD does not have native support for this, but it is easily modified as follows:

  # get kernel version
  make prepare

  /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

Using Some Kernels in the AUR

Several kernel packages in the AUR have native support for modprobed_db in their PKGBUILD files. For example:

Find which other packages use it:

cd /scratch
git clone git://pkgbuild.com/aur.git
find /scratch/aur -iname "PKGBUILD" -print0 | xargs -0 grep --color modprobed_db


It is recommended that users install the package and then "use" the system for a good amount of time to allow the database to grow based on usage and capture everything the system needs before building a kernel with a make localmodconfig. Some suggested actions to allow appropriate modules to load and get cataloged:

  • Insert every kind of removable media (USB, DVD, CD, etc.)
  • Use every device on the machine (wifi, network, USB stuff like cameras, ipods, etc.)
  • Mount every kind of filesystem you would typically use including ext2/3/4, fat, vfat, CIFS shares, NFS shares, etc.
  • Use as many applications (that you normally use) as possible in order to capture modules on which they depend. For example, IP blocking/filtering software like pgl-cliAUR.
  • If you plan to mount an iso file do so (this will make sure you capture the loop and isofs modules.
  • If you use encryption software such as truecrypt make sure to load it, and mount some encrypted containers to ensure that the needed crypto modules are in the db.

Suggested Modules

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