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: