macOS에서 네이티브로 Linux 커널 빌드하기: 컴파일 지옥으로의 여정

2025-07-03
macOS에서 네이티브로 Linux 커널 빌드하기: 컴파일 지옥으로의 여정

이 글에서는 macOS에서 네이티브로 Linux 커널(RISC-V 아키텍처)을 빌드하는 과정에서 저자가 겪은 경험을 자세히 설명합니다. 이 여정은 많은 어려움으로 가득했습니다. 오래된 make 버전, macOS의 ld가 Linux의 기대와 호환되지 않는 문제, elf.h와 byteswap.h 헤더 파일 누락, uuid_t와 sed의 버전 충돌 등이 있었습니다. 저자는 Homebrew를 사용하여 최신 툴체인(make, llvm, lld, libelf, gnu-sed)을 설치하고, 헤더 파일 불일치와 자료형 정의 충돌을 해결하기 위해 패치를 생성하여 이러한 문제들을 극복했습니다. 커널은 성공적으로 빌드되었으며, 깨끗한 빌드에서는 macOS가 Docker보다 빠르지만, 증분 빌드에서는 느렸습니다. 저자는 빌드 문제 해결이 지속적인 통합과 마찬가지로 지속적이고 반복적인 프로세스라는 결론을 내렸습니다.

더 보기
개발

Starina: 하이퍼바이저를 라이브러리로 사용하는 마이크로커널 OS

2025-05-20
Starina: 하이퍼바이저를 라이브러리로 사용하는 마이크로커널 OS

이 글에서는 Starina 운영체제에서 Linux 호환성을 위한 혁신적인 방법을 소개합니다. 바로 하이퍼바이저(VMM)를 애플리케이션 내부에 라이브러리로 통합하는 것입니다. 기존의 독립형 VMM과 달리 Starina의 `starina_linux::Command` API를 사용하면 개발자는 `std::process::Command`와 유사하게 Linux 프로그램을 실행하고 가상 파일 시스템(virtio_fs)을 통해 가상 머신과 상호 작용할 수 있습니다. 이 설계는 개발을 간소화하고 기존 Linux 환경보다 더 빠른 시작 시간을 달성할 가능성을 제공합니다. 현재 기본 파일 I/O가 지원되며, 향후 작업에는 네트워킹, 영구 저장소 및 향상된 컨테이너화 추가가 포함됩니다.

더 보기

Starina OS에서 RISC-V 하이퍼바이저 구축하기: Hello World부터 Linux 커널 부팅까지

2025-05-17
Starina OS에서 RISC-V 하이퍼바이저 구축하기: Hello World부터 Linux 커널 부팅까지

이 글에서는 Starina 운영체제 내에서 경량 RISC-V H 확장 기반 하이퍼바이저를 구축한 저자의 과정을 기록합니다. QEMU의 RISC-V H 확장 에뮬레이션을 활용하여 게스트 모드 진입, 시스템 콜 처리, 간단한 Hello World 프로그램 실행, 그리고 마지막으로 Linux 커널 부팅을 단계적으로 구현했습니다. 페이지 테이블 관리, 디바이스 트리 설정, 타이머 지원, MMIO 등의 과제를 극복하고, 자세한 단계와 해결책을 제시합니다. 그리고 Starina 하이퍼바이저에서 Linux가 성공적으로 부팅된 것을 결론짓습니다.

더 보기
개발