summaryrefslogtreecommitdiffstats
path: root/initramfs/OpenSLX/MakeInitRamFS/Engine.pm
diff options
context:
space:
mode:
authorOliver Tappe2008-02-13 21:20:12 +0100
committerOliver Tappe2008-02-13 21:20:12 +0100
commiteeb91dbb63c9c3efceb4030ebcb514b92520550a (patch)
tree6b9ec24a9c7c852a02d9027eff36465cd92eb3ca /initramfs/OpenSLX/MakeInitRamFS/Engine.pm
parent* hopefully finally fixed the utf8-related character problems in --man (diff)
downloadcore-eeb91dbb63c9c3efceb4030ebcb514b92520550a.tar.gz
core-eeb91dbb63c9c3efceb4030ebcb514b92520550a.tar.xz
core-eeb91dbb63c9c3efceb4030ebcb514b92520550a.zip
* added support for letting plugins suggest additional kernel modules
* used this new functionality in the theme and vmware plugins to suggest the kernel modules they need (this should fix showing the console in ubuntu) * added distro-specific kernel module filtering, such that there no longer are the spurious warnings about 'hid', 'unix' and/or 'af_packet' not being found git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1540 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'initramfs/OpenSLX/MakeInitRamFS/Engine.pm')
-rw-r--r--initramfs/OpenSLX/MakeInitRamFS/Engine.pm51
1 files changed, 43 insertions, 8 deletions
diff --git a/initramfs/OpenSLX/MakeInitRamFS/Engine.pm b/initramfs/OpenSLX/MakeInitRamFS/Engine.pm
index cbd5ff5a..4624c7d7 100644
--- a/initramfs/OpenSLX/MakeInitRamFS/Engine.pm
+++ b/initramfs/OpenSLX/MakeInitRamFS/Engine.pm
@@ -63,6 +63,7 @@ sub new
my %distroMap = (
'debian' => 'Debian',
+ 'suse' => 'SUSE',
'ubuntu' => 'Ubuntu',
);
my $distroModule = $distroMap{$self->{'distro-name'}} || 'Base';
@@ -73,7 +74,9 @@ sub new
$self->{'lib-scanner'}
= OpenSLX::LibScanner->new({ 'root-path' => $self->{'root-path'} });
- $self->{'required-libs'} = {};
+ $self->{'required-libs'} = {};
+ $self->{'suggested-kernel-modules'} = [];
+ $self->{'filtered-kernel-modules'} = [];
return bless $self, $class;
}
@@ -119,8 +122,6 @@ sub _collectCMDs
$self->_copyRequiredLayeredFSTools();
- $self->_copyKernelModules();
-
$self->_copyPreAndPostinitFiles();
if ($self->{'debug-level'}) {
@@ -131,6 +132,8 @@ sub _collectCMDs
$self->{distro}->applyChanges($self);
+ $self->_copyKernelModules();
+
$self->_copyRequiredLibs();
$self->_createInitRamFS();
@@ -505,6 +508,15 @@ sub _addRequiredLib
return;
}
+sub _addFilteredKernelModules
+{
+ my $self = shift;
+
+ push @{ $self->{'filtered-kernel-modules'} }, @_;
+
+ return;
+}
+
sub _copyKernelModules
{
my $self = shift;
@@ -536,6 +548,8 @@ sub _copyKernelModules
my @kernelModules = qw(
af_packet unix hid usbhid uhci-hcd ohci-hcd
);
+ push @kernelModules, @{ $self->{'suggested-kernel-modules'} };
+
push @kernelModules, split ' ', $self->{attrs}->{ramfs_fsmods};
push @kernelModules, split ' ', $self->{attrs}->{ramfs_miscmods};
push @kernelModules, split ' ', $self->{attrs}->{ramfs_nicmods};
@@ -555,9 +569,14 @@ sub _copyKernelModules
# required modules
foreach my $kernelModule (@kernelModules) {
if (!$modulePath{$kernelModule}) {
- warn _tr(
- 'kernel module "%s" not found (in modules.dep)', $kernelModule
- );
+ if (! grep { $_ eq $kernelModule }
+ @{ $self->{'filtered-kernel-modules'} }
+ ) {
+ warn _tr(
+ 'kernel module "%s" not found (in modules.dep)',
+ $kernelModule
+ );
+ }
}
foreach my $modulePath (@{$modulePath{$kernelModule}}) {
next if $modulesToBeCopied{$modulePath};
@@ -687,13 +706,29 @@ sub _handlePlugins
}
my $plugin = OpenSLX::OSPlugin::Roster->getPlugin($pluginName);
next if !$plugin;
+
my @suggestedKernelParams
= $plugin->suggestAdditionalKernelParams($self->{'kernel-params'});
if (@suggestedKernelParams) {
+ my $paramsList = join ' ', @suggestedKernelParams;
+ vlog(
+ 2,
+ "plugin $pluginName suggests these kernel params: $paramsList"
+ );
$self->{'kernel-params'}
- .= ($self->{'kernel-params'} ? ' ' : '')
- . join ' ', @suggestedKernelParams;
+ .= ($self->{'kernel-params'} ? ' ' : '') . $paramsList;
}
+
+ my @suggestedModules = $plugin->suggestAdditionalKernelModules($self);
+ if (@suggestedModules) {
+ vlog(
+ 2,
+ "plugin $pluginName suggests these kernel modules: "
+ . join(',', @suggestedModules)
+ );
+ push @{ $self->{'suggested-kernel-modules'} }, @suggestedModules;
+ }
+
$plugin->copyRequiredFilesIntoInitramfs(
$self->{'build-path'}, $self->{attrs}, $self
);