#!/usr/bin/perl # # Guillaume Cottenceau (gc@mandrakesoft.com) # # Copyright 2000 MandrakeSoft # # This software may be freely redistributed under the terms of the GNU # public license. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # local $_ = join '', @ARGV; "@ARGV" =~ /-h/ and die "usage: drivers_install [drivertype1 drivertype2..]\n"; sub pci_probe { my @l; foreach (`/usr/bin/lspcidrake -v`) { push @l, do { if (/^(\S+)\s*: (.+) \[([^\]]+)/) { { driver => $1, description => $2, type => $3 }; } elsif (/^(\S+)\s*: (.+)/) { { driver => $1, description => $2, type => 'NOT_DEFINED' }; } else { next; } }; } @l; } sub install_module($$) { my ($driver, $descr) = @_; print "Installing driver $driver (for \"$descr\")\n"; system("/sbin/modprobe", $driver) and print "\tfailed\n"; my $already_usb if 0; if (!$already_usb && $driver =~ /usb/) { $already_usb = 1; print "Installing driver usbkdb\n"; system('/sbin/modprobe', 'usbkbd') and print "\tfailed\n"; print "Installing driver keybdev\n"; system('/sbin/modprobe', 'keybdev') and print "\tfailed\n"; } } #- start foreach $card (pci_probe()) { $card->{type} eq "DISPLAY_VGA" and next; $card->{driver} eq "unknown" and next; $card->{driver} =~ "Card:" and next; if (!@ARGV || grep { $card->{type} =~ /$_/i } @ARGV) { install_module($card->{driver}, $card->{description}); } } #------------------------------------------------- #- $Log$ #- Revision 1.6 2002/09/10 10:07:23 gc #- drvinst is broken when we don't -v #- #- Revision 1.5 2001/09/27 16:00:05 gc #- don't install usb keyboard drivers more than once #- #- Revision 1.4 2001/09/27 15:57:55 gc #- try to fix usb keyboards #- #- Revision 1.3 2001/03/29 11:33:28 gc #- test for "Card:" and not install, some videoboards are not reported as DISPLAY_VGA :-( #- #- Revision 1.2 2001/02/12 18:42:17 uid553 #- pixelization #- #- Revision 1.1 2001/02/12 14:31:10 uid535 #- - add lspci, lspcidrake, vim-minimal #- - better /etc/issue #- - better PS1 #- - write embryonic tool (installation of detected drivers according to pci cards) #-