Linux

Linux Distro name API 在驅動程式碼中獲取 linux 發行版的名稱?

  • October 28, 2014

我正在驅動程序中編寫一個通用程式碼來獲取發行版名稱和主機名。我從中獲取的主機名struct utsname{nodename[]},但是如何獲取發行版名稱?

我見過的大多數程序和腳本都會解析 中的常用文件/etc,AFAIK 沒有其他方法:

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.

你可以在這裡看看 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% 可靠的方法來獲取此資訊。

引用自:https://unix.stackexchange.com/questions/162178