GN⁺: Maestro - 리눅스 호환 가능한 Rust 기반 커널
(blog.lenot.re)- Maestro는 Rust 언어로 처음부터 작성된 Unix와 유사한 커널 및 운영 체제임.
- 처음에는 C 언어로 구현되었으나, 코드베이스를 깨끗하게 유지하기 어려워지자 Rust로 전환함.
- Rust는 프로젝트를 처음부터 다시 시작하고, C로 Linux와 유사한 커널을 작성하는 것보다 혁신적이며, Rust의 안전성을 활용하여 커널 프로그래밍의 어려움을 줄이는 데 도움이 됨.
프로젝트의 현재 상태
- Maestro는 현재 x86(32비트) 아키텍처만 지원하는 모놀리식 커널임.
- 작성 시점에서 Linux 시스템 호출의 약 31%에 해당하는 135개가 대략 구현되어 있음.
- OS에는 커널 외에 부팅 시스템 및 데몬 관리자인 Solfège, 시스템 유틸리티 명령어인 maestro-utils, 패키지 관리자인 blimp 등의 구성 요소가 있음.
- musl(C 표준 라이브러리), bash, 일부 GNU coreutils 명령어, neofetch(패치된 버전) 등의 타사 소프트웨어가 OS에서 작동하는 것으로 테스트됨.
직접 테스트해보세요!
- OS는 아직 개발 초기 단계이며 매우 불안정하므로 중요한 데이터가 있는 기계에 설치하는 것은 권장하지 않음.
- QEMU, VMWare, VirtualBox에서 주로 테스트됨.
- OS를 설치할 수 있는 두 가지 방법: 사전 빌드된 .iso 파일 다운로드 또는 ISO 직접 빌드.
- 설치된 패키지는 디스크 대신 RAM(initramsfs)에 저장되므로 충분한 RAM(1GB 이상)이 필요함.
이 블로그에 대하여
- 이 블로그의 목적은 OS 생성 방법에 대한 튜토리얼을 작성하는 것이 아니라, 더 고급 주제를 탐구하고, 문제 해결 방법을 공유하며, 컴퓨터와 운영 체제, 인터넷 등의 작동 방식을 발견하는 것임.
- osdev.org와 Philipp Oppermann의 블로그를 특히 추천함.
다음에 올 것
- 코드베이스 정리와 성능 최적화가 필요함.
- 메모리 누수 수정과 성능 최적화는 블로그 기사의 주제가 될 수 있음.
- 패키지 관리자가 OS에서 완전히 작동하도록 하는 것이 다음 목표임.
- 네트워크 지원과 공유 라이브러리 지원이 필요함.
도움이 되는 방법
- Github 저장소에 별표를 남기고, 뉴스레터 구독, RSS 피드 시청, Discord 참여를 통해 연락을 유지할 수 있음.
GN⁺의 의견
- Maestro 프로젝트는 Rust 언어로 작성된 Unix와 유사한 운영 체제로, 커널 개발의 안전성과 혁신성을 추구하는 점이 중요함.
- 이 프로젝트는 오픈 소스 커뮤니티에 기여하고자 하는 개발자들에게 흥미로운 기회를 제공하며, 실제 하드웨어와 소프트웨어의 상호작용을 이해하는 데 도움이 될 수 있음.
- Rust를 사용한 시스템 프로그래밍의 장점과 한계를 실제로 경험하고자 하는 초급 소프트웨어 엔지니어에게 유익한 학습 자료가 될 수 있음.
Hacker News 의견
-
프로젝트에 대한 지지에 감사함
- 이 프로젝트는 많은 노력이 들어갔으며, 개발자에게 큰 의미가 있음.
- 현재 웹사이트가 매우 느리거나 다운됨. 예상치 못한 많은 트래픽이 있으며, DoS 공격이 의심됨.
- 집에 돌아가면 사이트 개선을 시도할 예정임. 현재는 일 때문에 많은 주의를 기울일 수 없음.
- 불편을 드려 죄송하지만 프로젝트를 평가해준 것에 대해 기쁨.
-
멋진 소규모 프로젝트에 대한 의견
- 리눅스의 시스템 호출의 3분의 1도 구현하지 않고도 얼마나 멀리 부팅할 수 있는지 놀라움.
- 아직 구현되지 않은 시스템 호출이 더 복잡할 것으로 추측됨.
- 예를 들어, TTY 계층이 현재 기본적으로 보임. 이를 올바르게 구현하는 것은 많은 작업이 될 것임.
- 따라서 Maestro가 다음 3년 이내에 리눅스 애플리케이션을 실행할 것으로 기대하지 말 것.
-
보안/침투 테스트에 대한 의견
- 프로젝트가 Rust로 개발되었기 때문에, 해커가 취약점을 찾을 수 있는지 보안 테스트를 보고 싶음.
-
Kerla 프로젝트에 대한 언급
- Kerla(리눅스 ABI 호환을 목표로 하는 Rust로 작성된 단일 커널)도 있었지만, 몇 년 동안 활동이 없었음.
-
C 언어 사용의 단점과 OS 개발의 어려움에 대한 의견
- 대부분의 단점과 어려움은 디버깅에 있음.
- Rust로 전환함으로써 특정 메모리 오류 클래스가 제거되었지만, 디버깅은 여전히 어려운지, 아니면 전환 후 디버깅이 덜 필요해져서 더 쉬워진 것인지 궁금함.
-
Kerla 프로젝트의 중단에 대한 언급
- 이미 시도되었던 프로젝트인 Kerla가 중단되었음을 언급.
-
컴퓨터의 복잡성에 대한 의견
- 컴퓨터는 인류가 만든 가장 복잡한 도구 중 하나임.
-
기술 부채 상환에 대한 조언
- 학교 프로젝트로 시작했을 때는 시간 제약으로 인해 모퉁이를 자르기도 했지만, 이제 기술 부채를 상환할 시간임을 인지하고 이러한 마인드셋을 유지할 것을 권함.
-
Gource에 대한 관심
- 저자가 기여 비디오를 만드는 데 사용한 Gource라는 도구에 대해 매우 흥미로움. 이전에 비슷한 아이디어를 생각해본 적이 있지만, 원래 아이디어는 없는 것 같음.
-
커널 구축에 대한 관심
- 학습 목적으로 커널을 구축하는 아이디어를 매우 좋아함. 커널/OS 전반에 대해 이해하는 데 사용된 자료에 대해 궁금함.