들어가며
누구나 알다시피 ARM64 플랫폼 컴퓨터에서 컴퓨터 시스템을 구동하면 호환성 문제를 적지 않게 마주친다. 마이크로소프트의 오랜 노력 덕분에 ARM 아키텍처 Windows는 점점 더 쓸 만해졌고, x86_64 애플리케이션을 에뮬레이션으로 돌려도 능숙하게 처리하며 성능 손실도 적고 배터리 사용 시간도 더 길어졌다. 예를 들어 Surface Pro X는 ARM 프로그램만 구동할 때 화면 켜짐 기준으로 무려 6~7시간을 버티지만, 배터리 용량이 약 20% 더 큰 Surface Pro 9 Intel 버전은 3.5시간도 버티기 어렵다(절전 모드를 켜지 않았을 때 기준). 게다가 Pro X는 Pro 9보다 무려 3년이나 먼저 출시됐지만 일상적인 사용에서 성능 체감은 거의 차이가 없고, 오히려 고부하 상황에서는 Pro 9의 팬이 미친 듯이 돌고 시스템이 버벅이면서 성능 발휘 체감이 2020년에 출시된 Surface Pro X 2세대보다도 못하다. 따라서 휴대용 기기에서 ARM 칩으로 컴퓨터 운영체제를 구동하는 일은 잠재력이 점점 커지고 있다.
하지만 현재 시중의 모든 Linux 배포판 중 스냅드래곤 칩, 특히 8cx 1세대와 2세대에 맞춘 것은 하나도 없다. 나도 처음에는 배포판부터 손대려고 했는데, 7~8개 배포판을 실행해 보려다 전부 실패했다. 거의 모든 자료(중국어, 영어를 비롯한 여러 언어 자료)를 뒤져 봤지만 Surface를 비롯한 8cx 기기를 위한 설치 가이드를 작성한 사람이 전혀 없다는 것을 알게 됐다. 이는 내 실전 작업에 큰 도전이 됐다.
그런데 Windows를 돌리는 ARM 노트북이 이렇게 좋은데, 왜 나는 기어코 Linux를 돌리려고 했을까?
여기서 욕을 먹는 위챗을 언급하지 않을 수 없다. 위챗은 ARM64용 Windows 버전을 제공하지 않는다. 앞서 말한 배터리 시간은 실행하는 소프트웨어가 전부 ARM64를 지원한다는 전제가 있어야 한다. x86-64 소프트웨어 몇 개만 동시에 실행해도 배터리 시간은 4시간 정도로 돌아가서 1~2시간이 줄어든다. 그래도 아깝다. 그래서 나는 이 기기에 Linux를 설치하기로 마음먹었다.
험난한 과정
원인
우선 ARM 기기에서 운영체제를 구동하는 것 자체는 어렵지 않다. BIOS가 일반 컴퓨터처럼 단순하고, 칩이 호환되며, 운영체제 커널이 이 기기의 핵심 드라이버에 맞기만 하면 기본적으로 ARM64 컴퓨터는 돌아간다. 일반적인 Linux 커널은 대부분의 흔한 오픈소스 드라이버를 내장하고 있어서, 보통 컴퓨터에 Linux를 설치할 때는 드라이버를 설치하는 번거로운 과정이 필요 없는 경우가 많다. 임시 부팅으로 들어가 설치 버튼을 누르고 설치 프로그램이 진행 바를 끝까지 채울 때까지 기다리면 컴퓨터를 바로 쓸 수 있다. 하지만 이건 Surface다. Surface 자체가 일반 컴퓨터와 다르다는 점은 차치하더라도, 터치스크린, 키보드, 스피커 등이 모두 시중에서 흔한 플러그 앤 플레이 제품이 아니어서 드라이버를 구하기가 매우 어렵다. 스냅드래곤 8cx2 칩만 해도 원래 거의 모든 Linux 배포판과 호환되지 않는데, 이 컴퓨터의 칩은 원본 8cx2도 아니고 마이크로소프트가 개조해서 Microsoft SQ2라고 이름 붙인 것이다. 그래서 우리는 고수가 호환 작업을 해 주기만을 기다릴 수밖에 없다.
과정
첫째 날, 아무것도 모르던 나는 배포판부터 시도했다. Ubuntu부터 Debian, CentOS, 그리고 deepin까지. 그중 Debian 13의 non-free 하드웨어 버전은 시스템 설치 화면까지 부팅하는 데 성공했지만 USB와 Surface 키보드, 터치스크린을 전부 사용할 수 없었다. 나는 범용 커널만으로는 Surface 같은 하드웨어에 정상적으로 설치할 수 없다는 것을 깨닫기 시작했다.
둘째 날, 나는 linux-surface 프로젝트로 방향을 틀었다. 하지만 이 프로젝트에는 오해의 소지가 있었다. 홈페이지의 기기 지원 목록에 Surface Pro X 지원 여부가 명시되어 있지 않아서(지원 기기는 전부 x86 칩 머신으로 적혀 있었다) 처음에는 이 프로젝트를 고려하지 않고 스냅드래곤 8cx 칩에서 부팅 가능한 Linux 시스템만 찾고 있었다. 프로젝트 홈페이지로 돌아가 보니 아래쪽에 아주 눈에 띄지 않는 프로젝트가 하나 있었다. aarch64-arch-mkimg이다. 이는 부팅 가능한 이미지(ArchLinuxARM. 처음에 고려하긴 했지만 공식 지원이 없었다)로, live 환경만 부팅할 수 있는 USB 부팅 이미지에 해당한다. 놀랍게도 USB에 구운 뒤 화면도 정상이고 USB도 정상이며, Surface 키보드와 Wi-Fi까지 정상적으로 호환됐다. 이 이미지가 있으면 그것으로 하드디스크에 Linux를 직접 설치할 수는 없더라도, 최소한 필요한 커널 프로그램은 확보한 셈이다.
내 생각은 AI의 지시를 한 단계씩 따라 하면서 디스크 파티션과 설치 과정을 완료하는 것이었다. 하지만 개미만 한 글자가 화면에 표시되어 정말 보기 괴로웠다. 오전 내내 작업한 뒤에는 시력이 꽤 좋아진 느낌마저 들었다…… 하지만 성공하지 못했고, 시스템이 Linux로 정상 부팅되지 않았다. 그런데 나는 잘못된 결정을 내렸다. 부팅 화면까지 성공한 Debian을 파고들기로 한 것이다. 자세한 이야기는 생략하겠다. 또 몇 시간을 날렸다…… 막다른 길에 몰린 순간, 문득 한 가지가 떠올랐다. Wi-Fi가 정상적으로 연결된다면 에이전트로 SSH를 통해 내 컴퓨터에 접속해서 AI에게 조작하게 하면 되지 않을까? 말이 나왔으니 바로 실행이다. 컴퓨터에서 Mimo Code로 Surface에 연결하고 바로 작업을 시작했다(사실 SSH 연결도 체력 싸움이다. 실패할 때마다 live 환경으로 재부팅하고, Wi-Fi에 연결하고, root로 전환하고, SSH를 켜야 하니 매번 눈과 머리와 손가락에 고문이다). 연속 7~8번의 재부팅과 오류를 겪으며 오후 1시부터 4시까지 작업했다.
하지만 나는 완전 바보였다는 걸 깨달았다. 로그인하기 귀찮아서 계속 샤오미 무료 기본 모델만 쓰고 있었다. 이런 일은 아무 소형 모델로도 될 거라고 생각했던 것이다. 그런데 전환점은 오후 4~5시가 AI 사용 피크 시간대라 무료 모델의 렉이 매우 심했다는 점이다. 그냥 mimo에 로그인해서 다시 시켰다. 마지막으로 AI에게 명령을 입력했을 때, 해냈다. 시스템이 Linux 명령줄 인터페이스로 부팅하는 데 성공했다! 아직 민가구 상태이긴 하지만, 이는 성공을 향한 큰 한 걸음이다. 정말 믿기지 않겠지만, 나는 원테이크 영상까지 저장해 두었다. pro 모델로 막 전환하고 첫 시도에 바로 성공했다. 도대체 내가 이틀 동안 뭘 한 거냐? 그냥 스스로를 고문한 거 아니냐?!
셋째 날, 민가구 인테리어를 시작했다. 인테리어는 정말 골치 아픈 일인데, 다행히 AI의 도움 덕분에 그나마 나았다. 아니었으면 꼬박 1~2주는 걸렸을 것이다. 어려운 점은 이렇다. 우선 이 시스템은 드라이버가 불완전해서 Wi-Fi에 연결되지 않고, SSH를 바로 쓸 수도 없다. 가장 황당한 것은 계정과 비밀번호조차 없다는 점이다. 그래서 먼저 로그인 문제를 해결하고(이런 사소한 일도 AI로 해결할 수 있다), 그다음 난관이 왔다. 아직 인터넷에 연결할 수 없다는 것이다. 유선을 꽂아도 소용없다. 이때는 아까 USB 부팅용으로 쓴 USB를 포맷하고, AI가 이전에 다운로드한 유용한 커널이 담긴 이미지를 바탕으로 스크립트를 작성해서 네트워크 도구를 설치하고, openssh를 설치하고, IP 주소를 자동으로 표시하게 해야 한다. 이 단계도 인내심이 좀 필요하다. 오류를 정면으로 마주해야 한다. 나중에 핵심 사항을 정리해서 올리겠다.
그다음 단계는 다시 SSH에 연결하게 하는 것이다. 타임라인은 또 오후가 됐다. 하지만 적어도 이제 난관은 모두 해결됐다. 계속 손을 놓고 MimoCode가 GNOME(취향에 따라 KDE를 선택해도 된다. 하지만 나는 Nyarcher, 즉 ArchLinux를 Nyarch처럼 2차원 느낌으로 가득 채워 주는 패치를 적용하고 싶었다), 위챗과 QQ의 Linux ARM64 버전 등 자주 쓰는 소프트웨어를 설치하게 했다. (물론 이때 Wi-Fi와 블루투스 드라이버가 가끔 끊길 수 있어서 해결이 필요할 수도 있다.) 그러고 나서 이 3일 중 가장 여유로운 시간이 찾아왔다. 차 마시기다. 아니, 그건 여러분이고, 나는 운전면허 필기시험 동영상을 봐야 해서 컴퓨터는 그냥 켜 둔 채 뒀다. (아, 수능이 끝난 지 벌써 한 달이 지났는데 매일 일하는 기분이고, 스스로에게 휴가를 전혀 주지 못했네!)
이것으로 Surface에 Linux 설치하기는 끝났다. 스크린샷과 자세한 튜토리얼은 다음 편에서!