Linux 커널의 안정화 출시 모델은 기존 커널의 개발 모델(2~3개월마다 새 버전 출시)이 사용자 대부분의 필요를 충족하지 못한다는 사실이 확인된 2005년부터 출시되었습니다. 사용자들은 2~3개월 동안 버그가 수정되길 원했지만 Linux 배포의 경우 커널 커뮤니티의 피드백 없이는 커널을 최신 상태로 유지하기가 어려웠습니다. 일반적으로 최신 버그 수정을 적용해 개별 커널을 안전하게 유지하려면 많은 개인의 노력이 대규모로 필요해 혼란스러웠습니다.
커널 안정화 출시는 Linus Torvald 출시를 바탕으로 하며, 다양한 외부 요인(연중 시기, 사용 가능한 패치, 운영자 워크로드 등)에 따라 일주일에 한 번 정도 출시됩니다. 안정화 출시의 출시 번호는 커널 출시 번호로 시작하고 그 끝에 추가 번호가 더 붙습니다. 예를 들어, 4.4 커널은 Linus에서 출시하며 이 커널을 기반으로 한 커널 안정화 출시 번호는 4.4.1, 4.4.2, 4.4.3 등입니다. 이러한 시퀀스는 커널 안정화 출시 트리를 가리킬 때 번호 4.4.y로 짧아집니다. 각각의 커널 안정화 출시 트리는 이 버전에 필요한 패치를 선택하고 검토/출시 프로세스를 관리하는 한 명의 커널 개발자가 관리합니다.
안정적인 커널은 현재 개발 주기 동안 유지됩니다. Linus가 새 커널을 출시하면 이전의 커널 안정화 출시 트리는 사용이 중지되고 사용자는 더 최근에 출시된 커널로 이전해야 합니다.
장기적으로 안정적인 커널
이번 새로운 안정화 출시 프로세스를 1년 동안 유지한 후 많은 Linux 사용자가 몇 개월보다 더 길게 커널이 지원되길 바란다는 사실을 파악했습니다. 이에 따라 LTS(Long Term Supported) 커널 버전이 개발되었으며 2006년에 첫 번째 LTS 커널(2.6.16)이 출시되었습니다. 그 후로 1년에 한 번씩 새 LTS 커널이 선택되었으며 커널 커뮤니티에서는 이 커널을 최소 2년 동안 유지합니다.
이 글을 쓰는 시점에서 LTS 커널은 4.4.y, 4.9.y, 4.14.y, 4.19.y, 5.4.y, 5.10.y 버전입니다. 매주 새 커널이 출시됩니다. 일부 사용자 및 배포판의 필요에 따라 이전 커널 중 몇몇은 보다 느린 출시 주기에 따라 커널 개발자가 유지 관리합니다. 장기적으로 안정적인 모든 커널에 관한 정보, 커널의 담당자, 유지 관리 기간은 kernel.org 출시 페이지에서 확인할 수 있습니다.
LTS 커널 출시는 일일 평균 6~8개의 패치를 제공하지만, 일반적인 커널 안정화 출시에는 일일 10~15개의 패치가 포함됩니다. 패치 수는 상응하는 커널 개발 출시의 현재 시간과 기타 외부 변수를 감안해 버전별로 달라집니다. LTS 커널이 오래될수록 오래된 커널과 관련된 최신 버그 수정이 줄기 때문에 적용 가능한 패치 수가 줄어듭니다. 그러나 커널이 오래될수록 코드베이스의 변경 때문에 적용해야 할 변경사항을 백포팅하기가 더 힘들어집니다. 따라서 적용할 전체 패치 수가 적을 수는 있지만, 일반적인 안정적 커널을 유지하는 것보다 LTS 커널을 유지하는 데 더 많은 노력이 수반됩니다.
안정적인 커널 패치 규칙
커널 안정화 출시에 추가할 수 있는 규칙은 안정화 출시 도입 이후 거의 동일하게 유지되고 있으며 아래에 요약되어 있습니다.
- 분명하게 정확해야 하고 테스트를 거쳐야 합니다.
- 100줄 이하여야 합니다.
- 한 가지만 수정해야 합니다.
- 문제로 보고된 문제를 수정해야 합니다.
- 새로운 기기 ID 또는 하드웨어의 쿼크일 수 있지만 중요한 새 기능을 추가할 수는 없습니다.
- Linus Torvalds의 트리에 이미 병합되어 있어야 합니다.
마지막 규칙 'Linus Torvalds의 트리에 이미 병합되어 있어야 합니다'는 커널 커뮤니티가 수정사항을 빼먹지 않도록 도와줍니다. 업그레이드를 했을 때 회귀가 발생하지 않도록 Linus Torvalds의 트리에 아직 추가되지 않은 커널 안정화 출시에 수정사항이 적용되어서는 안 됩니다. 따라서 안정적인 개발 브랜치를 유지하는 다른 프로젝트에 있을 수 있는 많은 문제가 방지됩니다.
커널 업데이트
Linux 커널 커뮤니티는 사용자층에 이전 출시에서 현재 작동 중인 어떤 부분도 업그레이드로 인해 문제가 발생하지 않을 것이라고 약속했습니다. 이 약속은 현재에도 유효합니다. 회귀는 발생하더라도 우선 순위가 가장 높은 버그이기 때문에 신속하게 수정되거나 회귀를 일으킨 변경사항이 Linux 커널 트리에서 빠르게 되돌려집니다.
이 약속은 안정적인 커널의 점진적인 업데이트와 3개월마다 발생하는 대규모 업데이트에 모두 유효합니다. 하지만 커널 커뮤니티는 Linux 커널 트리에 병합된 코드에 관해서만 이 약속을 지킬 수 있습니다. kernel.org 출시에 등록되지 않은 기기의 커널에 병합된 모든 코드는 알려지지 않았으며, 이러한 코드와의 상호작용은 계획하거나 심지어는 고려할 수도 없습니다.
각 버전 간에 변경사항이 많기 때문에(버전당 10,000~14,000개의 변경사항) 많은 패치 세트가 적용된 Linux 기반 기기는 최신 커널로 업데이트할 때 심각한 문제가 발생할 수 있습니다. 특히 SoC 패치 세트는 크기가 큰 데다 종종 핵심적인 아키텍처 관련 커널 코드가 크게 변경되기 때문에 새로운 커널로 업데이트하는 데 문제가 있는 것으로 알려져 있습니다. 따라서 대부분의 SoC 공급업체는 기기가 Linux 커널 커뮤니티에서 직접 버그 및 보안 업데이트를 수신할 수 있도록 기기에 관한 LTS 출시 사용을 표준화하기 시작했습니다.
보안
커널을 배포할 때 Linux 커널 커뮤니티는 특정 변경사항을 보안 수정으로 선언하지 않습니다. 이는 생성 시 버그 수정이 보안 수정인지 여부를 확인하는 데 어려움이 있다는 기본적인 문제 때문입니다. 또한 많은 수의 버그 수정은 시간이 많이 지난 후에야 보안과 관련이 있는 것으로 확인되므로 커널 커뮤니티에서는 항상 출시되는 모든 버그 수정을 적용하는 것이 좋습니다.
보안 문제가 커널 커뮤니티에 보고되면 가능한 한 빨리 수정되고 개발 트리 및 안정화 출시에 공개적으로 푸시됩니다. 위에서 설명한 것처럼 변경사항은 대부분 '보안 수정'으로 설명되지 않고 커널의 다른 버그 수정과 유사해 보입니다. 따라서 문제 신고자가 문제를 알리기 전에 영향 받는 당사자가 시스템을 업데이트할 수 있습니다.
가능한 한 빠른 문제 해결 및 수정을 위해 커널 커뮤니티에 보안 버그를 신고하는 방법에 관한 자세한 내용은 www.kernel.org에서 Linux 커널 사용자 및 관리자 가이드의 보안 버그를 참고하세요.
보안 버그는 커널 팀에서 공개하지 않기 때문에 일반적으로 Linux 커널 관련 문제의 CVE 번호는 수정사항이 안정적인 개발 브랜치에 병합된 후 몇 주, 몇 개월, 몇 년 후에 발표됩니다.
안전한 시스템 유지
Linux를 사용하는 기기를 배포할 때 제조업체에서는 모든 LTS 커널 업데이트를 가져와 적절한 테스트를 거친 후 업데이트에 문제가 없음을 확인한 후 사용자에게 푸시하는 것이 좋습니다. 이렇게 하면 다음과 같은 몇 가지 장점이 있습니다.
- 커널 개발자가 출시의 개별 부분이 아니라 전체를 검토했습니다.
- 어떤 패치가 '보안' 문제를 수정하는지 확인하는 것이 불가능하지는 않지만 어렵습니다. 거의 모든 LTS 출시에는 알려진 보안 수정이 하나 이상 포함되어 있지만 아직 '알려지지 않은' 경우가 많습니다.
- 테스트 시 문제가 발생하면 커널 개발자 커뮤니티에서 문제를 해결하기 위해 신속하게 대처합니다.
- 실행한 변경사항만 필터링하려고 시도하면 향후 업스트림 버전과 올바르게 병합할 수 없는 커널 트리가 생성됩니다.