가상화 없이 리눅스에서 오피스를 구동하는 기술적 방법
Show HN: Microsoft Office running with Wine on Linux with no virtualization
Hacker News가상화 없이 리눅스 환경에서 마이크로소프트 365 오피스를 와인을 이용해 구동하는 기술적 방법을 개발했습니다.
- 오피스가 의존하는 라이선싱 및 복잡한 윈도우 API를 수많은 패치와 가짜 DLL(Shim)로 대체하여 작동 환경을 구축한 것이 핵심입니다.
- 무거운 가상 머신(VM) 사용이 어려운 리눅스 사용자들에게 오피스를 사용할 수 있는 실질적이고 효율적인 대안을 제시합니다.
- 사용하려면 유효한 Microsoft 365 라이선스가 필수이며, 현재는 복잡하고 전문적인 설정 및 패치가 요구되는 고난도 기술입니다.
이 기술은 가상 머신(VM) 사용 없이 리눅스 환경에서 Microsoft 365 (Click-to-Run Office)를 Wine을 통해 구동하는 방법을 제시합니다. 이 과정은 `umu-launcher`와 `GE-Proton` 같은 빌드를 활용하며, Bottles 프로젝트의 ProtoSoda 코어 등을 사용할 수 있습니다. 오피스를 설치하려면 `nix run .#ms365 -- install` 명령어를 사용하여 프리픽스 생성, ODT(Office Deployment Tool) 가져오기, 그리고 오피스 다운로드 및 설치를 순차적으로 진행해야 합니다.
오피스가 정상 작동하기 위해서는 Wine이 기본적으로 지원하지 않는 복잡한 Windows 에 대한 수많은 패치(Shim) 작업이 핵심입니다. 예를 들어, 라이선싱을 담당하는 SPP(Software Protection Platform)는 `sppc/`라는 대체 DLL로 처리되었으며, ole32와 같은 핵심 모듈의 누락된 함수들은 래퍼(shim)를 통해 재정의되었습니다. 또한 Wayland 환경에서의 디스플레이 오류나 특정 API 호출 실패 등 다양한 문제를 해결하기 위해 여러 패치가 적용되었습니다.
실제 구동을 위해서는 `MS365_RUNNER`, `MS365_PREFIX`와 같은 환경 변수를 설정하여 세부 동작 방식을 제어할 수 있습니다. 예를 들어, 최소한의 앱만 설치하려면 특정 구성 요소를 제외하는 옵션(`MS365_EXCLUDE`)과 함께 명령어를 실행해야 합니다. 이 모든 과정은 유효한 Microsoft 365 라이선스 계정으로 로그인하는 것을 필수 조건으로 요구합니다.
용어 풀이
- API
- 프로그램끼리 기능을 주고받는 약속된 창구. AI 모델은 보통 API로 불러 써요.