내 로컬 Linux / Ubuntu에는 Linux src에 대한 두 개의 디렉토리가 있습니다.
/usr/src/linux-3.16.0
/usr/src/linux-3.16.0-generic
3.16.0의 코드는 3.16.0-generic의 코드보다 훨씬 큽니다. 두 디렉토리가 왜 그리고 어떻게 다른지 궁금합니다.
답변
커널에 대한 헤더 파일을 포함하는 해당 패키지가 두 디렉토리를 제공합니다. dpkg
명령을 사용 하여 디렉토리를 제공하는 패키지를 찾으십시오.
$ dpkg -S /usr/src/linux*
linux-headers-X.XX.X-XX: /usr/src/linux-headers-X.XX.X-XX
linux-headers-X.XX.X-XX-generic: /usr/src/linux-headers-X.XX.X-XX-generic
...
첫 번째 디렉토리 /usr/src/linux-headers-X.X.XX-XX
는 x86, amd64, powerpc 등을 포함한 여러 아키텍처에 대한 헤더 파일로 구성되어 더 많은 파일 수와 더 큰 패키지 크기를 제공합니다.
다른 디렉토리 /usr/src/linux-headers-X.X.XX-XX-generic
에는 로컬 설치 대상인 x86 아키텍처와 관련된 대부분의 소스 코드가 포함 된 것 같습니다.
해당 패키지는 다음과 같이 설명에 암시되어 있습니다.
$ apt-cache show linux-headers-3.16.0-25 | grep -A3 Description-en
Description-en: Header files related to Linux kernel version 3.16.0
This package provides kernel header files for version 3.16.0, for sites
that want the latest kernel headers. Please read
/usr/share/doc/linux-lts-utopic-headers-3.16.0-25/debian.README.gz for details
내가 아는 한, 두 디렉토리 모두 바이너리가 아닌 소스 코드 만 포함합니다. 그리고 둘의 차이점은 주로 소스 코드 의 대상 아키텍처 입니다.
관련 : 커널 소스 트리가 무엇 포함되어 있습니까? 이것은 Linux 커널 헤더와 관련이 있습니까?
확장 된 답변 (2015.07.30)
두 상점 모두
x86
관련 코드이므로x86
두 디렉토리 의 코드와의 차이점은 무엇 입니까? – Richard Jul 29 ’15에 19:11
에 포함 된 대부분의 디렉토리와 파일 /usr/src/linux-headers-X.X.XX-XX-generic
은의 실제 디렉토리와 파일을 가리키는 심볼릭 링크입니다 /usr/src/linux-headers-X.X.XX-XX
. 다시 말해, arch/x86
이 두 디렉토리에서 발견 된 것은 실제 링크와 심볼릭 링크의 차이점 일 뿐이며 일부 남은 asm
헤더 파일은 *-generic
대응합니다.
이 두 패키지 사이에서 또 하나의 주요 차이점은 상대 디렉토리 의 존재 config
와 generated
디렉토리입니다 *-generic
.
필자의 이해는 *-generic
디렉토리 에 소스 디렉토리를 실수로 변경 하지 않고x86
아키텍처와 관련된 모듈을 구성하고 컴파일하는 데 필요한 헤더 파일 이 있다고 생각합니다 .linux-headers-x.x.xx-xx
무엇보다도, 두 디렉토리는 아마도 각 플랫폼에서 패키지를 패키징하고 컴파일하는 “깨끗한”접근 방식 일 것입니다. 그러나 나는이 문제를 분명히 할 수있는 입장이 아닙니다.
Answers ‘s note : 나는 그 대답을 당시에 순진하게 썼다-무엇이 옳고 그른지 확실하지 않다. 따라서이 답변은 이제 커뮤니티 위키이므로 최소한의 평판을 가진 사람이라면 누구나이 게시물을 개선하여 차이점을 충분히 설명 할 수 있습니다.