FreeBSD 핸드북 : 새로운 커널 설정 옵션 추가하기 : 이제 무엇을 해야 합니까?
Previous: 어쨌든, 커널 옵션이란 무엇입니까?
Next: 커널 디버깅

21.2. 이제 무엇을 해야 합니까?

먼저 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가 헤더 파일에 포함 될 수 없습니다. 그리고 포함될 수 없다면 헤더 파일이 포함된 부분들은 서로 다른 옵션값을 가질 것입니다. 물론 이것을 올바르게 한 예가 있지만, 그것이 옵션을 더 올바르게 만드는 것은 아닙니다.


FreeBSD 핸드북 : 새로운 커널 설정 옵션 추가하기 : 이제 무엇을 해야 합니까?
Previous: 어쨌든, 커널 옵션이란 무엇입니까?
Next: 커널 디버깅