2.1-STABLE の GENERIC カーネルは, Linux との互換性を保つように構築 されていません. カーネルの再構築が必要です. 再構築をおこなうには, 2つの方 法があります. 1つは, エミュレータをカーネル自体にスタティックリンクす る方法. もう1つは, 動的に Linux ローダブルカーネルモジュール(LKM)をロー ドするようにする方法です.
エミュレータを有効にするには, 以下をコンフィグレーションファイル (/sys/i386/conf/LINT など) に追加します.
options COMPAT_LINUX
Linux DOOM などのアプリケーションを実行したい場合は, 共有メモリも有効
にしておかなければなりません. 以下を追加します.
options SYSVSHM
Linux のシステムコールを使用するには, 4.3BSD のシステムコールとの互換
性が保たれていることが必要です. 以下の行が含まれていることを確認してく
ださい.
options "COMPAT_43"
LKM を使用せずエミュレータをカーネルにスタティックにリンクしたい場合は, 以下の行を追加します.
options LINUX
FreeBSDカーネルのコンフィグレーションの節の記述に
したがって config と, 新しいカーネルのインストールをおこなってください.
LKM を使用する場合は, ローダブルモジュールをインストールしなければなり ません. カーネルとローダブルモジュールのバージョンが異なると, カーネル がクラッシュする場合がありますので, 安全を期すためには, カーネルをイン ストールするごとに, LKM も再インストールしてください.
% cd /usr/src/lkm/linux
% make all install
カーネルと LKM のインストールが終了したら, root で `linux' コマンドを
実行することで LKM をロードできます.
% linux
Linux emulator installed
Module loaded as ID 0
%
LKM がロードされたかどうかを確認するには, `modstat' を実行します.
% modstat
Type Id Off Loadaddr Size Info Rev Module Name
EXEC 0 3 f0baf000 0018 f0bb4000 1 linux_emulator
%
システムブート時に, LKM をロードするようにするには, 2つの方法がありま
す. FreeBSD 2.2-RELEASE または 2.1-STABLE では, /etc/sysconfig を,
linux=YES
のように, NO を YES に変更してください. FreeBSD 2.1 RELEASE およびそれ以
前のバージョンでは, そのような行はありませんので, /etc/rc.local に以下
の行を追加する必要があります.
linux