API für Linux-Distro-Namen, um den Namen einer Linux-Distro in einem Treibercode zu erhalten?

API für Linux-Distro-Namen, um den Namen einer Linux-Distro in einem Treibercode zu erhalten?

Ich schreibe einen allgemeinen Code in einem Treiber, um den Distributionsnamen und den Hostnamen zu erhalten. Den Hostnamen übernehme ich struct utsname{nodename[]}, aber wie erhalte ich den Distributionsnamen?

Antwort1

Die meisten Programme und Skripte, die ich gesehen habe, analysieren die üblichen Dateien in /etc. Soweit ich weiß, gibt es keinen anderen Weg:

On Redhat, look for /etc/redhat-release
On Debian, look for /etc/debian_version
Mandriva has /etc/version
and Slackware has /etc/slackware-version

Sie können auch verwenden, unameum das abzurufen ARCH, oder, wahrscheinlich die vernünftigste Möglichkeit, verwenden lsb_release.

Antwort2

Sie können einen Blick darauf werfen, wie facter es machtHier.

Wie Jan sagte, ist lsb_release wahrscheinlich die beste Lösung, aber es kann nicht die einzige sein. Beispielsweise ist lsb_release auf keinem meiner RHEL-Server standardmäßig vorhanden:

[damaya@damaya-sandbox script]$ lsb_release
-bash: lsb_release: command not found
[damaya@damaya-sandbox script]$ yum provides "*/lsb_release"
redhat-lsb-core-4.0-7.el6.centos.i686 : LSB base libraries support for CentOS
Repo        : base
Matched from:
Filename    : /usr/bin/lsb_release

Wenn also lsb_release nicht auf dem System vorhanden ist, besteht Ihr nächster Schritt darin, die Informationen aus der Datei /etc/*-release abzurufen. Wenn diese jedoch auch nicht auf dem System vorhanden ist, haben Sie Pech gehabt. Leider gibt es keine 100 % zuverlässige Möglichkeit, diese Informationen abzurufen.

Antwort3

Der Bereich zum Abrufen des Distributionsnamens liegt nicht im Kernel-Entwicklungsbereich. Daher ist derzeit keine spezielle Methode vorhanden. Ich fordere hierfür Modulparameter in meinem Treiber an. Sie können beim Kompilieren auch eine ENV-Variable anfordern.

Vielen Dank für Ihre Hilfe...

verwandte Informationen