먼저, sys/conf/options (또는 sys/<arch>/conf/options.<arch>, 예를 들어, sys/i386/conf/options.i386 과 같은 ), 파일을 열고 여러분의 옵션에 가장 잘 맞는다고 보이는 opt_foo.h 을 선택하십시오.
이미 추가하게 될 새로운 옵션과 비슷한 옵션이 정의되어 있다면 그것을 고르십시오. 예를 들어, SCSI 서브시스템의 전체적인 행동을 변경하는 옵션은 opt_scsi.h 내에 들어갈 수 있을 것입니다. 기본적으로 단순히 FOO 라고 하는 옵션을 넣을 적합한 파일은 opt_foo.h임을 암시하고 있습니다. 그렇지만, 이러한 것은 옵션의 오른쪽에 있는 파일 이름에 파일명을 다르게 지정함으로써 변경될 수도 있습니다.
만약 새로운 옵션을 추가할만한 opt_foo.h 파일이 존재하지 않는다면, 새로운 이름을 만들어내야 합니다. 이름은 의미를 가지고 있어야 하며, 새로운 옵션이 추가될 자리에는 주석을 달아 놓으십시오. config(8) 가 수행되면서, 자동적으로(마법처럼) 변경사항을 집어내고 다음 작업에 필요한 파일들을 생성해 낼 것입니다. 대부분의 옵션들은 스스로 헤더 파일 내에 들어가게 됩니다.
하나의 opt_foo.h에 너무 많은 옵션을 추가하면 설정 파일 내의 하나의 옵션이 바뀔 때 많은 파일들이 재 컴파일되어야 하는 상황이 발생합니다.
마지막으로, 새로운 옵션에 의존하는 커널 파일들이 어떤 것인지를 찾아내어야 합니다. 자신의 옵션을 직접 만들어낸 것이 아니라면, 어떤 파일들이 의존성이 있는 것인지를 찾기 어려울 것입니다. 이를 위해서
% find /usr/src/sys -type f | xargs fgrep NEW_OPTION명령을 사용하십시오. 그리고 각 파일로 가서 다음 문장을 모든 #include <xxx.h> 앞에
#include "opt_foo.h"추가하십시오. 만약, 기본값이 일반적인 헤더 파일들 내에 다음과 같이 중첩(overload)되어 있다면,
#ifndef NEW_OPTION #define NEW_OPTION (something)
#endif
이러한 기본값들에 값을 중첩시키기 위해서 헤더 파일의 순서는 가장 중요한 것이
될 것입니다.. 시스템 헤더 파일( 예를 들어 /usr/include/sys/ 내에 있는 파일들 ) 에 뭔가가 중첩되는 옵션을 추가하는 것은 대부분 틀린 경우일 것입니다. opt_foo.h는 그러한 파일들 내로 포함(include)될 수 없습니다. 헤더 파일들이 더욱 심각하게 엉키기(break 라는 표현을 썼지만, 한국 내에는 이 표현이 더 맞는 듯 합니다.) 때문입니다. 그렇지만, 포함되지 않는다면, 해당 옵션에 대해서 취해질 수 있는 값들이 일관성을 잃을 수 있습니다. 물론, 지금은 그러한 전례는 있습니다만, 그러한 것들 때문에 보다 정확해졌다고는 할 수 없습니다.