
Raspberry Pi 4 Ubuntu 從 USB 開機 (無 SD Card)
本文目錄共 5 節
請先參考”樹梅派 Raspberry Pi 更新韌體 EEPROM“把韌體更新到最新版本,並下載最新版本的 Ubuntu 刷入 USB 中,不知道如何將 OS 刷入 USB 可以參考: “樹梅派使用 balenaEtcher 將 OS 刷入 MicroSD 或 USB 步驟教學”。
Step 1 解壓縮系統核心
需要先解壓縮系統核心,因 Pi 的開機引導程式無法正確讀取壓縮的系統核心檔案,請根據目前操作系統類型執行解壓縮系統核心。
Linux 系統上
zcat vmlinuz> vmlinux
Windows 系統上
請用 7-zip 解壓縮 vmlinuz 內容,並將檔案重新命名由 vmlinuz~ 改成 vmlinux。
Step 2 編輯 config.txt 設定檔
config.txt 標示各Raspberry Pi 版本啟動方式,請更新 內的內容成以下內容:
max_framebuffers=2
dtparam=sd_poll_once
boot_delay
kernel=vmlinux
initramfs initrd.img followkernel
注意:
dtparam=sd_poll_once 參數將會關閉 SD 卡插槽,解決開機後未插入SD卡導致 CPU 攀升的問題,但有需要使用SD卡請將此行註解。
Step 3 建立自動解壓縮腳本
ubuntu 系統更新系統核心檔案會將系統核心再次變成 vmlinuz ,而重開機時無法確讀取系統核心檔而導致無法開機,為解決此問題需建立自動解壓縮腳本。
在啟動分區中創建一個名為 auto_decompress_kernel 的腳本。在 Linux 中可以使用 nano、vi 或 vim 等來達成。在 windows 請刪除副檔名未刪除將無法正常運作,例如刪除附檔名“txt”。
將以下內容添加至檔案中
#!/bin/bash -e
#Set Variables
BTPATH=/boot/firmware
CKPATH=$BTPATH/vmlinuz
DKPATH=$BTPATH/vmlinux
#Check if compression needs to be done.
if [ -e $BTPATH/check.md5 ]; then
if md5sum --status --ignore-missing -c $BTPATH/check.md5; then
echo -e "\e; then
echo -e "\e; then
echo -e "\e; then
echo -e "\e[31mMD5 GENERATION FAILED!\e[0m"
else echo -e "\e[32mMD5 generated Succesfully\e[0m"
fi
#Exit
exit 0
Step 4 套用自動解壓縮腳本
將 Step 3 建立的腳本套用使每次安裝軟體包時都會自動解壓縮檔案,為達成此目的需要建立一個執行檔。
注意:
該檔案需在 Ubuntu 文件系統中建立,如果在 Linux 系統上進行此類型操作可以在執行USB開機前就設定好,在 Windows 或 MacOS上則需要在系統第一次開機後立刻設定。
在 /etc/apt/apt.conf.d/ 建立檔案名稱為 999_decompress_rpi_kernel 指令如下:
sudo vi /etc/apt/apt.conf.d/999_decompress_rpi_kernel
999_decompress_rpi_kernel 檔案需添加以下程式碼:
DPkg::Post-Invoke {"/bin/bash /boot/firmware/auto_decompress_kernel"; };
修改檔案權限,使檔案有權限執行:
sudo chmod +x /etc/apt/apt.conf.d/999_decompress_rpi_kernel
參考來源:
收錄於「#Raspberry Pi」系列手札

訂閱技術電子報
有新文章發布時寄送到您的信箱,不發送垃圾信。