티스토리 뷰

컴파일을 한번 해볼까? 

 

커널 컴파일은 루트 개정으로 들어가야 한다. 

 

루트 계정인지 어떻게 아냐고요? Shell을 띄웠을 때 커서 왼쪽에 #이라고 뜨면 나는 루트다. 

 

그런데 어떻게 루트로 바꾸지? 흠.. sudo로 root 패스워드를 바꾸고.. su - 로 루트쉘을 열자 

 

처음이라 루트는 무섭지?만 조심하면 된다^^ 

 

커널 소스 압축을 풀고 들어간다음 ( 또는 git으로 다운로드 받은 폴더 안에 들어가서 ) 진행하면 된다 

 

ls -l 했을 때 arch, block, certs .. 등등의 디렉토리가 보인다면 정상!!

커널 컴파일 순서는 간단하다. 

 

#make  menuconfig; make; make modules; make modules_install; make install 

 

이렇게 하면 될거 같지만 생각보다 configuration이 발목을 잡는다. 

 

그래서 잠시 내가 사용하고 있는 configuration이 어떤지 살펴봐야 한다. 

 

쉽다면서.. 그런데 왜?  최소한의 예의다.. 커널을 살펴보려고 하면 최소한 옵션정도는 볼수 있어야지^^

 

그럼 한번 실제로 해보자~~^^ 쉽다!! 확인이 필요하다!! 

 

이런 make도 설치가 안되어있어.. 그러면 설치해야지 

 

0. 기본적으로 설치해야 하는 Package 

 

다음 팩키지들을 설치해야 한다. 

make , gcc, ncurses-devel, flex, bision, elfutils-libelf-devel openssl-devel

 

# dnf install make gcc ncurses-devel flex bision elfutils-libelf-devel openssl-devel

 

만일 dnf 가 없을 경우 

# yum install dnf 

 

1. make menuconfig 를 진행하고 .config file을 만들자 

( #make  menuconfig; make; make modules; make modules_install; make install )

 

#make menuconfig

 

make menuconfig를 하고 나면 다음과 같이 Configuration이 뜬다. 앗싸 자동으로 현재 Configuration을 들고 왔다.^^

메뉴에서는 tab, space key를 이용해서 이동하면 된다. 

Exit를 누르고  저장을 누르고 나면 현재 위치에 .config 파일이 생긴다.

make menuconfig를 진행했을때 .config 파일이 없어서 /boot/config-4.18.16-300.fc29.x86_64 에서 가져온 configuration 으로 로딩해서 기본 세팅을 해준 것임을 알수 있다. 하지만 현재 다운로드 받은 커널의 Configuration과 fedora core 29에서 사용하는 커널 버젼이 다르기 때문에 Option Missmatch 나는 부분은 존재한다. 기본적으로 정리해서 저장된다. 

항상 커널 컴파일을 할때는 현재 리눅스가 사용중인 커널 옵션을 기본으로 수정해주는 것이 안전하다! 보통 /boot/ 디렉토리에 있다. 

이제 .config 파일도 있으니 Compile 을 할 수 있다. 

 

2. Compile을 하자 

( #make  menuconfig; make; make modules; make modules_install; make install )

 

#make 

 

make 를 하게 되면 커널이 컴파일 된다. make를 할때 cpu core를 여러개 쓰고 싶을 때는 -j 옵션을 사용하면 된다. 

"#make -j4" 일 경우 core를 4개 사용한다. 그러면 좀더 빠르게 컴파일 된다. 물리적인으로 할당된 Core 수를 확인하려면 /proc/cpuinfo를 살펴보자.  

 

3. Kernel Module을 Compile하고 설치하자 

( #make  menuconfig; make; make modules; make modules_install; make install )

 

Kernel Module은 /lib/modules/ 아래 폴더에서 관리된다. make modules 까지는 커널이 있는 위치에 만드는 것이고

make moduels_install을 해야만 /lib/modules/ 아래 폴더에 복사된다.  모듈 설치전은 아래와 같다. 아까 4.18.16-300.fc29.x86_64 를 그대로 쓰면 안된다고 했던 이유는 아래 그림과 같이 모듈디렉토리로 사용되서이다.

커널 소스코드 있는 곳에서 #make moduels; make modules_install 을 진행한다. /lib/modules 디렉토리에 들어가서 확인해본다. 

 

4. 계속.. 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함