먼저 sys/conf/options
(또는 sys/i386/conf/options.<arch>,
예: sys/i386/conf/option.i386)를 편집하고,
새 옵션이 들어가기 가장 좋은
opt_foo.h 파일을 선택합니다.
First, edit sys/conf/options (or
sys/i386/conf/options.<arch>, e. g.
sys/i386/conf/options.i386), and select an
opt_foo.h file where your new option would best go
into.
이미 새 옵션의 목적과 비슷한 파일이 있다면
그 파일로 합니다. 예를 들면,
SCSI의 부시스템(subsystem)의 전반적인 동작을 수정한 옵션의 경우
opt_scsi.h에 들어갈 수 있습니다.
기본적으로, 적절한 옵션 파일에서
단순하게 선언된 옵션을 FOO라고 하면
그 값은 opt_foo.h에 있게됩니다.
그러나 규칙적인 오른쪽 부분을
특정한 파일 이름으로 정해줄 수 있습니다.
이미 고안된 새 옵션에 대해서 사용 가능한
opt_foo.h 파일이 없으면,
새로운 의미 있는 이름을 만듭니다.
그리고 options[.<arch>] 파일에
주석을 답니다.
config(8)은 신비하게도 바뀐 것을 알고
다음번 실행 할 때 그 파일을 만듭니다.
대부분의 옵션들은 알아서 헤더 파일에 들어갑니다..
하나의 opt_foo.h에 너무 많은 옵션을 달면,
설정 파일에서 하나의 옵션을 바꾸어도
많은 커널 파일이 새로 컴파일 되어야 합니다.
마지막으로 어떤 커널 파일이 새 옵션에 의존하는지를 찾습니다. 스스로 자신의 옵션을 개발하지 않았다면, 그것은 어느 곳에도 존재하지 않겠지요.
find /usr/src/sys -name type f | xargs fgrep NEW_OPTION
을 이용해서 찾습니다. 그 모든 파일을 편집하고 제일 위에,
모든 #include <xxx.h> 전에,
#include "opt_foo.h"
를 적습니다. 일반적인 헤더 화일에서 기본값을
#ifndef NEW_OPTION #define NEW_OPTION (something) #endif
로 정의 한다면, 기본값을 무시하기 위해서 헤더 파일의 차례는 중요합니다.
시스템 헤더 파일(예를 들면 /usr/include/sys/)에 있는
내용을 무시하는 옵션을 추가하는 것은 거의 대부분 잘못입니다.
헤더 파일을 더 심각하게 쪼개야 하기 때문에
opt_foo.h가
헤더 파일에 포함 될 수 없습니다.
그리고 포함될 수 없다면 헤더 파일이 포함된
부분들은 서로 다른 옵션값을 가질 것입니다.
물론 이것을 올바르게 한 예가 있지만,
그것이 옵션을 더 올바르게 만드는 것은 아닙니다.