LINUX(4) | FreeBSD Kernel Interfaces Manual | LINUX(4) |
名称
linux — Linux ABI サポート書式
この ABI のサポートを i386 カーネルにコンパイルするためには、次の行を利用者のカーネル設定ファイルに置きます:
options COMPAT_LINUX
amd64 カーネルについては、次を使用します:
options COMPAT_LINUX32
もう一つの方法として、ブート時にモジュールとして ABI をロードするためには、次の行を loader.conf(5) に置きます:
linux_load="YES"
解説
linux モジュールはユーザランドアプリケーションのために制限された Linux ABI (アプリケーションバイナリインタフェース) を提供します。モジュールは次の重要な機能を提供します:- 正しいブランドの elf(5) 実行可能なイメージのためのイメージ駆動機能
- 駆動イメージのための特別なシグナル処理
- Linux からネイティブのシステムコール変換
エミュレータを通して提供されなかった Linux ABI のサポートに注意することは重要です。むしろ、(制限されていますが) 本当の ABI 実装を提供します。
次の sysctl(8) 調整変数が利用可能です:
- compat.linux.osname
- Linux カーネルオペレーティングシステム名。
- compat.linux.osrelease
- Linux カーネルオペレーティングシステムリリース。それが Linux プログラムが動作する方法を変更するかもしれないので、これを他の何かに変更することは、非開発システムでお勧めできません。 GNU libc の最近のバージョンは、この sysctl の値に依存する異なった syscall を使用することが知られています。
- compat.linux.oss_version
- Linux オープンサウンドシステムバージョン。
linux モジュールは COMPAT_LINUX カーネル設定オプションで静的にカーネルにリンクするか、または必要に応じてロードすることができます。カーネルにリンクされず、またモジュールとして既にロードされていないなら、次のコマンドはモジュールをロードします:
if ! kldstat -v | grep -E 'linux(aout|elf)' > /dev/null; then kldload linux > /dev/null 2>&1 fi
ダイナミックにリンクされた Linux 実行形式は /compat/linux に適切な環境を必要とすることに注意してください。特に、Linux ランタイム (実行時) リンカのヒントファイルは正しく初期化されるべきです。このため、正しく Linux 実行形式を実行するためのシステムを準備する次のコマンドを実行することは一般的です:
if [ -x /compat/linux/sbin/ldconfig ]; then /compat/linux/sbin/ldconfig -r /compat/linux fi
システム起動時に自動的に linux カーネルローダブルモジュールをロードする情報については、 rc.conf(5) を参照してください。この情報は、 linux モジュールが静的にカーネルにリンクされるか、またはモジュールとしてロードされるかにかかわらず適用されます。
関連ファイル
- /compat/linux
- 最小の Linux 実行時環境
- /compat/linux/proc
- 制限された Linux プロセスファイルシステム
- /compat/linux/sys
- 制限された Linux システムファイルシステム
歴史
Linux ABI サポートは FreeBSD 2.1 ではじめて登場しました。February 8, 2010 | FreeBSD |