[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Welcher Kernel ist am Fremdsystem



Hallo,

Am Mit, 11 Okt 2006, Andreas Putzo schrieb:
>On Tuesday 10 October 2006 23:50, Al Bogner wrote:
>> Mich würde interessieren welcher Kernel auf einem Gastrechner
>> installiert ist, uname ist aber gesperrt.
>>
>> Kennt wer andere Möglichkeiten?
>
>rpm  -qa (?)
>ls  /boot
>ls /lib/modules/
>zcat /proc/config.gz
>strings /boot/vmlinuz |less
>cat /boot/grub/menu.lst 
>cat /etc/lilo.conf
>/sbin/modinfo <module>
>
>Alles verboten / nicht vorhanden?

Noch was:

perl -MPOSIX -e 'print((uname)[2], "\n");'

==== kernelrelease.c ====
/* statt #include <sys/utsname.h> */
/* aus bits/utsname.h */
#define SYS_NMLN 65
/* aus sys/utsname.h */
struct utsname {
  char sysname[SYS_NMLN];
  char nodename[SYS_NMLN];
  char release[SYS_NMLN];
  char version[SYS_NMLN];
  char machine[SYS_NMLN];
  char domainname[SYS_NMLN];
};

/* aus errno.h */
extern int errno;

int main(int argc, char * argv[]){
  struct utsname u;
  if( uname(&u) == 0 ) {
    printf("%s\n", u.release);
  } else {
    perror(argv[0]);
  }
  return errno;
}
====

$ gcc -o kernelrelease kernelrelease.c && ./kernelrelease

Das kompilieren muss nichtmal auf der Zielmaschine erfolgen, dann
sollte man aber die "saubere" Version mit den richtigen Headern
verwenden:

====
#include <stdio.h>
#include <errno.h>
#include <sys/utsname.h>

int main(int argc, char * argv[]){
  struct utsname u;
  if( uname(&u) == 0 ) {
    printf("%s\n", u.release);
  } else {
    perror(argv[0]);
  }
  return errno;
}
====

Ein

$ echo -e '#include <linux/version.h>\nUTS_RELEASE' | cpp -
bzw.
$ echo -e '#include <linux/version.h>\nUTS_RELEASE' | gcc -E -

liefert leider meist nur die Version des Kernels unter dem die glibc
gebacken wurde.

-dnh

-- 
In the beginning the Universe was created.  This has made a lot
of people very angry and been widely regarded as a bad move.
                                      -- THHGTTG, Douglas Adams



Reply to: