戰(zhàn)指南)
說(shuō)實(shí)話我第一次刷到SteamOS跨進(jìn)ARM時(shí)代G胖卻在辦公室練習(xí)5個(gè)月呼麥把同事唱到關(guān)門(mén)這條消息時(shí)第一反應(yīng)是哪個(gè)玩家社區(qū)又開(kāi)腦洞了。前半個(gè)標(biāo)題還能算正經(jīng)科技新聞后半個(gè)——五個(gè)月呼麥、同事被唱到關(guān)門(mén)——怎么看都像段子。結(jié)果認(rèn)真查了一圈發(fā)現(xiàn)這兩件事還真被網(wǎng)友縫到一起了Valve確實(shí)在往ARM方向推進(jìn)SteamOS的適配至于Gabe Newell是不是真的在辦公室吊了五個(gè)月嗓子……大概率是個(gè)梗但大家玩得很開(kāi)心。呼麥這玩意兒講究一個(gè)人同時(shí)發(fā)出低音和持續(xù)泛音恰好可以用來(lái)比喻這次ARM移植要干的事一邊要解決x86游戲在ARM芯片上的翻譯運(yùn)行一邊要把底層圖形棧在ARM GPU上重新打通兩條線同時(shí)發(fā)聲誰(shuí)都不能掉鏈子。拋開(kāi)段子不談SteamOS擁抱ARM這件事對(duì)玩家的意義遠(yuǎn)不止多一個(gè)系統(tǒng)版本那么簡(jiǎn)單。它意味著Steam游戲可能不再被x86架構(gòu)綁死未來(lái)驍龍掌機(jī)、ARM迷你主機(jī)、甚至開(kāi)發(fā)板都有機(jī)會(huì)變成能跑Steam的機(jī)器。對(duì)開(kāi)發(fā)者來(lái)說(shuō)這一波帶動(dòng)的是一整套ARM生態(tài)實(shí)操技能鏡像下載與刷機(jī)、ARM交叉編譯、img/qcow2虛擬鏡像的使用、ARM環(huán)境的部署調(diào)試這些過(guò)去偏嵌入式的東西會(huì)逐漸成為普通玩家折騰的日常。所以這篇文章不打算只聊新聞。我會(huì)從為什么必須做ARM講起拆一下技術(shù)上的硬骨頭然后把工具準(zhǔn)備、鏡像選擇、交叉編譯和問(wèn)題排查這些實(shí)操環(huán)節(jié)一并過(guò)一遍。無(wú)論你是想第一時(shí)間上車(chē)的玩家還是打算在ARM設(shè)備上部署開(kāi)發(fā)環(huán)境的人后面這些內(nèi)容應(yīng)該都派得上用場(chǎng)。1. 為什么SteamOS必須跨過(guò)ARM這道門(mén)檻1.1 平臺(tái)自由度不想被別人捏著命門(mén)Valve這幾年的思路其實(shí)非常明確Steam不能永遠(yuǎn)寄生在某個(gè)操作系統(tǒng)上更不能被芯片架構(gòu)鎖死。Steam Deck用AMD銳龍芯片證明了x86掌機(jī)這條路走得通但x86在功耗、體積和成本上并不占優(yōu)尤其在掌機(jī)這種對(duì)續(xù)航極度敏感的設(shè)備上。ARM芯片雖然在絕對(duì)性能上追不上高性能x86但在能效比上有天然優(yōu)勢(shì)——同樣的電池容量ARM架構(gòu)能多撐不少時(shí)間。掌機(jī)市場(chǎng)接下來(lái)要往下沉、往輕薄走ARM幾乎是繞不開(kāi)的方向。再往大了說(shuō)Valve把SteamOS開(kāi)放給第三方掌機(jī)比如聯(lián)想Legion Go S就已經(jīng)帶著SteamOS登場(chǎng)本質(zhì)上是想復(fù)制一個(gè)安卓式的生態(tài)系統(tǒng)歸自己硬件大家隨便造。如果這個(gè)系統(tǒng)只支持x86那硬件廠商就只能找Intel和AMD供應(yīng)鏈被鎖住一大半。只有同時(shí)支持ARM才能把高通、聯(lián)發(fā)科這些移動(dòng)芯片大廠拉進(jìn)同一個(gè)牌桌讓更多SoC廠商都變成SteamOS的潛在合作伙伴。1.2 從掌機(jī)系統(tǒng)到客廳系統(tǒng)SteamOS的棋盤(pán)更大大家習(xí)慣把SteamOS叫作掌機(jī)系統(tǒng)但我更愿意把它理解成Valve醞釀已久的客廳操作系統(tǒng)。Steam Deck的桌面模式、Big Picture手柄大屏交互還有最近幾年在HTPC家庭影院PC圈子里慢慢回溫的客廳裝機(jī)需求都指向同一個(gè)目標(biāo)讓一臺(tái)小主機(jī)既能打游戲又能當(dāng)媒體中心。ARM在這里的優(yōu)勢(shì)非常明顯——發(fā)熱小、安靜、可以無(wú)風(fēng)扇設(shè)計(jì)很適合塞進(jìn)電視柜。另外一個(gè)容易被忽略的增量是串流。Steam本身有Steam Link、Remote Play和云游戲服務(wù)ARM設(shè)備的本地性能就算暫時(shí)跑不動(dòng)3A大作靠串流玩完全沒(méi)問(wèn)題。低功耗ARM盒子常年開(kāi)機(jī)掛機(jī)隨手一按就能接入手柄開(kāi)玩這個(gè)體驗(yàn)是x86大機(jī)箱給不了的。所以ARM版SteamOS的價(jià)值不只是能玩本地游戲更是把整個(gè)Steam的遠(yuǎn)程游玩體系帶到輕量設(shè)備上。1.3 需求側(cè)的暗流已經(jīng)有人在這么干了其實(shí)很多需求早就冒出來(lái)了只是官方之前沒(méi)接。驍龍X Elite筆記本用戶(hù)想跑Steam游戲只能靠Windows自帶的x64模擬層兼容性參差不齊一批用ARM開(kāi)發(fā)板裝Linux的人早就通過(guò)box64這種開(kāi)源x86模擬層在跑Steam客戶(hù)端和部分游戲還有那些用ARM版Windows PE做系統(tǒng)維護(hù)的老折騰玩家也在催生態(tài)。社區(qū)里ARM跑Steam的討論熱度一直不低但底層驅(qū)動(dòng)不完善、模擬層效率低、沒(méi)人做整合——這些是個(gè)人玩家解決不了的系統(tǒng)級(jí)問(wèn)題。Valve下場(chǎng)正好補(bǔ)上這一環(huán)。提示目前公開(kāi)的ARM適配跡象主要來(lái)自Valve的招聘崗位、開(kāi)源倉(cāng)庫(kù)里的ARM相關(guān)改動(dòng)以及Proton/Wine社區(qū)對(duì)ARM64的持續(xù)完善。官方發(fā)布穩(wěn)定版還需要時(shí)間但這不代表方向有疑問(wèn)。2. 技術(shù)上最難啃的骨頭在哪里2.1 指令集翻譯x86游戲不會(huì)自己說(shuō)ARM話把SteamOS移植到ARM最難的不是系統(tǒng)本身而是那一大堆x86軟件。Windows游戲絕大多數(shù)是按x86/x86_64指令集編譯出來(lái)的ARM芯片根本不認(rèn)識(shí)。要讓它們?cè)贏RM上跑起來(lái)有兩種思路一種是等廠商重新編譯ARM版——基本不可能幾千個(gè)老游戲沒(méi)人會(huì)回頭處理另一種是用動(dòng)態(tài)二進(jìn)制翻譯在運(yùn)行時(shí)把x86指令翻譯成ARM指令。這個(gè)技術(shù)看著玄乎其實(shí)已經(jīng)不算新鮮了蘋(píng)果M系列芯片上的Rosetta 2、微軟在驍龍Windows筆記本上的x64模擬走的都是這條路。到了SteamOS這邊情況更復(fù)雜因?yàn)橛螒虿恢皇窃鶯inux版還有大量通過(guò)Proton跑的Windows游戲。這就意味著運(yùn)行鏈路上要疊好幾層——x86指令翻譯、加上Wine的Windows API模擬、再疊加DXVK的圖形調(diào)用轉(zhuǎn)換。每多一層性能和穩(wěn)定性就多打一次折扣。網(wǎng)上有人實(shí)測(cè)過(guò)box64跑Steam客戶(hù)端和部分游戲效率大概能做到原生的一半到七成但隨機(jī)崩潰和兼容問(wèn)題一大堆。Valve要把它做到開(kāi)箱即用的水平工程量可想而知。2.2 圖形棧GPU驅(qū)動(dòng)才是真門(mén)檻指令翻譯是顯性的難圖形棧是隱性的難。x86平臺(tái)上AMD、Intel、NVIDIA的Linux驅(qū)動(dòng)經(jīng)過(guò)十多年打磨已經(jīng)相當(dāng)成熟ARM平臺(tái)上GPU廠商是另外一撥——高通Adreno、ARM Mali、Imagination PowerVR對(duì)應(yīng)的開(kāi)源驅(qū)動(dòng)分別是Mesa里的Freedreno、Panfrost和PowervR。性能天花板比PC顯卡低不少而且優(yōu)化程度參差不齊。更關(guān)鍵的是Steam Deck的整個(gè)游戲界面建立在一個(gè)叫Gamescope的合成器上負(fù)責(zé)幀率限制、HDR、手柄UI這些功能。這東西在x86 AMD平臺(tái)上跑得很順但在ARM GPU上能不能穩(wěn)定輸出、能不能完成Vulkan層面的調(diào)度都要重新適配。DXVK和VKD3D-Proton這些DirectX轉(zhuǎn)Vulkan的層也依賴(lài)底層Vulkan驅(qū)動(dòng)的質(zhì)量。說(shuō)白了ARM移植真正燒時(shí)間的不是系統(tǒng)而是把圖形這條鏈路在陌生的GPU上重新捋一遍。2.3 Wine、Proton與那場(chǎng)呼麥?zhǔn)降亩嗑€并進(jìn)回到開(kāi)頭那個(gè)段子。呼麥的功夫在于一個(gè)人同時(shí)穩(wěn)定輸出低音和泛音旋律ARM移植恰好也是這個(gè)狀態(tài)一邊要讓翻譯層相當(dāng)于低音持續(xù)、穩(wěn)定、不能斷把成千上萬(wàn)游戲的x86指令接住另一邊要讓原生ARM的圖形棧和兼容層相當(dāng)于泛音旋律跑得漂亮。兩條線要同時(shí)進(jìn)行缺一條就整個(gè)垮掉。警告Proton依賴(lài)的Wine在ARM64上確實(shí)有進(jìn)展ARM64版Wine和wow64轉(zhuǎn)換模式都在完善中但能跑和游戲庫(kù)隨手就能玩之間的距離短則半年長(zhǎng)則以年計(jì)。想當(dāng)?shù)谝慌垓v的人心態(tài)要放平。3. 想現(xiàn)在就上手先把工具和鏡像整明白3.1 鏡像下載ARM鏡像不是越新越好網(wǎng)上搜索SteamOS ARM鏡像或者ARM鏡像下載能找到的資源不少但魚(yú)龍混雜。鏡像大致分三類(lèi)一是官方或官方合作設(shè)備專(zhuān)用的恢復(fù)鏡像目前主要還是x86平臺(tái)二是社區(qū)愛(ài)好者制作的非官方ARM移植鏡像通常要配合特定開(kāi)發(fā)板三是通用ARM Linux鏡像比如各種發(fā)行版的aarch64版本還有img/qcow2這種格式的虛擬磁盤(pán)鏡像專(zhuān)門(mén)用在QEMU虛擬機(jī)里測(cè)試。下載之前先確認(rèn)自己的設(shè)備屬于哪一類(lèi)不要看到ARM就無(wú)腦刷。判斷鏡像是否適合自己的硬件主要看三點(diǎn)內(nèi)核有沒(méi)有包含對(duì)應(yīng)SoC的設(shè)備樹(shù)或驅(qū)動(dòng)支持引導(dǎo)方式是U-Boot還是UEFI以及GPU有沒(méi)有對(duì)應(yīng)的開(kāi)源驅(qū)動(dòng)。比如RK3588這類(lèi)開(kāi)發(fā)板社區(qū)鏡像多一些驍龍掌機(jī)則要看廠商有沒(méi)有放出適配。建議優(yōu)先選帶完整文檔、寫(xiě)明硬件適配列表的鏡像別貪新找每日構(gòu)建版穩(wěn)定優(yōu)先。3.2 刷機(jī)工具萬(wàn)能工具箱的思維方式刷鏡像的工具Windows下最常見(jiàn)的是Rufus、balenaEtcher想搞多系統(tǒng)引導(dǎo)可以上Ventoy。Linux/macOS下直接dd就行但要注意ARM設(shè)備刷寫(xiě)前通常要處理GPT分區(qū)表、引導(dǎo)分區(qū)、設(shè)備樹(shù)這幾個(gè)概念不像給普通U盤(pán)寫(xiě)Windows鏡像那么傻瓜化。qcow2格式是QEMU虛擬機(jī)的磁盤(pán)文件不能直接寫(xiě)進(jìn)實(shí)體設(shè)備——它要在模擬環(huán)境里跑或者經(jīng)過(guò)轉(zhuǎn)換qemu-img convert轉(zhuǎn)成raw格式才能考慮燒錄。這里分享一下我比較順手的流程先下載一個(gè)qcow2格式的ARM Linux發(fā)行版鏡像在QEMU里啟動(dòng)驗(yàn)證基本功能確認(rèn)系統(tǒng)能進(jìn)、網(wǎng)絡(luò)能通再考慮往實(shí)體設(shè)備上嘗試。工具方面我會(huì)分成三類(lèi)燒錄類(lèi)balenaEtcher/Rufus、清洗與轉(zhuǎn)換類(lèi)fdisk/gdisk加qemu-img、備份類(lèi)dd/bmaptool。分類(lèi)明確之后刷機(jī)流程就會(huì)清晰很多。警告ARM設(shè)備的引導(dǎo)方案百花齊放同一塊開(kāi)發(fā)板上不同版本的固件可能引導(dǎo)邏輯不一樣。刷機(jī)前如果設(shè)備有原始系統(tǒng)先把原系統(tǒng)的完整鏡像導(dǎo)出備份再動(dòng)手。3.3 刷前驗(yàn)機(jī)三筆賬先算清楚動(dòng)手刷機(jī)之前我習(xí)慣先算三筆賬硬件支持賬GPU、WiFi、藍(lán)牙、聲卡這四個(gè)模塊只要有一個(gè)沒(méi)有Linux驅(qū)動(dòng)體驗(yàn)就會(huì)很糟糕。查證的路徑一般是內(nèi)核驅(qū)動(dòng)列表、發(fā)行版的硬件支持文檔、官方wiki。啟動(dòng)方式賬主流的ARM設(shè)備有U-Boot、UEFI、專(zhuān)用引導(dǎo)鏈等鏡像必須匹配。用錯(cuò)引導(dǎo)方式的結(jié)果就是刷完不亮、卡在Logo或者只能進(jìn)Fastboot/U-Boot命令行。恢復(fù)路徑賬能不能變磚了刷回來(lái)有沒(méi)有官方救磚工具是否有maskrom模式或全盤(pán)備份方案沒(méi)有后路的設(shè)備折騰前多想想。這三筆賬算完基本能過(guò)濾掉八成的刷機(jī)翻車(chē)。4. 從能刷到能開(kāi)發(fā)交叉編譯這關(guān)跑不掉4.1 為什么要交叉編譯以及怎么配ARM設(shè)備的性能參差不齊在開(kāi)發(fā)板上編譯一個(gè)稍微大點(diǎn)的項(xiàng)目能跑到CPU冒煙。而且很多時(shí)候你手上根本沒(méi)有ARM設(shè)備只有一臺(tái)x86電腦和一塊目標(biāo)開(kāi)發(fā)板。交叉編譯就是在這臺(tái)x86機(jī)器上用ARM的交叉工具鏈編譯出能在ARM上運(yùn)行的程序再通過(guò)網(wǎng)絡(luò)或存儲(chǔ)介質(zhì)傳過(guò)去執(zhí)行。最基礎(chǔ)的工具鏈?zhǔn)荊NU交叉編譯套件比如aarch64-linux-gnu-gcc64位ARM和arm-linux-gnueabihf-gcc32位ARMhard float。Linux發(fā)行版一般都能直接通過(guò)包管理器安裝sudo apt install gcc-aarch64-linux-gnu g-aarch64-linux-gnu sudo apt install gcc-arm-linux-gnueabihf g-arm-linux-gnueabihf除了GCCClang/LLVM支持通過(guò)--target參數(shù)做交叉編譯Rust則用rustup target add aarch64-unknown-linux-gnu加目標(biāo)。有一個(gè)容易踩坑的點(diǎn)交叉編譯不能只裝編譯器還要裝配套的sysroot也就是目標(biāo)系統(tǒng)對(duì)應(yīng)的頭文件和庫(kù)文件。沒(méi)有sysroot編譯出來(lái)的東西一旦引用系統(tǒng)庫(kù)就會(huì)在鏈接階段報(bào)一堆找不到文件的錯(cuò)誤。另外ARM芯片的NEON/SVE向量單元和x86的AVX指令集完全不同想榨干性能還得針對(duì)目標(biāo)架構(gòu)做優(yōu)化不能拿x86的編譯參數(shù)直接套。4.2 在ARM上跑服務(wù)Jar包、MQTT這類(lèi)常見(jiàn)需求很多讀者折騰ARM設(shè)備不一定是為了打游戲而是想把它當(dāng)?shù)凸姆?wù)器。這里有幾個(gè)高頻需求Java應(yīng)用Jar包現(xiàn)在OpenJDK對(duì)aarch64支持得很好了裝個(gè)aarch64版JDK直接java -jar就能跑。個(gè)別腳本或老程序里硬編碼了x86路徑需要順手改一下。MQTT消息服務(wù)mosquitto是輕量級(jí)brokerARM上編譯安裝毫無(wú)壓力作為物聯(lián)網(wǎng)或智能家居的中樞很合適。數(shù)據(jù)庫(kù)和中間件MySQL、PostgreSQL、Redis、Nacos這些主流組件官方都有ARM版本或容器鏡像docker加compose在ARM上已經(jīng)很成熟。AI應(yīng)用平臺(tái)像Dify這類(lèi)項(xiàng)目也早就放出了ARM鏡像低功耗ARM小主機(jī)跑本地AI服務(wù)是完全可行的。我自己的經(jīng)驗(yàn)是ARM服務(wù)器上優(yōu)先使用官方ARM64源和容器鏡像別圖新鮮去編源碼。容器化部署能省掉大量環(huán)境兼容問(wèn)題。當(dāng)然如果想純粹體驗(yàn)編譯寫(xiě)個(gè)小服務(wù)用aarch64-gcc加CMake跑一遍完整鏈路通了之后會(huì)非常有成就感。真遇到程序崩潰需要定位時(shí)用gdb配合交叉工具鏈里的addr2line做調(diào)用?;厮菔桥挪槎五e(cuò)誤最有效的路子。4.3 沒(méi)有實(shí)體設(shè)備QEMU幫你先跑起來(lái)不是所有人手上都有一塊ARM開(kāi)發(fā)板。沒(méi)有實(shí)體設(shè)備想提前體驗(yàn)ARM環(huán)境QEMU是你的好朋友。qemu-system-aarch64配合ARM架構(gòu)的發(fā)行版鏡像很多提供qcow2格式在x86電腦上就能模擬一臺(tái)ARM虛擬機(jī)。流程大概是下載qcow2鏡像準(zhǔn)備UEFI固件比如QEMU_EFI.fd再用qemu-system-aarch64指定內(nèi)存、CPU類(lèi)型比如cortex-a72和網(wǎng)卡啟動(dòng)。qemu-system-aarch64 \ -M virt -m 2G -cpu cortex-a72 \ -bios QEMU_EFI.fd \ -drive filearm-linux.qcow2,formatqcow2,ifvirtio \ -device virtio-net-pci -nic user模擬器性能肯定比實(shí)體硬件差不少但做軟件適配、驗(yàn)證交叉編譯產(chǎn)物、測(cè)試服務(wù)依賴(lài)關(guān)系是足夠的。有個(gè)小技巧在x86 Linux主機(jī)上沒(méi)法用KVM給ARM guest加速所以做好耐心的準(zhǔn)備但如果只是跑單個(gè)ARM可執(zhí)行文件用qemu-aarch64加binfmt_misc再配合交叉編譯器能做到編譯完直接執(zhí)行體驗(yàn)非常順滑。5. 常見(jiàn)問(wèn)題與排查實(shí)錄5.1 刷完開(kāi)機(jī)黑屏、卡Logo、無(wú)顯示輸出這是ARM刷機(jī)最常遇到的問(wèn)題。原因通常是三種鏡像和開(kāi)發(fā)板不匹配設(shè)備樹(shù)不對(duì)、GPU沒(méi)有加載驅(qū)動(dòng)、引導(dǎo)參數(shù)里顯示接口配置錯(cuò)。排查順序我一般是這樣先確認(rèn)電源指示燈和串口日志開(kāi)發(fā)板一般有UART調(diào)試接口看內(nèi)核有沒(méi)有完整跑起來(lái)再看發(fā)行版文檔確認(rèn)支持列表最后檢查引導(dǎo)參數(shù)比如部分板子要顯式指定hdmi_mode或者關(guān)閉聲卡檢測(cè)。別一開(kāi)始就怪鏡像先確認(rèn)固件和啟動(dòng)介質(zhì)對(duì)不對(duì)。5.2 游戲啟動(dòng)即閃退、兼容層報(bào)錯(cuò)在未正式發(fā)布的ARM移植環(huán)境里游戲閃退太常見(jiàn)了。排查思路第一步在Steam設(shè)置里禁用Shader預(yù)緩存很多ARM平臺(tái)緩存邏輯有問(wèn)題第二步強(qiáng)制使用特定的Proton版本或者用老版本W(wǎng)ine測(cè)試第三步打開(kāi)終端啟動(dòng)游戲把stderr輸出抓出來(lái)重點(diǎn)關(guān)注有沒(méi)有Vulkan擴(kuò)展缺失、動(dòng)態(tài)庫(kù)找不到.so not found之類(lèi)的報(bào)錯(cuò)最后如果游戲帶DXVK日志開(kāi)啟debug模式定位是圖形層崩的還是音頻層崩的。5.3 手柄不識(shí)別、觸控映射錯(cuò)亂ARM設(shè)備種類(lèi)雜輸入設(shè)備千奇百怪。遇到手柄不識(shí)別先檢查底層有沒(méi)有認(rèn)到設(shè)備一般用evtest看設(shè)備事件或者lsusb確認(rèn)設(shè)備枚舉。觸控映射錯(cuò)亂的話多半是設(shè)備的觸摸屏坐標(biāo)和系統(tǒng)默認(rèn)的坐標(biāo)變換不一致需要調(diào)整libinput的校準(zhǔn)配置。這部分沒(méi)有萬(wàn)能藥但養(yǎng)成先確認(rèn)設(shè)備被內(nèi)核識(shí)別再談上層映射的習(xí)慣能少走很多彎路。5.4 空間不夠、擴(kuò)容和分區(qū)錯(cuò)誤很多鏡像默認(rèn)分區(qū)比較小擴(kuò)展容量這步不要跳過(guò)推薦在第一次啟動(dòng)后、裝東西之前就擴(kuò)容。用growpart擴(kuò)展分區(qū)再resize2fsext4或btrfs filesystem resize就能吃滿(mǎn)整個(gè)存儲(chǔ)介質(zhì)。如果用的是qcow2鏡像在虛擬機(jī)里擴(kuò)容先qemu-img resize給鏡像文件擴(kuò)容再進(jìn)系統(tǒng)走同樣的擴(kuò)展流程。注意備份數(shù)據(jù)任何分區(qū)操作都有翻車(chē)可能。5.5 問(wèn)題速查表現(xiàn)象最可能原因優(yōu)先排查動(dòng)作刷完黑屏無(wú)輸出設(shè)備樹(shù)或引導(dǎo)參數(shù)不匹配看UART日志確認(rèn)內(nèi)核啟動(dòng)階段WiFi連不上固件缺失確認(rèn)在arm的板子上網(wǎng)卡固件是否加載游戲閃退兼容層或驅(qū)動(dòng)問(wèn)題關(guān)Shader緩存抓stderr日志游戲幀率極低翻譯層開(kāi)銷(xiāo)大或GPU未啟用確認(rèn)Vulkan渲染器是否為llvmpipe軟件渲染手柄無(wú)反應(yīng)輸入設(shè)備未枚舉或映射層沖突lsusb看設(shè)備通道檢查映射配置文件分區(qū)無(wú)法擴(kuò)展文件系統(tǒng)或分區(qū)表類(lèi)型不對(duì)growpart加resize2fs確認(rèn)GPT分區(qū)表最后講一點(diǎn)個(gè)人體會(huì)。呼麥這個(gè)段子能火說(shuō)到底是因?yàn)榇蠹姨私釭胖的悶頭做事風(fēng)格——Valve的節(jié)奏從來(lái)不是發(fā)布會(huì)式的而是幾年不見(jiàn)動(dòng)靜、某天突然端出來(lái)一個(gè)完成度極高的東西。ARM版SteamOS大概率也是這個(gè)路子網(wǎng)上那些XX月必出的猜測(cè)基本不靠譜但方向不會(huì)變。如果你跟我一樣等不及可以先從交叉編譯一個(gè)Hello World、在QEMU里跑一個(gè)ARM發(fā)行版這種小事開(kāi)始把工具鏈玩熟。真等到官方鏡像落地的那天你已經(jīng)比大多數(shù)人提前準(zhǔn)備好了——那時(shí)候再回頭看會(huì)發(fā)現(xiàn)這幾個(gè)月呼麥練習(xí)的時(shí)間其實(shí)花得挺值。