실제 커널 소스는 어디에 있습니까?

실제 커널 소스는 어디에 있습니까?

나는 팔로우하고 있다이것커널 컴파일 방법을 배우려면 나는 사용했다

apt-get source linux-image-$(uname -r)

현재 사용하고 있는 Linux 커널의 소스 코드를 다운로드하려면

위 명령을 실행한 후 다음 파일(및 디렉터리)이 다운로드되었습니다.

user $ ls -l
total 130972
drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0
-rw-rw-r--  1 sps sps  10980684 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz
-rw-rw-r--  1 sps sps      7396 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.dsc
-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz
user $ 

에서같은언급된 페이지:

커널을 구축하는 것은 매우 쉽습니다. 작업 디렉터리를 커널 소스 트리의 루트로 변경하고 다음 명령을 입력합니다.

그러나 "커널 소스 트리의 루트"가 무엇인지는 확실하지 않습니다.

현재 디렉터리입니까(내가 실행한 위치 apt-get source ...와 위에 나열된 파일이 있는 위치)?

아니면 다음 디렉터리인가요?

drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0

아니면 타르볼을 추출해야 할까요?

-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz

다음에 대한 출력 uname -r:

user $ uname -r
3.19.0-30-generic
user $ 

답변1

로부터데비안 위키:

소스 패키지컴파일하거나 원하는 소프트웨어를 빌드하는 데 필요한 모든 파일을 제공합니다.

가장 간단한 형태로 다음 세 가지 파일로 구성됩니다.

  • 업스트림 타르볼.tar.gz종결

  • .dsc로 끝나는 설명 파일입니다. 여기에는 파일 이름과 콘텐츠(Source: 키워드 뒤)에 패키지 이름이 모두 포함되어 있습니다.

  • 업스트림 소스에 대한 변경 사항과 Debian 패키지용으로 생성된 모든 파일이 포함된 tarball.

    • 이것은.debian.tar.gz(소스 형식 : 3.0)
    • 또는.diff.gz엔딩 (소스 형식 : 1.0)

Ubuntu의 경우에도 마찬가지이며 귀하의 경우에는 다음과 같습니다.

  • "linux-lts-vivid-3.19.0": 실제 커널, 업스트림 tarball "linux-lts-vivid_3.19.0.orig.tar.gz"에서 시작하여 "linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz"에 나열된 수정 사항으로 패치됩니다.
  • "linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz": 업스트림 소스에 대한 변경 사항과 Debian 패키지용으로 생성된 모든 파일이 포함된 tarball;
  • "linux-lts-vivid_3.19.0-30.34~14.04.1.dsc": 설명 파일 ".dsc"로 끝납니다. 여기에는 파일 이름과 콘텐츠(Source: 키워드 뒤)에 패키지 이름이 모두 포함되어 있습니다.
  • "linux-lts-vivid_3.19.0.orig.tar.gz": ".tar.gz"로 끝나는 업스트림 타르볼(내 경험상 항상 ".tar.gz" 파일은 아니며 약간 ".tar.xz"와 같은 다른 형식)

를 실행하면 apt-get source linux-image-$(uname -r)업스트림 타르볼이 "linux-lts-vivid-3.19.0"의 "linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz"에 나열된 수정 사항으로 자동으로 패치됩니다.

% apt-get source linux-image-$(uname -r)
# ...
dpkg-source: info: extracting linux in linux-3.19.0
dpkg-source: info: unpacking linux_3.19.0.orig.tar.gz
dpkg-source: info: applying linux_3.19.0-30.34.diff.gz
# ...

답변2

커널 트리의 루트는 디렉토리입니다 linux-lts-vivid-3.19.0.

다른 파일 정보:

tarball에서는 linux-lts-vivid_3.19.0.orig.tar.gz업스트림에 릴리스된 "바닐라" 커널을 찾을 수 있습니다. 이 커널에 Ubuntu 개발자는 패치, 드라이버를 추가 하고 diff.linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz

답변3

흠. 명령을 실행할 때

apt-get source linux-image-`uname -r`

명령은자동으로소스 타르볼을 추출하고 패치하여 커널 이름을 딴 디렉토리를 만듭니다. 귀하의 경우에는 'linux-lts-vivid-3.19.0'이라고 불리는 것 같습니다. 이는 귀하의 디렉토리 목록에 있습니다.

따라서 이것이 소스 디렉터리이므로 다음을 실행해야 합니다.

cd linux-lts-vivid-3.19.0

그런 다음 계속해서 지침을 따르세요.

관련 정보