Linux 커널 의 변경 로그 에서 볼 수 있듯이 "Bump ABI-Maverick ABI 28"과 같은 업데이트 메시지가 있습니다.
Ubuntu Wiki 에 따르면 ABI는 커널 공간과 다른 모듈 사이의 다리와 같습니다 (내 해석).
이러한 업데이트에 추가 기능 및 / 또는 버그 수정이 추가됩니까? 커널을 다음 버전으로 업그레이드해야합니까?
Linux 커널 의 변경 로그 에서 볼 수 있듯이 "Bump ABI-Maverick ABI 28"과 같은 업데이트 메시지가 있습니다.
Ubuntu Wiki 에 따르면 ABI는 커널 공간과 다른 모듈 사이의 다리와 같습니다 (내 해석).
이러한 업데이트에 추가 기능 및 / 또는 버그 수정이 추가됩니까? 커널을 다음 버전으로 업그레이드해야합니까?
답변:
NB : 저는 커널 전문가가 아니므로 수집 된 지식과 경험을 바탕으로합니다.
ABI "범프"는 더 높은 버전의 ABI를 찾는 일부 모듈 / 응용 프로그램에서 버그를 "수정"할 수 있지만 새로운 기능을 가져 오지 않아야합니다. 일반적으로 모든 구성 요소를 동기화 상태로 유지하면 안정성과 보안이 보장되므로 이러한 업데이트를 설치해야합니다.
우선, 리눅스 커널에 대한 변경 로그를보고 있지 않습니다. 최신 커널에 의존하는 패키지 인 메타 패키지를보고 있습니다. 아마도 다음과 같은 것을 원할 것입니다 : http://changelogs.ubuntu.com/changelogs/pool/main/l/linux-image-2.6.35-28-generic/linux-image-2.6.35-28-generic_2.6.35- 28.50 / 변경 기록
이 메타 패키지의 목적은 이러한 ABI 범프를 통해 사용자를 전환하는 것입니다.
나는 ABI와 커널에서 당신과 같은 견해를 가지고 있습니다. 실제로 ABI 충돌은 업데이트 된 커널에 대해 모든 모듈을 다시 빌드해야 함을 의미합니다.
필자는 ABI 범프가 새로운 기능, 중요한 수정 사항 및 보안 업데이트를 의미하지 않는다는 점에서 Roland 와도 관련이 있습니다.
ABI는 응용 프로그램 이진 인터페이스 (API, 응용 프로그래밍 인터페이스와 혼동하지 않아야 함)입니다. ABI는 응용 프로그램이 사용하는 크기, 부호 및 숫자의 순서를 정의합니다.
명확히하기 위해 여기에 예가 있습니다. 나는 건물의 나이를 년 단위로 인코딩하고 싶습니다. 이를 위해 unsigned char
크기가 1 바이트이고 0에서 255까지의 값을 인코딩 할 수있는 유형 인 C를 사용할 수 있습니다 . 이제 더 많은 건물이 만들어져 있기 때문에 255가 너무 낮은 한계라는 것을 알게되었습니다. 255 년 전보다 그런 다음 unsigned int
4 바이트 길이 의 C를 사용하여 0에서 65535 사이의 값을 인코딩 할 수 있습니다.
유형을에서 char
로 변경해도 int
필드의 의미 적 의미는 변경되지 않았지만 (수년으로 표현 된 나이 였지만 여전히 그렇습니다) 크기를 변경했습니다. 내 응용 프로그램과 상호 작용하는 모든 소프트웨어를 변경할 필요는 없지만 다른 "언어"를 사용합니다.
따라서 커널이 ABI를 변경하면 해당 언어가 변경되었지만 기능이 추가, 제거 또는 수정되지 않았 음을 의미합니다. 이 새로운 언어를 사용하려면 커널과 상호 작용해야하는 모든 타사 모듈을 다시 컴파일해야하지만 올바르게 작동하기 위해 어떤 식 으로든 변경할 필요는 없습니다.
aptitude changelog linux-image-2.6.35-28-generic
변경 사항 목록을 표시합니다. 메타 패키지에 패키지 업데이트가없는 이유를 잘 모르겠습니다linux-{image,headers}-*-generic
.linux-{image,headers}-*-server
패키지 도 있기 때문에 어쩌면 ?