diff options
author | Oliver Tappe | 2008-02-13 21:20:12 +0100 |
---|---|---|
committer | Oliver Tappe | 2008-02-13 21:20:12 +0100 |
commit | eeb91dbb63c9c3efceb4030ebcb514b92520550a (patch) | |
tree | 6b9ec24a9c7c852a02d9027eff36465cd92eb3ca /initramfs/OpenSLX/MakeInitRamFS/Engine.pm | |
parent | * hopefully finally fixed the utf8-related character problems in --man (diff) | |
download | core-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.pm | 51 |
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 ); |