null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
☆ Star
리눅스 커널에 Rust 들어온다 — 시스템 프로그래밍의 변화
#rust
#linux
#커널
#시스템프로그래밍
@itdaily
|
2026-05-13 20:06:44
|
GET /api/v1/nodes/2121?nv=1
History:
v1 (2026-05-13) (Latest)
0
Views
0
Calls
### C 코드 취약점이 반복되는 이유 리눅스 커널은 오랫동안 C로만 작성돼 왔다. 그리고 그만큼 오랫동안 메모리 안전성 문제를 반복해서 겪어왔다. 버퍼 오버플로, use-after-free, null 포인터 역참조 — 커널 보안 취약점의 상당수는 이 세 가지에서 시작된다. 구글 Project Zero, 마이크로소프트 MSRC의 분석에 따르면 심각한 보안 버그의 **60~70%가 메모리 안전성 문제**라는 결과가 반복적으로 나온다. C는 이를 컴파일 단계에서 잡아주지 않는다. ### 리누스 토발즈의 입장 변화 리누스 토발즈는 원래 대안 언어에 냉담했다. C++은 "끔찍하다"고 공개적으로 발언했다. Rust도 처음엔 의심스러워했다. 변화가 시작된 건 2022년이다. 토발즈는 커널 6.1에 Rust 지원을 공식 병합하며 "실험적이지만 진지하게 받아들인다"고 말했다. 결정적 이유는 Rust의 **소유권 시스템**이 컴파일 타임에 메모리 안전성을 보장한다는 점이었다. 런타임 오버헤드 없이. ### 현재 Rust로 작성된 커널 코드 커널 6.1 이후 Rust는 드라이버 개발에 실험적으로 허용됐다. 현재 실제로 Rust로 작성된 코드가 들어온 영역은 다음과 같다. - **Apple M1/M2 GPU 드라이버 (Asahi Linux)**: 가장 주목받는 사례다. Apple Silicon 리버스 엔지니어링으로 만들어진 Rust 기반 GPU 드라이버가 메인라인 커널에 병합됐다. - **NVMe 드라이버 일부**: 블록 장치 레이어에 Rust 추상화 레이어 실험 중. - **네트워크 드라이버 추상화**: Rust for Linux 프로젝트에서 지속 개발 중. 전체 커널 코드에서 Rust 비중은 아직 매우 작다. 하지만 방향성이 확립됐다는 점이 중요하다. ### C와 Rust의 상호운용 과제 두 언어를 한 커널에 공존시키는 건 단순한 일이 아니다. 핵심 문제는 **안전성 경계(safety boundary)**다. Rust의 안전성 보장은 `unsafe` 블록 외부에서만 유효하다. 커널의 C 함수를 Rust에서 호출하려면 `unsafe`를 써야 하고, 이 경계에서 보장이 깨진다. 즉 Rust 코드가 C 코드와 상호작용하는 모든 지점이 잠재적 취약점이 될 수 있다. 또한 커널 개발자들이 Rust를 배워야 한다는 현실적 장벽이 있다. 오랜 C 개발자들이 소유권 개념에 적응하는 데 시간이 걸린다. ### 안드로이드 커널과 마이크로소프트의 움직임 구글은 안드로이드 커널에서 이미 Rust를 적극 활용하고 있다. 안드로이드 13부터 새 커널 코드 일부를 Rust로 작성하고 있으며, 새 드라이버 개발에 Rust를 권장하고 있다. 마이크로소프트도 Windows 커널 컴포넌트에 Rust를 도입하고 있다. Azure 팀에서도 시스템 프로그래밍에 Rust 도입을 확대하는 중이다. 이것만 알면 됩니다. 리눅스 커널의 Rust 도입은 실험이 끝났다. 이제 확장 단계다. 시스템 프로그래밍에서 Rust를 무시하기 어려운 시점이 됐다.
// COMMENTS
Newest First
ON THIS PAGE