Kerla: Rust로 작성되고 Linux ABI와 호환되는 새로운 커널

최근에 Rust 언어로 작성된 운영 체제 커널로 개발 중인 Kerla 프로젝트에 대한 정보가 공개되었습니다. 이 코드는 Apache 2.0 및 MIT 라이선스에 따라 배포됩니다. 이 프로젝트는 C 언어로 작성된 마이크로 커널 운영 체제 Resea를 만든 것으로 알려진 일본 개발자 Seiya Nuta가 개발하고 있습니다.

새로운 커널은 처음에 목표 ABI 수준에서 Linux 커널과의 호환성을 보장합니다. Linux용으로 빌드된 수정되지 않은 바이너리를 Kerla 기반 환경에서 실행할 수 있습니다.

케랄 소개

Kerla는 모놀리식 운영 체제 커널입니다. Rust에서 처음부터 만들어졌습니다. 현재 개발 단계에서 Kerla는 x86_64 아키텍처가 있는 시스템에서만 실행할 수 있습니다. write, stat, mmap, pipe 및 poll과 같은 기본 시스템 호출을 구현하고 신호, 이름 없는 파이프 및 컨텍스트 스위치를 지원합니다. fork, wait4 및 execve와 같은 호출은 프로세스를 제어하기 위해 제공됩니다. tty 및 의사 터미널(pty)에 대한 지원이 있습니다. initramfs 파일 시스템(루트 FS를 마운트하는 데 사용됨) 중에서 tmpfs 및 devfs는 여전히 지원됩니다.

TCP 및 UDP 소켓을 지원하는 네트워크 스택도 제공됩니다. smoltcp 라이브러리를 기반으로 합니다. 개발자는 이미 SSH를 통해 연결할 수 있는 드라이버 virtio-net을 사용하여 QEMU 또는 Firecracker VM에서 작동하는 부팅 환경을 준비했습니다.. Musl은 시스템 라이브러리로 사용되며 BusyBox는 사용자 유틸리티로 사용됩니다.. Docker를 기반으로 Kerla 커널을 사용하여 고유한 initramfs 부팅을 만들 수 있는 빌드 시스템이 준비되었습니다.

지금까지 새 커널에 대한 세부 정보가 거의 제공되지 않았지만 Kerla의 기능에서 가장 주목받는 것은 이것이 Rust로 작성되었다는 사실입니다. 그렇다면 Rust로 작성하는 것이 다른 언어나 기존 코드에 비해 어떤 이점이 있습니까? 많은 사람들이 언어가 제공하는 메모리 보안 이점을 강조하면서 이 질문에 예라고 대답했습니다.

런타임 시 메모리 액세스의 정확성을 평가할 때도 제공됩니다. 또 뭔데, Mozilla는 Rust가 정수 오버플로에 대한 보호 기능을 제공한다고 믿습니다., 사용 전에 변수 값의 필수 초기화가 필요하고 기본적으로 참조 및 불변 변수의 개념을 채택하고 강력한 정적 유형을 제공하여 논리적 오류를 최소화하고 패턴 일치를 통해 입력 처리를 단순화합니다.

장점 중 코드 품질을 평가하는 통합 도구를 강조합니다. 실제 하드웨어뿐만 아니라 QEMU에서도 실행할 수 있는 단위 테스트를 생성합니다. 기본적으로 Mozilla는 컴파일러가 오류를 거부하므로 Rust를 디버그하기가 더 쉽습니다. 그러나 후미는 Rust의 몇 가지 단점을 지적했습니다.

“C ++와 마찬가지로 템플릿을 사용하지 않고 관용적인 Rust를 작성하는 것은 거의 불가능하므로 바이너리가 부풀려지고 컴파일 시간이 느려집니다. 이러한 모든 컴파일 시간 검사에도 비용이 듭니다. 또한 무언가를 다시 작성하면 오래된 코드베이스를 잃게 되며 합리적인 시간 내에 비슷한 품질의 코드베이스를 생성할 수 있는 방법이 없습니다. Rust에서 프로그램을 다시 작성하는 것보다 확장하는 것이 훨씬 좋습니다. 프로그램을 Rust로 다시 작성하는 것보다 확장하는 것이 좋습니다.”라고 소프트웨어 엔지니어는 말합니다.

제작자에 따르면 이러한 이유로 Linux 개발자는 특히 리누스 토발즈 자신, 그들은 전체 커널을 Rust로 다시 작성하는 아이디어를 거부했습니다.

“보안 링크를 만드는 작업을 수행한 다음 Rust에서 추가 코드를 작성하면 성숙한 코드를 계속 즐길 수 있습니다. (리눅스가 하는 일이고, 러스트에 커널 모듈을 작성할 수 있는 기능을 추가하려는 노력이 있다)”고 덧붙였다. Linux 개발자는 약 XNUMX년 동안 Rust 언어를 사용하여 특정 새 커널 모듈을 작성할 가능성을 모색해 왔습니다. 이것은 »Rust for Linux« 프로젝트를 일으켰습니다.

마지막으로 그것에 대해 더 알고 싶다면 세부 사항을 참조하십시오 다음 링크에서.


Google에서 선호하는 검색 엔진으로 추가