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は当時サポートされていた最も古いカーネルでした。

衝突自体は2つのコミットで実装されています。x86以外のすべてのアーキテクチャについて、2016年2月に初めてリリースされました。そして2017年5月にはx86アーキテクチャが登場します。。 (遅延はOpenVZサポートの問題に関連しています。)不要になったコードを削除したり、コードを単純化したりするための他の多くのパッチがあります。例えばこの単純化recvmmsg

これは、GNU Cライブラリが3.2.0以降のLinuxカーネルに追加された機能をサポートしていないという意味ではありませんが、いくつかの方法でサポートされています。改善により特定の機能をサポート(例えば clone3)、残りは(例えば close_range)、他のものは互換性を介してロールバックすることができます(つまりシステムコールが利用できない場合、新しいシステムコールで実行された操作はライブラリで実行されます。

また、設定オプションを使用して、特定のカーネルバージョンの要件に一致するCライブラリを構築することもできます--enable-kernel

おすすめ記事