커널 소스 트리에는 무엇이 포함됩니까? Linux 커널 헤더와 관련이 있습니까?

그놈 토룰

책에서, 나는 일반적으로 리눅스 소스 트리에 대한 참조를 읽을 /usr/src/linux서브 디렉토리의 일반적인 세트 ( arch, block, crypto, ...).

이 트리에 커널을 구성하는 바이너리 파일이 포함될 것으로 예상했습니다. 내 시스템 (Ubuntu 10.04)에서 ...

  1. 내가 가지고있는 다른 커널의 경우 (수동으로 설치하지 않고 자동화 된 소프트웨어 다운로드 사용) 다음과 같이 각 커널에 대해 두 개의 하위 디렉토리 대신이 위치에서 찾습니다.

    /usr/src/linux-headers-2.6.32-22
    /usr/src/linux-headers-2.6.32-22-generic
    
  2. 하위 디렉토리에서 나는 다른 것들 중에서 바이너리 파일을 예상했습니다. 그러나 나는 상당한 양의 트리를 확인했으며 여기의 마지막 하위 디렉토리에는 항상 Makefile(읽을 때 일반적으로 구성 파일보다 설치 파일처럼 들림) 몇 가지 격리 된 다른 파일이있는 것 같습니다. (대부분 Kconfig).

내 질문은 순진하지만 약간 혼란 스럽습니다. (2) 커널 소스 트리에서 예상해야하는 것입니다. 왜 내가 '헤더'에 대한 명시적인 참조를 가지고 있습니까? 나는 linux-generic-headers다른 소프트웨어를 위해 잠시 뒤로 설치해야 했는데 이것이 관련이 있는지 확실하지 않습니다. (예를 들어, / driver 하위 디렉토리에 모듈을 설치하는) makefile에 대한 타당한 이유가 있다는 것을 알고 있지만 (거의) makefile 만 있습니까?

매트

배포 kernel-header패키지는 이름에서 알 수 있듯이 커널 모듈과 같은 소프트웨어를 빌드하는 데 필요한 커널 헤더 파일 (필요한 배관 포함) 만 포함합니다.

빌드 출력을 제외하고 는 커널 소스 디렉토리 에서 바이너리 파일을 전혀 찾을 수 없습니다 . (커널을 직접 구성하고 빌드하는 경우 커널 소스 디렉토리에는 컴파일 된 객체, 모듈, 빌드 된 커널 자체 및 작동하도록 만드는 몇 가지 다른 바이너리 비트 및 조각도 포함됩니다.)
KConfig파일은 커널 구성 옵션에 대한 설명입니다. (및 해당 종속성) 지정된 디렉토리 / 모듈에 사용할 수 있습니다.
그 외에도 (대부분) C 소스 코드, 헤더 파일 및 Makefiles입니다. 여기저기서 몇 가지 도우미 스크립트가 있으며 어셈블리 소스도 있습니다.

헤더 패키지 (설치 한 것) 는 위 헤더 부분 (모두가 아니라 "내 보낸"헤더 만) 및 일부 빌드 인프라 만 포함합니다. 그래서 당신이보고있는 것은 예상됩니다. 헤더 패키지 에는 C 소스 코드가 포함되어 있지 않습니다 (일부 스텁 및 빌드 인프라 코드 제외). 이러한 유형의 패키지를 사용하는 요점은 공간 (및 대역폭)을 절약하는 것입니다. 전체 Linux 커널 소스 트리는 다소 크고 커널을 직접 컴파일하지 않으려는 경우 완전히 불필요합니다. 헤더 패키지는 모듈을 빌드하는 데 필요한 올바른 것을 제공하기 위해 배포판에 의해 빌드되고 배송됩니다. (확실히 컴파일 된 커널을 포함하지 않습니다.)

주석 처리 : 헤더 패키지는 어디에도 재배치되지 않습니다. 그것들은 특정 버전의 커널을 위해 빌드되고 특정 디렉토리에 패키지화되어 있습니다. 파일 세트 일뿐입니다. (헤더 패키지가 현재의 안정적인 커널 바이너리 패키지와 반드시 동일한 버전을 가질 필요는 없습니다. 헤더 패키지는 일반적이며 실행중인 실제 커널보다 뒤처 질 수 있습니다. 그러나 커널에서 가져온 것은 아닙니다. 현재 설치된 (또는 대상) 커널보다 최신 버전입니다.)

설치된 커널 바이너리 는 일반적 /boot으로 부트 로더 바이너리 및 구성 파일과 함께 디렉토리에 설치됩니다 . (때로는 독립적 인 파일 시스템이며 기본적으로 마운트되지 않습니다.) 파일의 정확한 이름은 커널과 배포판에 따라 다릅니다. (부트 로더도 마찬가지입니다.)

설치된 커널 모듈 은 다음의 하위 디렉토리에 있습니다.

/lib/modules/`uname -r`/

예를 들어 내 시스템에서는 현재

/lib/modules/3.1.4-gentoo/

전체 커널 소스 코드 : Ubuntu에서 전체 커널 소스로 커널을 직접 빌드하려면 여기 의 지침에 따라 설치해야 합니다 .

소스 타르볼을 kernel.org어딘가 에서 다운로드하여 압축을 풀 수도 있습니다 (이 타르볼을 사용하는 경우 Ubuntu에 설치된 파일을 덮어 쓰지 말고 , 개인 항목과 RPM으로 관리되는 항목을 별도로 보관하십시오).

/usr/src/linux커널 소스를 넣는 전통적인 장소이지만 커널 소스를 다른 곳에 두는 것을 막는 것은 없습니다. 이 경로는 종종 디렉토리에 대한 기호 링크이기도합니다. 예를 들어 내 컴퓨터에 다음이 있습니다.

 $ ls -l /usr/src/linux
lrwxrwxrwx 1 root root 18 Dec  7 17:03 /usr/src/linux -> linux-3.1.4-gentoo

심볼릭 링크는 커널 소스에 의존하는 애플리케이션 빌드를 단순화하기 위해 있습니다. 이 경로를 실행중인 (또는 대상) 커널에 연결하여 모듈을 트리 외부로 빌드 할 때 정확한 버전이나 경로 정보를 지정할 필요가 없습니다. 최소한 소스 기반 배포에 대한 무리를 돕습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

'linux-libc-dev'란 무엇입니까? 소프트웨어 업데이터의 다른 커널 시리즈에 대한 "개발 용 Linux 커널 헤더"

분류에서Dev

64 비트 Linux 프로세스의 가상 메모리 커널 부분에는 무엇이 있습니까?

분류에서Dev

Linux 커널에 중복 코드가 포함 된 이유는 무엇입니까?

분류에서Dev

Linux 커널 헤더에 존재하지 않는 헤더에 대한 참조가 포함 된 이유는 무엇입니까?

분류에서Dev

메모리 울타리에 커널이 포함됩니까?

분류에서Dev

Linux 커널 Kconfig에서 "select"와 "depends"의 차이점은 무엇입니까?

분류에서Dev

Linux 커널 릴리스와 버전의 정확한 차이점은 무엇입니까?

분류에서Dev

Linux 커널 릴리스와 버전의 정확한 차이점은 무엇입니까?

분류에서Dev

Linux 커널과 GNU C 라이브러리의 관계는 무엇입니까?

분류에서Dev

Linux에서 오염 된 커널이란 무엇입니까?

분류에서Dev

fs.inode-max 커널 튜너 블이 Linux 커널 버전 2.6에없는 이유는 무엇입니까?

분류에서Dev

fs.inode-max 커널 튜너 블이 Linux 커널 버전 2.6에없는 이유는 무엇입니까?

분류에서Dev

Linux에서 운영 체제와 커널이 별도로 처리되는 이유는 무엇입니까?

분류에서Dev

Ubuntu 커널에 EFI 스텁 로더 부팅 지원이 있습니까?

분류에서Dev

Linux 커널의 KCOV 코드에 barrier ()가있는 이유는 무엇입니까?

분류에서Dev

Ubuntu에서 제공하는 커널과 업스트림 커널의 차이점은 무엇입니까?

분류에서Dev

Ubuntu에서 제공하는 커널과 업스트림 커널의 차이점은 무엇입니까?

분류에서Dev

apt 소스가 실제 커널 대신 linux-signed-hwe를 선택하는 이유는 무엇입니까?

분류에서Dev

Linux 커널이 '특별한'버스 주소를 어디에 저장합니까?

분류에서Dev

Linux 커널에서 arch 폴더는 무엇입니까?

분류에서Dev

사용자 공간에서 사용할 수있는 커널 헤더는 무엇입니까? 서명이나 인터페이스가 다른 디렉토리의 헤더와 다릅니 까?

분류에서Dev

커널 모듈을 만드는 대신 Linux 커널을 수정하는 이유는 무엇입니까?

분류에서Dev

커널 4.9.77이 릴리스되었지만 커널 4.14.14가 아닌 이유는 무엇입니까?

분류에서Dev

이전 커널 소스가 설치되는 이유는 무엇입니까?

분류에서Dev

커널 자체와 커널 모듈에는 어떤 ELF 유형이 있습니까?

분류에서Dev

Linux 커널에 모든 장치에 대한 파일이 포함 된 이유는 무엇입니까?

분류에서Dev

커널 IP 전달이란 무엇입니까? 관련 질문

분류에서Dev

Linux 커널이 이더넷 프레임을 섞을 수 있습니까?

분류에서Dev

Linux 커널에서 udp 소스 포트를 선택하는 데 사용되는 기준은 무엇입니까?

Related 관련 기사

  1. 1

    'linux-libc-dev'란 무엇입니까? 소프트웨어 업데이터의 다른 커널 시리즈에 대한 "개발 용 Linux 커널 헤더"

  2. 2

    64 비트 Linux 프로세스의 가상 메모리 커널 부분에는 무엇이 있습니까?

  3. 3

    Linux 커널에 중복 코드가 포함 된 이유는 무엇입니까?

  4. 4

    Linux 커널 헤더에 존재하지 않는 헤더에 대한 참조가 포함 된 이유는 무엇입니까?

  5. 5

    메모리 울타리에 커널이 포함됩니까?

  6. 6

    Linux 커널 Kconfig에서 "select"와 "depends"의 차이점은 무엇입니까?

  7. 7

    Linux 커널 릴리스와 버전의 정확한 차이점은 무엇입니까?

  8. 8

    Linux 커널 릴리스와 버전의 정확한 차이점은 무엇입니까?

  9. 9

    Linux 커널과 GNU C 라이브러리의 관계는 무엇입니까?

  10. 10

    Linux에서 오염 된 커널이란 무엇입니까?

  11. 11

    fs.inode-max 커널 튜너 블이 Linux 커널 버전 2.6에없는 이유는 무엇입니까?

  12. 12

    fs.inode-max 커널 튜너 블이 Linux 커널 버전 2.6에없는 이유는 무엇입니까?

  13. 13

    Linux에서 운영 체제와 커널이 별도로 처리되는 이유는 무엇입니까?

  14. 14

    Ubuntu 커널에 EFI 스텁 로더 부팅 지원이 있습니까?

  15. 15

    Linux 커널의 KCOV 코드에 barrier ()가있는 이유는 무엇입니까?

  16. 16

    Ubuntu에서 제공하는 커널과 업스트림 커널의 차이점은 무엇입니까?

  17. 17

    Ubuntu에서 제공하는 커널과 업스트림 커널의 차이점은 무엇입니까?

  18. 18

    apt 소스가 실제 커널 대신 linux-signed-hwe를 선택하는 이유는 무엇입니까?

  19. 19

    Linux 커널이 '특별한'버스 주소를 어디에 저장합니까?

  20. 20

    Linux 커널에서 arch 폴더는 무엇입니까?

  21. 21

    사용자 공간에서 사용할 수있는 커널 헤더는 무엇입니까? 서명이나 인터페이스가 다른 디렉토리의 헤더와 다릅니 까?

  22. 22

    커널 모듈을 만드는 대신 Linux 커널을 수정하는 이유는 무엇입니까?

  23. 23

    커널 4.9.77이 릴리스되었지만 커널 4.14.14가 아닌 이유는 무엇입니까?

  24. 24

    이전 커널 소스가 설치되는 이유는 무엇입니까?

  25. 25

    커널 자체와 커널 모듈에는 어떤 ELF 유형이 있습니까?

  26. 26

    Linux 커널에 모든 장치에 대한 파일이 포함 된 이유는 무엇입니까?

  27. 27

    커널 IP 전달이란 무엇입니까? 관련 질문

  28. 28

    Linux 커널이 이더넷 프레임을 섞을 수 있습니까?

  29. 29

    Linux 커널에서 udp 소스 포트를 선택하는 데 사용되는 기준은 무엇입니까?

뜨겁다태그

보관