カーネルの基本特性を設定するには?

カーネルの基本特性を設定するには?

必要なアプリケーションに64ビットの完全なサポートを提供できるように、32ビットシステムで32ビットカーネルを64ビットカーネルに置き換えようとします(必要なライブラリがあるか静的にリンクがある場合)。ただし、他のすべての場合は、32ビットのユーザースペースを予約します。問題は、多くの32ビットユーザースペースアプリケーションがuname -m報告したいi686ので、何でも実行する前にこれを行う必要があることsetarch i386ですinit

私はそれをinit=/sbin/myinitカーネルに渡すのと同じことができると思いました。それはmyinit次のとおりです。

#!/bin/sh
exec setarch i386 /sbin/init

しかし、基本的な性質をカーネル自体にエンコードする方法があったらと思います。これを行うための既存のカーネルオプションはありますか?

答え1

私が知る限り、そのようなカーネルオプションはありません。必要に応じて、カーネルのソースコードを直接調べて関連項目を検索できset_personalityますcurrent->personality。ご希望のロゴはですPER_LINUX32

カーネルにパッチを適用することに加えて、initをオーバーライドする解決策はおそらく最も簡単な解決策です。これは本当に驚くべきことではありません。 initramfsの使用と非常に似ています。すでにinitramfsを使用している場合は、initramfsを挿入できますsetarch

関連情報