간단한 패치에 전체 커널을 컴파일해야 하는 이유는 무엇입니까?

간단한 패치에 전체 커널을 컴파일해야 하는 이유는 무엇입니까?

그래서 커널을 패치하여 블루투스를 수정하고 이 가이드를 사용하여 빌드합니다. https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel

전체 커널을 컴파일해야 하는 이유는 무엇입니까? 약 한 시간이 소요됩니까?

답변1

귀하의 질문은 커널의 특성과 커널을 다시 컴파일해야 하는 이유에 대해 묻는 것 같습니다.

Linux 커널은 C 언어로 작성된 소스 코드 묶음입니다. 엄청난 수의 컴퓨터 하드웨어 장치와 칩셋을 처리할 수 있는 코드가 있으며, 표준 PC 하드웨어를 넘어 다양한 플랫폼에 적응하는 데 도움이 되는 코드도 더 많이 있습니다. 그런 다음 런타임에 사물의 전체 구조를 제공하는 코드가 있습니다.

일부 코드는 코드의 다른 부분과 상호 배타적이므로 옵션 중 하나를 선택해야 합니다.

일부 코드는 이러한 경우가 없는 사람들을 위해 커널 속도를 저하시키는 특수한 경우를 위한 것이므로 이러한 코드를 비활성화하는 옵션을 설정할 수 있습니다.

Ubuntu가 "대중"을 위한 커널을 구축할 때 그들은 99%의 사람들이 어떤 하드웨어를 접하고 필요로 할지 추측합니다. 그런 다음 이를 로드 가능한 모듈로 최대한 나눕니다. 그런 다음 커널의 주요 코어를 컴파일하여 필요한 대부분의 모듈과 함께 제공합니다. 패키지 관리자를 통해 다른 모듈을 사용할 수 있게 만듭니다.

Bluetooth가 고장난 이유를 설명하지 않았지만 누군가가 새 커널을 구축해야 한다고 말한다면 아마도 해당 커널 옵션 중 하나가 특정 Bluetooth 칩을 사용할 수 있는 기능을 제거한다는 의미일 것입니다. 따라서 이 옵션을 활성화하여 커널을 빌드해야 합니다.

운이 좋다면 이 새로운 옵션을 사용하여 Bluetooth 모듈을 구축하기만 하면 됩니다. 그러나 기존 커널에 올바르게 연결되는 새로운 커널 모듈을 만들기 위해 올바른 컴파일러 환경을 설정하는 것은 매우 어려울 수 있습니다. 많은 경우 전체를 다시 컴파일하는 것이 더 쉽고 안정적입니다.

이제 첫 번째 컴파일이 완료되면 구성을 약간 변경하면 영향을 받는 소수의 파일만 다시 컴파일하면 되며 훨씬 더 빨라집니다. 그러나 이렇게 하면 fakeroot debian/rules clean임시 파일이 삭제되고 처음부터 다시 시작하게 될 것으로 생각됩니다. 두 번째에는 이 단계를 건너뛰는 것이 좋습니다. 또한 컴파일 시 모든 프로세서가 사용되는지 확인하십시오. 그렇지 않은 경우 병렬로 컴파일하도록 지시하는 방법을 찾으십시오. 수동으로 컴파일할 때 한 번에 20개의 파일을 컴파일하는데 make -j 20, 이는 4코어 머신에서 가장 빠른 성능을 제공합니다.

관련 정보