시스템의 나머지 부분은 변경하지 않고 Linux 커널을 업데이트합니다.

시스템의 나머지 부분은 변경하지 않고 Linux 커널을 업데이트합니다.

저는 OpenBSD 사용자입니다. 존재하다OpenBSD FAQ그것은 말한다:

OpenBSD는 동기화를 유지하도록 설계된 완전한 시스템입니다. 서로 독립적으로 업그레이드할 수 있는 커널과 유틸리티가 아닙니다.

시스템을 업그레이드하면 커널과 기본 시스템이 모두 교체됩니다. 그런 다음 가서 업데이트하세요.타사 패키지. 만약에소스 코드에서 컴파일, 커널을 다시 컴파일하고 시작합니다. 그런 다음 기본 시스템을 다시 빌드한 다음 설치된 패키지를 다시 빌드합니다. 모든 것을 마지막으로 다시 빌드한 지 몇 주/개월이 지났다면 먼저 스냅샷을 설치하고 거기에서 다시 빌드합니다(최신 CVS 브랜치를 따르는 경우).

동기화되지 않은 커널, 기본 시스템 및/또는 타사 패키지는 문제의 잠재적인 원인이며 공식 메일링 리스트에서 심각한 도움을 받을 수 있는 자격을 어느 정도 박탈하게 됩니다.

나는 그것에 만족합니다. 사실 이것이 제가 OpenBSD를 사용하는 이유 중 하나입니다. 이는 시스템을 일관된 단위로 만들고 시스템에 대한 정신적 개요를 쉽게 형성할 수 있게 해줍니다.

Linux에서는 어떤 모습인가요? 내가 아는 한, 대부분의 Linux에는 BSD와 같은 의미의 "기본 시스템"이 없고 배포 공급자가 조립한 패키지 모음이 있습니다. 그런 다음 로컬 관리자는 더 많은 소프트웨어를 추가하므로 처음부터 있었던 소프트웨어와 나중에 추가된 소프트웨어 사이의 경계가 기껏해야 모호해집니다.

Linux는 (일반적으로) 커널-사용자 공간 결합이 강력하지 않습니까? 내가 아는 한, 커널은 다른 패키지와 마찬가지로 업데이트되었기 때문에 이것이 가능한지 약간 혼란스럽습니다. 이 외에도 일부는 사용자 정의 커널(OpenBSD에서는 권장되지 않음)을 컴파일하고 부팅 메뉴에 여러 다른 커널 버전이 나열되어 있습니다.

Linux 시스템의 다양한 하위 시스템이 서로 독립적으로 업데이트되더라도 서로 작동할 수 있음을 누가 또는 무엇이 보장합니까?

제가 묻는 이유는 이 사이트의 다른 사용자가 요청했기 때문입니다.Linux 시스템의 커널을 최신 버전으로 교체하는 것이 "가능"합니까? OpenBSD 측에서는 그렇다고 말할 수 없습니다.보장하다시스템 손상을 방지하기 위해.


나는 위의 "Linux"를 "Linux 배포판", 커널 + 유틸리티의 약칭으로 사용합니다.

답변1

리누스 토발즈는 매우강한사용자 공간 회귀를 유발하는 커널 변경에 대한 의견(질문 " 참조)Linux 커널: 사용자 공간 깨짐"더 알아보기).

사용자 공간과 커널 사이의 인터페이스는 시스템 호출에 의해 제공됩니다. 최신 커널은 더 많은 시스템 호출을 가질 수 있으며 변경 사항으로 인해 기존 애플리케이션이 중단되지 않는 한 기존 시스템 호출을 변경할 수 있습니다. 시스템 호출 인터페이스에 플래그 매개변수가 있는 경우 새 커널은 새 기능을 노출하기 위해 새 비트 플래그를 사용하는 경우가 많습니다. 이러한 방식으로 커널은 이전 응용 프로그램에 대한 이전 버전과의 호환성을 유지합니다.

사용자 공간을 손상시키지 않고 기존 인터페이스를 변경할 수 없는 경우 확장된 기능을 제공하기 위해 추가적인 시스템 호출이 추가됩니다. 그래서 버전이 3개나 되네요dup그리고 두 가지 버전umount시스템 호출.

안정적인 사용자 공간을 확보하는 전략은 커널 업데이트가 사용자 공간 응용 프로그램에 문제를 거의 일으키지 않으며 일반적으로 커널을 업그레이드한 후에는 문제가 발생하지 않는 이유입니다.

그러나 동일한 API 안정성은 보장되지 않습니다.핵심인터페이스 및 기타 구현 세부정보.시스템 파일 시스템(위 /sys) 및프로세스 파일 시스템(맨 위 /proc/) 하위 수준 애플리케이션에서 사용되는 런타임 구성, 하드웨어, 네트워크, 프로세스 등에 대한 커널 구현 세부 정보를 노출합니다. 정당한 이유로 이러한 인터페이스는 커널 버전 간에 호환되지 않는 방식으로 변경될 수 있습니다. 변경 사항은 가능하다면 비호환성을 최소화하려고 계속 노력할 것입니다.규칙애플리케이션이 문제를 일으킬 가능성이 가장 적은 방식으로 인터페이스를 사용하는 방법을 이해합니다. 하위 수준이 아닌 응용 프로그램에서는 이러한 인터페이스를 사용하면 안 되기 때문에 영향도 제한됩니다.

@petercordes변경사항이 발생하는지 표시프로세스 파일 시스템또는시스템 파일 시스템배포판의 init 스크립트에서 사용하는 애플리케이션을 중단하면 문제가 발생할 수 있습니다.

이는 배포판이 커널을 업데이트하는 방법(장기 지원 또는 메인라인)에 따라 다소 달라지며 배포판은 일반적으로 업데이트된 도구를 동시에 출시하므로 상대적으로 문제가 적습니다.

@Stephenkit업그레이드된 사용자 공간에는 최신 버전의 커널이 필요할 수 있으며, 이 경우 시스템이 이전 커널로 부팅되지 않을 수 있으며 릴리스 노트에서는 해당되는 경우 이에 대해 언급합니다.

답변2

Linux 커널과 Linux 배포판의 사용자 공간(역사적으로 GNU 프로젝트에서 개발한 사용자 도구가 지배함)은 느슨하게 결합되어 있습니다. 이는 부분적으로는 설계에 따른 것이고 부분적으로는 필요에 의한 것입니다.

커널과 기본 사용자 공간이 함께 설계되고 유지 관리되는 BSD와 달리 Linux 커널과 해당 사용자 공간은 서로 다른 사람들이 개발하고 유지 관리합니다. 그래서 커뮤니티가 원하더라도 응집력을 유지하는 것이 어려울 것입니다. 그러나 저는 그렇지 않다고 생각합니다.

@sebasth는 또한 Linux 커널 프로젝트의 주요 정책 중 하나가 사용자 공간을 손상시킬 수 없다는 점을 지적했습니다. 물론 이것은 느슨한 결합을 강요하는 또 다른 요소입니다.

그러나 여전히 어느 정도의 결합이 있습니다. 최신 배포판에서 실행되지 않을 만큼 오래된 Linux 커널.

답변3

내 이해는 Linux입니다.핵심, 다른 모든 것은 부수적입니다. 일반적으로 다음과 연관되어 있으므로 설치된 (많은) 패키지와는 별도로 커널을 업그레이드할 수 있습니다.도서관커널 자체보다는. 일반적으로 이러한 결합은 커널 버전과 하드웨어 드라이버(예: GPU 드라이버) 사이에서만 볼 수 있습니다. 일부소프트웨어는 특정 버전의 커널과만 호환되지만 이는 해당 프로그램에 대한 별도 문서에 지정되어야 합니다.

시스템에 두 개의 커널 패키지 제품군(현재 사용되는 패키지와 이전에 설치된 패키지)을 설치하는 것이 일반적입니다. 업그레이드할 때 새 버전이 제대로 실행되는지 확인한 후 가장 오래된 패키지를 제거하면 안전하다고 알려진 대체 패키지를 계속 사용할 수 있습니다. 예를 들어 Red Hat(및 그 유사 제품)은 package-cleanup --oldkernels --count 2이 작업을 자동으로 수행해야 합니다.

답변4

여기에 있는 모든 좋은 주장 외에도 몇 가지 유용한 점을 추가할 수 있습니다.

우리는 커널 팀의 정책을 알고 있으며 Linux 배포판으로서 커널 소스 코드를 최대한 순수하게 유지하려고 노력합니다. 즉, 취약점이 발생하거나 패치가 필요할 때마다 커널 팀에 알리고 패치를 돕도록 노력하지만 최종 결정은 커널 팀에서 내립니다.

일부 배포판은 다른 배포판보다 더 많은 패치를 추가하지만 아이디어는 업스트림 개발자로부터 패치를 유지하는 것입니다. 분명히 일부 프로그램에는 특별한 커널 구성, 특히 가상화 및 타사 드라이버가 필요합니다. 일반적으로 모두 특정 커널 버전이나 적어도 너무 오래되지 않은 버전에서 작동하도록 설계되었습니다...그 이유는 최신 커널 기능을 사용하려고 하기 때문입니다. 따라서 이전 커널로 실행하려고 하면 제대로 실행되지 않을 수 있습니다.

명심해야 할 추가 요소는 모든 Linux 배포판에는 모든 소프트웨어가 시스템과 호환되는지 확인하는 유지 관리 팀이 있다는 것입니다. 이것이 거의 모든 배포판에 안정적인 버전과 불안정한 버전이 있는 이유입니다. 개발자는 "불안정한" 소프트웨어를 사용하며 모든 소프트웨어가 테스트되면 안정적인 것으로 표시하고 그 후에만 일반 사용자가 패키지를 업그레이드할 수 있으므로 요청한 사람이 일반 사용자라면 소프트웨어는 90% 안전하다는 것을 나타냅니다. 소프트웨어는 잘 테스트되었습니다.

따라서 누가 누구인지, 커뮤니티가 무엇인지 그리고 무엇이 공통적인 접근 방식이어야 하는지, 함께 작동하고 시스템을 손상시키지 않는 소프트웨어가 필요합니다. 이것이 바로 우리가 다음과 같은 몇 가지 표준을 따르려고 노력하는 이유입니다.파일 시스템 계층 표준.

관련 정보