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

Post on 19-Jul-2015

93 Views

Category:

Software

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Session 5

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

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

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

우분투 커널 이야기

예상되는 대상

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

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

우분투 커널과 리눅스

커널 빌드

커널 모듈

부트로더

리눅스 커널

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

우분투 커널

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

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

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

우분투 커널

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

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

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

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

GNU/Linux

리눅스냐 GNU/Linux 냐 ?

운영체제에서 커널 (kernel)

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

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

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

GNU/Linux

커널 버젼 알아보기

$ uname -a

$ finger kernel@ftp.kernel.org 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 부분이 짝수이면 안정버전 , 홀수이면 개발 버젼

커널소스 받아보기

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

커널소스 받아보기 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

커널 설정하기

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

커널 설정하기

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

make menuconfig make xconfig make gconfig

커널 빌드하기

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

커널 빌드하기

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

커널 빌드하기

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

커널 모듈

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

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

존재한다 .

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

존재한다

DKMS

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

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

$ dkms status

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

구성돼 있다

부트로더

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

mbr grub

Grub

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

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

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

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

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

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.

유용한 팁

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

다른 용어들

fuse kvm hal kernel thread uuid initrd alsa pulseaudio

top related