저는 Linux 커널 프로그래밍을 시작하고 있으며 지금까지 여러 번 성공적으로 자체 커널을 구축했습니다. 하지만 인터넷에서 찾은 단계별 가이드를 사용하여 수행했지만 빌드 프로세스 중에 무슨 일이 일어나고 있는지 실제로 이해하지 못했습니다. 지금까지 나는 커널을 구축하는 몇 가지 다른 방법을 찾았습니다. 하나는:
make-kpkg -j5 --initrd kernel-image kernel-headers
내가 이해한 바로는 make-kpkg는 커널 관련 항목을 빌드하고 패키징하기 위해 설계된 데비안 프로그램입니다. --initrd는 initrd 이미지를 자동으로 생성하는 데 사용됩니다. 마지막 두 매개변수(커널 이미지와 커널 헤더)의 목적은 무엇입니까?
커널을 구축하는 또 다른 방법은 다음과 같습니다.
make deb-pkg
이 명령은 첫 번째 명령과 비교하여 무엇을 합니까?
또한,이 가이드, 커널 빌드는 다음과 같이 수행됩니다.
fakeroot debian/rules clean
fakeroot debian/rules binary-headers binary-generic
Ubuntu에서 커널을 빌드하는 데 권장되는 방법은 무엇입니까? 위 명령 중 하나를 실행하면 정확히 어떤 일이 발생합니까? 위 명령 중 하나로 수행되는 모든 작업을 수동으로 수행하려면 어떤 단계를 수행해야 합니까?
답변1
make-kpkg
패키지의 명령입니다 kernel-package
.사용된Debian 배포판에서 제공되는 커널 패키지의 공식 패키징 인프라에 참여하세요. 데비안 배포판의 현재 커널 패키지 관리자가 사용을 중단하기로 결정했기 때문에 더 이상 이 목적으로 사용되지 않습니다. 그러나 패키지 작성자는 패키지 kernel-package
유지 관리를 중단하지 않았으므로 여전히 직접 만드는 것이 좋습니다. 데비안 커널 공식 지원 방법의 패키지 버전입니다. 여기에는 여러 옵션과 대상이 있습니다. 가장 중요한 것은 질문에서 언급한 것입니다. 즉, kernel-image
(과정에서 선택한 커널과 모듈이 포함된 패키지를 빌드합니다 make config
), kernel-headers
(출력을 컴파일하려는 경우 포함 파일이 포함되어 있습니다. -of-tree 모듈이 필요할 수 있음). 패키지 kernel-package
는 함께 출시된 Debian(또는 Ubuntu와 같은 파생 버전)의 일부로 유지되므로 Debian 인프라가 변경되면 최신 버전이 kernel-package
업데이트되어 이를 통합하고 해당 버전의 Debian과 함께 제공됩니다. 따라서 kernel-package
패키지로 생성된 커널 패키지는 항상 해당 패키지가 생성된 Debian 버전에 가장 적합합니다. 그러나 Linux 커널의 내용이 획기적인 방식으로 변경되면 kernel-package
Debian 안정 릴리스용 커널 패키지를 업데이트하는 것이 다소 복잡해질 수 있습니다 .
make deb-pkg
Linux 커널 빌드 인프라의 대상입니다. 데비안 개발자로부터 패치를 받지만 데비안 내에서 유지 관리되지 않기 때문에 빌드하려는 커널 버전을 만들 때 항상 최신 도구와 전략을 사용합니다. 이는 어떤 경우에는 이전 배포판에서 아직 사용할 수 없는 도구를 사용하려고 시도할 수도 있음을 의미합니다. 데비안 내에서 유지 관리되지 않기 때문에 커널 패키지를 만드는 공식적으로 지원되는 방법은 아니지만(적어도 데비안 관점에서는 그렇지 않습니다), 대부분 데비안과 관련된 사람들이 유지 관리하므로 사용할 수 없다고 의심할 이유가 없습니다. 효과.
어떤 방법을 선택하든지 선택의 문제일 뿐입니다. 패키지 빌드 옵션의 특별한 결과에 많은 투자를 하지 않는 한 두 방법 모두 잘 작동합니다.