나는 최근에 Linux 커널의 소스 코드에서 사용자 정의 빌드를 수행해야 했습니다. 이제 사용자 정의 커널이 제가 빌드하는 데 사용한 컴퓨터에 설치되어 제대로 작동합니다.
이제 다른 사람들도 있습니다유사한 시스템(즉, 하드웨어 측면에서) 동일한 커널을 실행하기를 원합니다. 한 머신이 다른 머신과 유사한 하드웨어를 가지고 있다면 커널을 다시 빌드할 필요가 없다는 것을 아는 한, 나는 특별히 모든 머신에서 커널을 다시 빌드하고 싶지 않습니다.
이 가설이 사실이라면 기존 커널 버전을 유사한 시스템에 배포하는 가장 효율적인 방법은 무엇입니까?
몇 가지 옵션이 떠올랐습니다.
/boot/
및에서 사용자 정의 빌드 파일 복사/lib/modules/
- 사용자 정의 커널로 rpm을 생성하면 설치된 모든 파일을 추적하면서 쉽게 배포할 수 있습니다(제거도 매우 쉽습니다).
다른 옵션? 누구든지 이것에 대한 경험이 있습니까?
답변1
어떻게 해야할지 모르겠어요비슷한귀하의 컴퓨터는 그렇습니다. 하지만 저는 동일한 시스템 중 다수에 커널을 배포하는 작업을 해왔습니다. 옵션 1은 일반적으로 내가 수행하는 방법입니다. 네트워크를 통해 새 커널과 모듈을 푸시하면 됩니다. 그러나 시스템에 패키지 관리자가 있는 경우 rpm 패키지도 좋은 방법입니다.
시스템에 하드웨어 차이가 있는 경우 커널에 문제가 있을 수 있습니다. 머신에 서로 다른 이더넷 MAC이 있는 것처럼 특정 하드웨어에 대한 지원을 활성화해야 할 수도 있습니다.
기본적으로 커널이 제공하는 모든 것을 활성화하여 모든 시스템을 지원하는 비대해진 커널을 만들 수도 있고, 사용 중인 하드웨어가 무엇인지 정확히 찾아 해당 하드웨어에 대해서만 지원을 활성화하여 더 간결한 커널을 만들 수도 있습니다.
답변2
모든 시스템이 동일한 배포판을 실행한다고 가정하고 RPM을 생성하고(배포판에서 사용하는 패키지 형식이라고 가정) 배포합니다. 여기에는 많은 이점이 있으며 기본적으로 단점은 없습니다.
- 패키지를 빌드하기 위한 배포판 프로세스를 따르면 커널뿐만 아니라 initramfs(사용된 경우), 모듈, 부트로더 업데이트 스크립트, 문서, 디버깅 및 모듈 빌드 정보 등 모든 것이 제자리에 있는지 확인됩니다.
- 빌드 패키지를 사용하면 버전 추적을 수행할 수 있습니다. 업그레이드 배포 시 컴퓨터가 종료되거나 디스크가 꽉 찬 경우에도 현재 설치된 내용을 확인할 수 있습니다.
- 패키지 관리자를 사용하면 커널뿐만 아니라 모든 소프트웨어를 배포할 수 있습니다. 배포하는 모든 소프트웨어에 대해 바퀴를 다시 만들 필요가 없습니다.
- 배포판에 자체 커널 패키지를 만드는 문서화된 방법이 없으면 선불 비용이 발생합니다. 하지만 그렇게 된다면, 대부분의 사람들이 그렇게 생각하겠지만 초기 비용은 필요한 모든 부분을 수동으로 모으는 것보다 크지 않습니다.