
커널은 운영체제의 핵심으로, 펌웨어와 장치 드라이버의 도움을 받아 모든 하드웨어에 대한 가장 낮은 수준의 제어권을 갖는다. 프로그램의 메모리 접근을 관리하고, 어느 프로그램이 어느 자원을 쓸지 정하며, 디스크 · 플래시 같은 비휘발성 저장 장치의 파일시스템을 다룬다. 사용자 프로그램은 커널이 노출한 시스템 호출(system call)로만 하드웨어에 닿는다.
구조에 따라 모노리딕 커널(monolithic kernel)과 마이크로 커널(micro kernel)로 나눈다. 리눅스는 모노리딕이지만 모듈을 동적으로 싣고 내릴 수 있는 하이브리드 성격을 띤다.
| 역할 | 내용 |
|---|---|
| 프로세스 관리 | 스케줄링, 문맥 전환, 시그널 |
| 메모리 관리 | 가상 메모리, 페이징, 캐시 |
| 파일시스템 | VFS 를 통해 ext4 · XFS · Btrfs 등을 같은 인터페이스로 제공 |
| 장치 드라이버 | 하드웨어 추상화. 모듈(.ko)로 싣는다 |
| 네트워크 스택 | TCP/IP, 방화벽(netfilter), 라우팅 |
| 보안 | 권한 검사, LSM(SELinux · AppArmor), cgroup · namespace |
컨테이너는 별도의 커널을 쓰지 않는다. 호스트 커널의 namespace 와 cgroup 으로 격리할 뿐이라, 컨테이너 안의 uname -r 은 호스트 커널 버전을 보여 준다.
uname -r
uname -a
cat /proc/version
배포판은 메이저 버전 동안 커널을 고정하고 보안 패치만 백포트한다. RHEL 9 는 5.14, RHEL 10 은 6.12 계열이다. 더 새 커널이 필요하면 Kernel Update 를 본다.
lsmod
modinfo <모듈이름>
sudo modprobe <모듈이름>
sudo modprobe -r <모듈이름>
부팅 때 특정 모듈을 막으려면 /etc/modprobe.d/*.conf 에 blacklist 를 적는다. nouveau 비활성화 가 그 예다.
실행 중 값은 sysctl 로 보고 바꾸며, 영구 설정은 /etc/sysctl.d/*.conf 에 둔다.
sysctl -a | grep vm.swappiness
sudo sysctl -w vm.swappiness=10
echo 'vm.swappiness = 10' | sudo tee /etc/sysctl.d/90-tuning.conf
sudo sysctl --system
부팅 인자(selinux=0, rd.break 등)는 GRUB 에서 주며 Single boot 에 정리했다. 데이터 플랫폼에서 자주 건드리는 항목은 THP 설정 과 Ulimit 에 있다.