리눅스 커널 소스 다운로드 : http://maskkwon.tistory.com/83


 위에서 적힌대로 커널 소스를 다운로드 했다면 이제 커널 소스를 빌드해보자!!

커널의 빌드 오더는 아래와 같다.


make mrproper

make menuconfig

make dep

make clean

make bzImage

make modules

make modules_install



make mrproper는 기존의 커널의 의존성을 모두 제거


make menuconfig는 커널이 설치되는 환경을 설정


make dep는 커널 소스의 의존성을 확인


make clean은 오브젝트 파일 및 구버전의 소스를 모두 정리


make bzImage는 실행 가능한 커널을 빌드


make modules는 커널에 사용하는 모듈들을 컴파일


make modules_install은 모듈들을 /lib/modules에 설치


 위와 같은 빌드과정이 끝났으면 커널 이미지를 설치하고 GRUB 부트로더의 설정을 변경해주면 된다.


커널 2.4의 경우

make mrproper

make menuconfig

make dep

make clean

make bzImage

make modules

make modules_install


cp /arch/i386/boot/bzImage /boot/vmlinuz-2.4.32

vi /boot/grub/menu.lst


밑의 내용을 부트로더의 메뉴에 추가한다.


title         Debian GNU/Linux, kernel 2.4.32

root         (hd0,0)

kernel      /boot/vmlinuz2.4.32 root=/dev/hd1 ro

savedefault

boot


재부팅을 한 후, uname -a로 커널 버전을 확인해 본다.


Linux root 2.4.32 #1 SMP Tue Jun 18 13:55:12 KST 2013 i686 GNU/Linux



커널 2.6의 경우

make mrproper

make menuconfig

make(make dep, make clean, make bzImage, make modules 일원화)

make modules_install


cp /arch/i386/boot/bzImage /boot/vmlinuz-2.6.14

vi /boot/grub/menu.lst


밑의 내용을 부트로더의 메뉴에 추가한다.


title         Debian GNU/Linux, kernel 2.6.14

root         (hd0,0)

kernel      /boot/vmlinuz2.6.14 root=/dev/hd1 ro

savedefault

boot


재부팅을 한 후, uname -a로 커널 버전을 확인해 본다.


Linux root 2.6.14 #1 SMP PREEMPT Tue Jun 18 14:28:55 KST 2013 i686 GNU/Linux



 SMP는 다중프로세서를 위한 커널을 의마하고 PREEMPT는 선점형 커널을 의미한다. 선점형 커널은 커널에서 작업 중인 경우에도 제어권을 강제로 빼앗을 수 있다는 것을 의미한다.

 리눅스에서는 bash를 기본적인 쉘로 사용한다. 시스템 내에서 알 수 없는 문자를 출력한다고 해서 매번 '[export LANG=C]'를 입력하는 것은 번거롭다. root 사용자의 경우, /root/.bashrc 파일을 수정하면 보다 편한 개발 환경을 구축할 수 있다.


LANG=C; exprot LANG;

export PS1='\h:\w\$'                 //언어설정을 추가해서 메시지 깨짐을 방지

umask 022

echo -ne '\033[11;0]'                  //경고비프음을 제거


#you may uncomment the following lines if you want 'ls' to be colorized:

export LS_OPTION='--color=auto'           //ls 결과에 색상을 사용

eval "'discolors'"

alias ls='ls $LS_OPTIONS'

alias ll='ls $LS_OPTIONS -l'

alias l='ls $LS_OPTIONS -lA'


#some more alias to avoid making mistakes:

alias rm='rm -i'

alias cp='cp -i'

alias mv='mv -i'

 먼저 putty를 사용하기 위해 ssh를 설치한다. 패키지/소스 관리에서 배운 명령어를 이용한다. 'apt-get install ssh' ssh의 설치가 끝나면 putty를 다운 받는다.


putty 다운로드 URL : http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


'ifconfig'를 이용해서 리눅스의 ip주소를 알아낸다. 다운받은 putty.exe.를 실행시키고 ip주소를 입력한다. putty가 연결된다. 


X-window를 쓰면 시스템의 반응 속도가 느려지고 VMware를 사용하면 화면의 크기가 작기 때문에 putty를 이용하면 윈도우에서 VM을 통해 이용하는 사용자에게 보다 넓은 화면에서의 프로그래밍 환경을 제공한다.


 명령어

 설명 

 apt-get update

 패키지 목록을 업데이트 

 apt-get dist-update

 설치된 패키지들을 업그레이드 

 apt-cache search --names-only [PKG_NAME]

 [PKG_NAME]로 시작하는 패키지 검색

 apt-get install [PKG_NAME]

 [PKG_NAME] 패키지를 설치 

 apt-get install --reinstall [PKG_NAME]

 [PKG_NAME] 패키지를 다시 설치(복구)

 apt-get remove [PKG_NAME]

 [PKG_NAME]를 제거, 설정 파일 유지

 apt-get remove -- purge [PKG_NAME]

 [PKG_NAME]과 설정 파일을 모두 제거

 apt-get source [PKG_NAME]

 [PKG_NAME]의 소스코드를 설치



EX) VIM 설치 시, 'apt-get install vim'을 입력한다.



소스관리 목록은 /etc/apt/sources.list에 기록되어있다.


deb http://ftp.kr.debian.org/debian/ stable main non-free contrib


deb-src http://ftp.kr.debian.org/debian/ stable main non-free contrib


deb http://security.debian.org/ stable/updates main non-free contrib


stable : 안정판

main : 메인 패키지

non-free : 자유 소프트웨어가 아닌 것

contrib : 라이센스 소프트웨어에 의존하는 자유 소프트웨어


sources.list를 수정하고 적용하려면 'apt-get update'를 해줘야 한다.




기본적인 개발 도구들


gcc : C 컴파일러

make : makefile을 통해서 빌드를 수행

libncurses : ncurses의 라이브러리, 리눅스 환경 설정을 콘솔에서 할 때 사용

manpage-dev : man 명령어를 통해서 C의 함수들에 대한 래퍼런스를 얻는다.

bzip2 : 확장자 bz2를 푼다.

wget : URL을 통해서 직접 파일을 내려받을 수 있다.

vim : VI의 개선판

ctags : VI에서 리눅스 코드를 손쉽게 돌아다니도록 해준다.

cscope : 소스코드에서 원하는 함수나 문자열, 호출하는 함수들을 검색

LKML 쪽은 주로 patch를 주고 받으며 실제 개발을 하는 곳입니다.
커널의 정보에는 kernelnewbies 메일링이 좋습니다.



리눅스 메일링 리스트 FAQ : http://www.tux.org/lkml/


=추후, 자료를 모으는 대로 갱신할 예정=

리눅스 커널 소스 아카이브 : http://www.kernel.org

리눅스 커널 소스 웹에서 보기 : http://lxr.linux.no




리눅스에서 커널 소스 다운로드


wget이 설치되어 있어야합니다.

'apt-get install wget'로 설치해줍니다.


커널 2.4.32 다운로드 

'wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.32.tar.bz2'


커널 2.6.14 다운로드 

'wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2'


커널 소스 압축 풀기

'tar xvfj linux-2.4.32.tar.bz2'

+ Recent posts