noth - 우분투 커널이야기 (2009y05m30d)

22
Session 5 주제 : 우분투 커널 이야기 발표시간 : 15 발표자 : 노쑤 활동지역 http://www.ubuntu.kr http://www.kernel.kr http://www.androidside.com 개인 페이지 : http://kernel.gnukorea.com

Upload: ubuntu-korea-community

Post on 19-Jul-2015

93 views

Category:

Software


7 download

TRANSCRIPT

Page 1: Noth - 우분투 커널이야기 (2009Y05M30D)

Session 5

주제 : 우분투 커널 이야기 발표시간 : 15 분 발표자 : 노쑤 활동지역 http://www.ubuntu.kr

http://www.kernel.krhttp://www.androidside.com

개인 페이지 : http://kernel.gnukorea.com

Page 2: Noth - 우분투 커널이야기 (2009Y05M30D)

우분투 커널 이야기

예상되는 대상

커널에 대해서 관심은 있지만 전혀 모르는 사람 주요 주제

커뮤니티에서 언급되는 커널에 대한 용어 이야기

우분투 커널과 리눅스

커널 빌드

커널 모듈

부트로더

Page 3: Noth - 우분투 커널이야기 (2009Y05M30D)

리눅스 커널

Unix OS 의 clone 이다 POSIX 및 SUS 를 따른다 멀티태스킹 , 가상메모리 , 공유메모리 , demand

loading, shared copy-on-write excutable, 메모리 관리 , IPv4, IPv6

GPL LINUX® is a registered trademark

of Linus Torvalds http://www.kernel.org

Page 4: Noth - 우분투 커널이야기 (2009Y05M30D)

우분투 커널

우분투와 우분투 패밀리 제품을 위한 양질의

리눅스 커널 제공 모든 우분투 관련 기술은 리눅스 커널에 기반한다 .

최고의 free swotware 개발 플랫폼 https://wiki.ubuntu.com/KernelTeam

Page 5: Noth - 우분투 커널이야기 (2009Y05M30D)

우분투 커널

개방형 모델에서 , 커뮤니티와 업스트림 기반으로 공동 개발한다 .

사용자 기대에 부흥하게 광범위한 하드웨어 지원한다 .

리눅스 커널에 대한 중앙 패키지 관리 아키텍처와 포트를 지원합니다

바닐라 리눅스 커널 빌드 및 패키징 지원 리눅스 커널 버젼을 사용한다 .

Page 6: Noth - 우분투 커널이야기 (2009Y05M30D)

GNU/Linux

리눅스냐 GNU/Linux 냐 ?

운영체제에서 커널 (kernel)

GNU 소프트웨어 ( 윈도우 시스템 , 컴파일러 , 다양한 셸 , 개발 도구 , 편집기 , 유틸리티 )

적절한 이름으로 "GNU/ 리눅스 " 를 선택

단지 커널만 언급할 경우에 " 리눅스 " 라고 부른다 하지만 현재 구별없이 사용되고 있다

Page 7: Noth - 우분투 커널이야기 (2009Y05M30D)

GNU/Linux

Page 8: Noth - 우분투 커널이야기 (2009Y05M30D)

커널 버젼 알아보기

$ uname -a

$ finger [email protected] X.Y.Z, X.Y.Z.A, X.Y.Z-rcB, X.Y.Z-rcB-mm

X 부분은 메이저 버전 번호이며

1995 년 3 월에 1.2.0, 1996 년 5 월에 2.0 이 릴리즈 Y 부분이 짝수이면 안정버전 , 홀수이면 개발 버젼

Page 9: Noth - 우분투 커널이야기 (2009Y05M30D)

커널소스 받아보기

ftp://ftp.kernel.org wget, curl apt-get source linux-source git

Page 10: Noth - 우분투 커널이야기 (2009Y05M30D)

커널소스 받아보기 git

sudo apt-get install git git-core http://kernel.ubuntu.com/git/ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-

karmic.git git tag | grep Ubuntu* git checkout Ubuntu-2.6.27-7.14 git fetch

Page 11: Noth - 우분투 커널이야기 (2009Y05M30D)

커널 설정하기

make help Cleaning targets Configuration targets Other generic targets Static analysers Kernel packaging Documentation targets Architecture specific targets

Page 12: Noth - 우분투 커널이야기 (2009Y05M30D)

커널 설정하기

make defconfig make allnoconfig make allyesconfig make allmodconfig make randconfig make oldconfig make silentoldconfig make config

make menuconfig make xconfig make gconfig

Page 13: Noth - 우분투 커널이야기 (2009Y05M30D)

커널 빌드하기

wget ftp://ftp.kernel.org/pub/linux/kernel/2.6/linux-2.6.29.3.tar.bz2

gpg tar xvjf linux-2.6.29.3.tar.bz2 cd linux-2.6.29.3 make menuconfig make make install

Page 14: Noth - 우분투 커널이야기 (2009Y05M30D)

커널 빌드하기

mkdir /tmp/kernel make mrproper make oldconfig make O=/tmp/kernel oldconfig make ARCH=arm mainstone_defconfig make ARCH=arm CROSS_COMPILE=armv5l- make V=1 all

Page 15: Noth - 우분투 커널이야기 (2009Y05M30D)

커널 빌드하기

sudo apt-get install build-essential sudo apt-get install kernel-package sudo apt-get install libncurses5-dev make-kpkg --initrd kernel_image \

kernel_headers linux_source modules_image dpkg -i xxx.deb

Page 16: Noth - 우분투 커널이야기 (2009Y05M30D)

커널 모듈

실행중인 리눅스 커널에 링킹할 수 있는

커널 오브젝트로 확장자 ko 이다 모노리릭 커널인 리눅스 커널의 단점을 보완한다 리눅스 커널을 가볍게 만든다 많은 디바이스 드라이버들이 커널 모듈 형태로

존재한다 .

시스템의 /lib/modules/$( uname -r ) 디렉토리에

존재한다

Page 17: Noth - 우분투 커널이야기 (2009Y05M30D)

DKMS

DKMS 는 일반적인 커널에 없는 모듈소스를 만드는 프레임웍이다

새로운 버젼의 커널이나 새로운 버젼의 모듈이 설치되면 자동으로 컴파일해서 설치한다

$ dkms status

그래픽카드 모듈이나 버춸박스 모듈이 이렇게

구성돼 있다

Page 18: Noth - 우분투 커널이야기 (2009Y05M30D)

부트로더

부트로더 (Boot loader) 란 운영 체제가 시동되기 이전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영 체제를 시동시키기 위한 목적을 가진 프로그램을 말한다 .

mbr grub

Page 19: Noth - 우분투 커널이야기 (2009Y05M30D)

Grub

BIOS 가 부팅 장치를 찾고 MBR 을 읽어온다 .

MBR 에 GRUB 스테이지 1 이 있으며 , 이는 스테이지 1.5 나 2 를 불러온다 .

스테이지 1.5 는 MBR 직후 30 킬로바이트 영역에 저장되며 이는 스테이지 2 를 불러온다 .

GRUB 스테이지 2 는 부트 메뉴나 프롬프트를 보여 준다 .

기본값 커널이나 사용자가 선택한 커널을 불러 온다 .

Page 20: Noth - 우분투 커널이야기 (2009Y05M30D)

Grub

grub> root (hd0,0)

grub> find /boot/grub/stage1

(hd0,0)

grub> setup (hd0)

Checking if "/boot/grub/stage1" exists... yes

Checking if "/boot/grub/stage2" exists... yes

Checking if "/boot/grub/e2fs_stage1_5" exists... yes

Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 17 sectors are embedded..........

/boot/grub/menu.lst"... succeeded

Done.

Page 21: Noth - 우분투 커널이야기 (2009Y05M30D)

유용한 팁

make headers_install make prepare make dir/ make dir/file[ois] make dir/file.ko make tags make cscope nm vmlinux | sort | less gdb vmlinux /proc/kcore

Page 22: Noth - 우분투 커널이야기 (2009Y05M30D)

다른 용어들

fuse kvm hal kernel thread uuid initrd alsa pulseaudio