目錄

RPI4 在 FreeBSD

正文

紀錄跟 RPI4 有關的 FreeBSD 開發問題。

遇到的坑

USB 鍵盤在 Single user mode 不能運作

請參考 Single user mode on Pi 3

FreeBSD 在進到一般模式,我可以用 USB 鍵盤,但在 OK prompt 打 boot -s 進到 Single user mode 之後無法使用 USB 鍵盤。

主要我們可以先知道 RPI4 開機:

  1. RPI GPU Firmware:核心(SoC)通電後,由 GPU 先啟動,負責初始化基本硬體(如 HDMI、SD 卡)
  2. U-Boot / UEFI:為了讓 FreeBSD 這種通用系統能跑,RPI 會先載入一個模擬 UEFI 的環境
  3. FreeBSD Loader:這是你看到「獸人選單」的地方。它負責從磁碟讀取核心並傳遞參數
  4. FreeBSD Kernel:真正接管硬體,處理進度排程、驅動程式與你的 MAC 模組

在一般開機環境,核心初始化完成後,會啟動 init 進程 (PID 1),init 啟動後的第一件事,就是去讀一個重要的檔案:/etc/ttys,這個檔案裡列出了系統所有的終端機介面(比如 HDMI 的 ttyv0 到 ttyv8,串口的 ttyu0 等),init 會在每一個開啟的介面上都派駐一個 getty(登入服務)。

但在 Single user mode,只有 Kernel,並且會發現預設 boot_serial="YES",核心就只會在串口那邊開一個 Shell。雖然它看得到 USB 鍵盤(所以 Scroll Lock 能動),但核心並沒有把「讀取鍵盤輸入」這個功能跟這個 Shell 連接起來。

所以我們要做的就是,在 OK prompt 把 boot_serial 改成 NO。