Linux 發行版名稱 API 用於取得驅動程式程式碼中 Linux 發行版的名稱?

Linux 發行版名稱 API 用於取得驅動程式程式碼中 Linux 發行版的名稱?

我正在驅動程式中編寫通用程式碼來取得發行版名稱和主機名稱。我從中取得主機名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來獲取 ,ARCH或者,可能是最明智的方法,使用lsb_release

答案2

你可以看看facter是怎麼做的這裡

正如 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 變數。

感謝您的幫助...

相關內容