준비운동 하기
일반적으로 '커널 컴파일'하면 매우 어렵고 복잡한 것으로 단정해버리는 사람들이 종종 있다. 하지만, 이 글을 읽고 나면 이런 생각이 조금은 바뀔 것이다. 이 것은 비단 프비 뿐만 아니라, 리눅스에서도 마찬가지다. 자기에게 꼭 맞는 커널을 만들어서 시스템을 좀 더 최적화로 만들 수 있다면, 얼마나 좋을까?
참고로 이 문서는 커널 버전 4.x 대에서 작성되어 졌다.
컴파일 하기
커널 소스 찾기
우선 프비 커널 소스가 어디에 있는 지 찾아보자!
일반적으로 '/usr/src/' 아래에 있다. 그렇지만 만일 없다면, 커널소스를 설치해주어야 한다.
다음과 같은 방법으로 설치한다.
#/stand/sysinstall
설치 때 화면이 보일 것이다. 'Configure-Distributions-src'에서 'base' 와 'sys'만을 체크하고 설치한다.
설치한 후에 위의 디렉토리에 가보면 커널소스가 있을 것이다.
☞ 커널의 종류
- GENERIC : 설치용 커널의 설정파일이다. 시스템을 운영하기 위해 기본적인 사항이 모두 들어 있으며 여러가지 장치를 기본적으로 지원하도록 설정이 되어 있다. 자신만의 새 커널 설정 파일을 만들겠다면 이 파일에서 시작하는 편이 좋다.
- LINT : 실제로 컴파일할 수 있는 커널설정 파일은 아니지만 FreeBSD 커널 설정 파일에 쓸 수 있는 모든 장치와 옵션을 제공하는 일종의 커널 레퍼런스 가이드로 사용할 수 있다.
자신의 커널 설정 파일을 복사한다
#cd /sys/i386/conf #cp GENERIC FAT
참고로 필자는 나의 커널 이름을 'FAT'로 했다.
커널 설정 파일을 편집한다
솔직히 이 과정이 가장 중요한 부분이라고 할 수 있다. 단 하나의 옵션의 주석처리를 해주더라도 그것을 왜 해주는지 알아 두어야 한다!
각 옵션들에 대한 설명은 프비관련 사이트에서 알아보기 바란다.
#vi FAT
커널 컴파일과 설치
설정파일 편집이 끝났으면, 본격적으로 컴파일을 해보자!
#cd /usr/src #make buildkernel KERNEL=FAT // 커널 컴파일 #make installkernel KERNEL=FAT // 커널 인스톨
☞ 항상 프비를 쓰면서 느끼는 것이지만, 리눅스에 비해 사용자에 대한 편리함을 제공한다. 위와 같이 컴파일을 마치면, 자동으로 루트(/)디렉토리에 kernel(또는 FAT)라는 파일이 생겼을 것이다. 이것이 바로 우리가 위해서 했던 커널 컴파일에 대한 산물이다. 만일 재부팅을 한다면, 자동으로 새로운 커널로 부팅을 할 것이다.
예전 커널로 다시 부팅하고 싶다면,
/boot/loader.conf 파일을 다음과 같이 수정해주자.
kernel="/kernel.old"
우리가 생각해보면 알수 있는것이지만, 새로이 커널컴파일을 하게 되면, 예전에 있던 커널이미지를 .old 파일로 백업한다. 모듈도 마찬가지다. modules.old로 백업된다.
커널 모듈 팁
프비 커널 모듈을 해부해 보자!
현재 올라와 있는 모듈을 볼때,
#kldstat
서브 모듈까지 알고 싶다면,
#kldstat -v
이번에는 모듈을 올릴 때,
#kldload -v /modules/vinum.ko Loaded /modules/vinum.ko, id=12
반대로 모듈을 내릴 때,
#kldunload vinum.ko Unloading vinum.ko, id=12
참고로 커널 모듈의 경로가 위와 다를 수 있다. 만일 없다면 '/boot/modules'를 찾아보자!~