API de nome da distribuição Linux para obter o nome da distribuição Linux em um código de driver?

API de nome da distribuição Linux para obter o nome da distribuição Linux em um código de driver?

Estou escrevendo um código comum em um driver para obter o nome da distribuição e o nome do host. nome de host do qual estou pegando struct utsname{nodename[]}, mas como obtenho o nome da distribuição?

Responder1

A maioria dos programas e scripts que vi analisam os arquivos usuais no /etcAFAIK, não há outra maneira:

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

Você também pode usar unamepara obter ARCHou, provavelmente a maneira mais sensata, usar lsb_release.

Responder2

Você pode dar uma olhada em como o fator faz issoaqui.

Como Jan disse, lsb_release é provavelmente o melhor caminho a seguir, mas não pode ser o único caminho. Por exemplo, lsb_release não está presente por padrão em nenhum dos meus servidores RHEL:

[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

Portanto, se lsb_release não estiver presente no sistema, o próximo passo é obter as informações do arquivo /etc/*-release. No entanto, se isso também não estiver presente no sistema, você estará sem sorte. Infelizmente, não existe uma maneira 100% confiável de obter essas informações.

Responder3

O escopo para obter o nome da distribuição não está no escopo de desenvolvimento do kernel. Portanto, nenhum método específico está presente atualmente. Estou pedindo o parâmetro do módulo no meu driver para isso. você também pode solicitar uma variável ENV durante a compilação.

Obrigado pela ajuda...

informação relacionada