From patchwork Fri Mar 14 11:21:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mikko Rapeli X-Patchwork-Id: 59015 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 768ABC28B2F for ; Fri, 14 Mar 2025 11:22:34 +0000 (UTC) Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) by mx.groups.io with SMTP id smtpd.web10.11925.1741951352768989207 for ; Fri, 14 Mar 2025 04:22:33 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=dSKTZPg4; spf=pass (domain: linaro.org, ip: 209.85.167.52, mailfrom: mikko.rapeli@linaro.org) Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-549644ae382so2238287e87.1 for ; Fri, 14 Mar 2025 04:22:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741951351; x=1742556151; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AK8nMh0RFc9VWODTCuiY5Wm+0L8cBbjVb7Duc6PWdzc=; b=dSKTZPg4SusKy6bq0kDUjOpiF/YD4AsrZ8mdhbiZ/Ie70NNEhmCaZXsGT419p4g2wI JhfhCPpa3DgYPeuCRGXFgYKwwYCxrkO5YjTXQllsZmEwbtbv82R1k8OJP2Mc07lwbErB r0miYPHL0TR131lP8JSyVKfZsBv9iyW7Wl9B/A/1l2hM9xxRFkChn9VXxiOO2EyRcBM0 wrmVXX43uXcOpVeunS7TkDwRzm3Uc1VfPT19RqdXcfa6AZTaOYNqb1zKnJB7Rfv5KtBA HiGYSkkbqoEr9bY+L/uLfO9NMlND3yY+N/4zk0oEqcp2NkBoJjsFIjrme1rstkZDa2hp MwKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741951351; x=1742556151; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AK8nMh0RFc9VWODTCuiY5Wm+0L8cBbjVb7Duc6PWdzc=; b=n39j8doejiiKqFH+6wzjWenIi6lkAHBSD6RWOK1+FP5Ymt5ZlQ8PZErCNOzZE/gBfv 1ic/HiN2S21eX3ZLkocqQabskWPpwgwwWe5a5UH5IWd9A1u+LonhcCXFhiNbrmdArLzL JLervCVQ7S98WiZ+WwM2JpsgbD8ExIv5HxNtbjKgXn0GZLV9J4oACSa3K0xyIL0+H+QX Uh7i9F04hp/HAGdGOlK42ag4NWMRgwHmJpF4TkAYZv8sWItek87vpgFm1Et+5Y7qukab +FZNAqBgACqByICOipzVSZ4KyLmkWiDLivVaUlh1NRqPy+0cdu+uOQtORWNWYDsW9K6m Tsrw== X-Gm-Message-State: AOJu0YwhPpixgpxXUhOb7sYvCY3waXClID+SdZRLMXQkBnbYL0J8BYef 6aEWCW2UASZiFS7tgvaJjM0WavUrkMAibzTcTDCH3gVEMY+S64AtpAB1iVFV/Rk= X-Gm-Gg: ASbGncu6dxgK3dAuwD5Eet/bRk4Gz6Z77f2a8Qs1pgX7X+BeLP5d0uLyX7BqlvzRfkf wnztwEoKgtSUJYwS1E7TZbCysKDT8eN/npLyMYbtlhLBxNPUKcQ+qQ7AmtjBxsiY4CKmkLCVits fW59/zixqlXuRXeQjrhzFJtIk+TXUCYg1annZ4vjpt6yn537f2UDNMnKIfFF+88rgXjCtz2w1SF 0WCJVjhLGR7Hnz2hNYv0NYJp8GQobCurQAquHwijqvu+x3zt7RDoNzTBv8ouc++DHNuoH1LI11u O4dCaxmcPqsnSJeA/j+8wWYP6rEV/Q+KaOO39RYQSRvFSdDLGk1tU7emus0tAOhO6JjZedlsPrz QzmiqqP1gqsOYFg== X-Google-Smtp-Source: AGHT+IFe5WWg0LBBMd+uw2J3U5j3+DZi2wUnJ6o2AG8ysZ68XviVgmgH01eG1qZdAoiuNVlkR+ZepQ== X-Received: by 2002:a05:6512:1392:b0:549:4d73:641a with SMTP id 2adb3069b0e04-549c39af674mr675149e87.45.1741951350688; Fri, 14 Mar 2025 04:22:30 -0700 (PDT) Received: from localhost.localdomain (78-27-76-97.bb.dnainternet.fi. [78.27.76.97]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-549ba8821f6sm484702e87.176.2025.03.14.04.22.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Mar 2025 04:22:29 -0700 (PDT) From: Mikko Rapeli To: poky@lists.yoctoproject.org Cc: openembedded-core@lists.openembedded.org, Mikko Rapeli Subject: [PATCH v2 1/6] systemd: use serial-getty-generator on genericarm64 Date: Fri, 14 Mar 2025 13:21:57 +0200 Message-ID: <20250314112158.305010-1-mikko.rapeli@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250314111942.304800-1-mikko.rapeli@linaro.org> References: <20250314111942.304800-1-mikko.rapeli@linaro.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 14 Mar 2025 11:22:34 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/212838 systemd-serialgetty recipe sets serial consoles based on SERIAL_CONSOLES build time variable. These fail to be detected on multiple devices including qemu and the resulting failures delay boot to systemd "running" state by one minute on an example aarch64 build machine and qemu. Serial console login works with both since udev will trigger agetty on correct devices. Using systemd side serial-getty-generator disables systemd-serialgetty. qemu-system-aarch64 core-image-base boot time with systemd-serialgetty before this patch: $ systemd-analyze Startup finished in 8.314s (firmware) + 9.805s (loader) + 14.338s (kernel) + 1min 34.392s (userspace) = 2min 6.851s multi-user.target reached after 1min 34.387s in userspace. with this patch: Startup finished in 8.312s (firmware) + 9.804s (loader) + 14.295s (kernel) + 29.808s (userspace) = 1min 2.220s multi-user.target reached after 29.802s in userspace. Signed-off-by: Mikko Rapeli --- meta-yocto-bsp/recipes-core/systemd/systemd_%.bbappend | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 meta-yocto-bsp/recipes-core/systemd/systemd_%.bbappend v1: https://lists.yoctoproject.org/g/poky/message/13522 diff --git a/meta-yocto-bsp/recipes-core/systemd/systemd_%.bbappend b/meta-yocto-bsp/recipes-core/systemd/systemd_%.bbappend new file mode 100644 index 0000000000..f23852a351 --- /dev/null +++ b/meta-yocto-bsp/recipes-core/systemd/systemd_%.bbappend @@ -0,0 +1,3 @@ +# auto detection instead of build time configured via SERIAL_CONSOLES +# to support multiple devices +PACKAGECONFIG:append:genericarm64 = " serial-getty-generator" From patchwork Fri Mar 14 11:19:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mikko Rapeli X-Patchwork-Id: 59010 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7C968C28B2F for ; Fri, 14 Mar 2025 11:20:14 +0000 (UTC) Received: from mail-lj1-f172.google.com (mail-lj1-f172.google.com [209.85.208.172]) by mx.groups.io with SMTP id smtpd.web11.12002.1741951212701499527 for ; Fri, 14 Mar 2025 04:20:13 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=FGbgA7dP; spf=pass (domain: linaro.org, ip: 209.85.208.172, mailfrom: mikko.rapeli@linaro.org) Received: by mail-lj1-f172.google.com with SMTP id 38308e7fff4ca-30bd11bfec6so19719681fa.0 for ; Fri, 14 Mar 2025 04:20:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741951211; x=1742556011; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zErSyHtBL8AwOjSCoV00LTljZ6I+SBCKPcOgxhNOXUc=; b=FGbgA7dPKhbz7VnTPVHmuCZ5xALr6gCQwM+GlaUTngXxdvtLnK6O9FQrpbKv6hMwDP SQqA8W1IgMuF24w0E1YB2eCoRkcoHDnVjX2jjqg/8igTkUirodYtNk4b4RkjZn/efHLN Con0g2rLO9cZvfAX4alLJix9q1RrHCSzEKh+O4/qVH6KndpYJfRFuaWTtX0URTDhWWdB yGIMmrjpmIwwILPm8fgwCDSm0ANX6/dg+AsGOWTbYYiiiqOV8R7aVWoy/dgtFb9eEWTL a3QnOIEUjcaykGMTlN82YlDppPSuanU6smdE8t9M4eYGa1gxK8WnqRtlGloitigbLyNN Um5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741951211; x=1742556011; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zErSyHtBL8AwOjSCoV00LTljZ6I+SBCKPcOgxhNOXUc=; b=XaJXt/6eJCkPRhnz3xcH5ctb+vavVtOpQzC88qTVQwNZ+yk4EkNxpb3uRq8nTfrRXu 8EoO15qmrI5x9PMIhJyU2CFAGEDfy1hteP0WXXjCFakjL0GwyV4np13hLykiBrTZdZls M8E2rOiVKNVcrq7z6oNHhZulIcconlaFXXPhUviM9YN/Sc7EWluxMDkHMUtJIUVU8EPk Y3u0qcGaMy1GXegEwsW7mfitRcvqyk5Z0iKr8D9+G5Scw8aExhqvIlBVIbMuDBEZNpmg Zam+CB+YMcjwiZtgvWsZTLjehI2gnkpatXslHy4TkEhzd7DXnftDQTAe2j3LptqbQAtb G9Qg== X-Gm-Message-State: AOJu0YxA6HUYre5go23c5eSuvfo5jN5lJAo4AgdlU0VMNDG5rmv3EsVH mBKhQ3kRJXqWX1Blg/Xe33JmSAdWtVQeRMtJJut8t3BnTS9tUfjDcQb4leR64LW6LVuY0weqGyV 7WPw= X-Gm-Gg: ASbGncs8TRuOpAu/dB1MP0q1UIBDdS+qCaFnCDmUOMeR7vVJ8i4qTHgiMaO2feEFuf+ yPCt3lhqZwp4IAGqCbqnhNo62uzwa2P/iSzxR3K60TXW45xWuQZGE4SkIrASQ5RBQI+TuupTR99 yUn37cRHcv0UFtav6PkKUAguCJ5LvBd6Bqt77smYvNq7qLaOVxAQmC3tP+XzEP22K+5VojGwXTm AQdeCCkcrpJKMLOamrT2Sr6nunFUv3SO4aGSCHmeznnZmZJntq8v3GrWlezwq1s1WofEVTcvbl1 FtVDygawoyBFDd9Qdpf6oNSeQvcrQMT5MLK2IVbdWEOwlD3/dKMVBPVBLg7V1oTuXB3DeBnZVG3 JNM2nW1CrWZu4nA== X-Google-Smtp-Source: AGHT+IEWd5cdeigl+PEftmM8ejK344kWew9AcXJJcPnxtMk9U1iiKr23cfLXh90wb+4p1KZfgfwbqg== X-Received: by 2002:a05:651c:1a0c:b0:30a:2a8a:e4b6 with SMTP id 38308e7fff4ca-30c4a8f8cc7mr7028161fa.33.1741951210586; Fri, 14 Mar 2025 04:20:10 -0700 (PDT) Received: from localhost.localdomain (78-27-76-97.bb.dnainternet.fi. [78.27.76.97]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30c3f0d26e5sm5364391fa.20.2025.03.14.04.20.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Mar 2025 04:20:08 -0700 (PDT) From: Mikko Rapeli To: openembedded-core@lists.openembedded.org Cc: Mikko Rapeli Subject: [PATCH 2/6] systemd: enable efi support if in MACHINE_FEATURES too Date: Fri, 14 Mar 2025 13:19:38 +0200 Message-ID: <20250314111942.304800-2-mikko.rapeli@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250314111942.304800-1-mikko.rapeli@linaro.org> References: <20250314111942.304800-1-mikko.rapeli@linaro.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 14 Mar 2025 11:20:14 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/212833 For example genericarm64 enables "efi" in MACHINE_FEATURES and in u-boot. Boot without "efi" in systemd works with EFI protocols but for example efivars is not mounted at all so various checks fail in userspace. Fix these by enabling "efi" support if it's in MACHINE_FEATURES. Fixes efivars mount to /sys/firmware/efi/efivars etc. Signed-off-by: Mikko Rapeli --- meta/recipes-core/systemd/systemd_257.3.bb | 1 + 1 file changed, 1 insertion(+) diff --git a/meta/recipes-core/systemd/systemd_257.3.bb b/meta/recipes-core/systemd/systemd_257.3.bb index 64fb8fe69a..9bc4532021 100644 --- a/meta/recipes-core/systemd/systemd_257.3.bb +++ b/meta/recipes-core/systemd/systemd_257.3.bb @@ -69,6 +69,7 @@ PAM_PLUGINS = " \ PACKAGECONFIG ??= " \ ${@bb.utils.filter('DISTRO_FEATURES', 'acl audit apparmor efi ldconfig pam pni-names selinux smack polkit seccomp', d)} \ + ${@bb.utils.filter('MACHINE_FEATURES', 'efi', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'minidebuginfo', 'coredump elfutils', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \ From patchwork Fri Mar 14 11:19:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mikko Rapeli X-Patchwork-Id: 59011 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5849FC28B2F for ; Fri, 14 Mar 2025 11:20:24 +0000 (UTC) Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com [209.85.208.182]) by mx.groups.io with SMTP id smtpd.web10.11880.1741951216977454165 for ; Fri, 14 Mar 2025 04:20:17 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=pFLxv0tx; spf=pass (domain: linaro.org, ip: 209.85.208.182, mailfrom: mikko.rapeli@linaro.org) Received: by mail-lj1-f182.google.com with SMTP id 38308e7fff4ca-30bfc79ad97so31591571fa.1 for ; Fri, 14 Mar 2025 04:20:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741951215; x=1742556015; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xULRQVdTY/LxRb9S1oZ219XVrnqgSCEV0rTfQfvvQAA=; b=pFLxv0txW4mAebprqQDctdE7RbbV/vS+MUI0FthITFij5xjRWgYHpjfCGCnyidBp6X QeIbdWCO3/HlWZXUi2jam7U0gxgdP1EtPL5r+WIm4kT+pvyPNB+28C9ojlxGkzbhwog+ 90zo5mBI1gFR0PLwwONN1hXHWEz3Cffc6xpO/Do30kRPBeY/Xpv08uSRDsAGblaIvrbq Nds2YC35WM18M5TZdofgT2n9ccWarRL3WGhw3l7nDbix7ySFRuCGKRAWhAdz18Do4WO0 GYaTZc1oD0OuECAXGctjzmDK9YHab6W70fw8sneDY82pu9aYshIeDVAonOQ1bygt5tMF bkuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741951215; x=1742556015; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xULRQVdTY/LxRb9S1oZ219XVrnqgSCEV0rTfQfvvQAA=; b=ZXV2NzfvEGc6mei8dgjePGyXADOSxGa2rTFVN1d+Q1n9qgeeC8uXWy7vgjRLWyxJII q0MKwd5gZvPa/fiIj+dUTfT1QZlbyYmfH6shEHMwxCcB5X4kLM1Zi4SJC6LevnJq/zuY kDsA+2AakIAItDqxe9+g6UURIelJvNXtHMp9hpWJ+pX5oyblaGD089w9F6gMafhAFvk6 r2rHSWV+XqGWIjlKwskQ1zK2Uc1UKyaaXP66iNI02yDMoEfVwzo2dHLGF/qU5wkiZnOc YgByrwx9KRlS/37nz/y5FCx0cJfWkFGqWxWfOT9ahbwBAkc56wwu9RjLA+Ge0ayr7miX LIeg== X-Gm-Message-State: AOJu0YxC4847TYd753SNurw42v2PLuB4d++WlCyrl0JTIaWY4Fw6o/di bVd3jCKgQiQ1a3kRfmVaxJHBp4TtSfN/I4NQ+ifrqznyLsY+AypMK+c2sC5DsmlMh46XAHT3hTe LjkA= X-Gm-Gg: ASbGncvmNVjJbxBUWvEPlkdm78yzW9Ekb+/Hu3ld/jcQBMbNcYj3zF3tyx42nn2WRHr Xyr1S0cYrM+dLBVRXDWC5UMlVh/Sxok/XJXOQO65xg2mKfIcA9/Std+bFwKU/6+s3si4JgTdmb1 QOYUqXwB6gCMwR3cJktjgt0wczFYq/xSN/8iyWp6EtvBd49egQrEmwnLA/dJAgym5GUlfsH2ru0 jlgn2bL1IjLDcZBT27bzggz66G5gDEci6c3ouGiBrwFwyttXOvGv16t7yOcR2r3yz0spDy5jwt3 6nzU3tbkJu61OrppI5WIKkge8xN4QJdlChwNEuL9k6buieKq3xnail+7353htJqsTN3ENFB4osx WKKL5Rhmgh2BfIg== X-Google-Smtp-Source: AGHT+IGMZNEvcponC1DHxf5eD/n8NYKEy62pa1AIY/6OulzzR3GhhnsoRfG6TIgZak0ivooIISb1Nw== X-Received: by 2002:a2e:95ca:0:b0:30b:f92c:16f3 with SMTP id 38308e7fff4ca-30c3de16cafmr22612641fa.11.1741951215080; Fri, 14 Mar 2025 04:20:15 -0700 (PDT) Received: from localhost.localdomain (78-27-76-97.bb.dnainternet.fi. [78.27.76.97]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30c3f0d26e5sm5364391fa.20.2025.03.14.04.20.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Mar 2025 04:20:13 -0700 (PDT) From: Mikko Rapeli To: openembedded-core@lists.openembedded.org Cc: Mikko Rapeli Subject: [PATCH 3/6] uki.bbclass: drop serial console from kernel command line Date: Fri, 14 Mar 2025 13:19:39 +0200 Message-ID: <20250314111942.304800-3-mikko.rapeli@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250314111942.304800-1-mikko.rapeli@linaro.org> References: <20250314111942.304800-1-mikko.rapeli@linaro.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 14 Mar 2025 11:20:24 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/212834 The kernel will continue using console from firmware which is much better on HW when we may not know at build time which console HW and drivers are available, e.g. like on genericarm64 machine. Signed-off-by: Mikko Rapeli --- meta/classes-recipe/uki.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/classes-recipe/uki.bbclass b/meta/classes-recipe/uki.bbclass index d9a7fb0e6f..fedff222c6 100644 --- a/meta/classes-recipe/uki.bbclass +++ b/meta/classes-recipe/uki.bbclass @@ -81,7 +81,7 @@ UKIFY_CMD ?= "ukify build" UKI_CONFIG_FILE ?= "${UNPACKDIR}/uki.conf" UKI_FILENAME ?= "uki.efi" UKI_KERNEL_FILENAME ?= "${KERNEL_IMAGETYPE}" -UKI_CMDLINE ?= "rootwait root=LABEL=root console=${KERNEL_CONSOLE}" +UKI_CMDLINE ?= "rootwait root=LABEL=root" # secure boot keys and cert, needs sbsign-tools-native (meta-secure-core) #UKI_SB_KEY ?= "" #UKI_SB_CERT ?= "" From patchwork Fri Mar 14 11:19:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mikko Rapeli X-Patchwork-Id: 59012 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 63AE4C282EC for ; Fri, 14 Mar 2025 11:20:24 +0000 (UTC) Received: from mail-lj1-f181.google.com (mail-lj1-f181.google.com [209.85.208.181]) by mx.groups.io with SMTP id smtpd.web10.11882.1741951221006024521 for ; Fri, 14 Mar 2025 04:20:21 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=QzLHwwcF; spf=pass (domain: linaro.org, ip: 209.85.208.181, mailfrom: mikko.rapeli@linaro.org) Received: by mail-lj1-f181.google.com with SMTP id 38308e7fff4ca-30761be8fa8so21520271fa.2 for ; Fri, 14 Mar 2025 04:20:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741951219; x=1742556019; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DMipRXNP+w7buVUw3k9n8R6+R1UDtIZrGFwg1zyiylY=; b=QzLHwwcFGInvZ/2zsTEvAve0JNuq9C1CGrS3WarR6JFoBRM1U+9N5K7Ob5UpZMLVXm 0DOgU/maAoSriNh79sa6HOcqC/Rh0Lpw2PtT6c7NGHZlw0RahR1p5H8bCSHnQ3hB/8av c6SM0KUWZzvQ7KGye6zn0NSi3kMReUru315MFyKYwvCXDhGWJ2SR+dkZhNBG/WYkajsb hLaUWSqdK5FHVhlCRCYeSjMFW45OHGpdi+xNmGhMnqkNp1DX/Lqx3brGvzl+8M2BNM2o YW5xx4Kdvjwkjbqkm1MXLlJ4iYE/hKk+Oky6yccWzz9tlWZYabzwh44Dm3zUgeDro8TO uEHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741951219; x=1742556019; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DMipRXNP+w7buVUw3k9n8R6+R1UDtIZrGFwg1zyiylY=; b=Bj74BMAWtGfnMV2SeZjdjDgAC+lTuUWarU0teCF0lwrh6uXF2NAWezfzsgWpyT83br LFT+mjG+PUtOHMfuahHEE6EcV675TU2bfa//TPr+mTcOMvsELCGhaekqGwk/EmqRzKAu hTiA0calCLPe1JVFpbTC0A3/jguEAeWSUqlVmlZ213pVYnF+6+F3CLVpsrZCaDil1Iwb 7oDfAXi15MKDmNNG0twv/4D073iJVysfuOiCIf0IOEm/62j3F1N45QWRcc8JRJU8Y9Kh ZOzvd0TuIocbauYgZudGLS7xkpyfjQnN3Jl4mF6XDPOQowy+DTjqQ/i2fLPKaFEg+ufW Wsfg== X-Gm-Message-State: AOJu0Yy/eIEIKlxEtjgRofH+jMGqUiqbyQbi4Lu07EcHh9kpH93lJQaU YQ4+EcWUKAMaIxi0eHRnNNpIZPKE9fBz00iRnuNWs/4JWgWOCciVZeTegnUv1ilAsKvuYHTzTF9 IsQY= X-Gm-Gg: ASbGncsT5XLP/BCN22a9H7DCU6svFY39RGS9gnh02FCHWDkIkcpEYhXnRbdKIX2wVt3 xBxWeAWheDGfJXlcOkr/ZdZtP186lPB33tbdzHsvOTYSzUkiu5GrqNhGt4JeeIysRUdepwvnOhZ qn5rA9+0kLIUvMsZcuIMFzYNq9hGsXDBuD/En1JPL/4hyUjKQoSLADB8KbTitz5TbNw0waDxn4j IDThkGdMcdvnMMXsUU2j1vw8bLE+lFqAKu4TMewhwLXsh/Dq+9ohu62JE2vQakuXmWn3N7NGbOR 3JpwVgAnAE0RUiPVLrecpe0hgJMZqU2xog67PVJpYUxInS/nuQsrsFpHCwPOeQC/tPbMXK49qAf 4QApYB3VH+tP4sQ== X-Google-Smtp-Source: AGHT+IH3AJxz3hq5MAmVA9CRXXn6Aq0Y85JPz6J0C+KrIA/G8pdnOM/8lLtaz0uHtm67lEhKHLv6Sg== X-Received: by 2002:a05:651c:1507:b0:306:501:4772 with SMTP id 38308e7fff4ca-30c4a8e52f3mr7832321fa.37.1741951219038; Fri, 14 Mar 2025 04:20:19 -0700 (PDT) Received: from localhost.localdomain (78-27-76-97.bb.dnainternet.fi. [78.27.76.97]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30c3f0d26e5sm5364391fa.20.2025.03.14.04.20.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Mar 2025 04:20:17 -0700 (PDT) From: Mikko Rapeli To: openembedded-core@lists.openembedded.org Cc: Mikko Rapeli Subject: [PATCH 4/6] kernel.bbclass: add kernel-initrd-modules meta package Date: Fri, 14 Mar 2025 13:19:40 +0200 Message-ID: <20250314111942.304800-4-mikko.rapeli@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250314111942.304800-1-mikko.rapeli@linaro.org> References: <20250314111942.304800-1-mikko.rapeli@linaro.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 14 Mar 2025 11:20:24 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/212835 At the moment linux-yocto kernels for various architectures are not very modular and a lot of drivers are built into the kernel even when they are not needed at runtime. These make the main kernel binary big and slow to boot. This also impacts udev in userspace which takes a long time processing events from all these built in drivers, for example when udev runs in initrd. Then constructing the initrd is very device and kernel configuration specific. initrd image needs explicitly define which binary packages to install to avoid pulling in complex dependencies. A full set of kernel modules via kernel-modules meta package is too big for initrd and most of the drivers are not needed for use cases like "just load modules to mount main rootfs". Then the initrd configuration breaks if kernel driver is built into the kernel since the binary package doesn't exist. Introduce kernel-initrd-modules meta package to solve these problems. The meta package adds dependencies to real kernel modules based on the kernel module file paths so that it will include several kernel subsystems and their drivers which are often needed to find main rootfs from some block device. This works when drivers are built as modules but does not break if drivers are built into the kernel. The resulting initrd is also smaller since only a subset of drivers are needed for "mount the rootfs" usecase. Tested on genericarm64 kernel and qemu and AMD KV260 HW. Signed-off-by: Mikko Rapeli --- .../kernel-module-split.bbclass | 46 +++++++++++++++++++ meta/classes-recipe/kernel.bbclass | 5 +- meta/classes-recipe/module.bbclass | 37 +++++++++++++++ 3 files changed, 87 insertions(+), 1 deletion(-) diff --git a/meta/classes-recipe/kernel-module-split.bbclass b/meta/classes-recipe/kernel-module-split.bbclass index 9487365eb7..06e8fbed6e 100644 --- a/meta/classes-recipe/kernel-module-split.bbclass +++ b/meta/classes-recipe/kernel-module-split.bbclass @@ -42,6 +42,40 @@ KERNEL_MODULE_PACKAGE_PREFIX ?= "" KERNEL_MODULE_PACKAGE_SUFFIX ?= "-${KERNEL_VERSION}" KERNEL_MODULE_PROVIDE_VIRTUAL ?= "1" +# subset of kernel modules needed in initrd, to e.g. mount rootfs from block device +KERNEL_INITRD_MODULES_META_PACKAGE ?= "${@ d.getVar("KERNEL_PACKAGE_NAME") or "kernel" }-initrd-modules" + +# match regex to path or file name. E.g. include all drivers with files in path /drivers/ata/ +KERNEL_INITRD_MODULES_REGEX ?= "(.*)(\ +/drivers/acpi/|\ +/drivers/ata/|\ +/drivers/block/|\ +/drivers/cdrom/|\ +/drivers/char/hw_random/|\ +/drivers/char/tpm/|\ +/drivers/char/|\ +/drivers/crypto/|\ +/drivers/dax/|\ +/drivers/firmware/arm_scmi/|\ +/drivers/gpu/drm/|\ +/drivers/md/|\ +/drivers/mmc/|\ +/drivers/mtd/|\ +/drivers/nvdimm/|\ +/drivers/nvme/|\ +/drivers/pci/|\ +/drivers/scsi/|\ +/drivers/tee/|\ +/drivers/tty/serial/|\ +/drivers/virtio/|\ +/drivers/watchdog/|\ +/kernel/arch/|\ +/kernel/block/|\ +/kernel/crypto/|\ +/kernel/fs/|\ +/kernel/lib/\ +)(.*)" + python split_kernel_module_packages () { import re @@ -183,6 +217,18 @@ python split_kernel_module_packages () { modules = do_split_packages(d, root='${nonarch_base_libdir}/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends='%s-%s' % (kernel_package_name, kernel_version)) if modules: d.appendVar('RDEPENDS:' + metapkg, ' '+' '.join(modules)) + + initrd_metapkg = d.getVar('KERNEL_INITRD_MODULES_META_PACKAGE') + initrd_module_regex = re.compile(d.getVar('KERNEL_INITRD_MODULES_REGEX')) + initrd_modules = [] + for module in modules: + files = d.getVar('FILES:' + module) + m = re.match(initrd_module_regex, files) + if m: + initrd_modules.append(module) + + if initrd_modules: + d.appendVar('RDEPENDS:' + initrd_metapkg, ' '+' '.join(initrd_modules)) } do_package[vardeps] += '${@" ".join(map(lambda s: "module_conf_" + s, (d.getVar("KERNEL_MODULE_PROBECONF") or "").split()))}' diff --git a/meta/classes-recipe/kernel.bbclass b/meta/classes-recipe/kernel.bbclass index 64a685a964..8fda61574d 100644 --- a/meta/classes-recipe/kernel.bbclass +++ b/meta/classes-recipe/kernel.bbclass @@ -695,13 +695,14 @@ EXPORT_FUNCTIONS do_compile do_transform_kernel do_transform_bundled_initramfs d # kernel-base becomes kernel-${KERNEL_VERSION} # kernel-image becomes kernel-image-${KERNEL_VERSION} -PACKAGES = "${KERNEL_PACKAGE_NAME} ${KERNEL_PACKAGE_NAME}-base ${KERNEL_PACKAGE_NAME}-vmlinux ${KERNEL_PACKAGE_NAME}-image ${KERNEL_PACKAGE_NAME}-dev ${KERNEL_PACKAGE_NAME}-modules ${KERNEL_PACKAGE_NAME}-dbg" +PACKAGES = "${KERNEL_PACKAGE_NAME} ${KERNEL_PACKAGE_NAME}-base ${KERNEL_PACKAGE_NAME}-vmlinux ${KERNEL_PACKAGE_NAME}-image ${KERNEL_PACKAGE_NAME}-dev ${KERNEL_PACKAGE_NAME}-modules ${KERNEL_PACKAGE_NAME}-initrd-modules ${KERNEL_PACKAGE_NAME}-dbg" FILES:${PN} = "" FILES:${KERNEL_PACKAGE_NAME}-base = "${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.order ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.builtin ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.builtin.modinfo" FILES:${KERNEL_PACKAGE_NAME}-image = "" FILES:${KERNEL_PACKAGE_NAME}-dev = "/${KERNEL_IMAGEDEST}/System.map* /${KERNEL_IMAGEDEST}/Module.symvers* /${KERNEL_IMAGEDEST}/config* ${KERNEL_SRC_PATH} ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/build" FILES:${KERNEL_PACKAGE_NAME}-vmlinux = "/${KERNEL_IMAGEDEST}/vmlinux-${KERNEL_VERSION_NAME}" FILES:${KERNEL_PACKAGE_NAME}-modules = "" +FILES:${KERNEL_PACKAGE_NAME}-initrd-modules = "" FILES:${KERNEL_PACKAGE_NAME}-dbg = "/usr/lib/debug /usr/src/debug" RDEPENDS:${KERNEL_PACKAGE_NAME} = "${KERNEL_PACKAGE_NAME}-base (= ${EXTENDPKGV})" # Allow machines to override this dependency if kernel image files are @@ -716,7 +717,9 @@ ALLOW_EMPTY:${KERNEL_PACKAGE_NAME} = "1" ALLOW_EMPTY:${KERNEL_PACKAGE_NAME}-base = "1" ALLOW_EMPTY:${KERNEL_PACKAGE_NAME}-image = "1" ALLOW_EMPTY:${KERNEL_PACKAGE_NAME}-modules = "1" +ALLOW_EMPTY:${KERNEL_PACKAGE_NAME}-initrd-modules = "1" DESCRIPTION:${KERNEL_PACKAGE_NAME}-modules = "Kernel modules meta package" +DESCRIPTION:${KERNEL_PACKAGE_NAME}-initrd-modules = "Kernel initrd modules meta package" pkg_postinst:${KERNEL_PACKAGE_NAME}-base () { if [ ! -e "$D/lib/modules/${KERNEL_VERSION}" ]; then diff --git a/meta/classes-recipe/module.bbclass b/meta/classes-recipe/module.bbclass index f2f0b25a2d..51f864f1f9 100644 --- a/meta/classes-recipe/module.bbclass +++ b/meta/classes-recipe/module.bbclass @@ -86,3 +86,40 @@ EXPORT_FUNCTIONS do_compile do_install KERNEL_MODULES_META_PACKAGE = "${PN}" FILES:${PN} = "" ALLOW_EMPTY:${PN} = "1" + +# subset of kernel modules needed in initrd, to e.g. mount rootfs from block device +KERNEL_INITRD_MODULES_META_PACKAGE ?= "${@ d.getVar("KERNEL_PACKAGE_NAME") or "kernel" }-initrd-modules" + +# match regex to path or file name. E.g. include all drivers with files in path /drivers/ata/ +KERNEL_INITRD_MODULES_REGEX ?= "(.*)(\ +/drivers/acpi/|\ +/drivers/ata/|\ +/drivers/block/|\ +/drivers/cdrom/|\ +/drivers/char/hw_random/|\ +/drivers/char/tpm/|\ +/drivers/char/|\ +/drivers/crypto/|\ +/drivers/dax/|\ +/drivers/firmware/arm_scmi/|\ +/drivers/gpu/drm/|\ +/drivers/md/|\ +/drivers/mmc/|\ +/drivers/mtd/|\ +/drivers/nvdimm/|\ +/drivers/nvme/|\ +/drivers/pci/|\ +/drivers/scsi/|\ +/drivers/tee/|\ +/drivers/tty/serial/|\ +/drivers/virtio/|\ +/drivers/watchdog/|\ +/kernel/arch/|\ +/kernel/block/|\ +/kernel/crypto/|\ +/kernel/fs/|\ +/kernel/lib/\ +)(.*)" + +FILES:${PN}-initrd = "" +ALLOW_EMPTY:${PN}-initrd = "1" From patchwork Fri Mar 14 11:19:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mikko Rapeli X-Patchwork-Id: 59013 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5F709C35FF1 for ; Fri, 14 Mar 2025 11:20:34 +0000 (UTC) Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) by mx.groups.io with SMTP id smtpd.web10.11883.1741951225224114303 for ; Fri, 14 Mar 2025 04:20:25 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=FObWs24a; spf=pass (domain: linaro.org, ip: 209.85.208.169, mailfrom: mikko.rapeli@linaro.org) Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-30795988ebeso20514811fa.3 for ; Fri, 14 Mar 2025 04:20:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741951223; x=1742556023; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NrYTZ0UYaDGzIgttQfHHAHXWlScCm1Z633XLhm7jJYI=; b=FObWs24aXsmAhB48lkDhfNqaAm2JPqdkpKX354GqiO3w0XLQCsXstsOLyIcx1qVQmq BsD+QcwFaArFJOUglpTKaAtX0MXJdMPPV1XLOQZrRt1Q9T4L74q+HljPG1G44/kI6LKX 5nDUAnjjKXU3kNJyqlYOS3qAn501Rv0TP990lnMY0gDSswYsnTijc7nWDIexnBB9Nh5s GcVlvoWU5pQNVSxh03yku3Pl4Oyddt4D8+kvgnhh3Jtk0iEzSKS55PMn6NuXptNWx2fa kJ7uRBSQH0SSDLAWCJL006I4TrhFeN/JRm85wbJ3nbL7cVAuVbUJXPvMwMxS9VTdPxlX gCiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741951223; x=1742556023; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NrYTZ0UYaDGzIgttQfHHAHXWlScCm1Z633XLhm7jJYI=; b=SH60fDS9RZQ5+kuiDafbGZe4jXqHyzuICLDZh4WNZGmxhBosq5lokM04rYwEexjCgb om4IGbnBY9R9NXPsKcnz3TrlUzulybHiPAZbMfcPwrsQTdH/+jdwy2YBwkrMs9ubQ6xa InIm1nynpRFyOvptL9t1wHMoLrQJcduxBKNtaRKFrPrfe2avEWdZJr2EL/XZd5wg9yo6 SUADg3fk4WPSknMIeFs6g7CGO7F4MFm4fnO8uPKgflKJ4WZhpH4HHKxcHGHNGIJgrm3+ +6NZprPKpdTLkpbUeIOLLVmLIdE4hivnVJqaYye48Th7bcAht9e2oRM5z2xgHkrqVVC9 Bxrg== X-Gm-Message-State: AOJu0YyaJHC9yFg8JWcrR6NreCnaRElYyD0oN5mkhxNVRoqGW95MI9wc 2xfCB1c8Mi+o7uUrtza9593g4kbrYltKonDEI0BPFJ174UYMDgyokdnH1qQitD6SDu9a0WCJsdm y86w= X-Gm-Gg: ASbGncsAPnCf1PJaYBQgE0pckuhQ0TDlIoSfUGAG0+JiZuLf2WmuDs6r4ZVp0400sp2 7fKUNI1TqqCVNeRdmL61DASmiLodXZPvJ9R3w6riIFzgxzaWJh8YEj0yQJCFyiWlwdeZdbFLrnI M/cceEZBco5KRFEyoEHeKLmqjRxY0qYA/iGfzp4wbpvzjMYb/re08qs2Tj47uXJ6Z4MR49s9PfR dM1UD2WH/th8MMDyWizGk/NrsrTQ8uW+PLfekGpow4WnhM51G20Z5MSUQomo/II9WUuMqiE+PDh HEbQUEEF9r3z2PMZE/ab6Dx/72ISkwn6moYOz0+CZZ/rCih6hj2BMGB8IOa4CcZLnAIwM85gYDU I0WqyFLtvbjlBCA== X-Google-Smtp-Source: AGHT+IFBKusO5WB7XQtlkqnc4ob/PFQZLUSOLpEN9W1rfPgQNFwxX+BGw3DAL6zoez7eILfi7ActsQ== X-Received: by 2002:a05:651c:1a0a:b0:30b:efa5:6988 with SMTP id 38308e7fff4ca-30c4a876ccbmr7296141fa.20.1741951223140; Fri, 14 Mar 2025 04:20:23 -0700 (PDT) Received: from localhost.localdomain (78-27-76-97.bb.dnainternet.fi. [78.27.76.97]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30c3f0d26e5sm5364391fa.20.2025.03.14.04.20.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Mar 2025 04:20:21 -0700 (PDT) From: Mikko Rapeli To: openembedded-core@lists.openembedded.org Cc: Mikko Rapeli Subject: [PATCH 5/6] core-image-initramfs-boot: add option to build systemd based initrd Date: Fri, 14 Mar 2025 13:19:41 +0200 Message-ID: <20250314111942.304800-5-mikko.rapeli@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250314111942.304800-1-mikko.rapeli@linaro.org> References: <20250314111942.304800-1-mikko.rapeli@linaro.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 14 Mar 2025 11:20:34 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/212836 If "systemd-initramfs" is in DISTRO_FEATURES then convert core-image-initramfs-boot from shell scripts to systemd. The resulting initramfs is much bigger than shell script one but supports much more features like disk encryption and TPM devices. Also includes udev which can load any drivers needed to mount rootfs. Uses kernel-initrd-modules meta package to install a subset of kernel modules needed for mounting rootfs on multiple platforms. Signed-off-by: Mikko Rapeli --- .../images/core-image-initramfs-boot.bb | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/meta/recipes-core/images/core-image-initramfs-boot.bb b/meta/recipes-core/images/core-image-initramfs-boot.bb index 7258944751..215d32fd3d 100644 --- a/meta/recipes-core/images/core-image-initramfs-boot.bb +++ b/meta/recipes-core/images/core-image-initramfs-boot.bb @@ -4,7 +4,31 @@ LICENSE = "MIT" INITRAMFS_SCRIPTS ?= "initramfs-framework-base initramfs-module-udev" -PACKAGE_INSTALL = "${INITRAMFS_SCRIPTS} ${VIRTUAL-RUNTIME_base-utils} base-passwd" +inherit image + +PACKAGE_INSTALL = " \ + ${VIRTUAL-RUNTIME_base-utils} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd-initramfs', ' \ + base-files \ + coreutils \ + e2fsprogs-mke2fs \ + kernel-initrd-modules \ + os-release-initrd \ + util-linux-blkid \ + util-linux-mount \ + util-linux-umount \ + ${VIRTUAL-RUNTIME_init_manager} \ + ${VIRTUAL-RUNTIME_dev_manager} \ + ', '${INITRAMFS_SCRIPTS}', d)} \ + base-passwd \ +" + +# reduce size +NO_RECOMMENDATIONS = "1" + +# don't install automatically, pick manually instead +MACHINE_EXTRA_RDEPENDS = "" +MACHINE_EXTRA_RRECOMMENDS = "" # Ensure the initramfs only contains the bare minimum IMAGE_FEATURES = "" @@ -18,5 +42,3 @@ IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}" IMAGE_NAME_SUFFIX ?= "" IMAGE_ROOTFS_SIZE = "8192" IMAGE_ROOTFS_EXTRA_SPACE = "0" - -inherit image From patchwork Fri Mar 14 11:19:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mikko Rapeli X-Patchwork-Id: 59014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5F4E3C282EC for ; Fri, 14 Mar 2025 11:20:34 +0000 (UTC) Received: from mail-lj1-f172.google.com (mail-lj1-f172.google.com [209.85.208.172]) by mx.groups.io with SMTP id smtpd.web10.11885.1741951228181264736 for ; Fri, 14 Mar 2025 04:20:28 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=y1+hhg8W; spf=pass (domain: linaro.org, ip: 209.85.208.172, mailfrom: mikko.rapeli@linaro.org) Received: by mail-lj1-f172.google.com with SMTP id 38308e7fff4ca-30bfb6ab47cso19111371fa.3 for ; Fri, 14 Mar 2025 04:20:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741951226; x=1742556026; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mowHB+GyPObXHHUyFruDF08rUA0X5sNItOs/AzldHBM=; b=y1+hhg8WcOF3a0H3D6zJVN8d5TyqSO1YFPP3d7cqpkuPGnpdLnvseRAVkuos1PAkDb JzNzQfZKr/32AwTU1ye9sKyLUQ7seTAEFskg0K4bfDcg3dQL3Z5uBNcTH/YxO4p/9a7f EoxeRnEoL6T80sxKCzR3gje16Or/EYXNqXZqD3dM/Yz0S4ZMysIpOTeJg69xIBaQaL7w rKZPn2F7gKcahrEnTjS8/0RMPhkLARa0FMMYAKWj7+fqiJfNPSUhLzRZcZ2KtGWhn/WW iFsErb8pn/Dhb6yPC+ERoqRt+UllCE2jL9RmW3MkVPGvH85N/v5fKpJYc6QP6272Wc1o lE7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741951226; x=1742556026; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mowHB+GyPObXHHUyFruDF08rUA0X5sNItOs/AzldHBM=; b=A8eSNDwzAwJeLXrO4swvLSQ4ffETk/afpM0PNYr9cGGZQKkayAFO+JsXawYpI0ERV1 I56Tq43UmJiOwTtKonDqeoYJvRPhoXWuSXxK+awThKnsQQxDzgo0XKAYHbqdEl3hCKmb Wsz9jI/HP1bc9tmsbg9X4Hw0LwgJkhGjeFE1/dOMMGITjWmxUZHpcHCPhXka8poPHg2U 3AnPK2lpeYB3zzJe6n0Rar96GdxHK2GnaaqbfeZqnX1XsSljgrLSFXpXfDksgoujaMFX WjdGOt4ciPstgT62M+/NM55Oa1SZGL5JbAG/VeP3BT83aVJboZcKxxpQik0irecuwsuJ bszg== X-Gm-Message-State: AOJu0YzkU5eug6u0S0DjrqUCjiavfLj/LSFchIevBEgYbuscPEAZiRhK uSfjOHEwOyxPW9fradD1atiUzhw3me+NqoPJchpM1YcTfB+vk3e/POVH9yRWmIXgygXuXBBmB7L Yy4Y= X-Gm-Gg: ASbGncvbmSFh+j9lHZVFLS2mu2D5dEyYt9f33Y5JaFH1I10nx8Sm+/IRn+vT9jC3lgJ 54k1EOhqfoDbAE2HwyrHHUv9W6RxdvI66+j3K/Wv0gof9wVONnzHH6vNczFiQR0FMI3wbxEkeGT BqUXDh2Slwg9zvkKafod0OUbI3UPOFj3Ad+JP7fgPDJvG+pvHrElq4xPiJzPvEO9vdl4WwNyHMN 1oG/kp8c3g+fnZSDZAylwIO9ZjJWq1Vizv2ekYpCb7ARhFhKjYWcZS8E7lYGijlq08usmGOk/yx yI8u6So1xRZXOvKns2lCDsKOH/CABI0H6i9aGUkR+pS6ZMCIbmhxemhTpBl3UqeJESMh4ZryWEH c0cCZwT7qhZhLqMELpu1AKWAW X-Google-Smtp-Source: AGHT+IF5n7i1F+gDNZZ/21sbcGtEICLA9cA23aFTFHrY9lQ0SbIr5qQ/7c46SPeaXtnBLMppS5Cd9g== X-Received: by 2002:a05:651c:210c:b0:30b:c83e:720a with SMTP id 38308e7fff4ca-30c4a7538a1mr8173451fa.1.1741951226262; Fri, 14 Mar 2025 04:20:26 -0700 (PDT) Received: from localhost.localdomain (78-27-76-97.bb.dnainternet.fi. [78.27.76.97]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-30c3f0d26e5sm5364391fa.20.2025.03.14.04.20.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Mar 2025 04:20:24 -0700 (PDT) From: Mikko Rapeli To: openembedded-core@lists.openembedded.org Cc: Mikko Rapeli Subject: [PATCH 6/6] oeqa selftest uki.py: add aarch64/arm test with systemd based initrd Date: Fri, 14 Mar 2025 13:19:42 +0200 Message-ID: <20250314111942.304800-6-mikko.rapeli@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250314111942.304800-1-mikko.rapeli@linaro.org> References: <20250314111942.304800-1-mikko.rapeli@linaro.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 14 Mar 2025 11:20:34 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/212837 Use core-image-initramfs-boot with systemd to boot via UKI on arm/aarch64. Tested on qemuarm, qemuarm64 and genericarm64 on aarch64 build host. The machines have different image and qemuboot configs so they need to be configured in test. Signed-off-by: Mikko Rapeli --- meta/lib/oeqa/selftest/cases/uki.py | 76 +++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/meta/lib/oeqa/selftest/cases/uki.py b/meta/lib/oeqa/selftest/cases/uki.py index 9a1aa4e269..4830fb3403 100644 --- a/meta/lib/oeqa/selftest/cases/uki.py +++ b/meta/lib/oeqa/selftest/cases/uki.py @@ -139,3 +139,79 @@ IMAGE_CLASSES:remove = 'testimage' cmd = "echo $( cat /sys/firmware/efi/efivars/LoaderEntrySelected-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f ) | grep '%s'" % (uki_filename) status, output = qemu.run_serial(cmd) self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output)) + + @skipIfNotArch(['aarch64', 'arm']) + @OETestTag("runqemu") + def test_uki_boot_systemd_initrd(self): + """Build and boot into UEFI firmware (u-boot), systemd-boot, initrd with systemd, rootfs with systemd""" + image = "core-image-base" + runqemu_params = get_bb_var('TEST_RUNQEMUPARAMS', image) or "" + cmd = "runqemu %s nographic serial wic" % (runqemu_params) + + self.write_config(""" +# efi firmware must load systemd-boot, not grub +EFI_PROVIDER = "systemd-boot" + +# image format must be wic, needs esp partition for firmware etc +IMAGE_FSTYPES:pn-%s:append = " wic" +WKS_FILE = "efi-uki-bootdisk.wks.in" + +# efi, uki and systemd features must be enabled +INIT_MANAGER = "systemd" +DISTRO_FEATURES += "systemd-initramfs" +MACHINE_FEATURES:append = " efi" +IMAGE_CLASSES:append:pn-core-image-base = " uki" + +# uki embeds also an initrd +INITRAMFS_IMAGE = "core-image-initramfs-boot" + +# runqemu must not load kernel separately, it's in the uki +QB_KERNEL_ROOT = "" +QB_DEFAULT_KERNEL = "none" + +# u-boot, not all qemu* machines set this correctly +QB_DEFAULT_BIOS = "u-boot.bin" +# machines may not set this correctly +QB_DEFAULT_FSTYPE = "wic" + +# u-boot needs to find ESP partition so use virtio block device instead of default scsi +QB_ROOTFS_OPT = "-drive id=root,file=@ROOTFS@,if=none,format=raw -device virtio-blk-pci,drive=root" +QB_DRIVE_TYPE = "/dev/vd" + +# boot command line provided via uki, not via bootloader +UKI_CMDLINE = "rootwait root=LABEL=root" +# enable if debug output is needed +# UKI_CMDLINE += "systemd.log_level=debug systemd.log_target=console systemd.journald.forward_to_console=1" + +# disable kvm, breaks boot +QEMU_USE_KVM = "" + +IMAGE_CLASSES:remove = 'testimage' +""" % (image)) + + uki_filename = get_bb_var('UKI_FILENAME', image) + + bitbake(image + " u-boot") + with runqemu(image, ssh=False, launch_cmd=cmd) as qemu: + self.assertTrue(qemu.runner.logged, "Failed: %s" % cmd) + + # Verify from efivars that firmware was: + # aarch64 + cmd = "echo $( cat /sys/firmware/efi/efivars/LoaderFirmwareInfo-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f ) | grep 'Das U-Boot'" + status, output = qemu.run_serial(cmd) + self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output)) + + # Check that systemd-boot was the loader + cmd = "echo $( cat /sys/firmware/efi/efivars/LoaderInfo-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f ) | grep systemd-boot" + status, output = qemu.run_serial(cmd) + self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output)) + + # Check that systemd-stub was used + cmd = "echo $( cat /sys/firmware/efi/efivars/StubInfo-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f ) | grep systemd-stub" + status, output = qemu.run_serial(cmd) + self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output)) + + # Check that the compiled uki file was booted into + cmd = "echo $( cat /sys/firmware/efi/efivars/LoaderEntrySelected-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f ) | grep '%s'" % (uki_filename) + status, output = qemu.run_serial(cmd) + self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output))