# Qualcomm Linux용 OTA 업데이트

OTA 업데이트는 기기, 특히 임베디드 시스템과 IoT 기기의 지속적인 작동을 위해 반드시 필요합니다. 이 업데이트를 통해 기기는 업데이트를 수신하고 설치할 수 있습니다.

Qualcomm Linux는 펌웨어 이미지 업데이트에 캡슐 업데이트 메커니즘을 사용하고 Linux OS 업데이트에 OSTree 업데이트 메커니즘을 사용합니다.

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

## 캡슐을 사용한 펌웨어 업데이트

캡슐 업데이트는 Qualcomm Linux 지원 기기에서 펌웨어를 업데이트하는 방법입니다. UEFI 캡슐은 펌웨어를 바이너리 형식으로 패키징합니다. 기기가 부팅되고 정상 미션 모드로 작동하면 캡슐을 다운로드하여 EFI 파티션에 배포합니다. 재부팅 시, 다음 부팅 주기에 UEFI가 이 캡슐을 처리하고 기기 펌웨어에 업데이트를 적용합니다.

## Linux 운영 체제 업데이트용 OSTree

OSTree는 Linux 기반 운영 체제의 버전 제어 원자성 업데이트를 관리하는 도구입니다. 전체 Linux 파일 시스템에 대한 git 저장소처럼 작동합니다. OSTree는 파일 시스템 트리의 스냅샷을 저장소에 저장하고 기기는 네트워크를 통해 이를 가져옵니다. OSTree에서는 업데이트가 원자성이고 롤백을 지원하므로 업데이트가 중단되어도 시스템은 중단되지 않습니다. 이 기능은 문제가 발생할 때 롤백할 수 있는 안전하고 일관된 업데이트가 필요한 IoT 또는 에지 기기에 유용합니다.

## 전체 OTA 소프트웨어 업데이트에 캡슐 및 OSTree 사용

단일 OTA 시스템에서 펌웨어 및 OS 업데이트를 관리하려면 캡슐 및 OSTree 업데이트 메커니즘을 함께 사용하세요. 캡슐 업데이트 메커니즘은 펌웨어 업데이트를 먼저 처리하여 로우레벨 펌웨어를 업데이트합니다. 캡슐 업데이트 후 시스템이 재부팅되고 Linux OS에 연결되면 OSTree 업데이트를 확인하고 적용합니다.

Qualcomm Linux는 캡슐을 사용하여 UEFI를 통해 로우레벨 펌웨어를 업데이트합니다.

다음은 캡슐을 사용하여 펌웨어를 업데이트하는 단계입니다.

1. 캡슐 만들기: UEFI 캡슐로 알려진 바이너리는 펌웨어 업데이트를 캡슐화합니다.
2. 전달: 시스템은 캡슐 바이너리를 마운트된 `/EFI` 경로에 저장하여 UEFI에 전달합니다.
3. 처리: UEFI 펌웨어는 부팅 주기 중에 캡슐을 처리하고 업데이트를 기기 펌웨어에 적용합니다.

Qualcomm Linux는 OSTree를 사용하여 Linux OS를 관리합니다. 시스템은 Qualcomm Linux 빌드에서 생성된 업데이트 패키지를 기기에 복사하고, [OSTree를 사용한 Linux OS 업데이트 흐름](https://docs.qualcomm.com/doc/80-70020-27KO/topic/ota_update_for_qualcomm_linux.html#linux-os-update-flow-using-ostree) 에 나열된 명령어를 사용하여 활성화에 대비합니다. 기기가 재부팅되면 업데이트 패키지가 적용됩니다.

다음 그림은 OSTree를 사용하는 Linux OS의 스토리지 보기를 보여줍니다. **Runtime(런타임)** 보기는 **Storage at default deployment(기본 배포 시 스토리지)** 에서 런타임 시 마운트 위치에 매핑되는 디렉토리를 나타냅니다.

**Storage after creation of new deployment** 보기는 기기가 새로운 OSTree 배포를 성공적으로 생성한 경우 플래시 스토리지가 어떻게 업데이트되는지 보여줍니다. 이 배포는 새로 생성되며, 다음 재부팅 시 새로운 Linux OS로 시도됩니다.

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

**그림: OTA 업데이트 중 스토리지 개요**

다음은 OTA의 일부로 업데이트된 Linux OS 및 펌웨어 이미지 목록입니다.

> 
> 
> - **Linux OS 이미지**
> 
> 
> 
> > 
> > 
> > - `efi.bin` 파일에는 UKI, initrd 및 부트 로더 구성 파일이 포함됩니다. OSTree는 배포 중에 새 구성 파일을 생성합니다. 이 파일은 새로운 커널의 경로와 EFI 파티션에 복사되는 initramfs 이미지를 나열합니다.
> >     - `system.img` 파일에는 `/ostree`, `/ostree/repo`, `/ostree/deploy` 같은 주요 구성 요소를 포함한 rootfs가 포함됩니다. 새로운 배포가 생성되면 OSTree는 새로운 버전의 운영 체제가 반영되도록 파일 시스템 트리를 업데이트합니다.
> - **펌웨어 이미지**
> 
> 
> 
> > 
> > 
> > 펌웨어 이미지 목록 관련 정보는 [GitHub](https://github.com/quic/cbsp-boot-utilities/blob/main/uefi_capsule_generation/FirmwarePartitions.md) 를 참조하세요.

## 캡슐 업데이트 흐름

다음 그림은 캡슐 및 HLOS 업데이트 흐름을 보여줍니다.

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

**그림: 캡슐 및 HLOS 업데이트 흐름**

캡슐 및 HLOS를 업데이트하려면 다음을 수행하세요.

1. 부팅된 기기의 `/boot/EFI/UpdateCapsule` 에 마운트되는 EFI 파티션에 `<capsule>.cap` 캡슐 파일을 복사합니다.
2. EFI 변수(efivar) OsIndications 플래그를 `EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED` 로 설정하고 기기를 재부팅합니다.

    1. UEFI는 OsIndications 플래그에서 업데이트할 수 있는 캡슐이 있는지 식별합니다.
    2. UEFI는 캡슐을 인증하고 캡슐에서 펌웨어 이미지를 업데이트합니다.
    3. 캡슐 업데이트의 상태는 ESRT 표에 업데이트됩니다.
    4. 캡슐 업데이트 중 오류가 발생하면 UEFI는 펌웨어를 이전 버전으로 롤백합니다.
3. UEFI가 캡슐에서 펌웨어를 성공적으로 업데이트하면 기기가 새 펌웨어로 부팅됩니다.
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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)

**그림: 캡슐을 사용한 펌웨어 업데이트**

캡슐을 사용하여 펌웨어를 업데이트하려면 다음을 수행하세요.

1. 기기에 UpdateCapsule 폴더를 만들려면 다음 명령어를 실행합니다.

adb shell mkdir /boot/EFI/UpdateCapsule
        Copy to clipboard
2. 캡슐을 기기에 복사합니다.

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

    `firmware_capsule.cap` 캡슐 생성에 대한 자세한 내용은 [UEFI에서 캡슐 생성](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-4/tools.html#capsule-generation-in-uefi) 을 참조하세요.
3. 기기에서 지정된 16진수 데이터를 포함하는 `data.hex` 파일을 생성합니다.

echo -e -n "\x4\x0\x0\x0\x0\x0\x0\x0" > data.hex
        Copy to clipboard
4. 기기에 있는 `data.hex` 의 내용을 efivar 도구를 사용하여 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. efivars를 저장하여 보호된 메모리 블록 리플레이(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 OS 업데이트 흐름을 보여줍니다.

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

**그림: OSTree를 사용한 Linux OS 업데이트 흐름**

OSTree를 사용하여 Linux OS를 업데이트하려면 다음을 수행하세요.

1. Qualcomm 기기에서 현재 배포를 확인하려면 다음 명령어를 실행합니다.

ostree admin status
        Copy to clipboard

    출력:

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

    The \* shows the current deployment that the device has booted with.
2. `ostree_repo` 패키지는 호스트 개발 컴퓨터의 `<workspace>/build-<DISTRO>/tmp-glibc/deploy/images/<MACHINE>/` 경로에 있습니다. 예시: `<workspace>/build-qcom-wayland/tmp-glibc/deploy/images/qcs6490-rb3gen2-vision-kit/`. 다음 scp 명령어를 사용하여 호스트 컴퓨터에서 Qualcomm 기기로 `ostree_repo` 패키지를 복사합니다.

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-boot 카운팅 - 성공한 부팅](https://docs.qualcomm.com/doc/80-70020-27KO/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 카운팅 - 성공한 부팅**

OSTree는 부팅 성공 후 systemd-boot에서 부팅 카운팅을 관리하기 위해 다음과 같은 절차를 수행합니다.

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,UklGRpIWAABXRUJQVlA4TIYWAAAvSwUgEOfiJrZtpzrEKvpXgwUcUFLCjzeea8NxI0mKVMsM/ntzJpwH915m6L7qcRvbtqrs74ZL/53QAxGEFrvbuQdB27axNAKFUAADc/4wTmABAODKmesPGWjWoBD8KEuFJJJ/6T5Io4VQSRotkIFmAB/gAApQgAAU4AEEII3HdF5/Wy8zpuiCXJ8/POuFzmONl/qfAi/IGeCZ3kIm7P0jYSKpCJVQxF/8tWSg95RPgzR9pBz0FpEbkRuRO3lvuvLA0pXv9ge28qnpXhG5Y7Uml+gtFTy9ulwlB+XsWS9Cw/5ZuJezZ72QvdS8c1MxcHV7T5f73TdtduDx1toMbe3I8V06fxvwsG17G63ZtnEeXCgonUlvRhAbB8WZGOcSRne7ajr31Uva//8h1nHskmWNxgvn3DcR/ZcF2VbYNodELanqPnPhSUKPZ/X3xkVpee4/z/3nEpJ33nvjcGFZ3nzvnVTeeu9wkVneeyvt+4PD4eUXbl5YlhdeORw+SPp6/3CH/e7i8jd3Du8l8C77vsj8OhzeifPe4aWbF5rlpZRfDodbl5rcOhzi/9bh9ZsXm+XO4e04r15u8urhnef+c1HKi589qlL57MVc1KP5Pv84Dx99fupi3s3Dg1PvcQ9vZ+H2yQ+WBzXU79Ms+t1+WEP5bt79/NQ9ykcZefGJr1R5cjfTd02a70GW7wqoeTcHn/qTL19k8T2P/cmXhxl46E++PM7x9YU/+fJplm9/+uWjfHzmq1U+x9RwxPjHOfi8imLe9r6GR8NPatA4GajBudEn6/m4BvK9WMXB+igfj+rFo0xUpfnq2DiP8pyzV/Fcs4pUUb+HNeCjHIP1uf8895/n/vNMFkuCTu88RhqlftfZjDRuD9ldwEjj9pD9/3kYNVHvvTbeT8FbtERm8h0RdYtRhhnlKFgTjOgWJk3KABQ3zbuGqHHIgIGI9PmiEP1mswhEY1Q/3wXTovpdlzJT7480eEtu+fnse+W80eJEzSm7GDAsNIsNZL0N1mgzOw1YzBpo4NYY46UB525TiH6dmvxCRD9hjXIx/a5LmejofR/ci/Wm8b413o/dzOmV99603nHn4pl1R5oiFW7aMdg50hEYcOYoQ7+ZbLxiWm7NrHqg3/VqpaGW+YimEU5Fd5P3nIZCaQSaY2lmOCKynNZwaxbLgQFnjiL0C16foxeTpH7ca3vTAP2uWXeZOqPYGe5Ac7DDdtRJDDMtFVYEOhgi8eeQrfRLJaJfMETir18Zw30W1QV3oYKn6cfghpy4JqYZsycqW+v3rLjSNODEZD8QzsxU8BIt8xWNdr5Ts58WZfg9GtNHiO/CToGPzJrZaA8NUN0Zowj9wC4R/bg1HbmIfs/qaJrtsXRuK1YRtbzBZSSVHpkraniAUTtHmQypBqANMaflTHghbIAlOl+VQvSbm8UYGqP6eRauFdXv3OJaWjTIxkjjGif0jItVpTe+vHLG1gicnn5nllmbEM5rdzMyBHsIV2OtmkWEtqOlOB5mPclzDEukp4WByGhAw03zLGBbnM+ocOFMRMN5xqlhJ+LUsOtAFxStChM0/HTLkaGOLaNwaLlFp0iLRRgM4G50a4gG6YS0UVqu3NgpiBBsPoelehmhLQ6BvXZM/o5G35OeZ90w0f1IADYJJqxZDGfx2ZaOZ3xjF0n2FGv123nIaIuxmxFMzC623MK4WbdgA92NVmM4AggnpBdr5MqNfQIKwe5UuNEqIrQ5/BbskSZ8dyHEaccq3LRezZ6paxrReyxd/+X6M/IoCBl4iEV8uYUGQHeju3BK5iSd597HNH6fEAnB7lUkQjvYwsoYEFpT8PoMdjHCCI6fHXvZUYCtwe7p2hOw3CIB5G4SACs3dsouIAQ7/KnpQYS25MhMSyUUybAYIrHPkNiRlQSAUT4B5G6SECs36kRDtJGx5QBDsH2v6AgitDkz9QlUt+JMdLrPka0dbNhUCUs0Ruioejga8lAB+U5ily6pQnMizN2kI1ZulAzZDfWcYmqSspmMLQcYgu0nUjhCu9Victwqh0nZxTltuDWTCqLz/ECsBxWHJSLq5iS0SabVMx7UfeVg4+g0GNll5ZRER3MqE9mIzrVjpDEjFZDvBF6IO6sOk7TcYuIyIXeDaLWAr9yoFRHd1bRYMmYxtiBwCLZXHY7Qnthxu12MGnwMPygyBhBiuVzo0Fq+kDgUzZpseTg/GZ02PPJF5O0HBj834gxiq6jHc8KJy1cWqU5FWZlZNkLKcgvfiktH6W4k3AlJLLliADmChbMaRGpbFvXFYzoH73nMWCSpLoz87EzDDGiIyCK3ojvQ7eSbSje2zDUCMx19gaVA+NJuITCbUWKzGrqREbrCJiEfm7tnVxp6ZAIHxAqcuUBE74tHDIr3HcmcLPvvjBtBxBYOzLxZtmCp8Jk60UZBTD7L3lG0z/foUqThR3gb2rcJSK0LhEdeZtKPW2OmJP0cNcHe9fqVJB+3YSa7aCL9TZJ83JI2Qb5arl3tjS8HlNL2SEffkxMbrR0fBZacjBkLyGvxAUV+dmT5DIGl+Clap1xARoe6ZGPLpNe+kvjWIIGDIqYVg0FPvtHIpqXI8Fw1hfkThDHeqa5MtEuIGATvO5o52SxG6E42QmTThGtQ0ILlYmkGbdQaNgHPGGjAowe1CIt4HmiUyKjoIqExm34yCjNFP2nvev2Kki/YwIMXCfibJPlm6sIEXly+SuLUUBAg3Q3XrpsknefuZCYrY8aYc+RGWAvuCskr9RTkqa40uh8TjC0YUmM16Sgi8ERHBgsRcZ2TNkEmPngAzPVbWyZdSsQgeN9JGah7JRshgmPvQLZguQw0yjZircBPFWSfBzZBJtZDrQRERZeIzqcfiMJM0E/au16/suSbyTItOgL+Jkk+N7MRkSBfFbHU+IJAKW2dpm7wHkOsWBkzxpLiyqlCEPkZRYsoMt535aQP2ZixJ4D3vqIggUearJoZI5NOih9hDteaGEumm32hpEQMivcN0BxLrMhGSEG0YOGANpqVnWjkogrNpE0IXkGAqOgiyajfKMat0C8FoV/ZIIma1ivLaZoV8g0mWBKVr575qQrDy6Pr0CkzR+iB5wUF0XB3vGbDLI/S7BBajeTxum9ajwE2QTo1RjbBGzQ0FEpKxKB43ykwhyMbIZG+5F24jGiEdMYqL4mMnkiLWLyRUdFlskK/FI5YvxTW61eYfAMdaZKky+eYt2/i8tWTMiuWxS9gjFlAMWO5K9QzUit7Aqd6JLDvNR19tGIi8D6BYdb5VhdcoRnD3ncKR+57ZCMkVkzhGANHyJF076MVmiMw14oBUdFFklG/mXqsXwrr9StMvpm08ZFKgnwgVjRBvvMLSmlraeQ3AFTH4ecLozrKmLGAnPu2IPIzjegLyfsOEzA2P/e3RneJrIsTGpU4j+poE+7dy/pCQGAWjTt7vMssbYK02jkDmVXjZ9NswP1MyF4nEe87Cr8/1phYI0w0AEDr5uZ+3iAiOEIUjQzQ5+XoQbBh0SBAVPQWvSwD+fQDUZhx/QDb6beVfC1ZBvA3KfKxG5qWmgT58nPv3naARlhH06zzNZaKwBnxQp2Y/LFE0uvZYAqKGRNtoJExnV/hjmcRTeYNO5AGI4CxG/DDN3/OjqN+LZYw2kRR7BrfbMafv/9LxjUCWGCvWy+Y2QsBmySip3Q0SHgsjHEb8MOXf85CPFEyeN8RuDVmijZCS40EtGBurn5zL2NwOx4hnfKMaJ9vZzzem8UQ1UlkVPQWvezpT+vJp5+MwkzRT7KZfl/+5v428g00Mfmkv0mUzxIZoxPky8+fn/6wEdoUwvnMA/DD1dUv9/NvspFaxCDZjqurL/8kLpPqJuZv7tcvD8DV1dMf65cH4M9XV+Ico2b6fXn19Id79cgDsEK+7/+80WZ/EfpgFqjRpEZ4jtbMjEmZGcVdi5zSIH4dRuWjUwN5gJdR2blZHOQ9Rv3ErB9hZFeQcI5RO4J+f6keS/nyviR9TdJAffAV0Ks04Blb5FKVyPIWmWcewEzjMwB6lA86c1ZhY/mnLITpTTXDT5HrAk4bL+OuwQbErwdkaDPaSEBUdmaYg6wfbGBXDz6yqwc/HFaPcJFWOVj5+R5Ezg8PMis88BXIi+hGfM4hWqoSW94ibJfwe0VgjYb4sMkzxD//nFp+cyXG8p8z0AXZLYpbH/uACZKKuGuEnEMMgNDmBFZFZf9Hcjv9uLSTOJN7VEMx/1QF/pHcOFdXcmSfHpv0sp9qpt83om1+8/ca8Nd18rHJpEdr4pWkr5BehDGTZRXuanrFQ1/AeoZeRSvMkskDW89T5fdX68tvsuA5SBcxWy/irlMBoc0JrIrK/u8M7fTlr6so5m9rwNfr2+bpv0+ObXrZt/9ZQf3+9w8VIIN83/wL0TSx5UUS6UUYEx0ZcqlKAK5naE0cS7NcoxFsOE/8z5ep5TsGm2rKRB/HKAfirlORoc0prIrK/q/kdvoGeJ6fHlVRzL/WgN8lNw7gl7+dEhv2sj9WTL+nkq//swJ8lSwf4IdfJ9HEkF4kDjtHkxhmRCKOr9E4EWZz3JaGKMJo5o2nFMHEZxamlIpTLYi7TgWENqdVzAYzd2DOaQt0l7VLNEMBYv5486P1Ka87yoOlYn/M7s9vUel0Bst61GhQ7c162W/ulaLfSGOJP5aTXWXKNxjsX7b9Mb97mKcivUi8ckTI9QzJFd2dTqVt/aZYvuQN6tmaAvjNvW12aZlaR7Iyfl3iIoDQ5gRAVHZe5L3QDDRNTkYaQZewHQ0LEx0LEHMFrWZ3BHKS0JYDHYsgxI1mwFJWxFyTnkFq3Vn328KD79bp19Gcn6aBYdoFwMPa1jPSmF++iSYuX8f8y7bwqDaIuF9lQVZ4ifQikV3kUpUAWpYR36VZjOjBGo1T2GVQ89bELZnVsClijGTBKPRCkwnhzFzQTo0o7lrklMaA0OYkvGV/khceo1cisks0Dcdbvb2YC2vbZBMK2ywBmYXigozDIt/IT6fcdoDYltX6bUFJG34OVCjaAvmYf9mUpz+hwZq4JgkhvEgAPGOLXKrCBi9YzxDJM8/jLxsP1migB51pmlLRvZdPBRDLSduzXIpjntTSHb98F83X601h/0QmukpE57DI9iw4WopbBCMyo8RorCYyoCP2SuLEzXFmGrYTk816r4LdEhAHMtT5vGyJFnQ0EBsI25JHFg40xtNT54ZHOq4FBSrLR9LI9SzPnZHnb2xgmG67XgZirtfp11FcP9EQxgH9QIAm0o8nsHZkt9bvS3YOtB7Rt3PLN9AcHD24oNdb8vO9076RZLoSEZes8qkAQHwYmyYxIVe1ypNamjGB0/ojTRvy47I+oLKwaZB8G/CwyYIQbwfVRAaMNLLZBIw37YZiBgvWbwSg8y2AtMOgo4nrM7gRkYVDSnrq3PAVOLk2YCQccz3Ls+LX68D5qO1gawFXbxYS9AtSzLNpgH7gIjliL7+821q/37Cbxbk22eVrDZpI4v5lM8LR+qQZlSuUgRzr2swCGR8W3MdMuvemXZt2CtLzC2Huc7KwotSKNY2Tl5lflPXSoTBLgJrAADm+XIRObyhmXmDyYZR2WHY0cd8gRucXUKyhzJWdPz9VXuTH1WZ5zkc+ENCcPRN0w16WiYh+nIk1GNBP3LyJoT1je/1yklc+NBcWru499i9Vzk9VKJZmBIgP86q3ympwOUs2FnOWADMpwK08CbyvMGI8eNMgvOqBmsAAjqU5gqUTAXU+L9MOQyzN6cTTUxcOuwbuibH6WZ6DOQw+v8hcZ+lE9BMEKyATHdOJ61cymeVjRorOyPUju2OIpfZt+4kszVGaFbR7iTGBblFT0lQCgwxy1CybXIiGAmHFpWMZa57lOYmJen9aGGiRXnayuYjrVzJZ5EvEN6b6nEIFp/ZVR2+08RWreL9jKzTjbpm1wieWZa7s6lTElOdpVCL6yb6TsRLXrzaVxjD2SWWiIwLlnZ0puBTqfWpq6SQc3uUkGWmsG/LpK/htLoEaw60FoCYyYKIhbZcTASYflmmHEdFdWg2Jp6cuGcdHwkBDlmd5lrs4zXTju5ROin5+kWJUiOgurYbE9SuWiYbs8rXGc0tHsnyXvYHXPQLmnTUtmt9KSC2dgkyzJV6o7mjD3kSBTBTeTItfiKUrBGpiA1pqkl7oNMDJh0HaYQGKDYRtCYinpy4RFKjMGkRZn+dZnsULWfAhk6YrnhT9wk90S04CAjSRfoC4fmUi+nZu+QaaQeg39y+FERnuHeEJ6q39DtmTYVBzUQFjLV8jUPvNduQu+buE1b4ITqpsSXnFRbrRSK4AqqDfKcrnNXKGzL8Ujfe+xvi2LYRJjfwqpTe+XCLx1iBJbSTeOvIELMA0aatchBHOVAYZxQ3S3wq7Gx4/XT7Zu4RTxx2Ht/jBh0zvdxsTTRLmX0pDDHdHhrpYRnhLIDO8oy7yMC1s/XpPI3AVMju1XPjEFzhwd+SCc7E0lp1TpZRxoojN45u5ZHC8NUhSi+e8ok/AIk2DtrJ7CjT5Vs0ginumML8/SE5pkzunyq4hd06VHUP2nCqFbhzxCRrgPNAT7vikh2lxZB2+fyizU4PHkpY37LS4gdiauubzLxkcby1mlnUn7sUCOjnJQVaaFre1DQZMeEmE9/32lC/mOaX4cj4pv5TLwADOAz3hjhdWdRoZFW7Jao+QKyzAzSeOvJswLbbuDBoigkx0jCGSSSMitkp1RxnFLZ9m+roR4TzQE+5gcLp4TUeIzE6dyKzskaYdQDzeei1i1lUibE2AXWaAp5m+hoRPCMkn3InSo3CSIQKPPEjEt6Y3fi8gZcxRMRGYrQmIKG7wNNPXjRXgPOQT7kQrRtCrVs+QIx3XcCTV7wZgvDXyx2IXCEgmLU0TtkaRUdzy/30oYT1md8AU24k4GvYKbLgjkPOwNAY3gUFGTcsuqkeuQmanhqgO4BVNu4FIvLVExFtDQCSzBNgaQURxg1TvEh4/fe4ZacxJ0+wZyObE0rnHt9QA4HKEjv0DGGCUfJwo4CpkdmqIJQK02p9rTrz5rs04uWL6Z3CwkGvxQQMAHnstcsAL68woPqpgp8AD1IV+kqCfmRL0E59UsHc5kntGtwGfLyDA/9MVS0eQ9n3/bIB+EpaoJEW/XbxpyPpndYDcg6jSK5AfDiQu3D8g/VDlSFOCfrsY7/0zO8DnC0iYIwI54EcW9GKa/QPSDzHRMUG/a2+aFJwnKxn3E00KA9ZvV/N/sStJ4dr8Nhf4a36knt2rCT+Had9bvWdQHdAv8t/WTNPPkruWhoVcy88XiD1+B4u5VpG07xPRuE8QIkn9JEEul6bfrMk+m+bZXR6A5/7z3H+e+89z/9lZPKwXDzPzSR2POZ9VgM9yNM6TCnA3Aw8qwOMMPK4AD9ZztwI8qeRgzcftR7Xii9s3K/vLk7s5uP1FFcV8UIPjTA0H9pMc53EfPTl9/aroHx9UcbA+vp0BUD5+WKXy8c1cpR7N9yDTIef2g1NvnEwCvvjJiTfO3UyNc/fE2+aTF2uo30d1lK+WHiUDl5TlspbXLjd5/fB2jBuHw68uNbl1ONyI8sHhpUtNXjq8F+fdw51bl5m8cOfw7o2UX167dZH5/drh/RsJvPXG4c5LF5d/4dZLdw4fvnUj6euDw+Hw+qsXleX1w+HwvvhO+AsfHC4uywfv3lhT3rmwLDcuSstz/7n45AY=)

**그림: Systemd boot 카운팅 - 실패한 부팅 및 롤백**

OSTree는 부팅 실패 후 systemd-boot에서 부팅 카운팅을 관리하기 위해 다음과 같은 절차를 수행합니다.

1. OSTree는 새로운 구성을 배포하면 `ostree-boot+3.conf` 와 같이 이름에 `+3` 태그가 있는 systemd 구성 파일을 생성하여 최대 재시도 횟수를 명시합니다. 이렇게 하면 부팅 카운팅이 활성화됩니다.
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` 태그를 찾습니다. 카운터가 0이 되면 해당 항목(구성 파일)은 불량으로 간주됩니다. systemd-boot는 유효한 구성 파일 항목으로 부팅을 시도하여 이전 버전으로 되돌립니다.

## Usrmerge

Usrmerge 기능은 `/usr` 경로 아래의 특정 디렉토리를 병합하여 파일 시스템 레이아웃을 간소화합니다. 이 기능은 `/bin`, `/sbin` 및 `/lib` 를 각각 `/usr/bin`, `/usr/sbin` 및 `/usr/lib` 와 결합합니다.

Usrmerge를 사용하면 `/bin`, `/sbin` 및 `/lib` 에 있는 실행 파일과 라이브러리가 각각 `/usr/bin`, `/usr/sbin` 및 `/usr/lib` 에 배치됩니다. 원본 디렉토리는 해당 `/usr` 디렉토리에 대한 기호 링크가 됩니다. 이 통합 구조에서는 루트 레벨 및 `/usr` 디렉토리에 별도의 위치를 사용하는 대신 바이너리 및 라이브러리에 하나의 위치만 사용하므로 유지 관리가 더 쉽고 중복성이 줄어듭니다. 기호 링크로 호환성을 보장하므로 `/bin` 같은 경로를 참조하는 스크립트 및 소프트웨어가 계속 작동합니다.

Linux 배포판은 특히 컨테이너화된 시스템과 임베디드 시스템에서 파일 시스템 계층 구조 표준(FHS) 권장 사항을 준수하고 루트 파일 시스템을 간소화하기 위해 Usrmerge를 채택하고 있습니다.

Debian, Ubuntu, Fedora 같은 배포판은 Usrmerge를 해당 시스템 레이아웃의 일부로 채택하여 최신 버전에서 표준으로 설정하고 있습니다. 전환에는 기호 링크를 생성하고 나머지 파일을 원본 디렉토리에서 `/usr` 디렉토리로 이동하는 작업이 포함됩니다.

요약하면, Usrmerge 기능은 Linux 파일 시스템을 통합하여 시스템의 관리 효율성을 높이고, 시스템을 현대화하며, 변화하는 시스템 관리 및 컨테이너화의 요구에 부응하게 합니다.

## Qualcomm Linux에서 `/var`, `/home`, `/media`, `/mnt`, `/opt`, `/srv`, `/usr` 관리

OSTree는 `/var` 를 영구 디렉토리로 간주합니다. 따라서 `/var` 아래의 사용자/런타임 생성 콘텐츠는 OSTree의 영향을 받지 않고 그대로 유지되며 OTA 업데이트 시에도 유지됩니다. 자세한 내용은 [OSTree Overview](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 빌드 명령어인 `bitbake <image recipe>` 로 생성된 rootfs 이미지로 패키징되지 않습니다.

영구 경로 아래에 파일 및 디렉토리를 런타임에 생성하려면 다음 작업을 수행하세요.

> 
> 
> 1. 필요한 경우 프로세스에서 런타임에 파일 또는 디렉토리를 생성합니다.
> 2. `/run/`, `/var/lib/`, `/var/cache/` 및 `/var/log/` 아래의 경로는 해당 systemd 단위 파일에서 생성할 수 있습니다. [참고자료](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) 를 사용하여 부팅 시 파일, 기호 링크 및 디렉토리를 생성합니다.

OSTree는 `/usr` 에 읽기 전용 바인드 마운트를 생성하여 사용자가 코어 운영 체제 파일을 변경하지 않도록 보장합니다. 이 접근 방식은 시스템 무결성 및 보안을 유지하는 데 도움이 됩니다. OSTree는 `/usr` 마운트 위치를 사용하여 다음 업데이트를 배포합니다.

> 
> 
> 참고
> 
> - OSTree를 사용하면 빌드 시 `/var/local` 경로에 파일 및 디렉토리를 설치할 수 있습니다.
> - OSTree는 빌드 중 `/usr` 에 설치된 내용을 유지하지만, `/usr/local` 하위 디렉토리에 설치된 내용을 rootfs 이미지로 패키징하지는 않습니다.

OSTree가 활성화된 Qualcomm Linux에서 `/etc` 디렉토리는 시스템 업데이트와 로컬 사용자 지정을 모두 허용하는 방식으로 관리됩니다.

> 
> 
> - `/etc` 디렉토리는 변경 가능하며, 여러 업데이트에 걸쳐 이어져야 하는 시스템 구성을 유지 관리하기 위해 런타임에 수정할 수 있습니다.
> - OSTree는 `/usr/etc` 디렉토리에서 `/etc` 로 구성 파일 병합을 지원합니다. 따라서 OSTree는 로컬 변경 사항을 유지하면서 기본 구성을 업데이트할 수 있습니다.
> - 업데이트가 적용되면 OSTree는 파일의 원본 버전, 새 업데이트의 파일 버전, 로컬에서 수정된 파일 버전을 사용하여 `/etc` 의 구성 파일에 대해 3방향 병합을 수행합니다.
> - 병합 프로세스 중에 충돌이 발생하면 OSTree는 런타임 수정 사항을 유지합니다. 이렇게 하면 시스템 안정성을 유지하고 필수 구성을 덮어쓰는 사고를 방지할 수 있습니다.

## SOTA 배포판 기능

소프트웨어 무선(SOTA) 배포 기능은 임베디드 시스템 및 IoT 기기의 원격 업데이트를 허용합니다. 시스템 업데이트를 위해 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-27KO/topics/create_secondary_virtual_machine.md) [Next Topic
SD 카드에서 Linux 운영 체제 부팅](https://docs.qualcomm.com/bundle/publicresource/80-70020-27KO/topics/boot_linux_operating_system_from_sdcard.md)