배포 이름과 호스트 이름을 얻기 위해 드라이버에 일반 코드를 작성하고 있습니다. 여기서 호스트 이름을 얻습니다 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
을 사용 하여 get을 사용할 수도 ARCH
있고 아마도 가장 현명한 방법인 을 사용할 수도 있습니다 lsb_release
.
답변2
팩터가 어떻게 하는지 볼 수 있어요여기.
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 변수를 요청할 수도 있습니다.
당신의 도움을 주셔서 감사합니다...