hexd
1
리눅스 입문한지 얼마 안된 초짜입니다.
C언어를 배웠고, 리눅스 커널에 관심이 있어서 커널을 입문하려합니다만…
gcc로 컴파일 하는 법, 압축푸는법, 터미널 명령어등… 기본적인 것만 압니다.
이 글을 올리기 전에 커널 컴파일 하는 방법에 대해 검색을 해봤지만 확실하고 끝까지 가르쳐주지 않더군요.
커널 관련 책을 2권이나 구입했는데 진도가 전혀 나가질 않습니다.
http://www.kernel.org/ ← 여기서 다운 받는 것은 알고 있긴 한데...
/usr/src에 압축을 풀고… "그 다음에 나보고 어쩌라고? "
상식적으로 생각해서 커널 입문 책을 구입하면
일단 커널 다운로드, 커널 컴파일법을 확실히 알려줘야 되지 않습니까?
컴파일 법을 찾아보긴 했습니다만, 속 시원하게 처음부터 끝까지 설명이 된 곳을 찾지 못했습니다.
처음부터 차근히 답변을 해주시거나 시간이 되시면 메신져로 자세히 가르쳐 주실 분 계시나요?
커널 컴파일 준비물
먼저 gcc와 g++ 등 빌드 도구와 커널 패키지 도구를 설치합니다.
sudo apt-get install build-essential kernel-package initrd-tools
커널 소스가 필요하므로 다음 명령으로 커널 소스를 받습니다.
sudo apt-get install linux-source-2.6.28
커널 소스는 /usr/src 디렉토리에 linux-source-2.6.28.tar.bz2로 저장됩니다.
세번째로 필요한 건 Ncurses 라이브러리입니다. 커널 옵션을 설정하는 도구입니다.
sudo apt-get install ncurses-dev
커널 컴파일
압축을 풉니다.
sudo tar -xjvf linux-source-2.6.28.tar.bz2
이후 컴파일을 편하게 하기 위해 루트 권한을 설정합니다.\
sudo su
압축을 풀어놓은 디렉토리에 대한 심볼릭 링크 생성
ln -s /usr/src/linux-2.6.28 linux
cd linux
현재 돌아가는 커널 설정값이 기록된 파일을 복사
cp /boot/config-2.6.28-11-generic .config (uname -r 해서 나온 것을 적어줍니다)
커널의 환경 설정
make oldconfig
make menuconfig
커널 컴파일 시작
make-kpkg clean
make-kpkg --initrd kernel_image kernel_headers modules_image
커널 설치
작업한 곳의 상위 디렉토리인 /usr/src 로 이동하여 만들어진 커널 파일을 deb 설치 화일로 설치
cd
dpkg -i linux-headers-2.6.28.9-yamuzin64g_2.6.28.9-yamuzin64g-10.00.Custom_i386.deb
dpkg -i linux-image-2.6.28.9-yamuzin64g_2.6.28.9-yamuzin64g-10.00.Custom_i386.deb
grub의 부트메뉴파일 (menu.lst)에 새로 설치한 커널이 제대로 등록되었나 확인해보고, 재부팅한다.
커널 삭제
dpkg -r linux-headers-2.6.28.9-yamuzin64g_2.6.28.9-yamuzin64g
dpkg -r linux-image-2.6.28.9-yamuzin64g_2.6.28.9-yamuzin64g
어디서 베껴왔는데 기억이 안나는군요.
컴파일이 되기는 합니다만 커널 환경 설정을 공부하셔야 제대로 된 커널이 나와서 문제가 안 생깁니다.
menuconifg에 해당하는 커널 환경 설정은 다음에서 참고하세요.
http://wiki.kldp.org/wiki.php/Kernel%20 ... tro#s-1.10
강분도님께서 자세하게 커널 컴파일 하는 방법 설명해놓은 글이 있습니다.
검색해보시면 금방 찾으실겁니다.