# postboot 설정 구성

Postboot 설정은 초기 설정 완료, 메모리 구성, CPU 주파수 매개변수로 이루어집니다. 이러한 단계는 시스템 부팅 후 올바른 구성과 기능을 보장합니다.

## Postboot 프레임워크 개요

Postboot 스크립트 파일을 사용하여 Qualcomm Linux 배포에서 시스템 매개변수를 구성할 수 있습니다.

Postboot 설정은 *systemd 서비스* 파일을 통해 관리됩니다.

systemd에 대한 자세한 내용은 [systemd(1) - Linux manual page](https://www.man7.org/linux/man-pages/man1/systemd.1.html) 를 참조하세요.

## Systemd 서비스 개요

systemd 서비스는 특정 조건에 따라 시작 또는 중지되는 백그라운드 프로세스입니다.

`systemd service` 파일은 systemd가 명령에 따라 구문 분석, 해석, 실행을 수행할 수 있도록 작성됩니다.

백그라운드 프로세스에 대한 자세한 내용은 [background process](https://linuxhandbook.com/run-process-background/) 를 참조하세요.

## systemd 서비스 파일의 기본 구조

요구사항에 따라 systemd의 동작을 수정하려면 다음 절차를 사용합니다.

다음은 systemd 서비스 파일의 예시입니다.

[Unit]
    SourcePath=/etc/initscripts/log_restrict.sh
    Description=QTI logging service
    
    [Service]
    ExecStart=/etc/initscripts/post_boot.sh
    
    [Install]
    WantedBy=multi-user.target
    Copy to clipboard

### `[Unit]` 섹션

systemd에서 유닛은 시스템에서 운영하고 관리할 수 있는 모든 리소스를 참조합니다. 여기에는 외부에서 생성된 서비스, 소켓, 기기, 마운트 위치, 프로세스 그룹이 포함됩니다.

각 유닛은 메타데이터와 구성 세부 정보를 포함하는 `unit` 파일이라는 구성 파일을 사용하여 정의됩니다. 유닛 파일 내의 `[Unit]` 섹션은 설명 및 다른 유닛에 대한 정보를 제공합니다.

`[Unit]` 섹션에는 다음과 같은 필드가 있습니다.

표: [Unit] 섹션에 지원되는 필드

| 필드 | 설명 |
| --- | --- |
| Description<br>    Copy to clipboard | 사람이 판독할 수 있는 systemd 서비스 제목입니다. |
| After<br>    Copy to clipboard | 서비스에 대한 종속성을 설정합니다. 예를 들어 WCN3960 웹 서버를 구성할 경우, 네트워크가 온라인 상태가 된 후에 서버가 시작됩니다. |
| Before<br>    Copy to clipboard | 지정된 서비스보다 먼저 현재 서비스를 시작합니다. 이 예시에서 WCN3960 웹 서버는 다음 클라우드 서비스가 시작되기 전에 실행됩니다. 그 이유는 다음 클라우드 서버가 WCN3960 웹 서버에 종속되기 때문입니다. |

### `[Service]` 섹션

`[Service]` 섹션에는 서비스의 실행 및 종료에 대한 세부 정보가 포함되어 있습니다.

`[Service]` 섹션에는 다음과 같은 필드가 있습니다.

표: [Service] 섹션에 지원되는 필드

| 필드 | 설명 |
| --- | --- |
| ExecStart<br>    Copy to clipboard | 서비스가 시작될 때 실행해야 하는 명령입니다. 예를 들어 웹 서버 서비스를 시작하는 경우가 해당됩니다. |
| ExecReload<br>    Copy to clipboard | 서비스 재시작 방법을 지정하는 선택적인 필드입니다. 디스크 I/O를 수행하는 서비스의 경우, 해당 서비스를 종료한 후 서비스를 재시작하는 것이 좋습니다. 특정 재시작 메커니즘이 필요하다면 `ExecReload` 필드를 사용하세요. |
| Type<br>    Copy to clipboard | 지정된 systemd 서비스의 프로세스 시작 유형을 나타냅니다. 사용 가능한 옵션은 `simple`, `exec`, `forking`, `oneshot`, `dbus`, `notify`, `idle` 입니다. |

자세한 내용은 [Options](https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html?ref=linuxhandbook.com#Options) 를 참조하세요.

### `[Install]` 섹션

`[Install]` 섹션은 systemd 서비스 또는 유닛 파일의 설치를 처리합니다. 이 명령은 서비스를 활성화하거나 비활성화하기 위해 `systemctl enable` 또는 `systemctl disable` 명령을 실행할 때 사용됩니다.

`[Install]` 섹션에는 다음과 같은 필드가 있습니다.

- `WantedBy`: 이는 [\[Unit\] 섹션](https://docs.qualcomm.com/doc/80-70020-3KO/topic/post-boot-settings.html#kernelexternaldocumentation-the-unit-section) 섹션의 `After` 및 `Before` 필드와 유사합니다. 하지만 systemd에 상응하는 **실행 수준** 을 지정하는 데 사용됩니다.

    `default.target` 은 시스템 초기화가 완료되고 로그인하라는 메시지가 표시될 때 사용됩니다. 대부분의 사용자 대상 서비스(예: WCN3960, cron, GNOME 항목)가 이 타겟을 사용합니다.

    `shutdown.target` 은 기기가 종료되기 직전에 서비스를 실행하는 것입니다.

    `multi-user.target` 은 시스템 부팅 시 루트 사용자로서 서비스를 실행하는 것입니다.

    예를 들어 `network.target` 같은 타겟 또는 서비스일 수 있습니다.
- `RequiredBy`: 이 필드는 `WantedBy` 와 유사합니다. 그러나 이 필드는 **강력한 종속요소** 를 지정합니다. 한 종속요소가 실패하면 서비스도 실패합니다.

## postboot systemd 서비스 설치

postboot 스크립트 파일은 `meta-qcom-hwe` 계층의 코어 레시피에 있습니다.

이전 systemd 서비스의 일부로 postboot 스크립트를 실행하세요. 모든 postboot 설정은 `meta-qcom-hwe/recipes-core/initscripts/files/post_boot.sh` 스크립트에서 호스팅됩니다.

#!/bin/sh
    # Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
    # SPDX-License-Identifier: BSD-3-Clause-Clear
    
    # Apply postboot settings
    Copy to clipboard

### postboot systemd 서비스의 레시피

`initscripts_1.0.bbappend` 파일을 사용하여 `post_boot` 스크립트를 설치하기 위한 레시피 구성 절차를 파악해 보세요.

postboot bash 스크립트를 `/etc/init` 에 설치할 수 있는 레시피는 `meta-qcom-hwe/recipes-core/initscripts/initscripts_1.0.bbappend` 파일에 있습니다.

# postboot
    
    inherit systemd externalsrc
    
    FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
    SRC_URI:append = " \
       file://post_boot.sh \
       file://logging-restrictions.sh \
       file://log-restrict.service \
       file://post-boot.service \
       "
    
    do_install:append() {
       # postboot
       install -m 0755 ${WORKDIR}/post_boot.sh ${D}${sysconfdir}/initscripts/post_boot.sh
       install -m 0644 ${WORKDIR}/post-boot.service -D ${D}${systemd_unitdir}/system/post-boot.service
       ln -sf ${systemd_unitdir}/system/post-boot.service ${D}${systemd_unitdir}/system/multi-user.target.wants/post-boot.service
    }
    
    S = "${WORKDIR}"
    
    INITSCRIPT_PACKAGES =+ "${PN}-post-boot"
    INITSCRIPT_NAME:${PN}-post-boot = "post_boot.sh"
    
    PACKAGES =+ "${PN}-post-boot"
    FILES:${PN}-post-boot += "${systemd_unitdir}/system/post-boot.service ${systemd_unitdir}/system/multi-user.target.wants/post-boot.service ${sysconfdir}/initscripts/post_boot.sh"
    Copy to clipboard

Last Published: Jan 01, 2026

[Previous Topic
부팅 흐름 및 구조 개요](https://docs.qualcomm.com/bundle/publicresource/80-70020-3KO/topics/boot-flow-and-architecture-overview.md) [Next Topic
커널 개발](https://docs.qualcomm.com/bundle/publicresource/80-70020-3KO/topics/kernel-development.md)