2023年6月の本コラムで、SUSEのエンジニアであるNikolay Borisovが32ビットプロセスの起動をオプションで無効化するパッチをが提案した話題をお伝えしたが、ここにきて実装に向けた動きが本格化している。6月23日付でBorisovが提案した32ビットプロセスの無効化オプションのパッチセットは何度か修正が行われた後、9月14日付けでx86アーキテクチャを担当するメンテナーのThomas Gleixnerがこれを承認、現在はGitのx86/エントリブランチのキューに入っており、早ければLinux 6.7でマージされる見込みだ。
製造業や医療、組込み業界などの現場では、いまでも32ビットアプリケーションが使われているケースが多く、Linuxカーネルもディストリビュータも32ビットのサポートから離れることは現実的に難しい。したがってその負荷をいかに軽減するかはカーネル開発者やディストリビュータにとっての大きな課題だった。以前から32ビットプロセスのサポートをカーネルレベルで選択できるようにすることに取り組んできたBorisovは、6月の提案から修正を行い、最終的には「ia32_emulation」(以前はia32_disabled)というパラメータと、32ビットシステムをデフォルトで無効化するKconfigオプション「IA32_EMULATION_DEFAULT_DISABLED」を含めたパッチを提出している。
Linuxカーネルでは現在、32ビットサポートをビルドするかどうかはKconfigの「IA32_EMULATION」で制御している。これに対し、Borisovのパッチではコンパイル時のオプションとして新たに「IA32_EMULATION_DEFAULT_DISABLED」を導入、ディストリビュータはこのオプションで32ビットサポートの有無をポリシーとして選択できる。「デフォルトでは32ビットをサポートしない」という名前の通り、ディストリビュータの32ビットからの解放を強く意識しているようだ(ただしデフォルトでは無効に設定されている)。
一方、32ビットをまだ使う必要があるユーザに対しては、ディストリビュータのポリシーをオーバーライドする「ia32_emulation」を用意している。ユーザはこのパラメータを有効化することで「IA32_EMULATION_DEFAULT_DISABLED」―つまり32ビットサポートの無効化をオーバーライドし、32ビットプログラムのロードやシステムコールの実行を可能にすることとができる。
Borisovは「(32ビットのサポートに関しては)ディストリビュータがポリシー(サポートの有無)を決定し、ユーザが必要に応じてそれをオーバーライドすることが理想」とコメントしているが、今回のパッチはディストリビュータとユーザのフェーズで選択肢を提供することでその理想に近づけている。とくに大きな問題がなければ、2023年末に予定されているLinux 6.7での実装が期待できそうだ。