커널 소스 가져오기: apt-get install 및 apt-get 소스

커널 소스 가져오기: apt-get install 및 apt-get 소스

Linux 커널을 다운로드하여 수정 방법과 컴파일 방법을 배우기를 기대하고 있습니다.

나는 Debian 배포판을 사용하고 있으며 기본 커널 형식보다는 Linux 커널의 Debian 수정 버전에 관심이 있습니다.kernel.org.

몇 가지 연구를 통해 나는 이를 달성하는 데 주로 두 가지 방법이 있다는 것을 발견했습니다.

  • 소스 패키지를 설치합니다(예: apt-get설치하다리눅스 소스-3.19)
  • 바이너리 패키지(예: apt-get)에서 소스 코드를 다운로드합니다.원천리눅스-이미지-3.19.0-트렁크-amd64)

첫 번째 옵션은 소스 타르볼을 /usr/src/linux-source-3.19.tar.xz에 다운로드하고, 후자는 소스 타르볼(linux_3.19.1.orig.tar.xz), 패치(linux_3.19.1-)를 다운로드합니다. 1~ exp1.debian.tar.xz) 및 설명 파일(linux_3.19.1-1~exp1.dsc). 후자는 또한 모든 것을 압축을 풀고 "linux-3.19.1" 디렉토리에 추출합니다.

처음에는 두 버전 모두 동일한 커널 버전과 패치 수준(apt-cache 명령 보고 내용을 기반으로 함)을 갖기 때문에 동일한 코드를 생성할 것이라고 생각했습니다. 그러나 apt-get에서 압축이 풀린 소스를 비교할 때 diff 명령은 차이점을 보고합니다.설치하다apt-get에서 압축 해제된 소스 사용원천(패치된 코드와 패치되지 않은 코드의 경우)

apt-get을 비교할 때설치하다apt-get으로원천:

$ diff -rq apt-get-install/ apt-get-source/ | wc -l
253

$ diff -rq apt-get-install/ apt-get-source/ | grep "Only in"
Only in apt-get-install/arch/arm/boot/dts: sun7i-a20-bananapro.dts
Only in apt-get-install/arch/s390/include/asm: cmb.h.1
Only in apt-get-install/drivers/dma-buf: reservation.c.1
Only in apt-get-install/drivers/dma-buf: seqno-fence.c.1
Only in apt-get-install/drivers/gpu/drm/i915: i915_irq.c.1
Only in apt-get-install/drivers/scsi: constants.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_acm.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_ecm.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_obex.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_serial.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_subset.c.1
Only in apt-get-install/include/linux: reservation.h.1
Only in apt-get-install/kernel: sys.c.1
Only in apt-get-install/lib: crc32.c.1
Only in apt-get-install/sound/soc: soc-cache.c.1

apt-get을 비교할 때설치하다apt-get으로소스 코드(+패치):

$ diff -rq apt-get-install/ apt-get-source+patch/
Only in apt-get-install/arch/s390/include/asm: cmb.h.1
Only in apt-get-source+patch/: debian
Only in apt-get-install/drivers/dma-buf: reservation.c.1
Only in apt-get-install/drivers/dma-buf: seqno-fence.c.1
Only in apt-get-install/drivers/gpu/drm/i915: i915_irq.c.1
Only in apt-get-install/drivers/scsi: constants.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_acm.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_ecm.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_obex.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_serial.c.1
Only in apt-get-install/drivers/usb/gadget/function: f_subset.c.1
Only in apt-get-install/include/linux: reservation.h.1
Only in apt-get-install/kernel: sys.c.1
Only in apt-get-install/lib: crc32.c.1
Only in apt-get-source+patch/: .pc
Only in apt-get-install/sound/soc: soc-cache.c.1

이 두 가지 방법이 언급된 링크를 찾았지만 이들로부터 명확한 정보를 얻을 수 없습니다.

https://kernel-handbook.alioth.debian.org/ch-common-tasks.html#s-common-official https://help.ubuntu.com/community/Kernel/Compile(옵션 B 대 대체 옵션 B)

누구든지 나에게 차이점을 알려주고 어떤 것이 선호되는지 조언해 주시면 매우 감사하겠습니다. 감사해요.

답변1

데비안 용어로 실행하면

apt-get source linux-image-3.19.0-trunk-amd64

(또는 이에 상응하는 apt-get source linux) 실제로 다운로드하고 압축을 푸는 중입니다.소스코드 패키지. 여기에는 데비안 커널 팀이 커널에 추가한 패치를 포함하여 업스트림 코드(kernel.org에서 다운로드한 커널 소스 코드)와 모든 데비안 패키징이 포함되어 있습니다.

당신이 달릴 때

apt-get install linux-source-3.19

실제로 Debian 패치가 적용된 Linux 커널의 소스 코드가 포함되어 있지만 Debian 패키징 인프라가 없는 바이너리 패키지를 설치하고 있습니다.

소스 패키지의 이름은 간단히 말해서 linux주어진 apt-get source바이너리 패키지 이름을 해당 소스 패키지 이름으로 변환합니다.

그런데 패키지가 자동으로 업그레이드되지 않으므로 비교하기 전에 해당 패키지의 복사본 을 업데이트하고 다시 추출했는지 experimental확인해야 합니다 . 현재 아카이브의 패키지에는 이 파일이 포함되어 있습니다.linux-source-3.19.dtsdiff

나머지 차이점은 매우 일반적입니다. 주석에 표시된 것처럼 패치 수정 사항을 추적 하는 데 사용되는 원본 파일은 debian모든 패키징에 포함되고 소스 패키지에만 포함되며 소스 패키지에만 포함되며 이러한 파일은 생성된 맨페이지입니다. , 아마도 커널 빌드의 부작용이므로 바이너리 패키지에만 나타납니다(그러나 실제로는 거기에 있어서는 안 됩니다)..pcquilt.1

참조 패키지는 를 통해 얻은 소스 패키지입니다 apt-get source. 이는 linux-source-3.19사용하는 패키지를 포함 하여 모든 커널 바이너리 패키지를 빌드합니다 apt-get install. 후자는 커널 소스 코드가 필요할 수 있는 다른 패키지의 편의를 위해 제공됩니다. apt-get source런타임 시 현재 디렉터리.

문서에 관해서는 데비안 문서를 따르겠습니다.커널 매뉴얼(섹션 4.5). 링크한 섹션 4.2에서 언급했듯이 전체 데비안 커널을 다시 빌드하는 데는 많은 변형이 포함되어 있기 때문에 시간이 오래 걸립니다.

관련 정보