# 起動後設定を構成する

起動後設定には、初期設定の完了、メモリの構成、CPU周波数パラメーターがあります。これらの手順により、システムの起動後に構成や機能が適切な状態になります。

## 起動後フレームワークの概要

Qualcomm Linuxディストリビューションでのシステムパラメーターの構成に起動後スクリプトファイルが使用されます。

起動後設定は *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] セクションでサポートされているフィールド

| フィールド | 説明 |
| --- | --- |
| Description<br>    Copy to clipboard | systemd サービスのタイトル。人間が読める形式にします。 |
| After<br>    Copy to clipboard | サービスの依存関係を設定します。例えば、WCN3960 webサーバーを構成する場合、ネットワークがオンライン状態になってからサーバーを起動させることができます。 |
| Before<br>    Copy to clipboard | 現在のサービスを、指定されたサービスより前に開始します。この例では、WCN3960 webサーバーが、次のクラウドのサービスの開始より前に実行されています。これは、次のクラウドサーバーがWCN3960 webサーバーに依存しているためです。 |

### `[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-3JA/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` と同様です。ただし、このフィールドは **ハード依存関係** を指定します。依存関係が失敗した場合、サービスも失敗します。

## 起動後のsystemdサービスをインストールする

起動後スクリプトファイルは `meta-qcom-hwe` レイヤーのコアレシピにあります。

起動後スクリプトを、前のsystemdサービスの一部として実行します。すべての起動後設定は `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

### 起動後systemdサービスのレシピ

`initscripts_1.0.bbappend` ファイルを使用すると、`post_boot` スクリプトをインストールするためのレシピ構成手順を把握できます。

`/etc/init.d` に起動後バッシュスクリプトをインストールするためのレシピは `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-3JA/topics/boot-flow-and-architecture-overview.md) [Next Topic
カーネルを開発する](https://docs.qualcomm.com/bundle/publicresource/80-70020-3JA/topics/kernel-development.md)