Hallo,
ich hab mir ein kleines Perl-Script zusammengeschrieben, dass die akuellen Kernels vom Updateserver anzeigt und dann nach Auswahl einen installiert. (nur x86 - grub - kein 64bit)
Zum Download:
http://www.s-acht.com/kernelUpdate.txt
als root:
Code: Select all
cd /root
wget http://www.s-acht.com/kernelUpdate.txt
mv kernelUpdate.txt kernelUpdate.pl
chmod +x kernelUpdate.pl
./kernelUpdate.pl
und hier der Code:
Code: Select all
#!/usr/bin/perl -w
use strict;
print "Automatic kernel installer V1.1 - 25.10.2005 - r00tynn";
print ">>> WARNING <<< READ THIS FIRST BEFORE USING THE SCRIPT !n";
print "Use this script only for 1&1-Root-Server with Kernel 2.6.x and SuSE 9.x.n";
print "I'm not responsible for any damage caused by this script!n";
print "Only use it if you can install the kernel manually, too!n";
print "Some hints for a manual install can be found here:n";
print "http://www.rootforum.org/forum/viewtopic.php?t=15673n";
print "Good luck ;-)n";
print "n";
$ENV{"PATH"} = "/bin:/usr/bin";
my @files = `/usr/bin/wget update.pureserver.info/local-updates/kernel/ -q -O -`;
my @kernels= ();
my @downloadkernels=();
sub getValue($$$)
{
return ((($_[0]) *100+$_[1]) *1000000+$_[2]);
}
sub isNumeric {
my $InputString = shift;
if ($InputString !~ /^[0-9]*$/) {
return 0;
} else {
return 1;
}
}
sub error {
print "nn!!! WARNING !!!n";
print "Automatic kernel installation failed!n";
print "Don't reboot your system now.";
print "Reinstall you kernel manually !";
die();
}
my $i= 1;
my $max = 0;
my $defaultId = 0;
my $currentValue;
my $currKernel = `/bin/uname -r`;
print "active kernel: $currKerneln";
print "source: update.pureserver.info/local-updates/kernel/n";
foreach (@files) {
if ($_ =~ />kernel(-image)?-2.6.(d{1,2})[.]?(d{1,2})?-(.*)-i386.tar(.*)<//) {
my $vp = $1;
my $v0 = $2;
my $v1 = $3;
my $num = $4;
my $tex = $5;
my $string= "kernel-2.6.$v0";
my $downloadstring = "kernel".$vp."-2.6.$v0";
if (!defined $v1) {
$v1 = 0;
} else {
$string.= ".$v1";
$downloadstring.= ".$v1";
}
$string .= "-$num.tar$tex";
$downloadstring .= "-$num-i386.tar$tex";
push(@kernels, $string);
push(@downloadkernels, $downloadstring);
$num = substr($num, 0, 6);
$currentValue = getValue($v0, $v1, $num);
if ($max < $currentValue) {
$defaultId = $i;
$max = $currentValue;
}
$i++;
}
}
if (scalar(@kernels) == 0) {
die "no kernels found @ update.pureserver.info/local-updates/kernel/n";
}
$i = 1;
foreach (@kernels) {
print "[$i] - $_";
if ($i == $defaultId) {
print " <-- newest";
}
print "n";
$i++;
}
print "[q] - quitn";
print "select kernel you want to install [$defaultId]: ";
my $id = <STDIN>;
chop($id);
if ($id eq "") {
$id = $defaultId;
}
if ($id eq "q") {
exit;
}
if (!isNumeric($id)) {
die "numeric input required!n";
}
if (($id < 1) || ($id > (scalar @kernels))) {
die "selection out of range!n";
}
my $kernel = $kernels[$id-1];
print "nInstalling $kerneln";
print ("n> /bin/mkdir /root/install_kernel_tmpn");
system("/bin/mkdir /root/install_kernel_tmp");
print ("n> /usr/bin/wget update.pureserver.info/local-updates/kernel/$downloadkernels[$id-1] -O /root/install_kernel_tmp/kernel.tar.gzn");
system("/usr/bin/wget update.pureserver.info/local-updates/kernel/$downloadkernels[$id-1] -O /root/install_kernel_tmp/kernel.tar.gz") && error();
print ("n> /bin/tar xzf /root/install_kernel_tmp/kernel.tar.gz -C / n");
system("/bin/tar xzf /root/install_kernel_tmp/kernel.tar.gz -C / ") && error();
$kernel =~ /kernel-(.*).tar.gz/;
$kernel = $1;
print ("n> /usr/bin/test -e /boot/vmlinuz-$kerneln");
print ("n> /usr/bin/test -e /boot/System.map-$kerneln");
print ("n> /usr/bin/test -e /boot/config-$kerneln");
if (system("/usr/bin/test -e /boot/vmlinuz-$kernel") != 0) {
print "can't find /boot/vmlinuz-$kerneln";
error();
}
if (system("/usr/bin/test -e /boot/System.map-$kernel") != 0) {
print "can't find /boot/System.map-$kerneln";
error();
}
if (system("/usr/bin/test -e /boot/config-$kernel") != 0) {
print "can't find /boot/config-$kerneln";
error();
}
print ("n> /bin/ln -sf /boot/vmlinuz-$kernel /boot/vmlinuzn");
system("/bin/ln -sf /boot/vmlinuz-$kernel /boot/vmlinuz") && error();
print ("n> /bin/ln -sf /boot/System.map-$kernel /boot/System.mapn");
system("/bin/ln -sf /boot/System.map-$kernel /boot/System.map") && error();
print ("n> /bin/ln -sf /boot/config-$kernel /boot/confign");
system("/bin/ln -sf /boot/config-$kernel /boot/config") && error();
print ("n> /bin/rm /root/install_kernel_tmp/kernel.tar.gzn");
system("/bin/rm /root/install_kernel_tmp/kernel.tar.gz");
print ("n> /bin/rmdir /root/install_kernel_tmpn");
system("/bin/rmdir /root/install_kernel_tmp");
print ("nNew kernel installed successfully! Please reboot your system: shutdown -rn nownHave a nice day...nn");