커널, kernel이란?
리눅스 커널이란
- Linux의 운영 체제(OS)의 주요 구성 요소.
컴퓨터 하드웨어 와 프로세스를 잇는 핵심 인터페이스이며, 두 가지 관리 리소스 사이에서 최대한 효과적으로 통신함.
커널의 기능
- 메모리 관리 : 메모리가 어디에서 무엇을 저장하는데 얼마나 사용되는지 추적.
- 프로세스 관리 : 어느 프로세스가 중앙처리장치(CPU)를 언제, 얼마나 사용할지 결정.
- 장치 드라이버 : 하드웨어-프로세스 사이에엇 중재자/인터프리터의 역할을 수행.
- 시스템 호출 및 보안 : 프로세스의 서비스 요청 수신.
- 올바르게 구현된 커널은 사용자가 볼 수 없으며, 커널 공간이라는 자신만의 작업 공간에서 메모리를 할당, 저장되는 모든 항목을 추적한다.
커널의 위치
- 하드웨어 : 시스템의 토대가 되는 물리적 머신. 메모리(RAM)와 프로세서 또는 중앙처리장치(CPU), 입출력 장치(예: 스토리지, 네트워킹 및 그래픽)로 구성.
CPU는 계산을 수행하고 메모리를 읽고 씀.
- Linux 커널 : OS의 핵심. 메모리의 상주하며 CPU에 명령을 내리는 소프트웨어.
- 사용자 프로세스 : 실행 중인 프로그램으로 커널의 관리. 이것이 모여 사용자 공간을 구성한다.
- 시스템에서 실행되는 코드는 커널 또는 사용자 모드라는 두 모드 중 하나로 CPU에서 실행됨.
커널 모드 - 하드웨어에 무제한 액세스가 가능.
사용자모드 - CPU 및 메모리가 SCI를 통해 액세스하는 것을 제한.
- 위의 작은 세부 사항이 복잡한 작업의 토대가 되며, 이는 프로세스가 사용자 모드에서 실패할 경우 손상이 제한적이며 커널에 의해 복구될 수 있음을 의미한다. 그러나 커널 프로세스의 경우 충돌이 발생하면 시스템 전체가 중지될 수 있다.
- 안전장치가 마련되어 있고, 경계를 넘기 위해서는 권한이 필요하기 때문에 사용자 프로세스 충돌은 일반적으로 커다란 문제를 유발하지는 않는다.
커널 파라미터
- 리눅스에서 사용되는 시스템 변수.
커널 변수 값을 제어하여 시스템을 운영 용도에 맞게 최적화 할 수 있다.
- 경로는
/proc/sys
디렉토리 밑에 존재하며 절대경로의 수정을 통해 설정 변경이 가능하지만, sysctl
을 통해 간편하게 설정할 수 있다.
- 시스템을 관리하고 제어하며, 메모리와 프로세스에게 값을 할당한다.
- 커널 파라미터의 값을 설정하는 이유는 커널 변수의 값을 제어하여 시스템을 제어할 수 있기 때문.
영구 설정
- 커널 파리미터 추가
# vi /etc/sysctl.conf
kernel.sysrq = 1
- 설정 적용
# sysctl -p
- 추가 설정된 파라미터 적용 확인
# sysctl -a | grep kernel.sysrq
kernel.sysrq = 1
or
# sysctl kernel.sysrq
kernel.sysrq = 1
자주 사용되는 커널 파라미터
참고 블로그
참고 블로그2
Linux 변경점
# uname -a
- 옵션
-a
: 전체
-s
: 커널명
-n
: 호스트명
-r
: 커널 릴리즈
-v
: 커널 버전
-m
: 머신
리눅스
- 리눅스 커널 2.6.32
- 시스템 성능 개선
- 선점 형 동작 : 커널 동작 중에도 특정 시간 동안 어떤 프로세스가 디바이스를 점유할 것인지를 결정하는 I/O 스케줄러가 개선되어 한 프로세스가 너무 오래 대기하지 않도록 효율적으로 배분해 시스템에 부하가 많이 걸렸을 때도 사용자 입력에 대해 빠르게 응답함.
- 하이퍼스레딩 : 하나의 CPU를 2개 이상의 CPU로 활용하는 기능. 부하를 분산하고 최적화.
- 디바이스 정보
- 서버 성능 향상
- NUMA (Non-Uniform Memory Access) 지원
: 커널 2.4까지는 여러 개의 CPU가 메모리를 사용할 겨웅 같은 주소에 메모리를 access하므로 병목현상이 발생함. 2.6에서는 위상 API 스케줄러를 통해 최대한 효율적으로 가까운 리소스를 활용함으로 병목현상을 없앴으며 비 연속적 메모리 사용이 가능함.
- 커널에서 디바이스 지원 개수 증가
- 모듈 서브 시스템의 안정성 향상
- 데스크톱 성능 향상
- 리눅스 커널 4.15
- 멜트다운/스펙터 (Meltdown/Spectre)
- 멜트다운 : '비순차적 명령어 처리'기술의 버그를 악용한 보안 취약점. 보안을 위해 응용프로그램이 CPU의 캐시 메모리에 접근하지 못했던 기존 하드웨어 구조가 통째로 무너짐.
- 스펙터 : CPU 속에 있는 수 많은 명령어에서 일어나는 버그를 악용한 보안 취약점. 멜트다운처럼 보안 구조가 통째로 무너지는 것은 아니지만, 처리 중인 데이터 가운데 일부가 해커에게 노출될 수 있음. 추적이 굉장히 어렵다.
- 문제가 된 비순차적 명령어 처리 기술을 비활성화해 문제해결.
- 참고
- AMD amdgpu 드라이버 모드 설정 및 더 나은 디스플레이 지원
- AMD가 최신 그래픽 하드웨어용으로 만든 새로운 드라이버인 amdgpu 드라이버에서 오랫동안 누락되었던 "디스플레이 코드"(132k LoC)가 마침내 포함됨.
- SATA Link Power Management가 있느 시스템의 향상된 전원 관리
- 새로운 아키텍처 : RISC-V
- RISC-V CPU에 대한 포트의 주요 부분이 포함됨.
- AMD 보안 암호화 가상화 지원
- 사용자 모드 명령 방지 Intel Security 기능 지원
- 리눅스 커널 5.4
- 커널 lockdown 모드 추가.
- lockdown모드 : 유저 프로세스와 커널을 분리, 루트 계정이 코널 코드를 수정하는 것을 방지하는 기능.
- exFAT 파일 시스템 지원이 이제 커널단에서 이뤄져, exFAT으로 포맷된 드라이브 이용이 편리해짐.
- AMD Navi 12/14 GPU, AMD Arcturus GPU, AMD Dali APU 지원
- AMD뿐만 아니라 인텔 Tigerlake Gen12 그래픽 지원도 추가.
- 가상화 업데이트
- Red Hat Enterprise Linux 5.4는 x86_64 기반 아키텍처에서 KVM (Kernel-based Virtual Machine) 하이퍼바이저를 완전 지원
레드햇 계열
- CentOS(Community ENTerprise Operating System)
- Red Hat Enterprise Linux의 소스코드를 바탕으로 호환을 목표로 개발된 오픈 소스 Linux 배포판.
- 64비트 x83 시스템 아키텍처만을 지원함.
AWS 및 Google 클라우드에 대한 일반적인 초기 이미지도 제공.
- 1) CentOS 6
- 리눅스 커널 2.6.32 채택.
커널 모드 디스플레이 드라이버 등이 크게 개선되었다.
- 가상화 기술로 KVM이 도입됨.
- 2) CentOS 7
- System V init 대신 systemd를 채택. 기존의 init보다 더 많은 기능을 제공함. 부팅속도가 향상되었고, shell`s overhead 또한 감소.
- 패킷 필터링을 관리하는 방화벽과 Network Manager도 본격적으로 도입됨.
- 기본 파일 시스템이 xfs로 변화됨.
- ext3에 비해 8배 많은 inode를 생성할 수 있다.
- 메타데이터 저널링 및 빠른 복구 제공.
- 파일 시스템 포맷이 타 시스템에 비해 압도적으로 빠름.
- 동일 크기 파일 삭제 액션이 빠르다. 그러나, 대용량 위주의 시스템이기 때문에 작은 단위 파일처리에 대해서는 오히려 속도가 느림.
- 3) CentOS 8
systemctl restart network
명령으로 변경 사항을 반영할 수 없음.
- 수명 종료, 및 CentOS Stream으로 변경됨.
- 기본 패키지 매니지먼트가
yum
에서 dnf
로 변경됨. 여전히 yum
을 사용할 수 있지만, dnf
의 사용을 권장.
- Python 3.6, MariaDB 10.3, MySQL 8.0, PostgreSQL 10, PostgreSQL 9.6, Redis 4.0 등을 기본 지원
- GNOME의 버전이 GNOME 3.28로 업그레이드
- 기본 디스플레이 서버가 Xorg에서 Wayland로 변경
- Cockpit이라고도 하는 RHEL 8 웹 콘솔을 사용하여 가상 머신을 생성하고 관리할 수 있음
- QEMU 에뮬레이터에서 샌드박스 기술이 도입되어 가상 머신의 보안이 강화됨.
데비안 계열
- Ubuntu
- LTS : Long Term Support, 장기간의 사후지원 기능.
2년에 한 번 씩 출시되며, 짝수 년도 4월 버전이 LTS 버전이다. 지원 기간은 5년이다.
- 1) Ubuntu 12.04 LTS
- 유니티 5.0 탑재.
- Lens Quictlists로 빠른 탐색 가능.
- CCSM에 추가항목 탑재
- Unity Greeter의 업데이트로 로그인 배경화면 지정 가능
- 소프트웨어 센터 속도 개선
- 리듬박스가 다시 기본 음악 플레이어가 되고, 톰보이와 gBrainy가 기본 설치되지 않음.
- libreoffice 3.5 베타 2 설치
- 'Apport' Crash reporting 기본 사용가능.
- 2) 우분투 트러스티(TRUSTY) 14.04 LTS
- 가장 안정적인 버전.
기존의 오류가 대부분 픽스되어 배포되었다.
- 3) 우분투 Xenial 16.04 LTS
- 소프트웨어 센터 변경
우분투 소프트웨어 센터를 삭제하고 GNOME 소프트웨어 센터를 설치하여 이전에 비해 앱스토어나 플레이스토어 같이 구성이 변경됨.
설정에 있던 업데이트가 소프트웨어 센터 안으로 옮겨졌으며 전체적으로 시인성이 강화됨.
- 한/영키를 제대로 지원.
- AMD 라데온이나 APU를 사용하고 있는 경우 드라이버를 지원하지 않으므로 직접 설치해야함.
- 4) Ubuntu 18.04
- Xorg가 기본 디스플레이 서버가 됨.
- 리눅스 커널 4.15 지원.
- Dock을 제거하는 기능은 없다.
- Python2가 사전 설치 되어 있다.
- PHP는 7.3 버전
- 5) Ubuntu 20.04
- Xorg가 기본 디스플레이 서버.
- 리눅스 커널 5.4를 지원하며, 기본 ExFAT 지원 및 기타 성능이 향상됨.
- 32비트 지원 시스템이 없다.
- 시각적인 개선.
- Extensions 응용 프로그램을 사용해 Dock을 제거할 수 있음.
- 설치시간과 부팅시간 개선
- 기본적으로 Python3.
- PHP 7.4는 기본 설치 가능 버전입니다.
- 6) Ubuntu 22.04
- GNOME 42 사용으로 인한 시각적 변화.
- Grub 부트로더 2.06 버전 사용. 기본적으로 os-prover 기능이 비활성화되어 있다.
- 새로운 펌웨어 업데이터 앱.
- 새로운 설치 프로그램
- Raspberr Pi에 대한 향상된 지원
- Wayland를 기본 디스플레이 서버로 사용.
- 새로운 수평 작업 공간 전환기와 앱을 재정렬할 수 있는 수평 앱 실행기 지원.
- Active Directory에 대한 많은 지원과 방화벽 백엔드.
1
2
3
4