1.4. 소스 코드 풀기

먼저 커널을 컴파일하기 위해 root의 권한을 가져야한다. 시스템에 root로 로그인하거나 su를 사용해 root가 된후 다음 절차를 시작한다.

보통의 커널은 /usr/src 밑에 위치하게 된다. 필자는 여기에 각 버전 번호를 가지고 디렉토리를 만들고 각각에 압축을 풀어 놓고 사용 중이다. 현재 사용되고 있는 커널 버전을 linux란 이름으로 링크시켜 놓고 사용 중이다. 즉 /usr/src/linux는 현재 사용되고 있는 커널을 가리키게 된다.

[root@localhost src]# ls -l
lrwxrwxrwx    1 root     root           12 12월 24 15:23 linux -> linux-2.4.16
lrwxrwxrwx    1 root     root           14 12월 24 15:22 linux-2.4 -> linux-2.4.7-10
drwxr-xr-x   14 root     root         8192  2월  5 11:00 linux-2.4.16
drwxr-xr-x   16 root     root         4096 12월 24 15:22 linux-2.4.7-10
drwxr-xr-x    7 root     root           40 12월 24 15:21 redhat
		

이렇게한 이유는 /usr/include에 linux와 asm 이란 리눅스 커널 소스코드 내의 디렉토리를 링크하게 되어 있는데 사용하는 커널 버전이 자주 바뀌거나 여러 커널을 같이 사용 중이라면 변하지 않는 패스를 사용하지 않는 한엔 linux와 asm의 링크가 자꾸 변하게되 불편을 감수해야하기 때문에 이 두 링크는 언제나 /usr/src/linux/include/linux와 /usr/src/linux/include/asm을 가리키도록 해놓고 /usr/src/linux만을 변경해 주도록 했다.

[root@localhost include]# ls -l linux asm
lrwxrwxrwx    1 root     root           26  1월 17 10:46 asm -> /usr/src/linux/include/asm
lrwxrwxrwx    1 root     root           28  1월 17 10:45 linux -> /usr/src/linux/include/linux
		

압축을 풀기 전에 주의해야할 것은 압축된 커널의 소스코드는 모두 linux란 이름의 디렉토리로 시작하므로 만약 /usr/src에 linux란 링크나 디렉토리가 있는 상태에서 여기에 압축을 풀어버리면 다른 버전의 코드를 엎어쓸 가능성이 있으므로 조심해야한다.

우선 /usr/src/linux의 링크를 없애고 tar를 사용해 압축을 푼 후 /usr/src/linux를 해당 버전으로 바꿔준다. 절차는 다음과 같다.