From patchwork Fri Jun 19 10:39:44 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gourav Singh X-Patchwork-Id: 5172 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Fri, 19 Jun 2026 12:40:10 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-lj1-f191.google.com (mail-lj1-f191.google.com [209.85.208.191]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 65JAe8Bp001942 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 19 Jun 2026 12:40:08 +0200 Received: by mail-lj1-f191.google.com with SMTP id 38308e7fff4ca-39984d51558sf9461861fa.0 for ; Fri, 19 Jun 2026 03:40:08 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1781865603; cv=pass; d=google.com; s=arc-20240605; b=UnoHc2/YISmQbc1GNoIpE4wWicm6jByazz8Rz1vdH3xSB/kDgRdYwaYl3xly2wG1Nc CNpz+LBmrFiLUkmB8Qq5AbLr5OFCUOM4VVxUz7FeG86MiWTMHe40guW7zAyMPknY8ACB X23VOevHIL9B1jbaA8V/0xJx2OBgh9HGySIqYlj+gYiAjzok1TNTi+Xz3Vrv+R+fm90K SsfD3MLmZOWmx2h77xaoLgMT5fGDDTBBr6Ho61XVrByLIfYzcrBSKLw+FtmTUd/03kDN u7w2QCl4OyhAy7/1ngDl0yhVNX9Ut2xH7fo/Dr87DVvEFcQgNYyQrIkl1WEA0Be2A8Da kUHA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to:feedback-id:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=veEzlpvaPlNfg2wMdsv4rnMt/bhZt337FSn4k3yFxFY=; fh=amH/x3CdUgsTZsy3u8v8he208eU7q6YDmS2vJ9X+MKs=; b=A/bMF1T6jhK1ibHwoTDi574usb950Uh2Yc4QOgtCL6q0WV7VOZ0bt8oDwpdWebJOsy EdT8B9c2Nb2uB82O+KaPlhHc0lyajx6yO/QOJ6iAx+ib/IuU91eOiJm6OkRrME5hkoDp wTvWfrDa9uwKB4h+1JPtAc11Re5NJsQwjeyEwThCnXcj51p42kmyrECtWqclTbNtTgCp iC+eO7QmgDY2amg5NPUNpKZwm7Y3Dn6j99KUKdwsZsg+D5L75fA8dMidlm30uT9Br7F5 6QjuirGKb6BQNs18RKEWYbkmxkMLDTawWUlS1a477eKePvkE1akcVywOAUEmhxMsto3W Tf6w==; darn=isar-build.org ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm2 header.b=n7vKONLj; spf=pass (google.com: domain of fm-1333022-20260619103958bf95b9610d000207bd-x2nvfm@rts-flowmailer.siemens.com designates 185.136.64.227 as permitted sender) smtp.mailfrom=fm-1333022-20260619103958bf95b9610d000207bd-x2nVFm@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20251104; t=1781865603; x=1782470403; darn=isar-build.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:feedback-id :mime-version:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=veEzlpvaPlNfg2wMdsv4rnMt/bhZt337FSn4k3yFxFY=; b=yKkA01fhw687K4y920b38Acs6gwF7f/Vqet4RYXzPatucBZlsBISHtq6lTHKb2JZPP aGKRhh2UH89Gb1+CoCxJVwbdh5a1Hq18rviSiil0o7bncWSO+92DvA9Jnm35ax257uIn +k5Guh5A6adE1J131gYLLWYSfE45Rat5o+mE+1TNsOOyeU1x/PGGckFnSCYwyBpVxrko S8inLkSmlpkkN0mtw0pqsHkgxduaCe6W1R0OLTvTDtis0RL3yQsMgEHfi1KgjUdJlPrV reDyKWRpiSrKsCx87ZQLvdppf1IirNnpSdVYZA5LksltLhoYNLRHuOsseyW6mcqGA+7b 1Avg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781865603; x=1782470403; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:feedback-id :mime-version:message-id:date:subject:cc:to:from:x-beenthere :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=veEzlpvaPlNfg2wMdsv4rnMt/bhZt337FSn4k3yFxFY=; b=gLBdpbCzLqqP29w1Nj8nHtlT77hoLYaHDXB5a2gAOsF5ETOsfPmNIXRTEw7EcKxBaD BHByt/9KeA9aX60xwwJWg4HxWOAyUco8kEM9cKmybA67id38T+0Y2xsEdt9QSL+angJY im11T5tXlCyJih9bAHIe83fkZrKOE1w4vu6RH/YCVt+RGTaR/yVZYS5iwZk/dC++pCai t6VvHFJIwEI6nE1sH7zDOqzM01XK5t7s9VfbK5HTFOO+nfOvp+UWM629Cn2tz3+Lg+IB j/KpPi/xzyoxCbkCNcDyZx/OxeA8smiuqH0aLIjuNCBvgR4stcWTpR4pYybZpmBi05+b JGsg== X-Forwarded-Encrypted: i=2; AFNElJ9B5orDegBGfFMceEz7Er1me4nYuxu8tNEnaJ9CK26ur5V90+ASK7eOS9ZpZ6lysmfru83xUfc=@isar-build.org X-Gm-Message-State: AOJu0YwPEMZBYf8tXd09klREgDHY8u6RRJUguyIFGR95GYRSVYPIGw0t thkqBtl9K7YX18S4HtAqd3uRfFdzAhOkMCAG88KKbPMj8J35RPpTeJsG X-Received: by 2002:a2e:a901:0:b0:394:148d:1653 with SMTP id 38308e7fff4ca-39989fde61bmr10591271fa.0.1781865602551; Fri, 19 Jun 2026 03:40:02 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com; h="AX0PUUcxC2EQpfPhbHaqQONatj4PY3cIdH8qI2HGyx6aX/f0AA==" Received: by 2002:a05:651c:25d0:10b0:396:8005:f0d7 with SMTP id 38308e7fff4ca-3998a735ea8ls2976621fa.2.-pod-prod-05-eu; Fri, 19 Jun 2026 03:39:59 -0700 (PDT) X-Received: by 2002:a2e:be21:0:b0:38e:cab9:3637 with SMTP id 38308e7fff4ca-3998a2847a4mr8748111fa.18.1781865599345; Fri, 19 Jun 2026 03:39:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781865599; cv=none; d=google.com; s=arc-20240605; b=kFuhRWAkHzt6pGSrlSmQTp/WuSKyiGU1+ORbXqCeGFRdogY4EDrvpJ/wduQeS794FZ PhgJBKarXvF5yk9zAPdaNJKwCNxvkamADFCpLV6M9P9qg5MNLZU3s8QxaLPZJqtMS9mH FptjMrg+sQSyikjkpPOSMQYT2MGV4viu44qUkyrzxdfhzsVjSpKlOUSyWOCbskMZunUl ASajXNIfffLWBBPoc6h+zUHopzcW3sI/Wm2so/srd6en2i9rKG1qjzFli8HEz9Lml/6c mKnir3BOmRjBUq52TFCxQf3LZ7wQqpmIxSF7mneo4PwQric8dOD5ix9csdi+GPPENZ+O AM0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=feedback-id:content-transfer-encoding:mime-version:message-id:date :subject:cc:to:from:dkim-signature; bh=qKWpsWQklmJW4qdENLBR+Ds2ddifazJnkGEr/Fl6DrY=; fh=gz0ZrJn6x76gX3XefOAliLWTyygDYYdGT/FXhQYr+zo=; b=XdVXNVhHxwJ69H5+UrvR642//KNRuuACVMxrCRQlOlZrcViuT9V/rzuxN2m1k+YQKz 8ixSJPB6Qizd91SrTvvWe8tpKRdJCpFFBRXpBE5Dysikcqf7cvWDMTZoftG/8VzJfivQ 20aa7kEKYWsgVGITw/e4ogPBUmmh2JnU7IK5StfIG8jVzEJkLc1sjhBi4pxdX0jVyNmI yfHMPD9ohaPKIpz2RLaHPR/nw+P8TNMhZN/bCLsjbzkWmCwhXBUlAu43tL5e8ydMp41a s6ozoaAYBh5mSDTf0TUSs+iTCXAWowzM1l4eNj0dlKtAb7Uy38XyR2Szj0udK3FJT2lr yVSg==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm2 header.b=n7vKONLj; spf=pass (google.com: domain of fm-1333022-20260619103958bf95b9610d000207bd-x2nvfm@rts-flowmailer.siemens.com designates 185.136.64.227 as permitted sender) smtp.mailfrom=fm-1333022-20260619103958bf95b9610d000207bd-x2nVFm@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from mta-64-227.siemens.flowmailer.net (mta-64-227.siemens.flowmailer.net. [185.136.64.227]) by gmr-mx.google.com with ESMTPS id 38308e7fff4ca-3998c018188si339451fa.3.2026.06.19.03.39.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 19 Jun 2026 03:39:59 -0700 (PDT) Received-SPF: pass (google.com: domain of fm-1333022-20260619103958bf95b9610d000207bd-x2nvfm@rts-flowmailer.siemens.com designates 185.136.64.227 as permitted sender) client-ip=185.136.64.227; Received: by mta-64-227.siemens.flowmailer.net with ESMTPSA id 20260619103958bf95b9610d000207bd for ; Fri, 19 Jun 2026 12:39:58 +0200 X-Patchwork-Original-From: "'Gourav Singh' via isar-users" From: Gourav Singh To: isar-users@googlegroups.com Cc: Gourav Singh Subject: [PATCH] target-bootstrapper-service: add runtime serial tty drop-in generation Date: Fri, 19 Jun 2026 16:09:44 +0530 Message-Id: <20260619103944.1303513-1-gouravsingh@siemens.com> MIME-Version: 1.0 X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-1333022:519-21489:flowmailer X-Original-Sender: gouravsingh@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm2 header.b=n7vKONLj; spf=pass (google.com: domain of fm-1333022-20260619103958bf95b9610d000207bd-x2nvfm@rts-flowmailer.siemens.com designates 185.136.64.227 as permitted sender) smtp.mailfrom=fm-1333022-20260619103958bf95b9610d000207bd-x2nVFm@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com X-Original-From: Gourav Singh Reply-To: Gourav Singh Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Status: No, score=-4.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_RP_CERTIFIED, RCVD_IN_RP_RNBL,RCVD_IN_RP_SAFE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= Extend the recipe to support dynamically detected serial consoles without taking over every getty instance. The existing loop still installs overrides for statically configured TARGET_BOOTSTRAPPER_TTY_SERVICES. In addition, a runtime oneshot service and helper script are installed to detect the first available serial tty (ttyACM*/ttyUSB*/ttyAMA*/ttyGS*) and create one matching serial-getty@.service.d override from a stored template. This keeps installer behavior on configured ttys, adds support for runtime-discovered serial devices, and preserves other consoles for normal login/debug access. Signed-off-by: Gourav Singh --- .../generate-target-bootstrapper-dropin.sh | 47 +++++++++++++++++++ .../files/postinst.tmpl | 3 ++ ...arget-bootstrapper-generate-dropin.service | 12 +++++ .../target-bootstrapper-service.bb | 14 +++++- 4 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 meta-isar/recipes-installer/target-bootstrapper-service/files/generate-target-bootstrapper-dropin.sh create mode 100644 meta-isar/recipes-installer/target-bootstrapper-service/files/target-bootstrapper-generate-dropin.service diff --git a/meta-isar/recipes-installer/target-bootstrapper-service/files/generate-target-bootstrapper-dropin.sh b/meta-isar/recipes-installer/target-bootstrapper-service/files/generate-target-bootstrapper-dropin.sh new file mode 100644 index 00000000..50c3ba40 --- /dev/null +++ b/meta-isar/recipes-installer/target-bootstrapper-service/files/generate-target-bootstrapper-dropin.sh @@ -0,0 +1,47 @@ +#!/bin/sh +# This software is a part of Isar. +# Copyright (C) Siemens AG, 2026 +# +# SPDX-License-Identifier: MIT + +set -e + +OVERRIDE_DIR="/usr/lib/systemd/system" +DROP_IN_SUFFIX="d/10-target-bootstrapper.override.conf" + +# Check if override template exists +if [ ! -f "/usr/lib/target-bootstrapper.override.conf" ]; then + exit 0 +fi + +# Detect first available serial device (ttyACM*, ttyUSB*, ttyAMA*, etc.) +detect_first_serial_device() { + for pattern in ttyACM ttyUSB ttyAMA ttyGS; do + for dev in /dev/${pattern}*; do + if [ -c "$dev" ]; then + basename "$dev" + return 0 + fi + done + done +} + +DETECTED_TTY=$(detect_first_serial_device 2>/dev/null) + +if [ -z "$DETECTED_TTY" ]; then + exit 0 +fi + +# Map device name to getty service instance +# e.g. ttyACM0 -> serial-getty@ttyACM0.service +TTY_SERVICE="serial-getty@${DETECTED_TTY}.service" +DROP_IN_DIR="${OVERRIDE_DIR}/${TTY_SERVICE}.d" + +# Create drop-in directory and install override +mkdir -p "$DROP_IN_DIR" +cp "/usr/lib/target-bootstrapper.override.conf" "$DROP_IN_DIR/${DROP_IN_SUFFIX##*/}" + +# Reload systemd to pick up new drop-ins +systemctl daemon-reload || true + +exit 0 diff --git a/meta-isar/recipes-installer/target-bootstrapper-service/files/postinst.tmpl b/meta-isar/recipes-installer/target-bootstrapper-service/files/postinst.tmpl index 7c24af17..57851956 100644 --- a/meta-isar/recipes-installer/target-bootstrapper-service/files/postinst.tmpl +++ b/meta-isar/recipes-installer/target-bootstrapper-service/files/postinst.tmpl @@ -5,3 +5,6 @@ set -e for tty_service in ${TARGET_BOOTSTRAPPER_TTY_SERVICES}; do deb-systemd-helper enable ${tty_service} || true done + +# Enable the runtime detection service +deb-systemd-helper enable target-bootstrapper-generate-dropin.service || true diff --git a/meta-isar/recipes-installer/target-bootstrapper-service/files/target-bootstrapper-generate-dropin.service b/meta-isar/recipes-installer/target-bootstrapper-service/files/target-bootstrapper-generate-dropin.service new file mode 100644 index 00000000..38457c8d --- /dev/null +++ b/meta-isar/recipes-installer/target-bootstrapper-service/files/target-bootstrapper-generate-dropin.service @@ -0,0 +1,12 @@ +[Unit] +Description=Generate target-bootstrapper drop-in for detected serial devices +Before=serial-getty@.service getty@.service +After=dev-*.device + +[Service] +Type=oneshot +ExecStart=/usr/libexec/target-bootstrapper-service/generate-target-bootstrapper-dropin.sh +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/meta-isar/recipes-installer/target-bootstrapper-service/target-bootstrapper-service.bb b/meta-isar/recipes-installer/target-bootstrapper-service/target-bootstrapper-service.bb index e7a8b2a1..572cddcd 100644 --- a/meta-isar/recipes-installer/target-bootstrapper-service/target-bootstrapper-service.bb +++ b/meta-isar/recipes-installer/target-bootstrapper-service/target-bootstrapper-service.bb @@ -25,6 +25,8 @@ inherit dpkg-raw SRC_URI = "\ file://postinst.tmpl \ file://target-bootstrapper.override.conf \ + file://generate-target-bootstrapper-dropin.sh \ + file://target-bootstrapper-generate-dropin.service \ " TEMPLATE_FILES = "postinst.tmpl" @@ -33,11 +35,19 @@ TEMPLATE_VARS = "TARGET_BOOTSTRAPPER_TTY_SERVICES" DEPENDS += " target-bootstrapper" DEBIAN_DEPENDS = "target-bootstrapper" -do_install[cleandirs] = "${D}/usr/lib/systemd/system/" +do_install[cleandirs] = "${D}/usr/lib/systemd/system/ ${D}/usr/libexec" do_install() { for svc_name in ${TARGET_BOOTSTRAPPER_TTY_SERVICES} do - mkdir -p ${D}/usr/lib/systemd/system/${svc_name}.service.d/ + install -d -m 0755 ${D}/usr/lib/systemd/system/${svc_name}.service.d/ install -m 0644 ${WORKDIR}/target-bootstrapper.override.conf ${D}/usr/lib/systemd/system/${svc_name}.service.d/10-target-bootstrapper.override.conf done + + # Install script and service for runtime detection of serial devices + install -d -m 0755 ${D}/usr/libexec/${PN}/ + install -m 0755 ${WORKDIR}/generate-target-bootstrapper-dropin.sh ${D}/usr/libexec/${PN}/ + install -m 0644 ${WORKDIR}/target-bootstrapper-generate-dropin.service ${D}/usr/lib/systemd/system/ + + # Install override template for runtime use by the detection script + install -m 0644 ${WORKDIR}/target-bootstrapper.override.conf ${D}/usr/lib/target-bootstrapper.override.conf }