ドライバコードからLinuxディストリビューション名を取得するには、Linuxディストリビューション名APIが使用されますか?

ドライバコードからLinuxディストリビューション名を取得するには、Linuxディストリビューション名APIが使用されますか?

デプロイメント名とホスト名を取得するためにドライバに一般的なコードを書いています。ここでホスト名を取得しますstruct utsname{nodename[]}。しかし、ディストリビューション名はどのようにして得られますか?

答え1

私が見たほとんどのプログラムとスクリプトは一般的なファイルを解析し/etc、私が知っている限り他の方法はありません。

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

unameを使用してgetを使用することARCHも、おそらく最も賢明な方法を使用することもできますlsb_release

答え2

因子がどうするかを見ることができます。ここ

Janが言ったように、lsb_releaseが最善の方法かもしれませんが、唯一の方法ではありません。たとえば、私のRHELサーバーにはデフォルトでlsb_releaseがありません。

[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

したがって、lsb_releaseがシステムにない場合、次のステップは/ etc / * - releaseファイルから情報を取得することです。しかし、その情報がシステムにも存在しない場合は幸運ではありません。残念ながら、この情報を得るための100%信頼できる方法はありません。

答え3

リリース名の取得はカーネル開発の範囲外です。だからまだ具体的な方法はありません。これを行うには、ドライバにモジュールパラメータが必要です。コンパイル時にENV変数を要求することもできます。

あなたの助けをありがとう。

関連情報