世界太吵,來原聲聽播客

Oxide and Friends

仿真到能跑原廠固件,才算跨過謊言的邊界

Voxel 用十二週把整個 Oxide 機架塞進一臺迷你主機,但真正的門檻不是跑起來,而是不改一行主軟件、用原廠固件跑通——那才是仿真和自欺的分界線。

仿真硬件內部工具LLM開源
做硬件軟件交界、仿真環境或內部工具的人值得聽:它講的是保真度怎麼定義、什麼時候算夠,以及 LLM 在系統建模裡到底能幫到哪一步。

核心論點 · 點時間戳可跳到原聲

10:30

測試環境永遠排第二十七位

Steve Karam 說,任何做過軟件開發或 IT 的人都知道,測試環境通常不是第二小提琴,而是第二十七小提琴,只排在教育和賦能環境、文檔前面。而當你的產品是一整個機架時,這個問題尤其難:機架本身、fabric、sled、switch zone、SP、root of trust,每一層都要有。Oxide 因此有多個保真度層級:dog food 機架、racklet 迷你機架、單實例 Omicron(模擬版或跑在 Helios 上的物理版),但缺一個比 racklet 更容易、比單機箱保真度更高的中間層。

— Steve Karam
17:00

四乘二把一切壓到啟動那一刻

Voxel 的前身叫 four by two,靠一堆 shell 腳本定義機架該長什麼樣,啟動時用 cargo bay、共享盤、網絡和模擬網絡把虛擬機架拉起來。它確實能用,IPv6 和 unnumbered BGP 就是先在 four by two 上測的。但 Steve 指出致命問題:把所有事情都放在啟動時做是災難配方——啟動要四十分鐘,很難自愈,而且「你知道它一定會在第四十分鐘的最後兩分鐘崩」。Ryan Goodfellow 因此提出重做,並起了 Voxel 這個名字:Virtual Oxide Emulation Labs。

— Steve Karam
20:30

Voxel 把構建和部署拆成兩步

Voxel 與 four by two 最大的區別是構建和部署分離:給一個 Omicron commit,它 clone、編譯,產出一個完美成形的 sled 鏡像並做快照,再複用這個快照去扮演所有 sled 和 gimlet。另一個大變化是全部用 Rust 重寫,儘量擺脫 shell 腳本。因為一個快照要扮演六種角色,就需要有人告訴它做什麼——Voxel 裡內置了一個 Rust 寫的 agent,隨每個 sled 啟動下發,告訴它「你是 switch」「你是 sled 1」「你是 sled 2」。

— Steve Karam
24:05

LLM 擅長枚舉寄存器,不擅長判斷線程

Steve 說 LLM 在枚舉寄存器、找出組成完整系統的零碎部件上非常強,因為沒人能把整機架的東西都裝在腦子裡;配上 RFD 和設計文檔做上下文,結果會清晰得多。但它在別處會自信地給出錯誤結論:他曾讓 root of trust 和 SP 共用一個線程通信,LLM 說這絕對不是問題,拆開後性能提升 500 倍,機架才能同時啟動兩者。

— Steve Karam
26:00

別改主軟件,這是 Voxel 的底線

Steve 說 Voxel 有一條儘量守住的信條:不要修改主軟件。他做 multi rack 時曾往 Voxel 裡塞各種 hack,讓 Voxel 和 Omicron 假裝已經支持多機架,比如造一個 Omicron 里根本不存在、卻在 Voxel 裡神奇存在的端口。Robert 在公司頻道里說,不應該創造 Omicron 裡實際沒有的東西。Steve 承認這是對的:這是本末倒置,也是做仿真時容易掉進去的陷阱——你開始重寫地基,然後覺得「為什麼不呢」。

— Steve Karam
30:00

仿真返回期望值,模擬才暴露真相

Steve 區分 simulation 和 emulation:SP SIM 是一組輕量 stub,對 sled 的響應像真的 SP,能完成虛擬機架初始化和上線,但它不是微控制器。這是典型的 simulation——返回的是期望中的響應,多數時候走 happy path,從測試角度看恰恰是問題。他給 Claude 一個週末任務,讓它寫 STM32 H753 微控制器模擬器,因為找不到現成的 Rust 方案。第一次跑起來但幾乎做不了任何事,又花了兩三個小時調整後,成功刷進一個最小 hubris archive,機器起來了。

— Steve Karam
38:00

輪詢式初始化會殺死模擬性能

Oxide 的初始化非常 pull heavy:服務以近乎恆定的頻率輪詢更新。對模擬的服務處理器來說這很糟,因為要保持等待狀態就得讓線程一直空轉,會徹底毀掉模擬本來就不高的性能。而且真 SP 需要 QSPI host boot flash、SP rot 與 root of trust 通信、ignition 寄存器等一大堆指令。Steve 的做法是反覆起 Voxel lab,看 RSS 為什麼起不來,發現它卡在記錄溫度測量之類的地方,然後一條一條補上最小指令集和最小傳感器集。

— Steve Karam
44:00

能跑原廠固件才算跨過謊言的邊界

Steve 給出「什麼時候算夠了」的標準:Voxel 加 SP EMU 能在單臺 Helios 機箱裡跑完整的多節點或多機架 lab,用的是未經修改的 stock Omicron(無論從源碼還是從 tough repo),跑的是 stock hubris 鏡像——sidecar 和 Gimlet 鏡像就是隨產品出貨的那些,不做任何修改。他說,當仿真能和你的發布產品一起工作時,這就是謊言的邊界。Ben Stoltz 還加了 Boodleby(root of trust 安全啟動)和 Glasgow Bridge,讓它能用 humility 做 trace,甚至能跑 Oxide 原生系統更新去刷固件。

— Steve Karam

原話 · 已逐字校驗

you are building like a production quality product used by Oxide to build more production quality software. It's not a step down from everything else we're doing, right?

你是在做一個生產級產品,Oxide 用它來構建更多生產級軟件。它不是我們其他工作的降級版,對吧?

Andrew Stone0:00

Like, without testing, without like actually using the real dendrite software and like passing through the right stuff, like, you don't have a demo, right? You're just kinda lying.

如果不測試、不真正跑真實的 Dendrite 軟件、不把正確的數據傳下去,你就沒有 demo,你只是在騙人。

Andrew Stone5:12

this other tooling had become existentially important to the company because this is how we were able to deliver as many racks as we were

這套工具已經變成公司生死攸關的東西,因為正是靠它我們才能交付那麼多機架。

Rain Paharia15:20

It's hard to self heal. If something breaks, you know know damn well it's gonna break in the last, like, two minutes of the forty minute process.

它很難自愈。如果哪裡壞了,你心裡清楚得很,它一定會在四十分鐘流程的最後兩分鐘崩掉。

Steve Karam17:00

an LLM will confidently tell you that, no. This absolutely is not a problem. You can have the root of trust and SP sharing a thread and communicating that way

LLM 會自信地告訴你:不,這絕對不是問題。你可以讓 root of trust 和 SP 共用一個線程、用那種方式通信。

Steve Karam24:05

I don't feel like we should be creating things that aren't actually in Omicron.

我覺得我們不應該創造 Omicron 裡實際並不存在的東西。

Steve Karam26:00

And to me, that is kind of the barrier of lies when they when the emulation can work with your release product.

對我來說,當仿真能和你的發布產品一起工作時,這就是謊言的邊界。

Steve Karam44:00

數字與實體

four by two 啟動耗時40 分鐘17:00
Claude 寫 STM32 H753 模擬器後的調試時間2-3 小時30:00
Voxel 開發時長約 12 周(五月底/六月開始)8:44
Voxel Proto 分支 commit 數70 多個8:44
拆開 SP 與 root of trust 線程後的性能提升500 倍24:05
commissioning API 工期兩週15:20
Steve Karam 的 minisforum 迷你 PC 線程數32 線程0:00
該機器上可跑的節點 rack 規模六到八個節點0:00

術語

VoxelVirtual Oxide Emulation Labs
Oxide 的機架級仿真環境,用快照扮演所有 sled 和 gimlet。
four by two四乘二
Voxel 的前身,用 shell 腳本在啟動時拉起虛擬機架。
simulation vs emulation仿真與模擬
前者返回期望響應走 happy path,後者建模真實硬件行為暴露真相。
SP EMU服務處理器模擬器
建模 STM32 微控制器,讓 stock hubris 固件能真實運行。
hubrishubris
Oxide 的嵌入式操作系統,跑在 SP 和 root of trust 上。
commissioning API上架 API
Wicket 的版本化正式 API,用於機架初始化和恢復式更新。

收聽指南

誰該聽

做硬件軟件交界、仿真環境或內部工具鏈的工程師和 CTO,尤其是那些在糾結「仿真到什麼程度才算夠」的團隊。

可跳過

對機架硬件細節無感的人,可跳過 38:00 前後關於輪詢和寄存器建模的技術段落。