프로그래밍 및 소프트웨어 개발

Ubuntu가 Rust를 사용해 핵심 시스템 도구를 다시 구축하는 방법

Canonical은 Ubuntu 26.04 LTS부터 Ubuntu의 핵심 도구에 Rust를 도입하는 선별적 접근 방식을 채택하고 있으며, 메모리 안전성, 신뢰성, 유지 관리성에 중점을 두고 있습니다. 계획에는 uutils coreutils, sudo-rs, ntpd-rs 및 UPKI 프로젝트가 포함되며, 전환 기간 동안 기존 도구와 롤백 옵션을 계속 제공할 예정입니다.

2026-08-26
4 분 읽기
10 조회수
فريق تحرير certi.news
Ubuntu가 Rust를 사용해 핵심 시스템 도구를 다시 구축하는 방법

Canonical은 Ubuntu 전체를 Rust로 다시 작성하는 것이 아니라, 메모리 안전성과 유지 관리 측면의 이점이 전환 비용을 정당화한다고 판단한 지점에서 핵심 시스템 구성 요소를 교체하기 시작했습니다. Canonical의 엔지니어링 부문 부사장 Jon Seager가 JetBrains가 주최한 방송에서 설명한 바에 따르면, 이 결정은 서버, 데스크톱, 엣지 장치 및 자동차에서 약 1,500만 건의 배포를 실행하는 플랫폼을 위한 장기적 비전의 일부입니다.

이 접근 방식은 모든 기존 도구를 다시 구현하려는 캠페인이 아니라, 향후 20년 동안 Ubuntu에 무엇이 필요한지에 대한 질문에서 출발합니다. Canonical은 특히 메모리 오류에 대한 저항성과 신뢰성이 산업 시스템, 자동차 또는 민감한 인프라 내부에서 실행되는 소프트웨어에 영향을 미치는 요소일 때 Rust가 시스템 개발을 위한 설득력 있는 도구 모음을 제공한다고 봅니다.

전면 재작성 대신 선별적 교체

이러한 구성 요소 중 첫 번째가 Ubuntu 26.04 LTS에 도입되었습니다. GNU coreutils 도구를 Rust로 다시 구현한 uutils coreutils가 기본 옵션이 되었으며, GNU 도구의 동작과 완전히 호환되는 것을 목표로 합니다. 이는 동작의 작은 차이가 반드시 개선으로 간주되는 것이 아니라, 기존 동작에 의존하는 스크립트나 도구를 깨뜨린다면 오류로 취급될 수 있음을 의미합니다.

sudo-rs는 다른 경로를 택합니다. sudo와의 완전한 일치를 추구하는 대신, 수십 년간의 보안 경험을 바탕으로 오늘날 설계한다면 권한 부여 도구가 어떤 모습이어야 하는지를 재고합니다. 강한 반응을 불러온 변경 사항 중 하나는 기본적으로 터미널에서 비밀번호를 입력할 때 별표를 표시하는 것입니다. Canonical은 이러한 의도적인 변경이 단기적인 불편을 초래하더라도 받아들인다고 말합니다. 이는 단순히 동일한 기능을 제공하는 대체품이 아니라 새로운 설계의 일부이기 때문입니다.

시간과 인증서도 변경 범위에 포함

다음 프로젝트는 ntpd-rs입니다. Canonical은 2026년 6월 Trifecta Tech Foundation을 통한 자금 지원을 발표했으며, 이를 Ubuntu의 기본 시간 동기화 도구로 만드는 것을 목표로 하고 있습니다. 계획은 Ubuntu 26.10에서 이를 아카이브한 뒤 Ubuntu 28.04에서 완전한 기본 옵션으로 전환하는 것입니다. 이를 통해 NTP, NTS 및 PTP를 지원하는 하나의 도구로 chrony와 linuxptp를 점진적으로 대체합니다.

이 변경이 중요한 이유는 정확한 시간 동기화가 네트워크 서버에만 국한되지 않기 때문입니다. 이는 항공기, 자동차 및 로봇 내부의 마이크로컨트롤러, 정기적으로 키를 교체하는 암호화 시스템, 그리고 위치에 의존하는 시스템에 영향을 줍니다. 자료는 chrony와 linuxptp를 함께 사용하려면 여러 도구와 시간 소스를 설정해야 할 수 있는 반면, ntpd-rs는 메모리 안전성을 활용하면서 이러한 기능을 하나의 도구와 하나의 설정 파일로 통합하는 것을 목표로 한다고 설명합니다.

UPKI 프로젝트는 Rustls 프로젝트와 협력해 처음부터 새로 개발된 프로젝트라는 점에서 이러한 교체 작업과 다릅니다. 이 프로젝트는 Linux 시스템 도구에 인증서 폐기 확인 기능을 추가하는 것을 목표로 하며, Canonical은 Ubuntu 26.10에 처음 도입하는 것을 목표로 하고 있습니다. 이 아이디어는 curl, wget 및 OpenSSL과 같은 도구와 관련이 있습니다. 자료에 따르면 이러한 도구에는 브라우저에서와 같은 방식의 인증서 폐기 처리가 동일하게 내장되어 있지 않습니다.

사용자에게 실제로 무엇이 달라지는가?

Canonical은 이러한 변경 사항을 도입할 시점으로 LTS 릴리스를 선택했습니다. 일반적으로 조직이 이 시점에 시스템을 업데이트하고, 저수준 도구를 변경할 때 롤백 경로가 중요하기 때문입니다. 자료에 따르면 이전 릴리스는 15년 동안 관리형 지원을 받으며, 기존 도구는 아카이브에 계속 남습니다. 따라서 롤백 옵션 없이 기존 운영 시스템에 새로운 동작이 강제되지는 않습니다.

그러나 프로젝트마다 호환성 수준은 동일하지 않습니다. uutils coreutils는 빈 파일에서 일정 수의 바이트를 읽도록 요청했을 때 head 도구가 오류를 반환한 실례를 겪었습니다. 반면 GNU coreutils는 0을 반환했습니다. 이 차이로 인해 Obsidian snap 패키지 내부에 숨겨진 스크립트가 손상되었고, 동작은 GNU와 일치하도록 수정되었습니다. 이 사례는 메모리 안전성이 30년 동안 기존 도구를 둘러싸고 축적된 가정과의 호환성의 중요성을 없애지 않는다는 점을 보여줍니다.

과제는 코드 작성에서 끝나지 않는다

대규모 배포판에 Rust를 도입하려면 의존성, 빌드 및 배포 과정도 함께 처리해야 합니다. Canonical은 각 crate를 별도의 deb 패키지로 패키징하는 대신, 각 패키지에 필요한 crate를 하나의 아카이브 안에 모으는 방식을 사용합니다. 자료에 따르면 이 방식은 의존성 표면을 관리 가능한 상태로 유지하고 빌드 과정을 결정론적으로 만드는 데 도움이 되지만, 공식적인 의미에서 재현 가능한 빌드인 것은 아닙니다.

2026년 초에는 Ubuntu 아카이브의 모든 Rust 패키지에 cargo auditable이 적용되었습니다. 각 Rust 바이너리에는 빌드에 사용된 crate의 이름과 버전을 기록하는 내장 SBOM이 포함되며, 패키지를 다시 빌드하면 자동으로 갱신됩니다. 이 데이터가 취약점을 방지하는 것은 아니지만, 의존성 중 하나에서 문제가 발견되었을 때 영향을 받는 버전을 더 직접적으로 파악할 수 있게 합니다.

certi.news의 해석: 여기서 실제 변화는 C로 작성된 도구를 Rust로 작성된 도구로 교체하는 데 그치지 않습니다. 널리 배포된 뒤에는 변경하기 어려운 구성 요소에 보안, 유지 관리 및 의존성 추적 계층을 도입하는 것입니다. 반면 호환성과 sudo-rs의 동작 사례는 전환 과정에서 사용자가 알아차릴 수 있는 설계적 결정을 강요할 수 있음을 보여줍니다. 전환의 성공은 구현 언어만큼이나 이러한 차이를 관리하는 데 달려 있습니다. ntpd-rs와 UPKI에 대해 발표된 일정은 여전히 미래의 목표이며, 이 자료는 변경 범위가 선별적이고 기존 도구와 롤백 옵션이 여전히 Canonical 전략의 일부라는 점을 보여줍니다.

뉴스 출처
JetBrains Blog
원문 보기 ↗
ف
작성자

فريق تحرير certi.news

같은 카테고리

추천 기사

모든 뉴스 보기