- Linus Torvalds가 6.11 커널을 출시했음
- 그의 메시지 : "다시 한번 여행 중이고, 내 일반적인 시간대가 아니지만, 여기 비엔나에서는 일요일 오후이고, 6.11이 나왔음."
- 이번 릴리스의 주요 변경 사항에는
io_uring
의 새로운 bind()
및 listen()
작업, 중첩된 하프 락킹 패치, 바쁜 실행 파일에 쓰기 기능, Rust로 블록 드라이버 작성 지원, 블록 레이어에서 원자적 쓰기 작업 지원, 전용 버킷 슬랩 할당자, getrandom()
의 vDSO 구현 등이 포함됨
아키텍처별 변경 사항
- 64비트 Arm 아키텍처는 이제 ACPI 시스템에서 CPU 핫플러그를 지원함. 자세한 내용은 이 문서 커밋 참조
- X86 커널은 이제 AMD의 SEV-SNP 보안 암호화 가상화 기능을 사용하여 게스트로 실행 가능. 보안 VM 서비스 모듈 이용
- X86의 "fake EFI 메모리 맵" 기능 제거됨. 이 기능은 부팅 시 허구의 메모리 맵 항목을 만들 수 있게 하지만, 기밀 컴퓨팅 구성과 일치하지 않음
- x86-64 시스템용 AES-GCM 암호의 새로운 구현. 성능 향상이 항상 환영 받지만, 이 기여는 코드와 작동 방식에 대한 광범위한 문서화로도 주목할 만함. 자세한 내용은 이 커밋 참조
- PowerPC 40x 플랫폼 지원이 제거됨
- RISC-V 시스템에 메모리 핫플러깅 지원이 추가됨
코어 커널
- io_uring 서브시스템은 이제 bind()와 listen() 구현하는 작업 제공
- nsfs(네임스페이스) 파일 시스템의 새로운 ioctl() 작업 세트는 PID 네임스페이스 간 프로세스 및 스레드 그룹 ID 변환 수행
- pidfd 파일 시스템은 pidfd로 표현되는 프로세스의 네임스페이스 파일 디스크립터 획득을 위한 새로운 ioctl() 호출 지원
-
중첩된 bottom-half 잠금 패치가 병합됨. 이는 주로 실시간 커널의 지연 시간 개선을 위한 것이지만, 다른 사용자에게도 이점이 있을 것
- 현재 x86-64 시스템에서만 구현된 새로운 시스템 호출인 uretprobe()가 있음. 이것의 역할은 사용자 공간 프로세스에 동적으로 삽입되는 uretprobe(함수 반환 추적점)의 처리를 최적화하는 것
-
function-graph tracer에 대한 단일 사용자 제한이 제거됨
- 새로운 reserve_mem= 커맨드 라인 매개변수를 사용하여 명명된 메모리 영역을 예약할 수 있음. 이는 pstore 하위 시스템과 함께 새로운 ramoops.mem_name= 매개변수와 함께 사용하기 위한 것
파일 시스템 및 블록 I/O
-
statx() 시스템 호출은 이제 AT_EMPTY_PATH 플래그가 설정된 경우 경로 인수가 null 포인터일 수 있음
-
open_by_handle_at() 시스템 호출은 6.11에서 호출자가 파일에 적절한 액세스 권한이 있다고 커널이 확인할 수 있는 상황에서 이 시스템 호출에 대한 권한 검사가 다소 완화됨
- 리눅스 커널은 전통적으로 시스템 어딘가의 프로세스에서 사용 중인 실행 파일에 대한 쓰기를 차단했음. 이는 실행 중인 프로그램의 불쾌한 놀라움을 방지하기 위한 것. 커널 개발자들은 몇 년 동안 이 제한을 점차 없애고 있음. 6.11부터는 커널이 더 이상 사용 중인 실행 파일에 대한 쓰기를 방지하지 않음
- Btrfs 파일 시스템은 rescue= 마운트 옵션에 대해 몇 가지 새로운 값(ignoremetacsums 및 ignoresuperflags)을 인식함. 이들은 사용자 공간 도구에 의해 부분적으로 변환된 파일 시스템(특히 체크섬 변환을 수행하는 파일 시스템)의 복구를 지원하기 위한 것
- Btrfs가 블록 그룹 회수를 수행하는 방식이 개선되었음. 이는 파일 시스템이 가득 차지 않았음에도 여유 공간을 사용할 수 없는 상황을 피하기 위한 것. 새로운 동적 회수 임계값 작동 방식에 대한 설명은 이 커밋 참조
하드웨어 지원
- Qualcomm SM8650 카메라 클록 컨트롤러
- SPD5118을 준수하는 온도 센서, Monolithic Power Systems MP2993 듀얼 루프 디지털 멀티-페이즈 컨트롤러 등 하드웨어 모니터링
- ChromeOS 임베디드 컨트롤러 센서, ChromeOS EC 기반 충전 컨트롤러 등 기타
- Realtek RTL8192DU USB 무선 네트워크 어댑터, Renesas Ethernet-TSN 인터페이스, Vining 800 CAN 인터페이스 등 네트워킹
- Amlogic C3 PLL 클록 컨트롤러, Qualcomm SM7150 디스플레이/카메라/비디오 클록 컨트롤러 등 시계 관련
- NXP IMX91 핀 컨트롤 유닛, Nuvoton MA35 핀 및 GPIO 컨트롤러 등 GPIO 및 핀 컨트롤
- Lincoln Technologies lcd197 패널, Ilitek ILI9806E 기반 패널 등 그래픽
- 산업용 I/O, 입력장치, 미디어, 기타, PHY, 사운드, USB 등 다양한 분야에 새로운 하드웨어 지원 추가
기타
- 시스템의 장치를 올바른 순서로 가동하도록 하는 새로운 전원 시퀀싱 서브시스템이 등장
- "sloppy logic analyzer" 모듈은 GPIO 라인 세트를 저예산 논리 분석기로 전환할 수 있음
- perf 도구에 많은 새로운 기능이 추가되었음
-
펌웨어 로딩을 위한 작은 Rust 추상화 세트가 병합됨. 아직 Rust로 중요한 드라이버를 작성하는 데 필요한 많은 부분이 있지만, 그 목록은 점점 줄어들고 있음
네트워킹
- 새로운 net.tcp_rto_min_us sysctl 노브를 사용하여 TCP 소켓의 최소 재전송 시간 초과 조정 가능
- ethtool 유틸리티는 Net DIM을 사용하는 인터페이스에 대한 인터럽트 구성을 미세 조정할 수 있게 되었음
보안 관련
가상화 및 컨테이너
- KVM에서 AMD의 SEV-SNP 보안 암호화 가상화 메커니즘에 대한 초기 지원이 추가됨
- 게스트가 실행되기 전에 게스트의 메모리를 미리 채우기 위한 새로운 KVM ioctl() 호출이 있음
내부 커널 변경
- 6.11에 병합된 첫 번째 변경 사항은 리누스 토발즈가 추가한 새로운 "런타임 상수" 메커니즘
- iomap 하위 시스템에 대한 일부 문서화가 마침내 이루어짐
- 커널을 빌드하는 데 필요한 GNU Make의 최소 버전이 4.0으로 높아짐
- 6.11에서 118개의 내보낸 기호가 제거되고 464개가 추가되어 순 증가가 346개. 6개의 새로운 kfunc도 있음
GN⁺의 의견
- 6.11 커널 릴리스에서는 많은 아키텍처 별 개선 사항들과 하드웨어 지원이 확장된 것이 인상적. 특히 64비트 ARM과 x86에서의 CPU 핫플러그와 AMD의 SEV-SNP 지원 등은 보안과 가상화 측면에서 의미가 큼
- io_uring과 BPF에 새로운 기능들이 추가되면서, 고성능 I/O와 eBPF 프로그래밍에 대한 커널 수준의 지원이 강화되는 추세. 이는 시스템 성능 최적화와 모니터링, 네트워킹 등에 큰 도움이 될 것
- 전원 시퀀싱이나 sloppy 논리 분석기 같은 새로운 서브시스템과 모듈의 등장은 임베디드나 IoT 환경에서 리눅스 커널의 활용도를 높일 것으로 기대됨
- 런타임 상수나 문서화 개선 등 커널 내부적인 코드 최적화와 개발 편의성 개선도 꾸준히 이루어지고 있음. 하지만 아직 문서화가 부족한 부분들이 많은 만큼, 커뮤니티 차원의 협력이 더욱 필요해 보임
- 6.11 병합 윈도우의 후반부에는 여러 아키텍처에 대한 성능 개선과 새로운 하드웨어 지원이 주를 이룸. 특히 x86-64의 AES-GCM 암호 최적화와 RISC-V의 메모리 핫플러깅 지원 등은 주목할 만한 변화
- KVM에서 AMD의 SEV-SNP에 대한 초기 지원이 추가되는 등 가상화 보안 측면에서도 발전이 있었음. 이는 클라우드와 엣지 컴퓨팅 환경에서 리눅스 커널의 역할이 더욱 확대될 것임을 시사
- 펌웨어 로딩과 힙 스프레이 방지 등을 위한 Rust 추상화 도입은 시스템 프로그래밍 언어로서 Rust의 가능성을 보여줌. 앞으로 커널 내 Rust 코드의 비중이 점차 늘어날 것으로 예상됨
- 확장 가능한 스케줄러 클래스 병합이 연기된 것은 아쉽지만, 충분한 검토와 안정화를 위해 불가피한 선택으로 보임. 스케줄러는 시스템 성능에 직결되는 만큼 신중한 접근이 필요