# Qualcomm Linux 的 OTA 更新

OTA 更新對於保持裝置正常運行至關重要，尤其是嵌入式系統和物聯網裝置。這些更新允許裝置接收及安裝更新。

Qualcomm Linux 使用 Capsule 更新機制更新韌體映像，並使用 OSTree 更新機制更新 Linux OS。

> 
> 
> ![../../_images/OTA_Introduction.png](data:image/png;base64,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)
> 
> 
> **Figure: OTA update for Qualcomm Linux**

## 使用 Capsule 進行韌體更新

Capsule 更新是一種用於 Qualcomm Linux 支援裝置更新韌體的方法。UEFI capsule 將韌體封裝為二進位格式。當裝置開機並以正常任務模式運行時，裝置會下載並部署 Capsule 到 EFI 分割區。重新啟動時，在下一個開機週期中，UEFI 會處理此 Capsule 並將更新套用於裝置韌體。

## OSTree 用於 Linux 作業系統更新

OSTree 是一套用於管理 Linux 系統版本控制與原子性更新的工具，其運作方式類似於整個 Linux 檔案系統的 Git 儲存庫。OSTree 會將檔案系統樹狀結構的快照儲存於儲存庫中，並透過網路由裝置擷取更新。透過 OSTree，系統更新具備原子性並支援回滾機制，因此即使更新過程中斷，系統也不會損壞。此特性特別適用於需要安全且一致性更新的 IoT 或邊緣裝置，並可在發生異常時進行回滾。

## 使用 Capsule 和 OSTree 進行完整的 OTA 軟體更新

若要在單一 OTA 系統中管理韌體和作業系統更新，請同時使用 Capsule 和 OSTree 更新機制。Capsule 更新機制首先處理韌體更新，更新低階韌體。Capsule 更新完成後，系統重新啟動並進入 Linux 作業系統，並在此檢查與套用 OSTree 更新。

Qualcomm Linux 使用 Capsule 透過 UEFI 更新低階韌體。

以下是使用 Capsule 更新韌體的步驟：

1. 建立 Capsule：一個稱為 UEFI Capsule 的二進位檔案封裝了韌體更新。
2. 交付：透過儲存在掛載的 `/EFI` 路徑，將 Capsule 二進位檔傳遞給 UEFI。
3. 處理：UEFI 韌體在啟動週期中處理 Capsule，並將更新套用至裝置韌體。

Qualcomm Linux 使用 OSTree 管理 Linux OS。系統將 Qualcomm Linux 建置產生的更新套件複製到裝置，並使用 [使用 OSTree 的 Linux 作業系統更新流程](https://docs.qualcomm.com/doc/80-70020-27TC/topic/ota_update_for_qualcomm_linux.html#linux-os-update-flow-using-ostree) 中列出的命令完成準備以進行啟動。裝置重新啟動後，將套用更新套件。

下圖所示為使用 OSTree 的 Linux OS 的儲存視圖。**Runtime** 視圖指示在執行階段將 **Storage at default deployment** 中的哪些目錄映射至掛載點。

**新部署建立後的儲存** 視圖顯示當裝置成功建立新的 OSTree 部署時，Flash 儲存空間的更新方式。此部署是新建立的，並會在下次重新啟動時作為新的 Linux 作業系統進行嘗試。

![../../_images/OTAupdate.png](data:image/png;base64,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)

**圖示：OTA 更新期間的儲存概覽**

以下是作為 OTA 一部分更新的 Linux 作業系統和韌體影像清單：

> 
> 
> - **Linux 作業系統影像**
> 
> 
> 
> > 
> > 
> > - `efi.bin` 檔案包含 UKI、initrd 及開機載入器組態檔案。OSTree 在部署期間建立新的組態檔案。並列出新核心與複製到 EFI 分割區的 initramfs 影像路徑。
> >     - `system.img` 檔案包含 rootfs，包括 `/ostree`、`/ostree/repo`、`/ostree/deploy` 等主要元件。建立新的部署時，OSTree 會更新檔案系統樹以反映作業系統的新版本。
> - **韌體影像**
> 
> 
> 
> > 
> > 
> > 如需與韌體影像清單相關的資訊，請參閱 [GitHub](https://github.com/quic/cbsp-boot-utilities/blob/main/uefi_capsule_generation/FirmwarePartitions.md)。

## Capsule 更新流程

下圖所示為 Capsule 和 HLOS 更新流程：

![../../_images/OTA_flow.png](data:image/png;base64,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)

**圖：Capsule 和 HLOS 更新流程**

若要更新 Capsule 和 HLOS，請執行以下操作：

1. 將 `<capsule>.cap` Capsule 檔案複製到 EFI 分割區，該分割區掛載在啟動裝置上的 `/boot/EFI/UpdateCapsule` 處。
2. 設定 EFI 變數 (efivar) OsIndications 旗標為 `EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED` 並重新啟動裝置。

    1. UEFI 從 OsIndications 旗標識別出一個 Capsule 可供更新。
    2. UEFI 驗證 Capsule 並從 Capsule 更新韌體影像。
    3. Capsule 更新的狀態會在 ESRT 表中更新。
    4. 如果在 Capsule 更新期間發生故障，UEFI 會將韌體倒退回先前的版本。
3. UEFI 從 Capsule 成功更新韌體，且裝置透過新的韌體開機。
4. 將 OSTree 存放庫複製到裝置。使用 OSTree 命令為 HLOS 更新建立新的部署，建立包含計數標籤的新組態檔，重新啟動裝置。
5. Systemd-boot 挑選新的設定檔並以此啟動核心和使用者空間。裝置以更新的韌體和 HLOS 軟體開機。`systemd-bless-boot.service` 標示新設定為良好。
6. 重設 OtaStatus efivar 中的 TrialBootEnabled 旗標以指示韌體良好。UEFI 會檢查此 efivar 以提交新韌體。

下圖顯示了韌體更新流程：

![../../_images/OTA_firmware.png](data:image/png;base64,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)

**圖：使用 Capsule 進行韌體更新**

若要使用 Capsule 更新韌體，請執行下列步驟：

1. 若要在裝置上建立 UpdateCapsule 資料夾，請執行以下命令：

adb shell mkdir /boot/EFI/UpdateCapsule
        Copy to clipboard
2. 將 Capsule 複製到裝置：

scp -r <firmware_capsule.cap> <user>@<IP_address>:/boot/EFI/UpdateCapsule/<firmware_capsule.cap>
        Copy to clipboard

    欲深入瞭解 `firmware_capsule.cap` Capsule 產生，請參閱 [UEFI 中的 Capsule 產生](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-4/tools.html#capsule-generation-in-uefi)。
3. 在裝置上製作包含指定十六進位資料的 `data.hex` 檔案：

echo -e -n "\x4\x0\x0\x0\x0\x0\x0\x0" > data.hex
        Copy to clipboard
4. 使用 efivar 工具將裝置上的 `data.hex` 內容寫入 UEFI 變數 OsIndications：

efivar -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-OsIndications -f data.hex -w
        Copy to clipboard

    欲深入瞭解 UEFI 變數，請參閱 [更新和復原](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-4/capsule-update-and-recovery.html)。
5. 使用 efivar 工具列印 OsIndications UEFI 變量的值：

efivar -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-OsIndications -p
        Copy to clipboard
6. 若要將 efivar 儲存至回放保護記憶體區塊 (RPMB)，請在裝置上執行 `uefi_sec` 應用程式：

/usr/bin/uefi_sec 1
        Copy to clipboard
7. 重新啟動裝置：

reboot
        Copy to clipboard
8. 檢查 ESRT 表格條目：

cd /sys/firmware/efi/esrt/entries/entry0
        Copy to clipboard

    1. 檢查 `last_attempt_status` 命令的輸出。如果為 0，則更新成功：

cat last_attempt_status
            Copy to clipboard
    2. 檢查 `last_attempt_version` 命令的輸出：

cat last_attempt_version
            Copy to clipboard
    3. 檢查 `fw_version` 命令的輸出。如果 `last_attempt_version` 與 `fw_version` 相同，則更新成功：

cat fw_version
            Copy to clipboard

## 使用 OSTree 的 Linux OS 更新流程

下圖顯示了Linux作業系統更新流程：

![../../_images/OTA_hlos.png](data:image/png;base64,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)

**圖：使用 OSTree 進行 Linux OS 更新**

要使用 OSTree 更新 Linux 作業系統，請執行以下步驟：

1. 要檢查 Qualcomm 裝置上的當前部署，執行以下命令：

ostree admin status
        Copy to clipboard

    輸出：

* poky 643b332dd72b345b5040a1decbe7e04bd2d208a04ba59417aa667c901c485504.0
           Version: 1.0
           origin refspec: poky:qcs6490-rb3gen2-vision-kit
        Copy to clipboard

    星號顯示裝置目前已啟動的部署。
2. `ostree_repo` 套件位於主機開發電腦上的 `<workspace>/build-<DISTRO>/tmp-glibc/deploy/images/<MACHINE>/` 路徑中。例如： `<workspace>/build-qcom-wayland/tmp-glibc/deploy/images/qcs6490-rb3gen2-vision-kit/`。使用下列 scp 命令將主機電腦中的 `ostree_repo` 套件複製到 Qualcomm 裝置：

scp -r <ostree_repo> <user>@<IP_address>:/tmp
        Copy to clipboard
3. 在 Qualcomm 裝置上拉取本地 OSTree 庫。

    以下是該命令的一般語法：

ostree pull-local /tmp/<ostree_repo> <branch_name>
        Copy to clipboard

    要找到命令的 `branch_name`，請執行以下命令：

ostree refs
        Copy to clipboard

    輸出：

poky:qcs6490-rb3gen2-vision-kit
        Copy to clipboard

    在這裡，`qcs6490-rb3gen2-vision-kit` 是一個範例分支名稱。
4. 在 Qualcomm 裝置上創建部署：

ostree admin deploy <branch_name>
        Copy to clipboard

    這會在 `/boot/loader/entries/` 目錄中建立 `ostree-2-poky.conf` 組態檔。如需更多資訊，請參閱 [Systemd 啟動計數 - 啟動成功](https://docs.qualcomm.com/doc/80-70020-27TC/topic/ota_update_for_qualcomm_linux.html#systemd-boot-successful-boot)。
5. 重新啟動裝置：

reboot
        Copy to clipboard
6. 檢查該裝置是否使用新建的部署啟動：

ostree admin status
        Copy to clipboard

    輸出：

* poky 1e8a01bcc5cd9b3b34043db494ddcd01ec5c1c84312479a55253358a92250fa3.0
           Version: 1.0
           origin refspec: qcs6490-rb3gen2-vision-kit
           poky 643b332dd72b345b5040a1decbe7e04bd2d208a04ba59417aa667c901c485504.0 (rollback)
           Version: 1.0
           origin refspec: poky:qcs6490-rb3gen2-vision-kit
        Copy to clipboard

    若要確認建置主機電腦上的新建部署，請檢查 `<workspace>/build-<DISTRO>/tmp-glibc/work/<MACHINE>/<IMAGE>/ota-sysroot/ostree/deploy/poky/deploy` 路徑中的部署。例如： `<workspace>/build-qcom-wayland/tmp-glibc/work/qcs6490-rb3gen2-vision-kit/qcom-multimedia-image/ota-sysroot/ostree/deploy/poky/deploy`。

## Systemd-boot 計數 - 啟動成功

下圖所示為啟動成功流程的 systemd-boot 計數：

![../../_images/OTA_systemd_boot.png](data:image/png;base64,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)

**圖：啟動成功的 systemd-boot 計數**

為了在啟動成功後管理 systemd-boot 中的啟動計數，OSTree 執行下列程序：

1. 當 OSTree 部署新組態時，會建立一個在名稱中帶有 `+3` 標籤的組態檔案，表明最大重試次數。這將會啟用啟動計數。
2. systemd-boot 偵測到項目檔案名稱中的 `+3` 標籤並將它重新命名為 `ostree-conf+2-1.conf`，表示已開始一次啟動嘗試。重新命名檔案後，啟動流程繼續。
3. `systemd-bless-boot-generator` 創建了 `systemd-bless-boot.service`，當達到 `boot-complete.target` 時，該服務將啟動。
4. `systemd-bless-boot.service` 透過移除計數標籤 `+2-1` 並將文件重命名為 `ostree-conf.conf` 來標記新配置為成功。

## Systemd boot 計數 - 啟動失敗和回退

下圖所示為啟動失敗和回退流程的 systemd-boot 計數：

![../../_images/OTA_boot_counting.png](data:image/png;base64,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)

**圖：啟動失敗和回退的 systemd-boot 計數**

為了在啟動失敗和回退後管理 systemd-boot 中的啟動計數，OSTree 執行下列程序：

1. OSTree 部署新的組態時，會建立名稱中包含 `+3` 標籤的 systemd 組態檔，表示最大重試次數，例如 `ostree-boot+3.conf`。這會啟用啟動計數。
2. systemd-boot 偵測到組態檔名稱中的 `+3` 標籤並將它重新命名為 `ostree-boot+2-1.conf`，表示已開始一次啟動嘗試。重新命名檔案後，啟動流程繼續。
3. `systemd-bless-boot-generator` 建立 `systemd-bless-boot.service`，後者會在達到 `boot-complete.target` 時啟動。如果在 Linux 啟動過程中發生任何故障，`systemd-bless-boot.service` 不會從組態檔中移除 `+2-1` 計數器標籤。
4. 在隨後的啟動中，systemd-boot 偵測到配置文件名中的 `+2-1` 標籤，將文件重命名為 `ostree-boot+1-2.conf`，並嘗試使用該文件啟動。
5. 如果在第二次嘗試啟動 Linux 時失敗，`systemd-bless-boot.service` 不會從配置文件中移除 `+1-2` 計數標籤。
6. 下次啟動時，systemd-boot 會偵測組態檔名稱中的 `+1-2` 標籤，將檔案重新命名為 `ostree-boot+0-3.conf`，並嘗試使用該檔案啟動。這是最後一次嘗試啟動 Linux 部署。
7. 如果裝置在第三次嘗試啟動 Linux 過程中失敗，`systemd-bless-boot.service` 不會從配置文件中移除 `+0-3` 計數標籤。
8. 後續啟動時，systemd-boot 會發現組態檔名稱中的 `+0-3` 標籤。由於計數器已達到零，因此項目 (組態檔) 被視為不良。systemd-boot 會嘗試有效的組態檔項目以還原至較早的版本。

## Usrmerge

Linux 中的 Usrmerge 功能合併 `/usr` 路徑下的某些目錄，以簡化檔案系統配置。它將 `/bin`、`/sbin`、`/lib` 分別與 `/usr/bin`、`/usr/sbin`、`/usr/lib` 結合。

Usrmerg 將 `/bin`、`/sbin`、`/lib` 中的可執行檔和函式庫分別置於 `/usr/bin`、`/usr/sbin`、`/usr/lib` 中。原始目錄變成了在 /usr 中對應的符號連結。這種統一的結構使得維護更容易並減少冗餘，因為只有一個二進位和程式庫的位置，而不是分開的 root 級別和 `/usr` 目錄位置。符號連結確保相容性，允許參考 `/bin` 等路徑的指令碼和軟體繼續運作。

Linux 發行版正在採用 Usrmerge 以符合檔案系統階層標準 (FHS) 建議並簡化根檔案系統，尤其是在容器化和嵌入式系統中。

Debian、Ubuntu、Fedora 等發行版已採用 Usrmerge 作為系統配置的一部分，使其成為最近版本的標準。轉換通常涉及建立符號連結並將任何剩餘檔案從原始目錄移動到其 `/usr` 等效目錄。

總之，Usrmerge 功能整合 Linux 檔案系統，使其更易於管理、現代化，並符合系統管理和容器化不斷演變的需求。

## 在 Qualcomm Linux 中管理 `/var` 、 `/home` 、 `/media` 、 `/mnt` 、 `/opt` 、 `/srv` 和 `/usr`

OSTree 將 `/var` 視為永久性目錄，這表示使用者/執行階段在 `/var` 下建立的內容不受 OSTree 影響，並在 OTA 更新後持續存在。如需詳細資訊，請參閱 [OSTree 概覽](https://ostreedev.github.io/ostree/introduction/)。

在 OTA 更新期間，OSTree 不會觸及的其他目錄是 `/home` 、 `/media` 、 `/mnt` 、 `/opt` 和 `/srv`。OSTree 將這些目錄對應為符號連結，如下所示：

- `/home` 是指向 `/var/rootdirs/home` 的 符號連結
- `/media` 是指向 `/var/rootdirs/media` 的 符號連結
- `/mnt` 是指向 `/var/rootdirs/mnt` 的 符號連結
- `/opt` 是指向 `/var/rootdirs/opt` 的 符號連結
- `/srv` 是指向 `/var/rootdirs/srv` 的 符號連結

儲存在 `/home` 、 `/media` 、 `/mnt` 、 `/opt` 、 `/srv` 和 `/var` 下的任何執行階段資料，在 OTA 更新中皆維持永久性。

為了維持簡潔且一致的檔案系統，OSTree 建議在建置時不要在上述目錄下安裝任何工件。建置時安裝在這些目錄中的任何工件都不會被封裝至 Qualcomm Linux 建置命令產生的 rootfs 映像中，即 `bitbake <image recipe>`。

若要在永久路徑下處置檔案與目錄的執行階段建立，請執行下列動作：

> 
> 
> 1. 此流程會在需要時於執行階段建立檔案或目錄。
> 2. 可以從相應的 systemd 單元檔案中建立 `/run/` 、 `/var/lib/` 、 `/var/cache/` 和 `/var/log/` 下的路徑。這裡是 [參考](https://www.freedesktop.org/software/systemd/man/latest/systemd.exec.html#RuntimeDirectory=)。
> 3. 使用 [systemd-tmpfiles](https://www.freedesktop.org/software/systemd/man/latest/systemd-tmpfiles-setup.service.html) 在啟動時建立檔案、symbolic 連結與目錄。

OSTree 在 `/usr` 建立一個唯讀的綁定掛載，確保核心作業系統檔案不會被使用者變更。這種方法有助於維持系統的完整性和安全性。OSTree 使用 `/usr` 掛載點來部署下一次更新。

> 
> 
> 備註
> 
> - OSTree 允許在建置時將檔案與目錄安裝在 `/var/local` 路徑下。
> - 儘管 OSTree 在建置期間保留安裝在 `/usr` 下的內容，但不會將安裝在 `/usr/local` 子目錄下的內容封裝至 rootfs 影像中。

在啟用了 OSTree 的 Qualcomm Linux 中，`/etc` 目錄的管理方式允許系統更新和本地自訂。

> 
> 
> - `/etc` 目錄是可變的，可在執行階段修改，以維持需要在更新中持續存在的系統組態。
> - OSTree 支援將組態檔從 `/usr/etc` 目錄合併到 `/etc`。這允許 OSTree 更新預設組態，同時保留任何本機變更。
> - 當應用更新時，OSTree 使用文件的原始版本、更新版本和本地修改版本對 `/etc` 中的配置文件執行三方合併。
> - 如果在合併過程中發生衝突，OSTree 會保留執行階段的修改。這有助於維持系統穩定並確保重大組態不會遭到覆寫。

## SOTA 發行版功能

軟體空中更新（SOTA）功能可讓嵌入式系統和物聯網裝置進行遠端更新。它整合了如 OSTree 等工具來執行系統更新，使裝置能在無需實體接觸的情況下接收並安裝更新。此功能已包含在 Qualcomm Linux 的參考發行版設定中，如下所示：

> 
> 
> DISTRO_FEATURES:append = " pam overlayfs acl xattr selinux ptest security virtualization tpm usrmerge sota"
>     Copy to clipboard

SOTA 發行版功能位於 `meta-qcom-distro/conf/distro/include/qcom-base.inc` 檔案中。

## 下一步

使用配方處理樹外核心模組和裝置樹：

若要建置樹外核心模組，請參閱 [新增核心模組](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-3/kernel-development.html#add-a-kernel-module)。

備註

Qualcomm Linux 僅支援 `custom` 變體的非核心裝置樹重疊

關於裝置樹 / 裝置樹 blob 管理，請參閱 [平台裝置樹](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-3/kernel-development.html#platform-device-tree) 中的核心中的 DTB 建置支援。

Last Published: Dec 23, 2025

[Previous Topic
建立輔助虛擬機器](https://docs.qualcomm.com/bundle/publicresource/80-70020-27TC/topics/create_secondary_virtual_machine.md) [Next Topic
從 SD 卡啟動 Linux 作業系統](https://docs.qualcomm.com/bundle/publicresource/80-70020-27TC/topics/boot_linux_operating_system_from_sdcard.md)