目錄

FreeBSD ISO/Image 介紹

基礎知識

  • .iso:最早專為光碟(CD/DVD)設計的標準格式(ISO 9660),適合燒錄成實體光碟、掛載於虛擬機(VMware, VirtualBox, Proxmox)的虛擬光碟機
  • .img:這是磁碟的「位元組對位元組(Byte-by-byte)」複製,包含分割表(Partition Table)和開機引導程式(Bootloader),本質上就是一顆硬碟的縮影,通常使用 dd 指令或 Etcher 燒錄
  • .qcow2:QEMU / KVM (Proxmox) 常用
  • .vhd:Microsoft Hyper-V / Azure 常用
  • .vmdk:VMware 專用
  • .raw:無格式原始檔,通用於各種雲端平台(如 AWS, GCP)

實際案例

我們以 FreeBSD 15.0 stable 為例介紹。

/iso-images/image.png

主要有兩個連結,https://download.freebsd.org/releases/ and https://download.freebsd.org/snapshots/ 兩個,上面是前者,這兩個連結主要有以下資料夾:

  • CI-IMAGES/ (Continuous Integration Images):這是由持續整合系統自動生成的映像檔。通常是給開發者測試最新的程式碼變更用的,穩定性最低,一般使用者通常不需要點進去
  • ISO-IMAGES/:ISO 檔案
  • OCI-IMAGES/ (Open Container Initiative Images):專門 for 容器相關的檔案
  • VM-IMAGES/ (Virtual Machine Images):這裡是預先製作好的虛擬機磁碟映像檔(如 .vhd、.vmdk、.qcow2、.raw)。下載後不需經過安裝過程,直接導入虛擬機軟體後開機即可進入系統

然後還有依照架構分的資料夾,裡面是 src, lib32, base … 等直接壓縮的 txz 檔案。

信息

FreeBSD 早期使用 gzip (.tgz),後來也用過 bzip2 (.tbz),但現在核心組件(Base System)與許多映像檔預設使用 xz。選擇它的原因主要有以下幾點:

  • XZ 的壓縮雖然很慢且吃記憶體,但「解壓縮」卻相對快速且節省資源
  • XZ 內建了 CRC-64 檢驗機制。在安裝 FreeBSD 時,如果解壓縮過程中發現檔案毀損,系統能立刻偵測到,這對於作業系統的安裝媒體來說至關重要
  • XZ (LZMA2) 的壓縮效果通常遠好於 gzip

AMD64

在 ISO 資料夾底下,可以看到 amd64 相關的 iso 主要是。

/iso-images/image-1.png

  1. bootonly: 只包含核心安裝程式,不含任何軟體包
  2. disc1: 包含最常用的核心軟體包(Base system + Kernel),標準安裝,不一定要連網也能裝完基礎系統
  3. dvd1: 體積最大,包含大量的預編譯軟體包(Packages),如 X11 或常用工具
  4. memstick.img: 最適合直接放入 USB,可以直接 dd 進去
  5. mini-memstick.img: 類似 USB 的 bootonly

/iso-images/image-2.png

ARM64

/iso-images/image-3.png

比較特別他有一些是專門為了特定裝置的檔案,像是:

  • RPI.img.xz: 這是你最需要的檔案。支援 Raspberry Pi 3、4、400 以及 5(視版本支援度而定)
  • PINE64 / PINEBOOK: 給 Pine64 社群出的單板電腦或筆電
  • ROCK64 / ROCKPRO64: 給 Pine64 生產的 Rockchip 系列開發板

在 x86 (PC) 的世界,我們被寵壞了,因為有 BIOS 或 UEFI 這層強大的硬體抽象層,讓作業系統不需要知道硬碟接在哪個暫存器地址。但在 ARM 的嵌入式世界中,情況完全不同:

  • Broadcom (RPI4):它的開機流程非常奇葩,是由 GPU 先啟動,讀取 SD 卡上的韌體後,才把 ARM CPU 叫醒
  • Rockchip (Rock64):它遵循比較傳統的流程,由晶片內的 BootROM 去找啟動媒介上的 U-Boot

AMD64 之所以可以用 ISO,是因為他有 BIOS/UEFI,無論你是哪一家的主機板,UEFI 都保證它能讀懂特定的檔案系統(通常是 FAT32),並且知道去哪裡找開機程式(例如 /EFI/BOOT/BOOTX64.EFI),作業系統不需要知道硬碟控制器長什麼樣子,它只需要跟 UEFI 說「請幫我載入那個檔案」,UEFI 就會去處理底下的硬體細節。

RPI4 的啟動邏輯是固化在晶片裡的。它沒有像 UEFI 那麼強大的翻譯層。它只認一條路:「去 SD 卡的第一個分區(必須是 FAT 格式)找韌體檔案,如果你給它一個標準的 .iso,RPI4 的硬體根本看不懂 ISO 9660 這種光碟格式。