GNU/Linux 3.2.0의 특별한 점은 무엇입니까?

GNU/Linux 3.2.0의 특별한 점은 무엇입니까?

나는 다음 출력을 쳐다보고 있습니다 :

% file -b /lib/x86_64-linux-gnu/*.so | grep ", for"  | colrm 1 130 | sort -u
=5018237bbf012b4094027fd0b96fc22a24496ea4, for GNU/Linux 3.2.0, not stripped
9f21d, for GNU/Linux 3.2.0, stripped
bee51, for GNU/Linux 3.2.0, stripped
, for GNU/Linux 3.2.0, stripped
sha1]=2e5abcee94f3bcbed7bba094f341070a2585a2ba, for GNU/Linux 3.2.0, stripped

GNU/Linux 3.2.0의 특별한 점은 무엇입니까? 이것은 Debian/bullseye 시스템(amd64)에 있습니다.


즉, GNU/Linux 3.2.0에 도입된 어떤 API/기능(스레딩 모델, 보안 기능...)이 그렇게 중요한가요? 필요한 버전을 명시적으로 설정하면 사용자가 특정 값을 사용하지 못하게 되므로 (예를 들어) LD_ASSUME_KERNEL이전 값을 거부하는 데에는 타당한 이유가 있다고 추측합니다 .LD_ASSUME_KERNEL=2.4.19

답변1

과거에는 GNU C 라이브러리가 정기적으로 최소 커널 버전으로 업데이트되어 어느 정도 단순화가 가능했습니다. C 라이브러리에는 커널 버전 간의 차이점을 처리하기 위한 많은 코드가 포함되어 있습니다. 예를 들어 가능한 경우 새로운 시스템 호출을 선호합니다. 최소 커널 버전을 높이면 이전 버전을 처리하는 코드를 제거할 수 있습니다.

3.2.0의 유일한 의미는 GNU C 라이브러리가 이 프로세스를 거친 마지막 커널 버전이라는 것입니다. 그것은 조셉 마이어스에 의해 시작되었습니다2016년 1월, 2.6.32(이전 최소 커널 버전)의 수명이 종료되면. 3.2는 당시 지원되는 가장 오래된 커널이었습니다.

충돌 자체는 두 개의 커밋으로 구현됩니다.x86이 아닌 모든 아키텍처에 대해 2016년 2월에 처음 출시되었습니다., 그리고그리고 2017년 5월에는 x86 아키텍처가 등장합니다.. (지연은 OpenVZ 지원 문제와 관련이 있습니다.) 더 이상 필요하지 않은 코드를 제거하거나 코드를 단순화하기 위한 다른 후속 패치가 많이 있습니다. 예를 들어이 단순화recvmmsg.

이는 GNU C 라이브러리가 3.2.0 이후 Linux 커널에 추가된 기능을 지원하지 않는다는 의미는 아니지만 여러 가지 방법으로 지원됩니다. 개선 사항으로 특정 기능 지원(예를 들어 clone3), 나머지는 (예를 들어 close_range), 다른 것들은 호환성을 통해 롤백될 수 있습니다(시스템 호출을 사용할 수 없는 경우 새 시스템 호출로 수행된 작업은 라이브러리에서 수행됩니다.

또한 구성 옵션을 사용하여 특정 커널 버전의 요구 사항과 일치하는 C 라이브러리를 구축할 수도 있습니다 --enable-kernel.

관련 정보