드라이버 코드에서 Linux Distro 이름을 가져오는 Linux Distro 이름 API?

드라이버 코드에서 Linux Distro 이름을 가져오는 Linux Distro 이름 API?

배포판 이름과 호스트 이름을 얻기 위해 드라이버에 공통 코드를 작성하고 있습니다. 호스트 이름은 에서 가져오는데 struct utsname{nodename[]}배포판 이름은 어떻게 알 수 있나요?

답변1

내가 본 대부분의 프로그램과 스크립트는 AFAIK의 일반적인 파일을 구문 분석합니다 /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하는 데 사용할 수도 있습니다 .ARCHlsb_release

답변2

팩터가 어떻게 하는지 살펴볼 수 있습니다.여기.

Jan이 말했듯이 lsb_release는 아마도 가장 좋은 방법일 것입니다. 그러나 이것이 유일한 방법일 수는 없습니다. 예를 들어, lsb_release는 내 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

따라서 lsb_release가 시스템에 없으면 다음 단계는 /etc/*-release 파일에서 정보를 얻는 것입니다. 그러나 이것이 시스템에 존재하지 않는다면 운이 좋지 않은 것입니다. 불행하게도 이 정보를 얻을 수 있는 100% 신뢰할 수 있는 방법은 존재하지 않습니다.

답변3

distro 이름을 가져오는 범위가 커널 개발 범위에 속하지 않습니다. 따라서 현재로서는 구체적인 방법이 없습니다. 이를 위해 내 드라이버의 모듈 매개변수를 요청하고 있습니다. 컴파일하는 동안 ENV 변수를 요청할 수도 있습니다.

당신의 도움을 주셔서 감사합니다...

관련 정보