From patchwork Thu Aug 6 07:07:58 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Clara Kowalsky X-Patchwork-Id: 5330 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Thu, 06 Aug 2026 09:08:45 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-wm1-f60.google.com (mail-wm1-f60.google.com [209.85.128.60]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 67678ioK002508 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 6 Aug 2026 09:08:44 +0200 Received: by mail-wm1-f60.google.com with SMTP id 5b1f17b1804b1-496b6f97676sf18155275e9.2 for ; Thu, 06 Aug 2026 00:08:44 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1786000119; cv=pass; d=google.com; s=arc-20260327; b=b9rR38vhOphIrksSk6N1Pe5MK+Yj/mDV9wAfVDc2u+WZtUmSdIltHznWvbOkvySYI/ vnoXqa3i3PtQKpnouTsLbJu+S47dVJa228RdmjDluXPrM60ELB71OWaYv0ENaqmIimJg LKpaK5RzdBtfOn3pBs92y7jDKjNCI34Yp7GHn9+eHz6/4yCxZXU9UHqh0JEO+ZUYFKrj jtHodi8XrYKnwFWEEq4ERvSCW93usRnCj8LqRKrO0ZnRXkc7DKuTQ0HwYoimx6fM0pvE pa5HsBYlGSMSY/UN+p0j0xIBbZH75dcyAMdGyP3Wya0Jv0JzAxGYKtAKhEvM3eFt8K53 1duA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; 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=Y1CH6XAi3beWSQBsy3VMsukpnMazxZs1I+diCKUiDic=; fh=VeOBslda2YKarnraccS1RhdqCkqs+MXBuzowOr6ZU3k=; b=GG+vtMh+tdeUJoNQR+sgDkmhMnqn9515lJHTmyhrKhL9aX7u+lWZD2QPTe9wh+SdH0 pw0WsTWDBhlExLQwjlVBEsCyUc96SPVHjd5GxiLz+Rvq1QQD3oMqiEzEZY2VjbWfz5hM cEIn/usoYqr7NDbgHcT/LtgmhH/qvD6iLnhPdsFyiizd1+Rwo0gJMod9ZitPwmFaM7lv Nnam6zd0/Nlsg2Iz/7q5/zOZ+N28TzJ5MruI8D/2DcRFpJiNuHdweKxI2Zmv+QiBWhKU VECPhZf5ins7x91Dqo7Ff17rxYb+GvxGNxtv+MB9ncGyH1y+MwNNZDcxcOiHWP/4m/+w Y3qg==; darn=isar-build.org ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=WQ7PABlb; spf=pass (google.com: domain of fm-1047747-202608060708352fb96d637e0002072d-sx2gcb@rts-flowmailer.siemens.com designates 185.136.64.226 as permitted sender) smtp.mailfrom=fm-1047747-202608060708352fb96d637e0002072d-sX2GCB@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=1786000119; x=1786604919; darn=isar-build.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:content-type: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:content-type; bh=Y1CH6XAi3beWSQBsy3VMsukpnMazxZs1I+diCKUiDic=; b=v0HTc4wNIECm8df9xw51ZBBitdRfERKtD1dOIFD+Fouy8MEBUUVKMOtIm0pkp1sB6G S68hDO4XbK7uWBIwVEa6mfkaPJm7YWNENlOrbY0olTXdWsPNBGqPwjUG1is4bHjVT6c8 ivsx2pZgikDkxBvQOAIxcMlgHT4ZxwFFMbENc7A1trsZF3WK798hxtbwscCGf8/6VsN+ swI9YBV3pgRuwYFGaWfCGjLus/+XPXPF2QqcUABDEGGSqSaLP1nCp8czmHNAcHkYE7Xb uVNAoHS42Yg9bpf3oaQR0sy4WP4L6jn56GOoX1Ov8ga6t1tdd+KW89pwt9rUOCG8NjOL XiZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786000119; x=1786604919; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :content-type: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:content-type; bh=Y1CH6XAi3beWSQBsy3VMsukpnMazxZs1I+diCKUiDic=; b=KmuImZQkNMj/yZTZmcIB5lWw5dSP92oP8fx19+b/4P/CJLBpd65gixpp9UZ0wrlE11 dSA1yh1WTMgKWXU2raovDoRJN0Lbu+n25vpxf+j46En/KnQl3UHSanHHz2ILTj5HT9K0 Zb+7CG8ww74CviWuwgWXnMDLJlCO6/U6jvUuF2gO7nu/KHgBUZ0XeXh/PBw5VGToa8bh po42uN9tlWr9MkVlT6+dXiZn7WJwzyeT/5KXEK1+YFOpAcBsycgT6Y1atZpmPvQ9khm7 LAwwipg9ZmJV2IL5GbnNVta0cQhaJ7zNnOHBUyCJLPa+uPpeD98ZO+SvCigbBQwFzKoP TcsQ== X-Forwarded-Encrypted: i=2; AHgh+Rqso37bEClVbJWnq3RQy6rtlR50jklyWi+cgRK70Hr4CBAT/0hvhTitnLkF8oXUP82LcZogmJs=@isar-build.org X-Gm-Message-State: AOJu0YyqxCAr9zM6lj5DGsHvoE47pDStGI102vRxpD0tNmed8ZCndTmT sPtDeskGiyNF1Rf1pEUUN0VCekHXe4WDMcyxHPyFhwhemCMSmS19AB6S X-Received: by 2002:a05:600c:a21b:b0:495:4e89:3f30 with SMTP id 5b1f17b1804b1-4994e7c5e49mr125898675e9.15.1786000118822; Thu, 06 Aug 2026 00:08:38 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com; h="Aa7YSPScyB0PZmy6gG4YQWTH02M2D5KwfxeCVkBLj/fvqfbHVw==" Received: by 2002:a05:600c:4685:b0:495:482d:9805 with SMTP id 5b1f17b1804b1-49954be8f55ls3905785e9.2.-pod-prod-07-eu; Thu, 06 Aug 2026 00:08:36 -0700 (PDT) X-Received: by 2002:a05:600c:a21b:b0:495:4e89:3f30 with SMTP id 5b1f17b1804b1-4994e7c5e49mr125896095e9.15.1786000116628; Thu, 06 Aug 2026 00:08:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1786000116; cv=none; d=google.com; s=arc-20260327; b=iiAoY0Q33yc20KLP8Lv633smiHYvS1W2Os/1FnmqiAO873qNTrRx8vvEHTSjmBfCHy 6PykCFkeYdag01ghKNqoRrIe0yPAAwXvM4o/Tjz7VMoLE+6szTYvneuMvc6RI4Ao/2ix kFBLQaLw7sV1bd51EtkkIlIZMlQyM9erFFR4JIqMYcVIQ2JOCmbiXBHkgOE9p3fwdyqu mMCRwWPpKZTyms6Gfxrl2S3M1VbbGpzju+LTUAwFFlxVeC3IY1V89EeHrN4EYpPT10Cj QQG5whH1iJs40bgs69DW0cV5gS8aa6ZBN9dOFj+1avikiT5jwTqg32I8xKyGxCDPot7s MSgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=feedback-id:content-transfer-encoding:mime-version:message-id:date :subject:cc:to:from:dkim-signature; bh=hudtZzw7yqkXP3r20HEmtYLL79l1OU7AG72UnJ4tIaQ=; fh=k125aQG1OG87rSSddaBU0UKyUBARThMIQDNlJXs0S/Q=; b=AMSHIOeSIGnncOibDzvngN+b5ge1vwOsJOYfcB+qz/fmIQvsKs2zuqUZosClEJzZEA T4DGQ/1TJ8OEWXcmc5rD4BFFA/k8lBfuys56hFricXmNdFEoqO+o4kSB6eSC/4cceBwr DISPi6a1JHbHDrLLZg5dssCKEReRP2ArNMDJ+V2JY3WTqRuxX2LIJYfIcKDlfdUXYs0Z slpva7Jomw1+0qZHd5yoHz+p5rqBFaadMZOJAQ5owswRShvEes79LpxbjF0D8Z6pMeym 3Nt9PKNujG2+GRKgXYNy6DtzLUKF55atZpPcFSxisfetc4e6FYRItp1YS3sUkZQvffzT oaww==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=WQ7PABlb; spf=pass (google.com: domain of fm-1047747-202608060708352fb96d637e0002072d-sx2gcb@rts-flowmailer.siemens.com designates 185.136.64.226 as permitted sender) smtp.mailfrom=fm-1047747-202608060708352fb96d637e0002072d-sX2GCB@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from mta-64-226.siemens.flowmailer.net (mta-64-226.siemens.flowmailer.net. [185.136.64.226]) by gmr-mx.google.com with ESMTPS id 5b1f17b1804b1-4995421d101si233165e9.1.2026.08.06.00.08.36 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 06 Aug 2026 00:08:36 -0700 (PDT) Received-SPF: pass (google.com: domain of fm-1047747-202608060708352fb96d637e0002072d-sx2gcb@rts-flowmailer.siemens.com designates 185.136.64.226 as permitted sender) client-ip=185.136.64.226; Received: by mta-64-226.siemens.flowmailer.net with ESMTPSA id 202608060708352fb96d637e0002072d for ; Thu, 06 Aug 2026 09:08:36 +0200 X-Patchwork-Original-From: "'Clara Kowalsky' via isar-users" From: Clara Kowalsky To: isar-users@googlegroups.com Cc: florian.bezdeka@siemens.com, Clara Kowalsky Subject: [PATCH] meta: Generate WSL image for Windows Subsystem for Linux Date: Thu, 6 Aug 2026 09:07:58 +0200 Message-ID: <20260806070758.799362-1-clara.kowalsky@siemens.com> MIME-Version: 1.0 X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-1047747:519-21489:flowmailer X-Original-Sender: clara.kowalsky@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=WQ7PABlb; spf=pass (google.com: domain of fm-1047747-202608060708352fb96d637e0002072d-sx2gcb@rts-flowmailer.siemens.com designates 185.136.64.226 as permitted sender) smtp.mailfrom=fm-1047747-202608060708352fb96d637e0002072d-sX2GCB@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com X-Original-From: Clara Kowalsky Reply-To: Clara Kowalsky 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,URI_TRY_3LD 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?= This allows to generate a wsl file for Windows Subsystem for Linux. The wsl image class adapts the rootfs for WSL: It creates /dev/pts/ptmx because WSL needs that node before devpts is mounted. Without it, early boot fails with forkpty errors. The class also removes /etc/resolv.conf, as WSL manages it itself. See https://learn.microsoft.com/en-us/windows/wsl/build-custom-distro#configuration-file-recommendations The wsl-config recipe ships the configuration files /etc/wsl.conf and /etc/wsl-distribution.conf as templates. See https://learn.microsoft.com/en-us/windows/wsl/build-custom-distro#create-wsl-configuration-files The variables in the configuration files can be overwritten in downstream layers: - WSL_DEFAULT_USER specifies which user runs when the WSL distro is launched. Default: "root" - WSL_DEFAULT_UID specifies the default UID used during first-run/OOBE installation. Default: "0" - WSL_DEFAULT_NAME specifies the name that the distro is registered under. Default: "${DISTRO}-${MACHINE}" Whole configuration files can be replaced or added by bbappending the wsl-config recipe. This was tested with WSL2, in plain Isar and in downstream layer. Signed-off-by: Clara Kowalsky --- doc/user_manual.md | 1 + kas/machine/Kconfig | 8 ++++ kas/machine/wsl.yaml | 7 +++ meta-isar/conf/machine/wsl.conf | 16 +++++++ meta-isar/conf/mc.conf | 2 + meta-isar/conf/multiconfig/wsl-bookworm.conf | 7 +++ meta-isar/conf/multiconfig/wsl-trixie.conf | 7 +++ meta/classes-recipe/image.bbclass | 2 +- meta/classes-recipe/imagetypes_wsl.bbclass | 48 +++++++++++++++++++ .../wsl-config/files/etc/oobe.sh | 4 ++ .../files/etc/wsl-distribution.conf.tmpl | 6 +++ .../wsl-config/files/etc/wsl.conf.tmpl | 5 ++ .../wsl-config/wsl-config_0.1.bb | 37 ++++++++++++++ testsuite/citest.py | 2 + 14 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 kas/machine/wsl.yaml create mode 100644 meta-isar/conf/machine/wsl.conf create mode 100644 meta-isar/conf/multiconfig/wsl-bookworm.conf create mode 100644 meta-isar/conf/multiconfig/wsl-trixie.conf create mode 100644 meta/classes-recipe/imagetypes_wsl.bbclass create mode 100644 meta/recipes-support/wsl-config/files/etc/oobe.sh create mode 100644 meta/recipes-support/wsl-config/files/etc/wsl-distribution.conf.tmpl create mode 100644 meta/recipes-support/wsl-config/files/etc/wsl.conf.tmpl create mode 100644 meta/recipes-support/wsl-config/wsl-config_0.1.bb diff --git a/doc/user_manual.md b/doc/user_manual.md index dcc3f560..f3b1acb9 100644 --- a/doc/user_manual.md +++ b/doc/user_manual.md @@ -514,6 +514,7 @@ Currently, the following image types are provided: - `ubi` - image for use on mtd nand partitions employing UBI - `ubifs` - raw UBI filesystem image, normally used together with UBI partitions - `ova` - Open Virtual Appliance: image for use on VirtualBox or VMware + - `wsl` - tar file for Windows Subsystem for Linux - `squashfs` - raw squashfs filesystem image - `fit` - FIT image as used by U-Boot - `oci-archive`, `docker-archive`, `docker-daemon`, `containers-storage` - see [generating container images](#generate-container-image-with-root-filesystem) diff --git a/kas/machine/Kconfig b/kas/machine/Kconfig index 1e360be6..2895368c 100644 --- a/kas/machine/Kconfig +++ b/kas/machine/Kconfig @@ -253,6 +253,13 @@ config MACHINE_HYPER_V select CODENAME_TRIXIE select ARCH_AMD64 +config MACHINE_WSL + bool "wsl" + select DISTRO_DEBIAN + select CODENAME_BOOKWORM + select CODENAME_TRIXIE + select ARCH_AMD64 + config MACHINE_X86_PC bool "x86 PC" select DISTRO_DEBIAN @@ -297,6 +304,7 @@ config KAS_INCLUDE_MACHINE default "kas/machine/virtualbox.yaml" if MACHINE_VIRTUALBOX default "kas/machine/vmware.yaml" if MACHINE_VMWARE default "kas/machine/hyper-v-amd64.yaml" if MACHINE_HYPER_V + default "kas/machine/wsl.yaml" if MACHINE_WSL default "kas/machine/x86-pc.yaml" if MACHINE_X86_PC endmenu diff --git a/kas/machine/wsl.yaml b/kas/machine/wsl.yaml new file mode 100644 index 00000000..f043b02a --- /dev/null +++ b/kas/machine/wsl.yaml @@ -0,0 +1,7 @@ +# This software is a part of Isar. +# Copyright (c) Siemens AG, 2026 + +header: + version: 14 + +machine: wsl diff --git a/meta-isar/conf/machine/wsl.conf b/meta-isar/conf/machine/wsl.conf new file mode 100644 index 00000000..086b0fe1 --- /dev/null +++ b/meta-isar/conf/machine/wsl.conf @@ -0,0 +1,16 @@ +# This software is a part of Isar. +# Copyright (C) Siemens AG, 2026 +# +# SPDX-License-Identifier: MIT + +DISTRO_ARCH ?= "amd64" + +# WSL uses the Windows-provided kernel +KERNEL_NAME = "" + +IMAGE_FSTYPES ?= "wsl" + +# Configure rootfs for WSL boot +IMAGE_INSTALL:append = " wsl-config" +# Enable systemd-user session model +IMAGE_PREINSTALL:append = " dbus dbus-user-session" diff --git a/meta-isar/conf/mc.conf b/meta-isar/conf/mc.conf index 649430a2..df3a38b0 100644 --- a/meta-isar/conf/mc.conf +++ b/meta-isar/conf/mc.conf @@ -89,4 +89,6 @@ BBMULTICONFIG = " \ qemuamd64-sid \ qemuarm64-sid \ qemuriscv64-resolute \ + wsl-bookworm \ + wsl-trixie \ " diff --git a/meta-isar/conf/multiconfig/wsl-bookworm.conf b/meta-isar/conf/multiconfig/wsl-bookworm.conf new file mode 100644 index 00000000..5e9f3697 --- /dev/null +++ b/meta-isar/conf/multiconfig/wsl-bookworm.conf @@ -0,0 +1,7 @@ +# This software is a part of Isar. +# Copyright (C) Siemens AG, 2026 +# +# SPDX-License-Identifier: MIT + +MACHINE ?= "wsl" +DISTRO ?= "debian-bookworm" diff --git a/meta-isar/conf/multiconfig/wsl-trixie.conf b/meta-isar/conf/multiconfig/wsl-trixie.conf new file mode 100644 index 00000000..8ef796e4 --- /dev/null +++ b/meta-isar/conf/multiconfig/wsl-trixie.conf @@ -0,0 +1,7 @@ +# This software is a part of Isar. +# Copyright (C) Siemens AG, 2026 +# +# SPDX-License-Identifier: MIT + +MACHINE ?= "wsl" +DISTRO ?= "debian-trixie" diff --git a/meta/classes-recipe/image.bbclass b/meta/classes-recipe/image.bbclass index d02f99da..0329c3f8 100644 --- a/meta/classes-recipe/image.bbclass +++ b/meta/classes-recipe/image.bbclass @@ -174,7 +174,7 @@ IMAGE_BASETYPES = "${@get_image_basetypes(d)}" # image types IMAGE_CLASSES ??= "" -IMGCLASSES = "imagetypes imagetypes_wic imagetypes_vm imagetypes_container squashfs \ +IMGCLASSES = "imagetypes imagetypes_wic imagetypes_vm imagetypes_wsl imagetypes_container squashfs \ imagetypes_ddi" IMGCLASSES += "${IMAGE_CLASSES}" inherit ${IMGCLASSES} diff --git a/meta/classes-recipe/imagetypes_wsl.bbclass b/meta/classes-recipe/imagetypes_wsl.bbclass new file mode 100644 index 00000000..413c6a2d --- /dev/null +++ b/meta/classes-recipe/imagetypes_wsl.bbclass @@ -0,0 +1,48 @@ +# This software is a part of Isar. +# Copyright (C) Siemens AG, 2026 +# +# SPDX-License-Identifier: MIT + +# This class allows to generate WSL import artifacts. +# + +USING_WSL = "${@bb.utils.contains('IMAGE_BASETYPES', 'wsl', '1', '0', d)}" + +# WSL requires a static /dev/pts/ptmx during early boot +ROOTFS_CONFIGURE_COMMAND += "${@bb.utils.contains('USING_WSL', '1', 'image_configure_wsl_ptmx', '', d)}" + +# The rootfs should not contain a /etc/resolv.conf +# See https://learn.microsoft.com/en-us/windows/wsl/build-custom-distro#configuration-file-recommendations +ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('USING_WSL', '1', 'image_postprocess_wsl_cleanup', '', d)}" +image_postprocess_wsl_cleanup[vardeps] += "WSL_CLEANUP_FILES" + +WSL_CLEANUP_FILES ?= " \ + /etc/resolv.conf \ +" + +IMAGE_TYPEDEP:wsl = "tar.gz" + +IMAGE_CMD:wsl() { + cp -f "${DEPLOY_DIR_IMAGE}/${IMAGE_FULLNAME}.tar.gz" "${IMAGE_FILE_HOST}" +} + +image_configure_wsl_ptmx() { + run_privileged_heredoc <<'EOSUDO' + set -e + + mkdir -p "${ROOTFSDIR}/dev/pts" + if [ ! -e "${ROOTFSDIR}/dev/pts/ptmx" ]; then + mknod -m 000 "${ROOTFSDIR}/dev/pts/ptmx" c 5 2 + fi +EOSUDO +} + +image_postprocess_wsl_cleanup() { + run_privileged_heredoc <<'EOSUDO' + set -e + + for path in ${WSL_CLEANUP_FILES}; do + rm -f "${ROOTFSDIR}${path}" + done +EOSUDO +} diff --git a/meta/recipes-support/wsl-config/files/etc/oobe.sh b/meta/recipes-support/wsl-config/files/etc/oobe.sh new file mode 100644 index 00000000..e9ddfd16 --- /dev/null +++ b/meta/recipes-support/wsl-config/files/etc/oobe.sh @@ -0,0 +1,4 @@ +#! /usr/bin/bash + +# Generic OOBE hook for Isar-generated WSL images +exit 0 diff --git a/meta/recipes-support/wsl-config/files/etc/wsl-distribution.conf.tmpl b/meta/recipes-support/wsl-config/files/etc/wsl-distribution.conf.tmpl new file mode 100644 index 00000000..4f83314b --- /dev/null +++ b/meta/recipes-support/wsl-config/files/etc/wsl-distribution.conf.tmpl @@ -0,0 +1,6 @@ +# See https://learn.microsoft.com/en-us/windows/wsl/build-custom-distro#add-the-wsl-distribution-configuration-file + +[oobe] +command = /etc/oobe.sh +defaultUid = ${WSL_DEFAULT_UID} +defaultName = ${WSL_DEFAULT_NAME} diff --git a/meta/recipes-support/wsl-config/files/etc/wsl.conf.tmpl b/meta/recipes-support/wsl-config/files/etc/wsl.conf.tmpl new file mode 100644 index 00000000..862ca252 --- /dev/null +++ b/meta/recipes-support/wsl-config/files/etc/wsl.conf.tmpl @@ -0,0 +1,5 @@ +[boot] +systemd=true + +[user] +default=${WSL_DEFAULT_USER} diff --git a/meta/recipes-support/wsl-config/wsl-config_0.1.bb b/meta/recipes-support/wsl-config/wsl-config_0.1.bb new file mode 100644 index 00000000..2144c01b --- /dev/null +++ b/meta/recipes-support/wsl-config/wsl-config_0.1.bb @@ -0,0 +1,37 @@ +# This software is a part of Isar. +# Copyright (C) Siemens AG, 2026 +# +# SPDX-License-Identifier: MIT + +inherit dpkg-raw + +DESCRIPTION = "WSL configuration files" +MAINTAINER = "Clara Kowalsky " + +WSL_DEFAULT_USER ?= "root" +WSL_DEFAULT_UID ?= "0" +WSL_DEFAULT_NAME ?= "${DISTRO}-${MACHINE}" + +SRC_URI = " \ + file://etc/oobe.sh \ + file://etc/wsl.conf.tmpl \ + file://etc/wsl-distribution.conf.tmpl \ +" + +TEMPLATE_FILES = " \ + etc/wsl.conf.tmpl \ + etc/wsl-distribution.conf.tmpl \ +" +TEMPLATE_VARS += " \ + WSL_DEFAULT_USER \ + WSL_DEFAULT_UID \ + WSL_DEFAULT_NAME \ +" + +do_install[cleandirs] += "${D}/etc" + +do_install() { + install -m 0644 "${WORKDIR}/etc/wsl.conf" "${D}/etc" + install -m 0644 "${WORKDIR}/etc/wsl-distribution.conf" "${D}/etc" + install -m 0755 "${WORKDIR}/etc/oobe.sh" "${D}/etc" +} diff --git a/testsuite/citest.py b/testsuite/citest.py index a4f15d04..b13e27ed 100644 --- a/testsuite/citest.py +++ b/testsuite/citest.py @@ -904,6 +904,8 @@ class NoCrossTest(CIBaseTest): 'mc:qemuamd64-jammy:isar-image-base', 'mc:qemuarm64-jammy:isar-image-base', 'mc:x86-pc-bookworm:isar-image-base', + 'mc:wsl-bookworm:isar-image-base', + 'mc:wsl-trixie:isar-image-base', ] self.init()