커널 Rust 코드에서 패닉은 언제 허용되나 — Kangrejos 2026 논의 정리
Rust 코드의 panic!은 커널에서 BUG()로 이어져 실행 중인 커널을 멈춘다. 그런데 Rust의 정수 곱셈과 슬라이스 인덱싱에도 패닉 경로가 들어간다. 커널의 Rust 코딩 가이드라인은 패닉을 드물게 쓰고 거의 모든 경우에 Result를…
Rust 코드의 panic!은 커널에서 BUG()로 이어져 실행 중인 커널을 멈춘다. 그런데 Rust의 정수 곱셈과 슬라이스 인덱싱에도 패닉 경로가 들어간다. 커널의 Rust 코딩 가이드라인은 패닉을 드물게 쓰고 거의 모든 경우에 Result를…
커널에 새 시스템 콜이 들어와도 glibc에 래퍼 함수가 없으면 C에서 일반 함수처럼 부를 수 없다. 이때는 syscall(SYS_xxx, ...)로 번호와 인자를 직접 넘긴다. 커널 5.16에 들어온 futex_waitv()도 아직 래퍼가 없다. LPC…
리눅스 커널에는 "컨테이너"라는 객체가 없습니다. 커널은 네임스페이스, cgroup, seccomp 같은 부품만 제공합니다. 조립은 Docker, Podman, LXC 같은 사용자 공간 도구가 맡습니다. 그래서 커널은 "이 프로세스가 어느 컨테이너에 속하는가"라는 질문에 답할…
이번 주 LWN.net 위클리 에디션(11월 5일자) 주요 내용이다. 조셉 바식(Josef Bacik)은 컨테이너를 커널 객체로 만드는 "셀(cell)"을 제안했다. Android Binder의 C 구현은 7.4에서 삭제되고 Rust 구현만 남는다. 7.4 머지 윈도우는 체인지셋…
Ubuntu 26.10(코드명 Stonking Stingray)이 2026년 10월 15일에 릴리스됐다. 인터림(interim) 릴리스라 지원 기간은 9개월이다. 릴리스 노트에는 호환성을 깨는 변경이 여러 건 있다. 그래서 버전 표만 보고 판단하면 서버 운영에서 문제가 생길…
커널은 물리 페이지마다 struct page를 하나씩 둔다. 버디 할당기(buddy allocator)와 페이지 폴트 경로는 pfn과 struct page를 계속 맞바꾼다. 그런데 물리 주소 공간에는 구멍이 있다. QEMU q35 머신에 6GiB를 주면 RAM이…
머지된 코드는 git log로 쉽게 볼 수 있다. 반면 앞으로 무엇이 들어올지는 메일링 리스트, 학회 발표, 메인테이너의 반응을 함께 봐야 알 수 있다. 기여할 주제를 고르려면 바로 이 "아직 머지되지…
mm 서브시스템은 릴리스마다 수십 개의 패치 시리즈를 받는다. 머지 메시지만 읽어서는 어떤 흐름이 몇 릴리스에 걸쳐 이어지는지 보이지 않는다. 예를 들어 스왑 테이블 작업은 7.0부터 7.2까지 네 단계로 나뉘어 들어왔고,…
리눅스 커널 메모리 관리(mm) 서브시스템은 mm/ 디렉터리에만 C 파일이 165개 있고, 릴리스마다 340~550개 커밋이 들어온다. 관심 있는 주제의 패치를 쓰려면 먼저 코드가 어느 트리를 거쳐 메인라인에 들어가는지, 누가 리뷰하는지, 지금…
리눅스 커널 7.4에서 x86의 __get_user()와 __put_user()가 사라집니다. 두 매크로는 오랫동안 "검사를 한 번만 하고 빠르게 접근하는" 최적화 수단이었습니다. 하지만 SMAP(Supervisor Mode Access Prevention)이 보편화된 뒤로는 x86에서 오히려 더 느려졌습니다. 이번…