Следующий скрипт скажет вам, какие динамически загруженные драйверы запущены, хотя мне также хотелось бы, чтобы автоматически выяснилось, какие скомпилированные в модулях на самом деле используются, чтобы я мог еще больше разложить ядро.
#!/bin/bash
/sbin/lsmod | tail -n+2 | cut -d" " -f1 | xargs /sbin/modinfo -n | sort ;
Я не уверен, насколько уместна остальная часть этого к вашему вопросу, но думал, что вы или другие могли бы найти это полезным.
Следующий код выяснит, какие параметры .config управляют каждым из динамически загружаемых модулей ядра, хотя я пока не нашел способ сделать то же самое для динамических модулей в пакете ubuntu lum (этот скрипт все еще работа в процессе):
#!/usr/bin/perl -w
use strict;
use Getopt::Long;
my ($kernConfigIn, $kernConfigOut, $kernSourceDir, $lumSourceDir, $lumConfigIn, $lumConfigOut, $help);
GetOptions(
'ksd=s' => \$kernSourceDir,
'lsd=s' => \$lumSourceDir,
'kci=s' => \$kernConfigIn,
'lci=s' => \$lumConfigIn,
'kco=s' => \$kernConfigOut,
'lco=s' => \$lumConfigOut,
'help' => \$help);
if ($help || !$kernSourceDir || !$lumSourceDir ) { Usage($0); }
sub Usage { print "usage error\n"; exit; };
my @modules = `/sbin/lsmod | tail -n+2 | cut -d" " -f1 | xargs /sbin/modinfo -n | sort ;`;
my @kconfig;
foreach my $module (@modules) {
my ($package, $path, $modName) = ( $module =~ m/\/((?:kernel)|(?:ubuntu))\/(.*)\/(.*)\.ko/) ;
$package eq 'kernel' ? push @kconfig, kernel($package, $path, $modName) : ubuntu($package, $path, $modName);
}
# kernel package
sub kernel {
my ($package, $path, $modName) = @_;
my $makefile = $kernSourceDir.$path."/Makefile";
# print "$package, $path, $modName\n";
# print "$makefile\n";
my $option;
chomp($option = `cat $makefile | sed -n "s/^obj-\\\$(CONFIG_\\([A-Z0-9_]*\\))\\W*+=.*"$modName"\\.o.*/CONFIG_\\1/p"`);
print "$option\n";
return $option;
}
# deal with lum configs
sub ubuntu {
}
Существует скрипт Андреаса Гёльцера, который с небольшой модификацией отключит все неиспользуемые модули ядра в вашем .config, что значительно ускоряет ваши компиляции.
Вы можете найти его здесь:
http://andreas.goelzer.de/kernel-config-based-on-lsmod-output