Linux4

다원·2023년 1월 4일
0

kernel

시스템 리소스를 하드웨어 소프트웨어에게 할당하고 관리하는 역할
운영체제에게 특정 기능을 수행하도록 지시, 하드웨어 장치 드라이버를 통해서 하드웨어와 대화 및 소프트웨어 리소스를 할당해서 소프트웨어를 작동
자신만의 커스터마이즈된 새로운 커널을 생성 할 수 있음
커널을 수정할 경우 재 컴파일 해야되는 단점이 있어 모듈을 추가/삭제 하여 사용

커널은 이진파일(Binary), /boot 디렉터리에 위치
/boot 디렉터리에 원하는 커널 파일들을 넣어두면 부팅 시 프로세스를 통해서 해당 커널과 라이브러리(여러 프로그램에서 공통으로 수정없이 사용되는 스크립트 파일)모듈로 시스템을 가동 시킬 수 있음

커널 Micro kernel= Modular kernel & Monolithic kernel 두 가지로 나뉨

  • Modular kernel: 시스템이 실행되는 동안 커널이 참조하는 디렉터리에 소프트웨어 라이브러리 이진 파일인 모듈을 넣어두고 필요 시 로드/언로드하여 사용
    Linux 디폴트 커널 방식, 용량이 큰 프로그램 실행 할 때에는 라이브러리 모듈을 모두 메모리에 로드하고 실행시킬 경우 시스템에 부담
    라이브러리 모듈을 외부 디렉터리(lib/modules)에 두고 필요할 때마다 로드하여 사용
  • Monolithic: 필요한 모듈을 필요시 전체 커널을 한 번에 빌드 한 뒤
    모든 모듈을 로드해서 사용 실행 시 메모리 부담은 있음, Modular보다 빠르게 시스템 실행
    대부분 내부에 모든 라이브러리 가지고 있음
    DNS,DHCP 서비스 같은 라이브러리 모듈이 많지 않은 프로그램을 실행 할 때에는 라이브러리 모듈을을 한 번에 로드 한 뒤 실행

module

모듈은 작은 크기로 분할되어서 시스템 로드/언로드 하는 시간이 빠르고 빌드와 유지가 간편
라이브러리 모듈의 외부 디렉터리는 lib/modules

uname

시스템에 대한 정보 출력(커널 이름 출력)

module 관리 명령어

  • lsmod: module 정보 조회(현재 시스템에 설치되어있는 모듈들의 목록 확인)
    커널 자체가 사용하고 있을 경우 Used 0
  • insmod: 수동으로 커널에 새로운 모듈을 추가할 때 사용
  • depmod : 의존성 검사 뒤 modules.dep 파일을 갱신
  • modprobe: probe 탐침, 확인
    depmod에 의해 갱신된 moduled.dep 확인 및 적재
  • modprobe.conf: 커널에서 사용
  • rmmod: module 제거 (modprobe-f:종속적인 것들까지 제거)

comfile

  • kernel compile: Hardware compile 리눅스 버전(커널)을 올리는 작업
  • software compile: 어느 소프트웨어를 디폴트로 설치하지 않고 다른 소프트웨어와 연계해서 환경설정을 해서 설치하는 방법

kernel 구성

~.config 파일로 설정
CUI(command User Interface): make config
TUI(Text User Interface): make menuconfig
GUI(Graphic User Interface): make xconfig
** Linux에서 X 가 들어가면 Graphic

Linux 숨김 속성

.파일명, .디렉터리명 : 숨김 속성

Kernel upgrade

= 커널 컴파일
커널 소스를 쉽게 얻을 수 있음, 다양한 방법으로 커널을 운용할 수 있기 때문에 원하는 커널을 사용 중인 시스템에 맞춰 리빌드 해서 사용하면 시스템 효율이 좋아질 것

  • 현재 kernel 3.10.0 버전을 사용중인 것을 확인 할 수 있음
  • compile 설치
  • tar xvfz 명령어로 tar.gz 파일의 압축 해제
  • 압축 해제로 생성된 폴더를 살펴보면 Makefile이 존재하는 것을 확인 할 수 있음
  • .config 파일 생성
    make xconfig 명령어를 사용하여 GUI로 .config 파일 생성
    (xconfig를 위해 qt-devel 설치 필요)
  • bzImage 파일 생성을 위해 make bzImage
    (openssl 오류가 뜰 경우 openssl-devel 를 설치하여 실행)
  • bzImage 파일 생성 확인
    ls -l /usr/src/linux/arch/x86/boot
  • build
    make modules
    make modules_install
    ls /lib/modules: 생성한 커널파일을 확인해 볼수 있음
  • mkinitrd: make init ramdisk의 약자, 초기화 램 디스크 이미지를 만들어주는 명령
    부팅 시 필요한 블록 디바이스 모듈을 이미지로 만들 때 사용하는 명령
  • Makefile 확인
    /boot 밑에 있는 파일을 실행하기 위해 주석 해제
  • make install
    생성 커널 이미지를 부트 디렉터리로 이동
  • kernel 확인
    재부팅을 할 경우 kernel이 기존 3.10.0과 생성한 4.10.10 확인됨

    4.10.10 kernel로 접속하여 확인해보면 kernel 버전이 기존과 달라짐을 확인 할 수 있음

kernel update 2

/usr/src 디렉터리에 kernel 파일을

  • 도구 설치
    yum -y install ncurses-devel hmaccalc zlib-devel binutils-devel elfutils-libelf-devel qt-devel
  • make mrproper : 이전 바이너리 삭제
  • make clean :이전 컴파일 삭제
  • /boot/config에 있는 현재 커널을 .config 파일로 복사
  • make xconfig: 그래픽으로 .config 파일 생성
  • 경로를 살피고 .config 파일 저장
  • 숨김 파일로 저장됨을 확인 할 수 있음
  • .config 파일을 설치
  • make all
  • make moduels_install
  • make install
  • reboot
profile
공부일지,

0개의 댓글