1 / 55

5. 리눅스 커널

5. 리눅스 커널. 리눅스 디렉토리 구조와 커널에 대해 알아보자 . 5. Linux Kernel. 목 차 Linux file structure 커널이란 ? Kernel file structure Kernel upgrade. 디렉토리 구조. 5. Linux Kernel. Linux file structure . 5. Linux Kernel. Linux file structure / (root)

nay
Télécharger la présentation

5. 리눅스 커널

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 5. 리눅스 커널 리눅스 디렉토리 구조와 커널에 대해 알아보자.

  2. 5. Linux Kernel 목 차 • Linux file structure • 커널이란? • Kernel file structure • Kernel upgrade www.huins.com

  3. 디렉토리 구조

  4. 5. Linux Kernel • Linux file structure www.huins.com

  5. 5. Linux Kernel • Linux file structure • / (root) • 루트 디렉토리는 최상위 디렉토리이며, 모든 디렉토리는 / 를 기준으로 생성된다. /는 모든 디렉토리의 출발점이자 다른 파티션의 연결점으로, 일반적으로 데이터를 저장하지 않는다. 예를 들면 CD-ROM과 같은 장치의 경우 윈도우에서는 D 드라이브와 같이 순차적으로 드라이브 이름이 할당되지만, 리눅스에서 CD-ROM을 사용하려면 마운트라는 절차를 통해 / 디렉토리 하부 디렉토리에 붙여서 사용하게 된다. • (ex : #mount /mnt/cdrom/) • /bin • 시스템을 사용하기 위한 기본적인 명령어가 존재하며 싱글 모드로 부팅할 때 사용하는 명령어와 시스템을 복구할 때 사용하는 명령어와 시스템을 복구할 때 사용하는 필수 명령어 등이 존재한다. www.huins.com

  6. 5. Linux Kernel • Linux file structure • boot • 부팅에 필요한 커널과 부팅할 때 필요한 핵심 파일이 들어있다. 부팅할 때 부트로더가 커널의 위치를 참조하고 해당 커널은 /boot 디렉토리에 존재한다. 일반적으로 8GB이상의 하드디스크는 실린더를 1024개 이상으로 형성하여 8GB 이상의 하드디스크를 구성한다. • 과거의 8GB 이하의 하드디스크는 문제가 없으나 8GB이상의 하드디스크는 실린더 개수가 1024개를 넘어서며, 리눅스 커널이 실린더 1024이상을 넘어서는 곳에 위치할 경우 부트로더가 해당 커널을 불러들이지 못하는 문제가 발생하였다. 이러한 문제를 해결하기 위해 제일 먼저 생성한 최소한의 파일시스템을 /boot로 연결하여 커널이 항상 실린더 1024 안쪽에 위치하게 함으로 생성된 문제를 해결하고자 생성된 디렉토리 이다. www.huins.com

  7. 5. Linux Kernel • Linux file structure • /dev • 리눅스에서 장치 사용할 떄 필요한 장치 파일이 위치한다. 이 디렉토리에는 파일을 저장하지 않으며 이러한 장치 파일은 아주 특별한 경우가 아니라면 스스로 생성하지 않으므로, 해당 디렉토리의 내용은 거의 변경되지 않는다. • /etc • 리눅스에서 사용되는 application과 서버 프로그램의 환경설정에 필요한 설정파일이 존재한다. 실행 파일은 존재하지 않으며, 편집기를 통해 해당 파일의 변경을 통해 시스템의 설정을 변경하는 디렉토리 이므로 수시로 백업해 두는 것이 좋다. • /home • 일반 사용자의 홈 디렉토리가 생성되는 곳이다. (ftp, mysql, tomcat 등 별도의 공간을 요구하는 서비스를 위한 디렉토리로 사용할 수도 있다.) www.huins.com

  8. 5. Linux Kernel • Linux file structure • /lib • 시스템 운영 및 프로그램 구동할 때 필요한 공유 라이브러리와 부팅할 때 사용되는 커널 모듈이 포함되어 있다. /lib 내부의 파일을 함부로 삭제하거나 변경하면 안된다. • /lost+found • 시스템을 부팅할 때 파일시스템의 이상 유무를 진단하여 문제가 있으면 구동되는 fsck(File System Check) 명령어가 사용되는 디렉토리로 개별 파일 시스템의 최상위 디렉토리마다 존재한다. 만약 파일시스템을 점검할 때 파일이 손상되었다면 해당 데이터를 해당 파일시스템에 존재하는 lost+found 디렉토리를 이용하여 복구 과정을 진행한다. • 만약 손상된 데이터를 복구하지 못했다면 문제가 발생된 파일시스템에 존재하는 lost+found 디렉토리에 복구하지 못한 데이터 파일이 복사된다. (일반적인 상황에서는 이 디렉토리에 파일이 존재하지 않는것이 정상이다.) www.huins.com

  9. 5. Linux Kernel • Linux file structure • /misc • 시스템 아키텍처에 독립적인 자료들이 저장되는 디렉토리로 거의 사용하지 않는다. • /mnt • CD-ROM과 플로피 장치에 대한 기본 마운트 포인트를 제공한다. 일반적으로 해당 디렉토리는 비어 있으며 CD-ROM이나 플로피를 마운트한 후 해당 디렉토리로 이동할 경우 해당 매체의 내용을 볼 수 있다. • Example :#mount /mnt/cdrom (CD-ROM일 경우) #mount /mnt/floppy (플로피의 경우) • /opt • add-on 패키지가 설치되는 디렉토리로서 표준 레드햇 리눅스 배보판에 존재하지 않는 패키지가 설치될 경우 이 디렉토리에 설치된다. (거의 사용하지 않는다.) www.huins.com

  10. 5. Linux Kernel • Linux file structure • /proc • 프로세스와 시스템 정보를 제공하기 위한 목적으로 설계된 가상 파일 시스템을 사용하는 디렉토리이다. 프로그램을 구동하게 되면 /proc 에 해당 프로세스의 PID 번호에 해당하는 디렉토리를 생성하여 프로세스의 진행 상황을 추적하고 관리하기 위한 목적으로 생성되었다. • 디렉토리내에 문자로 이루어진 이름의 디렉토리와 파일은 시스템 및 커널 정보를, 숫자로 이루어진 이름의 디렉토리는 현재 실행되고 있는 프로세스의 정보를 담고 있다. • /proc 디렉토리의 파일은 cat 혹은 more 명령어로 읽을 수 있으며 특정 파일의 경우 echo 혹은 sysctl 과 같은 명령어로 내용을 변경할 수도 있다. www.huins.com

  11. 5. Linux Kernel • Linux file structure • /sbin • 관리자가 사용하는 시스템 운영에 필요한 명령어가 존재하는 디렉토리. 일반 사용자가 /sbin 디렉토리에 들어 있는 명령어를 실행할 때, 절대경로를 사용하지 않으면 명령어가 존재하지 않는다는 메시지를 받는다. • (ex : /home/httpd2/bin 디렉토리에 htpasswd라는 명령어를 수행할 경우, 환경 변수에 /home/httpd2/bin 디렉토리가 정의되어 있지 않다면, 이 명령어를 실행할 때마다 /home/httpd2/bin/htpasswd 라는 절대 경로로 실행한다. ) • /tmp • 프로세스 생성 과정에서 발생되는 임시 파일을 저장하는 디렉토리. 수시로 파일이 생성되고 삭제된다. 시스템을 재구동 하는 경우, 이 디렉토리에 존재하는 파일은 모두 삭제되므로 파일을 저장하는 용도로 사용할 수 없다. 또한 이 디렉토리의 속성을 임의로 변경하지 않는것이 좋다. www.huins.com

  12. 5. Linux Kernel • Linux file structure • /usr • 프로그램을 설치할 때 패키지에 포함된 대부분의 파일이 이곳에 설치된다. X 윈도우 관련 프로그램, 사용자 명령어, 프로그램 관련 문서, 게임, C 프로그램의 헤더파일, GNU info 파일, 라이브러리, 매뉴얼, 시스템 명령어, 커널과 패키지 소스가 이곳에 설치된다. • /var • 내용이 자주 변경되는 가변 자료가 저장된다. 시스템 운영할 때 발생되는 로그(log), 메일 송/수신할 때 임시로 저장되는 스풀(spool), 프린터로 전송하기 위해 임시로 저장하는 프린트 스풀 데이터, 레드햇 배보판에서 패키지로 제공하는 아파치(apache) 웹 서버 관련 자료(/var/www), MySQL의 데이터 베이스, FTP의 최상위 디렉토리 등이 그 대표적이 예이다. 만일 이러한 서비스를 제공하는 서버로 리눅스를 운영한다면, /var 디렉토리를 만드는 것이 좋다. www.huins.com

  13. 커널 리눅스 디렉토리 구조와 커널에 대해 알아보자.

  14. 5. Linux Kernel • 커널이란? • 운영체제에서 가장 기초적이고 핵심적인 기능을 담당하는 부분으로 기억장소에 상주한다. • 기억장소, 메모리, 파일, 주변장치 등 시스템을 구성하는 중요한 자원 관리. • 시간관리, 프로세서 관리, CPU 스케줄링, 입출력 제어 등 컴퓨터 운영에 필요한 핵심 사항 처리. • 운영체제는 이러한 커널과 최소한의 필요한 도구들을 묶어 놓은 “소프트웨어 묶음(Software Bundle)”이라 할 수 있다. www.huins.com

  15. 5. Linux Kernel • 커널이란? - 커널 접근 방식 www.huins.com

  16. 5. Linux Kernel • 커널이란? - 커널 접근 방식 • Monolithic Kernel • 하나의 커널에 필요한 모든 기능이 통합되어 있는 것. • 같은 메모리 공간 안에 필요한 기능들이 존재하고 있기 때문에 모놀 리딕 커널은 함수 호출 (Function call)방식으로 커널에서 제공하는 기능 접근. • 장점 : 구현이 간편하며, 시스템 자원을 효율적으로 이용 가능. • 단점 : 구현된 커널을 다양한 하드웨어 환경이나 상이한 다른 시스템에서 포팅하기 어렵다. 기능이 확장되는 경우, 커널의 크기가 커지고 관리가 매우 어려워진다. • 대표적 운영 체제 : Unixware, Solaris, AIX, IRIX, Linux 등 www.huins.com

  17. 5. Linux Kernel • 커널이란? - 커널 접근 방식 • Micro Kernel • 필요한 기능들을 작은 서버 모듈로 나누어 설계하고, 이들 서버를 관리할 수 있는 최소한의 기능만을 커널 핵심부분으로 구현. • 장점 : 하드웨어 환경에 따라 기능의 확장과 기능 재구성이 용이하고, 다른 시스템에서 재사용이 용이하다. • 단점 : 서비스를 사용하는 과정에서 여러번의 메시지 전송과 컨텍스트 스위칭(context switching)이 발생하기 때문에 실용적인면에서는 속도가 느리다. • 대표적 운영 체제 : Cray UNICOS/mk, CMU Mach OS, Digital UNIX, Linux Mk 등 www.huins.com

  18. 5. Linux Kernel • 커널이란? - 커널 구조 www.huins.com

  19. 5. Linux Kernel • 커널이란? - 커널 구조 • 프로세스 관리(Process Management) • 프로세스의 생성 및 소멸 • 프로세스 간의 통신 • CPU 스케줄링 동기화 • 제한된 자원에 대한 다중 프로세서의 효율적인 • 관리 기법 제공 • 메모리 관리(Memory Management) • 가상 메모리 관리기법 제공 • 메모리 하드웨어의 효율적인 관리 • 네트워크 관리(Network Management) • 통신 프로토콜 구현 • 네트워크 라우팅 및 주소 지정 • 네트워크 제어기 관리 www.huins.com

  20. 5. Linux Kernel • 커널이란? - 커널 구조 • 파일 시스템 관리(File System Management) • 가상 파일 시스템에 의한 여러 파일 시스템 타입 지원 • 디스크의 물리적 구조를 논리적 구조로 표현하는 기법 • 파일(정규 파일, 장치 파일, 파이프), 디렉토리 관리 • 블록 입출력을 위한 버퍼 캐시 관리기법 제공 • 디바이스 관리(Device Management) • 입출력 요청 검증 • 입출력 요청 작업의 스케줄링 • 주변 장치와 메모리 간의 자료 전송 • 입출력 제어기 관리 • 인터럽트 요청 및 처리 www.huins.com

  21. 5. Linux Kernel • 커널이란? - 커널 소스 • 커널 소스에는 시스템에서 사용되어지는 물리적 장치에 대한 정보 및 실행되는 프로그램에 대한 핵심적인 코드가 들어 있다. 리눅스는 많은 아키테처를 지원하며, 해당 아키텍처별로 사용되어지는 물리적 장치에 대한 정보가 커널 소스에 모두 들어있다. • 예를 들면, MS윈도우즈에서는 특정 장치를 사용할 때, 해당 장치를 인식하기 위한 드라이버 디스크를 제공하여, 설치 후 사용할 수 있다. 리눅스에서는 해당 장치에 대한 정보가 커널 소스에 들어 있으며, 그 중 사용자의 시스템은 어떠한 장치를 사용한다는 정보를 뽑아내어 커널에 반영한다. 이러한 커널이 부팅할 때 메모리로 로딩되면서 해당 장치에 대한 제어 정보를 가지게 되어, 여러 가지 장치를 사용할 수 있는 OS의 기능을 한다. www.huins.com

  22. 5. Linux Kernel • 커널이란? - 커널 소스 • 일반적으로 커널 소스 파일은 linux-2.4.20.tar.gz와 같은 형태로 표시된다. • 소스의 버전은 linux-x.y.z와 같은 숫자로 명시하며, ftp.kernel.org에서 소스를 내려받을 수 있다. • x : Major Version이라 칭하며, 커널 자체에 획기적인 영역이 추가 될 때 변한다. • y : 홀수인지 짝수인지가 중요하며, 홀수는 새로운 기능이 추가되어 개발 중인 베타버전이며, 안정버전이 되면, +1을 한 짝수로 표시한다. • z : 기능상 추가된 내용은 없지만 문제가 되는 버그를 수정한 횟수 를 표시하는데 숫자가 높을 수록 많은 버그 수정이 되었다는 것 을 의미한다. www.huins.com

  23. 커널 소스 구조

  24. 5. Linux Kernel • 커널 소스 구조 www.huins.com

  25. 5. Linux Kernel • 커널 소스 구조 • fs : 논리적인 파일 시스템을 처리하는 부분. 리눅스에서는 가상 파일 시스템을 사용하여 동시에 여러 가지 파일 시스템을 지원할 수 있다. 가장 중요한 파일 시스템은 proc과 ext2이다. • init : 커널을 시작하는데 필요한 함수들이 있다. 그 중에서 start_kernel() 함수에 의해서 passing된 부팅 파라미터를 고려하여 커널을 초기화한다. www.huins.com

  26. 5. Linux Kernel • 커널 소스 구조 • arch : 임베디드 시스템의 하드웨어 환경에 의존된 CPU에 따른 기능 구조를 제공한다. 즉 지원하고 있는 타겟 보드에 따라 CPU에 의존적인 코드가 있다. 부팅과정, 메모리 관리 방법, 프로세스 처리 부분들이 모두 다르므로 가장 하드웨어와 밀접한 소스 코드가 집합되어 있다. • 앞의 그림에서 CPU는 mips, alph, sparc, ppc, i386 을 제공 하며, 타겟 보드의 CPU는 StrongARM임에 따라 arm 디렉토리를 보면 된다. • “arch/arm” 디렉토리에 개발 보드 CPU인 StrongARM에 대한 소스 코드가 작성되어 있다. www.huins.com

  27. 커널 업그레이드 리눅스 디렉토리 구조와 커널에 대해 알아보자.

  28. 5. Linux Kernel • 커널 업그레이드 • 커널 업그레이드의 필요성 • Linux CD에서 현재 설치된 Kernel source 가져오기 • Web server에서 최신 커널 소스 다운로드 • 커널 업그레이드 • 4.1 커널 소스 풀기 • 4.2 make menuconfig 실행 • 4.3 .config 파일 복사 • 4.4 설정 영역 의존성 검사 (make dep) • 4.5 이전 커널 컴파일시 생성된 파일 삭제 (make clean) • 4.6 커널 생성 • 4.7 커널 복사 • 4.8 모듈 생성 • 4.9 모듈 설치 • 4.10 모듈 의존성 파일 생성 • 4.11 grub.conf 파일 수정 www.huins.com

  29. 5. Linux Kernel • 커널 업그레이드 • 커널 업그레이드의 필요성 • 일반적인 리눅스 배포판의 커널은 배포판을 이용하는 유저들이 어떤 하드웨어를 사용하는지 그리고 어떤 목적으로 사용할 것인지 알 수 없으므로 여러 다른 많은 종류의 하드웨어와 상당수의 설정들을 지원 하도록 설정되어 배포된다. • 따라서 커널 이미지의 크기가 커질 수 밖에 없고, 사용하지 않는 여타 기능들이 많이 추가 되었으므로 시스템에 최적화되지 못해 성능이 떨어지게 된다. 즉, 불필요한 기능을 커널에 포함시키거나 모듈로 설정하였을 경우 시스템이 전반적으로 무거워지고 많은 메모리를 소모하게 된다. • 또한 정작 나에게 필요한 기능은 포함되지 않는 경우가 있어  특수한 기능을 이용하거나 나에게 필요한 기능만을 선택하여 사용할 수 있도록 하기 위해 커널 컴파일이 필요하다. www.huins.com

  30. 5. Linux Kernel • 커널 업그레이드 (1) • Linux CD에서 현재 설치된 Kernel source 가져오기 리눅스를 처음 설치할 때, 개인 데스크탑으로 설치했기 때문에 커널 업그레이드에 필요한 패키지가 거의 없다. 따라서 패키지를 추가하기 위해 옆의 화면과 같이 메뉴를 선택한다. www.huins.com

  31. 5. Linux Kernel • 커널 업그레이드 (2) • Linux CD에서 현재 설치된 Kernel source 가져오기 개발용 도구와 커널개발을 선택하여 체크한 후, [업데이트]를 누른다 www.huins.com

  32. 5. Linux Kernel • 커널 업그레이드 (3) • Linux CD에서 현재 설치된 Kernel source 가져오기 [계속 진행]을 누른다. www.huins.com

  33. 5. Linux Kernel • 커널 업그레이드 (4) • Linux CD에서 현재 설치된 Kernel source 가져오기 [확인]을 누른다. www.huins.com

  34. 5. Linux Kernel • 커널 업그레이드 (5) • Linux CD에서 현재 설치된 Kernel source 가져오기 [확인]을 누른다. www.huins.com

  35. 5. Linux Kernel • 커널 업그레이드 (6) • Linux CD에서 현재 설치된 Kernel source 가져오기 Install이 완료 되었으므로 [확인]을 누른다. www.huins.com

  36. 5. Linux Kernel • 커널 업그레이드 (7) • Web server에서 최신 커널 소스 다운로드 호스트 명에 ftp.kernel.org를 입력하고 포트는 21번을 입력한다. 그리고 나서 왼쪽의 컴퓨터 아이콘 클릭한다. www.huins.com

  37. 5. Linux Kernel • 커널 업그레이드 (8) • Web server에서 최신 커널 소스 다운로드 /pub/linux/kernel밑의 v2.4디렉토리를 선택한다. www.huins.com

  38. 5. Linux Kernel • 커널 업그레이드 (9) • Web server에서 최신 커널 소스 다운로드 자신이 원하는 위치에 linux-2.4.24.tar.bz2 를 다운받는다. (/usr/src밑에서 받는 것이 좋다.) www.huins.com

  39. 5. Linux Kernel • 커널 업그레이드 (10) • 커널 소스 풀기 • /usr/src 디렉토리에 있는 linux-2.4.20.tar.bz2 커널 소스를 tar xvfj명령어를 통해 압축을 푼다. www.huins.com

  40. 5. Linux Kernel • 커널 업그레이드 (11) • 커널 소스 풀기 • 압축을 풀고 나면 /usr/src 디렉토리에 linux-2.4.24 디렉토리가 생성된다. 여기에 ln –s 명령어를 이용하여 linux 심볼릭 링크가 linux-2.4.24 디렉토리를 가리키게 한다. www.huins.com

  41. 5. Linux Kernel • 커널 업그레이드 (12) • make menuconfig 실행 • /usr/src/linux-2.4.20-8 디렉토리로 가서 make menuconfig 를 실행한다. www.huins.com

  42. 5. Linux Kernel • 커널 업그레이드 (13) • make menuconfig 실행 www.huins.com

  43. 5. Linux Kernel • 커널 업그레이드 (14) • make menuconfig 실행 www.huins.com

  44. 5. Linux Kernel • 커널 업그레이드 (15) • .config 파일 복사 • 별도의 설정 없이 저장해도 레드햇에서 설정한 구성 요소가 저장이 된다. 저장되는 내용은 /usr/src/linux-2.4.20-8/.config 파일로 생성되며, 해당 파일이 바로 레드햇 리눅스가 제공하는 커널 구성 요소이다. www.huins.com

  45. 5. Linux Kernel • 커널 업그레이드 (16) • .config 파일 복사 www.huins.com

  46. 5. Linux Kernel • 커널 업그레이드 (17) • 설정 영역 의존성 검사 (make dep) • 이전 커널 컴파일시 생성된 파일 삭제 (make clean) • 커널 이미지 생성 www.huins.com

  47. 5. Linux Kernel • 커널 업그레이드 • make dep // 설정 영역 의존성 검사 • 커널 구성요소에 대한 의존성을 검사하는 과정이다. 모듈로 선택한 영역들간의 의존성에 대한 검사를 진행하여 .depend 라는 파일을 생성한다 • make clean //이전 커널 컴파일시 생성된 파일 삭제 • 설정 영역 의존성 검사가 정상적으로 이루어 졌다면 이전 커널 컴파일시 생성된 파일을 삭제하는 과정 진행한다. (만일 처음으로 컴파일 과정을 수행한다면 이 과정을 생략해도 된다.) • 이전에 생성된 오브젝트 파일, 커널, 임시 파일, 설정값 등을 삭제한다. • 이 과정을 수행하지 않으며 새로 수정한 내용이 반영되지 않는다. • make bzImage //커널 이미지 생성 • 커널 이미지를 만드는 명령이다. 이 명령어를 통해 부팅할 수 있는 새로운 커널 이미지가 만들어 진다. cpu 종류, 메모리 크기, 선택한 영역에 따라 컴파일에 소요되는 시간차이가 많다. www.huins.com

  48. 5. Linux Kernel • 커널 업그레이드 (18) • 커널 복사 • make bzImage 과정이 정상적으로 진행되었다면 bzImage라는 커널 이미지 파일이 생성된다. 새로 생성된 커널을 /boot 디렉토리에 복사하여 다음 부팅 시 새로운 커널을 이용할 수 있게 한다. www.huins.com

  49. 5. Linux Kernel • 커널 업그레이드 (19) • 커널 복사 • 새로 생성한 커널에 적합한 System.map을 적용하지 않으면 부팅 과정에서 간단한 경고가 출력된다. www.huins.com

  50. 5. Linux Kernel • 커널 업그레이드 (20) • 커널 복사 • 모듈 생성 • 모듈 설치 www.huins.com

More Related