2.1-STABLE 버전의 GENERIC 커널은 리눅스 호환을 위한 설정이 되어 있지 않기 때문에 재설정을 해주어야 합니다. 이를 위해서 두가지 방법이 있습니다. 1. 에뮬레이터를 커널에 정적으로 링크시키거나, 2. 리눅스 LKM(loadable kernel module)을 동적으로 로딩하게끔 설정하는 것입니다.
에뮬레이터를 동작시키기 위해 설정 파일에 다음을 추가합니다(/sys/i386/conf/LINT 참고).
options COMPAT_LINUX
둠이나 공유 메모리를 요구하는 다른 프로그램들을 실행하기를 원하다면
다음을 추가합니다.
options SYSVSHM
리눅스 시스템 콜은 4.3BSD 시스템 콜 호환성을 요구합니다. 따라서 다음
내용을 포함시켜야 합니다.
options "COMPAT_43"
에뮬레이터를 LKM(loadable kernel module)로 사용하지 않고 커널에 정적으로 연결하기를 원한다면 다음을 추가합니다.
options LINUX
그리고 나서 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이 로딩되도록 할 수 있습니다.
FreeBSD 2.2.1-RELEASE 버전과 2.1-STABLE 버전에서는 /etc/sysconfig에서
linux=YES
NO에서 YES로 바꿈으로서 실행할 수 있습니다. FreeBSD 2.1-RELEASE
버전 및 그 이전 버전에서는 위의 라인이 없기 때문에 /etc/rc.local 파일에
다음 라인을 추가해주어야 합니다.
linux