【上集·未完稿】Surface Pro X(ARM64骁龙8cx2)适配内核-安装Linux实践
前言
众所周知,在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二代。所以,ARM芯片上运行电脑操作系统于便携设备而言,潜力越来越大。
但是,目前市面上的所有Linux发行版本没有一个对骁龙芯片进行适配,特别是8cx1代和2代,我一开始也是想从发行版开始下手,结果在尝试启动了七八个发行版之后,都失败了。我查了几乎所有的资料(包括中英文以及更多语言的资料),发现根本没有人为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的非自由硬件版本成功启动到了系统安装页面,但由于USB和Surface的键盘还有触屏都无法使用。我开始了解到光靠通用的内核并无法正常在Surface这样的硬件上安装。
第二天,我转而投降了linux-surface这个项目。 但这个项目有一个误导性。首页的设备支持明确没有写Surface Pro X的支持性(所有支持的设备都写的是x86芯片的机器 ),导致我一开始没有考虑这个项目,而只是在搜寻骁龙8cx芯片能启动的Linux系统。我们回到这个项目的主页,在线面有一个很不起眼的项目:aarch64-arch-mkimg。我发现这是一个可启动的镜像(ArchLinuxARM,我一开始考虑过,但官方没适配),相当于仅仅能启动live环境下的U盘启动镜像。令人惊喜的是,将它烧录在U盘后,显示正常,usb正常,就连Surface键盘和Wifi也适配正常。 有了这个镜像,即使你没办法通过它直接在硬盘上安装Linux,但至少你获得了相应需要的内核程序。
我的想法是,一步步跟着AI的instruction一步步完成磁盘分区、安装的过程。但那蚂蚁大的字母显示在屏幕上,看得我十分难受,在操作了一整个上午之后,感觉我的视力都好了不少……但并没有成功,系统没有正常引导进Linux. 但我做了一个错误的决定:去研究能成功启动到界面的Debian。我就不展开细说了,又废了几个小时…… 就在我一筹莫展之际,我突然想到一件事:既然他能够正常连接WiFi,我为啥不用agent用ssh连上我的电脑,让AI来操作呢? 说干就干,我在电脑上用Mimo Code连接上Surface就开干(其实连接ssh也是一个体力活,每次失败都得重启到live环境、连接WiFi、切换root、开启ssh,每次都是对眼睛和脑袋还有手指的折磨。)连续七八次的重启报错,我从下午一点一直干到4点。
但我发现我就是纯傻。 因为我懒得登录,我用的一直都是小米免费的基础模型,我以为这种事情随便的小模型就可以。但转折点是,下午四五点正是AI使用的高峰期,免费的模型卡顿非常严重,干脆我就登录了mimo,重新让他帮我弄。当我最后一次给AI输入指令的时候,他成了。系统成功启动到Linux命令行界面!尽管这还是毛坯房,但这却是成功的一大步。 你还真别不信,我这还保存了一镜到底的视频,刚切pro模型,第一次就给我搞成了。你就说我这两天我到底在做什么?这不纯纯折磨自己吗?!
第三天,开始给毛坯房装修。给他装修真是一个麻烦事,还好有AI的帮忙,不然得装整整一两周。难点在于:首先,这个系统驱动不全,WiFi连接不上,我还没办法直接ssh,最奇葩的是,我居然没有账号和密码。所以首先解决登录问题(这种小事也可以用AI解决),之后,难点来了,目前还无法联网。即使插了有线也没用。此时我们就需要将之前作为U盘启动的U盘格式化,让AI根据之前下载的包含有用内核的镜像编写脚本、安装联网工具、安装openssh并自动显示ip地址。这一步也需要一些耐心。需要直面报错。之后我会把要点总结一下发出来。
再下一步又是让他连上ssh了。时间线又到了下午。但至少这下难点都已经解决了。我们继续解放双手,让MimoCode帮我安装GNOME(也可以按自己喜好选择KDE,但我想应用Nyarcher,就是让ArchLinux能像Nyarch一样充满二次元气息的补丁)、微信和QQ的Linux ARM64版本等等常用软件。(当然,其实这时wifi和蓝牙有时候会掉驱动,可能需要解决)然后,这三天就迎来了最休闲的时光:喝茶。不对,那是你们,我还得去学习科目一的视频,电脑就晾在这里了。(哎,感觉考完高考已经过去一个月了,但每天都像在工作,完全没有给自己放假啊!)
到此,Surface上安装Linux的事情结束。 配图和详细教程什么的等下集吧!