배포판 이름과 호스트 이름을 얻기 위해 드라이버에 공통 코드를 작성하고 있습니다. 호스트 이름은 에서 가져오는데 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
하는 데 사용할 수도 있습니다 .ARCH
lsb_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 변수를 요청할 수도 있습니다.
당신의 도움을 주셔서 감사합니다...