newsence

curl 寫入 dev sda:我如何打造一個能透過 wget 和 dd 運行的 Linux 發行版

Hacker News·12 天前

我探索了一種不尋常的方法,透過將磁碟映像檔直接從網路串流到磁碟裝置檔案,來替換現有的 Linux 安裝。這篇技術深度探討解釋了 Unix 裝置檔案的運作機制,以及在系統運行時直接覆寫作業系統所面臨的挑戰。

背景

這篇文章探討了一種極端且帶有惡搞性質的 Linux 安裝方法:直接將網路上的系統映像檔透過 curl 導向硬碟裝置(如 /dev/sda)。作者最初是為了節省雲端服務商 Contabo 的物件儲存費用,進而研究如何繞過正規安裝程序,直接在運行中的系統上覆寫底層磁碟,並引發了一系列關於 Unix「萬物皆文件」哲學與系統底層運作機制的深度實驗。

社群觀點

針對這種「在行進中的汽車上換輪胎」的瘋狂舉動,Hacker News 的討論呈現出技術硬核且充滿實驗精神的氛圍。許多資深開發者指出,雖然直接寫入掛載中的磁碟在技術上可行,但極度危險。核心問題在於 Linux 核心的緩存機制,即便使用者強行寫入底層裝置,核心可能仍會嘗試向它認為存在的舊檔案系統寫入數據,最終導致新舊資料交織的毀滅性損壞。有評論者提到,除非核心編譯時開啟了特定的寫入限制選項,否則這種行為通常不會被阻止,但結果往往是系統在寫入中途崩潰。

為了讓這種操作更具可行性,社群成員提出了多種進階方案。一種常見的共識是利用 initramfs 或 kexec 技術。透過將系統引導回初始 RAM 磁碟環境,或者使用 kexec 加載新核心,可以完全脫離對物理磁碟的依賴,從而在記憶體中安全地執行磁碟覆寫。也有人分享了更為「優雅」的技巧,例如利用 LVM 的 pvmove 功能將整個運行中的 OS 搬移到 RAM 磁碟(如 /dev/shm)中,騰空物理硬碟後進行更換或重新分區,最後再搬移回去。這種做法不僅能實現不停機更換硬碟,還能應對 RAID 重組等複雜需求。

此外,討論也觸及了實務上的硬體相容性問題。有專家提醒,直接傾印映像檔(dd)時必須注意磁碟扇區大小的差異。例如 QEMU 預設使用 512 位元組扇區,但現代 NVMe 硬碟多採用 4K 扇區,若 GPT 分割表頭部未對齊,即便寫入成功也無法開機。部分留言則對雲端服務商表達了不滿,認為許多 VPS 廠商為了推銷自家的自動化工具,刻意限制使用者上傳自定義 ISO 的權利,才導致開發者必須研發出這類近乎「體操運動」的奇技淫巧來安裝自己想要的作業系統。

延伸閱讀

在討論中,參與者分享了幾個極具價值的技術資源。針對想要深入研究巢狀虛擬化的讀者,有人推薦了 supernested 腳本,該工具能讓 VM 無限層次地嵌套運行。對於需要在受限環境安裝特定發行版的使用者,則有開發者分享了在 Oracle Cloud 上透過 Ubuntu 覆寫安裝 Alpine Linux 的實戰紀錄。另外,針對系統緊急狀態下的操作,Linux 核心的 Magic SysRq 組合鍵被提及作為強制將檔案系統轉為唯讀模式的最後手段,以降低直接寫入磁碟時的損壞風險。

https://astrid.tech/2026/03/24/0/curl-to-dev-sda/