라떼군 이야기
자바스크립트로 부팅을? UEFI 부트로더를 JS로 작성하는 'Promethee'
TL;DR C언어의 성역이던 UEFI 부트로더를 자바스크립트로 작성할 수 있게 해주는 ‘Promethee’ 프로젝트가 등장했습니다. 경량 JS 엔진인 Duktape를 UEFI에 이식하여, 부팅 단계에서
script.js를 실행하고 그래픽 출력 등 하드웨어를 직접 제어합니다. 실용성보다는 기술적 가능성을 탐구하는 흥미로운 개념 증명(PoC)입니다.
부트로더와 펌웨어 개발은 전통적으로 어셈블리나 C언어와 같은 시스템 언어의 독무대였습니다. 하지만 ‘자바스크립트는 어디서든 실행된다’는 격언이 이제 운영체제 부팅 직후의 베어메탈 환경까지 도달했습니다. 이 글에서는 UEFI 환경에서 자바스크립트를 실행해 부팅 로직을 제어하는 실험적인 프로젝트 ‘Promethee’를 통해, 로우레벨 프로그래밍의 새로운 가능성을 살펴봅니다.
핵심 내용
Promethee는 부트 볼륨에 저장된 script.js 파일을 로드하여 실행하는 방식으로 작동하며, 이를 위해 임베디드용 경량 JS 엔진인 ‘Duktape’를 UEFI 환경에 포팅했습니다. 개발자는 efi.SystemTable과 같은 UEFI 핵심 프로토콜에 JS 객체 형태로 접근할 수 있으며, 예제 코드에서는 단 몇 줄의 JS로 화면에 그래픽(GOP)을 그리는 것을 보여줍니다. 별도의 복잡한 컴파일 과정 없이 스크립트 수정만으로 부트 로직을 변경할 수 있다는 점이 핵심입니다.
기술적 인사이트
이 프로젝트는 UEFI가 단순히 레거시 BIOS를 대체하는 것을 넘어, 그 자체로 풍부한 API를 가진 ‘미니 OS’임을 상기시켜 줍니다. 부팅 단계에서 가비지 컬렉션(GC)이 있는 언어를 사용하는 것은 성능상 오버헤드가 있지만, 복잡한 부팅 메뉴 UI 구성이나 로직 처리에서는 C언어 대비 압도적인 생산성을 제공합니다. 이는 임베디드 시스템에서 MicroPython이 인기를 얻은 것과 유사한 맥락으로, ‘성능’과 ‘유연성’ 사이의 트레이드오프를 펌웨어 레벨까지 끌어내린 시도입니다.
시사점
당장 상용 OS의 메인 부트로더가 자바스크립트로 대체될 가능성은 낮지만, 하드웨어 진단 도구(Diagnostics) 제작이나 커스텀 부트 메뉴 프로토타이핑에는 매우 유용할 수 있습니다. 시스템 엔지니어와 웹 개발자 사이의 장벽을 낮추어, 더 많은 개발자가 UEFI 내부 구조를 학습하고 하드웨어 제어를 실험해 볼 수 있는 훌륭한 진입점이 될 것입니다.
프로젝트의 설명처럼 이것은 ‘프로메테우스의 불’을 다루는 것과 같은, 위험하지만 매혹적인 실험입니다. ‘왜 굳이?‘라는 질문보다는 ‘이것도 되네?‘라는 해커 정신이 돋보이는 이 프로젝트를 통해, 여러분도 베어메탈 위에서 돌아가는 console.log의 짜릿함을 상상해 보시기 바랍니다.