최근에는 하루에 한 편꼴로 새로운 글이 쏟아져 나옵니다. 마이크로소프트가 '시큐어 부트(Secure Boot)'를 악용해 데스크톱 시장을 독점하고 리눅스의 확산을 막고 있다며 비난하는 글들이죠. 게다가 마이크로소프트 탓만 하는 것이 아니라, UEFI가 각종 리눅스 배포판의 부팅을 막는다고 불평하는 사람들도 많습니다.
이 기회에 관련 오해와 두려움, 그리고 순수한 허위 정보를 걷어내고자 합니다. 이 주제로 작성된 대부분의 글은 논쟁과 트래픽, 수익을 만들어내기 위한 FUD(공포·불확실성·회의 조성)에 불과하기 때문입니다. 왜 UEFI는 전혀 문제가 되지 않는지 하나씩 살펴보겠습니다.
UEFI 한눈에 살펴보기
UEFI는 Unified Extensible Firmware Interface(통합 확장 펌웨어 인터페이스)의 약자입니다. 운영체제와 플랫폼 하드웨어 사이의 인터페이스를 정의하는 표준으로, 본질적으로 BIOS를 대체하는 역할을 합니다. UEFI는 훨씬 현대적이며, 원격 연결, 메뉴 내 마우스 탐색 등 다양한 기능을 지원합니다. 초대형 디스크 지원을 비롯해 수많은 서비스도 함께 제공됩니다.
시큐어 부트(Secure Boot)
UEFI 2.2 버전에서 추가된 또 다른 기능이 바로 시큐어 부트입니다. 이 기능은 유효한 디지털 서명을 가진 운영체제만 부팅하도록 하드웨어 플랫폼을 제한할 수 있게 해줍니다. 어떻게 보면 은행 사이트처럼 HTTPS 웹사이트에 접속할 때 일어나는 일과 다소 유사합니다.
셋업(Setup) 모드에서 UEFI는 하드웨어를 열거하고 플랫폼 키(Platform Key)라 불리는 공개 키를 펌웨어에 기록합니다. 사용자(User) 모드에서는 일치하는 개인 키를 가진 운영체제만 부팅을 허용합니다. 대부분의 경우 개인 키에는 하드웨어 장치 열거 정보와 커널의 디지털 서명이 포함됩니다. 그래서 '시큐어(안전한) 부트'라고 부르는 것이죠. 운영체제가 크게 변경되거나 하드웨어가 변조되었다면 무언가 문제가 있다는 신호일 수 있고, 부팅을 원하지 않을 수도 있기 때문입니다. 변경 사항과 커널 업데이트를 허용하기 위해 추가 키를 저장할 수도 있지만, 해당 키들은 플랫폼 키와 연관되어 있어야 합니다. 또한 커스텀 모드를 통해 다른 운영체제용 새 키를 추가할 수 있습니다. 이는 웹사이트의 디지털 인증서와 매우 흡사합니다. 사이트가 변조되면 서명이 더 이상 유효하지 않아 진행을 원하지 않게 되는 것과 같습니다.
참고: 이미지 출처는 Wikimedia이며, CC BY-SA 3.0 라이선스를 따릅니다.
마이크로소프트 음모론? 전혀 아닙니다
바로 여기서 드라마가 시작됩니다. 마이크로소프트 윈도우 8은 시큐어 부트를 지원합니다. 그런데 이 기능은 즉시 공개적으로 왜곡되어, 마이크로소프트가 이 기능을 이용해 다른 운영체제 벤더, 즉 리눅스가 같은 하드웨어에서 부팅하지 못하도록 잠글 계획이라는 음모론으로 번졌습니다.
문제는, 당신이 왜 걱정해야 하는가?
실제로 뭘 걱정할 필요가 있을까요? UEFI 메뉴에 진입해 시큐어 부트 설정을 셋업 모드나 커스텀 모드로 변경하고 필요한 조정을 하면 됩니다. 그런데 여기서 문제가 시작됩니다.
GPL 라이선스 제약 때문에 GRUB 부트로더를 디지털 서명을 사용하도록 변경하는 것이 불가능할 수 있습니다. 정확한 이유는 중요하지 않지만, 어쨌든 이것은 마이크로소프트와는 아무 상관이 없습니다. 게다가 라이선스 우려를 해결하기 위해 부트로더에 일반적인 서명 키를 사용할 수도 있겠지만, 그렇다면 OEM 제조업체를 설득해 마이크로소프트 키와 함께 이 키를 탑재하게 하려면 어떻게 해야 할까요? 이것 역시 마이크로소프트와는 무관합니다.
마지막으로, 사전 부트(pre-boot) 부트로더 여러 개가 개발 중인데, 이는 서명을 담당한 후 일반적인 방식으로 부팅 과정의 제어권을 GRUB에 넘겨주는 역할을 합니다. 이런 것들을 '심(shim)'이라고 부르며, 여러 변형 버전이 작업 중입니다. 이미 공식 부트로더가 나와 있으니, 정말 관심이 있다면 웹에서 검색해 보기 바랍니다. 역시 마이크로소프트의 어떤 음모론과도 무관합니다. 그리고 시큐어 부트는 완전히 비활성화(DISABLED)할 수 있으며, 이것이 전혀 문제가 되지 않는다는 점을 말씀드렸나요? 군중을 가장 분노하게 만드는 것은 바로 이 부분인 것 같습니다.
잠깐, 시큐어 부트를 끌 수 있다고요?
문제는 마이크로소프트가 Windows RT, 즉 ARM 기반 플랫폼(태블릿과 스마트폰을 의미할 가능성이 높음)이 탑재된 기기의 UEFI를 잠가 시큐어 부트 메커니즘 변조를 막기를 원한다는 점입니다. 잘 생각해 보면, 이는 애플이나 구글이 자사 폰에 적용하는 것과 다르지 않습니다. 소위 '탈옥(jailbreak)'을 하려면 커스텀 펌웨어를 올려야 하잖습니까. 그러나 아무도 그것에 대해 항의하지 않으면서, 마이크로소프트가 같은 일을 하려고 하자 모두들 들끓습니다.
같은 맥락에서 마이크로소프트는 OEM 벤더에게 x86 플랫폼, 즉 데스크톱과 노트북 등에서 시큐어 부트에 대한 완전한 제어 권한을 허용하도록 요구합니다. 이제 OEM 벤더 이야기로 넘어가겠습니다.
OEM 벤더
시장 수치를 한번 들여다봅시다. 보통은 흥분한 MBA 졸업생이 무대 위를 활보하며 시장 '점유율(penetration)'이라는 단어를 강조하며 얼마나 신나는지 연설하곤 합니다. 그리고 마이크로소프트가 그 유명한 영토의 1평방밀리미터까지도 맹렬히 싸워 확보하려 한다고 생각할 수 있죠.
물론 마이크로소프트는 확실히 자신들의 시장 점유율을 지키려 합니다. 하지만 윈도우와 Windows RT에 대한 제약 조건과 그 부재를 고려하면, 실제로 문제될 것이 없어 보입니다. 몇 가지 간단한 통계를 보겠습니다. 모든 컴퓨터의 90%가 어떤 버전이든 마이크로소프트 윈도우를 실행합니다. 대략 90%의 컴퓨터는 사전 설치된 상태로 판매되며, 사용자들은 아무것도 바꾸려고 하지 않습니다. 약 90%의 사람들은 기본으로 깔려 있는 평범한 OS 외에 듀얼부팅이나 다른 운영체제 사용에 대해 생각조차 하지 않습니다. 리눅스는 결코 문제가 아니었고 지금도 아닙니다.
같은 맥락에서, 리눅스를 사용하는 사람들은 능숙하고 기술적으로 유능해서 UEFI 메뉴에 들어가 듀얼부팅, 트리플부팅 등을 위해 필요한 변경을 손쉽게 할 수 있습니다. 대부분의 리눅스 사용자는 운영체제가 설치되지 않은 일반 하드웨어를 구매할 가능성이 높으므로, 애초에 시큐어 부트 개념 자체가 거론될 일이 없습니다. 아무것도 아닌 일에 대한 소동일 뿐이지만, 드라마가 더 재미있으니까요.
스스로에게 던져야 할 유일한 질문은 다음과 같습니다. 시큐어 부트를 지원하고 사용하며 윈도우가 사전 설치된 OEM 하드웨어에서, 자신만의 운영체제를 사용하려 할 때, 벤더가 요구 사항을 준수해 시큐어 부트 기능의 비활성화나 수정을 진정으로 허용해 줄 것인가?
이것이 유일하게 관련 있는 질문입니다. UEFI와 그 기능에도, 마이크로소프트의 욕망과 목표, 전략에도, 벤더에 대한 요구 사항에도 잘못된 것이 없습니다. 유일한 질문은 이 벤더들이 표준을 준수할 것인가, 혹은 특정 사용자 변경을 막고 기능을 무력화하도록 UEFI를 수정할 것인가 하는 것입니다. 걱정해야 할 것은 오직 이것뿐입니다.
그 답은 다음과 같습니다. 제한적이거나 축소된 UEFI 인터페이스를 가진 하드웨어—대부분 노트북—는 구매하지 마십시오. 사용 방식을 제한할 수 있는 하드웨어는 사지 않는 겁니다. 반드시 다음을 지원하는 기기를 구매하세요. 1) 시큐어 부트 설정 변경 지원, 2) 구형 BIOS를 에뮬레이트하는 레거시 모드 지원. 지금 당장 걱정할 것은 이게 전부입니다.
UEFI가 잘 작동하는 실제 사례
저는 데스크톱 두 대를 구매했습니다. 하나는 2011년에, 다른 하나는 2012년에, 거의 동일한 사양입니다. 두 대 모두 ASUS 보드, 그리고 그에 따른 ASUS 펌웨어를 사용합니다. 두 경우 모두 UEFI를 사용하며 레거시 부트를 지원합니다. 두 머신 모두에서 윈도우 7과 여러 리눅스 배포판을 어떠한 문제도 없이 설치하고 실행했습니다. 시큐어 부트는 문제로 대두된 적이 없습니다. 비활성화되어 있거나 메뉴에 없거나, 누가 신경 쓰겠습니까? 그게 전부입니다. 하드웨어를 신중하게 선택하면, 자산에 대한 완전한 통제권을 가진 상태에서 원하는 대로 자유롭게 수정할 수 있습니다.
UEFI 공포 스토리
이제 스펙트럼의 반대편 끝에는, 특정 삼성 노트북에서 리눅스 부팅을 시도했다가 벽돌(bricked)이 되었다는 자칭 무서운 이야기들이 있습니다. 이 역시 즉시 또 하나의 마이크로소프트 음모론으로 둔갑했습니다. 하지만 곧 모두가 깨달았죠. 여기서 시큐어 부트는 문제가 아니었다는 것을요. 오히려 펌웨어의 버그로 인한 운영체제와 펌웨어 간의 호환성 문제가 머신을 멈추게 한 것입니다.
자연스럽게 사람들은 UEFI가 사악하다고 비난하기 바빴습니다. 하지만 문제는 특정 부팅 모드에서, 그리고 특정 버전의 리눅스에서만 발생했습니다. 게다가 하드웨어가 벽돌이 되는 이야기는 새롭지 않습니다. 과거에도 DVD 라이터나 라우터 같은 특정 제품에서, 때로는 머신 전체에서 수없이 많은 유사 사례가 있었습니다. 일어나는 일이죠. 버그가 있고, 그리고 해결됩니다.
참고: 이미지 출처는 Wikimedia이며, CC BY-SA 3.0 라이선스를 따릅니다.
UEFI에도, 삼성에도, 리눅스에도 잘못이 없습니다. 특정 조건에서 여러 구성 요소를 조합하면 문제가 발생할 수 있고, 실제로 발생합니다. 이 문제가 표면화된 이유는 아마도 삼성이 윈도우가 사전 설치된 노트북에서 우분투 등을 테스트하지 않았기 때문일 겁니다. 같은 문제가 공장 조립 과정에서 발생했을 수도 있지만, 그 경우 삼성은 마이크로소프트에 연락해 조용히 해결했을 겁니다. 하지만 실제로는 그렇지 않았죠. 왜냐하면 이 문제가 윈도우에서도 나타났으니까요. 짜잔! 음모론은 여기서 끝납니다.
OEM 벤더가 운영체제 및 하드웨어 회사에 찾아가 펌웨어 수정을 요청하는 이런 종류의 사례가 수시로 수백 건씩 일어난다는 것은 여러분이 알고 싶어 하지도 않을 겁니다. 고객 입장에서 알 필요도 없고, 신경 쓸 필요도 없습니다.
또 다른 공포 스토리
사람들은 또 시큐어 부트가 활성화된 시스템에서 하드웨어를 변경한 후 부팅되지 않는다고 떠들어댑니다. 물론 새 하드웨어 구성 요소는 새로운 장치 열거를 의미하고, 그러면 디지털 서명 해시가 저장된 키와 더 이상 일치하지 않게 됩니다.
작은 문제일 수 있지만 해결도 쉽습니다. 하드웨어를 변경하기 전에 시큐어 부트를 비활성화하면 됩니다. 우리는 다시 OEM 벤더가 규격과 표준을 준수하느냐의 문제로 돌아갑니다. 솔직히 말해, 데스크톱에서는 이런 문제가 발생할 일이 거의 없을 겁니다. 노트북이라 해도, 솔직히 하드웨어를 얼마나 자주 교체합니까?
결론
UEFI는 악마가 아닙니다. 단지 BIOS와 다를 뿐이며, 운영체제가 그 기능을 활용하도록 적응해야 할 뿐입니다. 간단한 얘기죠. 마찬가지로 시큐어 부트 기능도 너무 걱정할 것은 아무것도 없습니다. 여러분이 해야 할 일은, 고객을 하찮게 여기지 않는 벤더의 하드웨어를 구매하는 것뿐입니다. 그게 전부입니다.
이 간단한 규칙과 지침만 지키면, UEFI 하드웨어에서의 멀티부팅 경험은 쾌적하고 번거로움 없이 이루어질 것입니다. 언젠가 리눅스 배포판들이 모두 시큐어 부트를 네이티브로 매끄럽게 지원하게 되면, 그 문제 역시 완전히 사라질 겁니다. 그 외에는 언제나처럼, 하드웨어가 어느 날 벽돌로 변할 아주 작은 가능성 정도가 남습니다. 하지만 그건 오늘의 약어가 무엇이든 관계없이 일어날 수 있는 일입니다. 자, 이제 쓸데없는 드라마는 그만!
즐거운 컴퓨팅 되시길 바랍니다.