Skip to content

[secure boot]Add Secure Boot Feature - #3

Open
davidpil2002 wants to merge 13 commits into
masterfrom
secure_boot_support
Open

[secure boot]Add Secure Boot Feature#3
davidpil2002 wants to merge 13 commits into
masterfrom
secure_boot_support

Conversation

@davidpil2002

Copy link
Copy Markdown
Owner

Why I did it

Add Secure Boot support to SONiC OS.
Secure Boot (SB) is a verification mechanism for ensuring that code launched by a computer's UEFI firmware is trusted. It is designed to protect a system against malicious code being loaded and executed early in the boot process before the operating system has been loaded.

How I did it

Added a signing process to sign the following components:
shim, grub, Linux kernel, and kernel modules when doing the build, and when feature is enabled in build time according to the HLD explanations (the feature is disabled by default).

How to verify it

There are self-verifications of each boot component when building the image, in addition, added an end-to-end test in sonic-mgmt repo that checks that the boot succeeds when loading a secure system.
TBD: PR link of sonic-mgmt will be added soon

Which release branch to backport (provide reason below if selected)

  • master
  • 201811
  • 201911
  • 202006
  • 202012
  • 202106
  • 202111
  • 202205
  • 202211

Description for the changelog

Link to config_db schema for YANG module changes

No REDIS DB used in this feature

HLD link: sonic-net/SONiC#1028

A picture of a cute animal (not mandatory but encouraged)

@davidpil2002
davidpil2002 force-pushed the secure_boot_support branch 5 times, most recently from 726e5ff to 944ac0a Compare November 22, 2022 09:45
@davidpil2002
davidpil2002 force-pushed the secure_boot_support branch 2 times, most recently from d9d52a2 to 9cc6b60 Compare January 25, 2023 13:25
@davidpil2002
davidpil2002 force-pushed the secure_boot_support branch 3 times, most recently from fde9898 to c758293 Compare February 9, 2023 13:19
@davidpil2002
davidpil2002 force-pushed the secure_boot_support branch from ee7384f to 7509fc5 Compare March 6, 2023 13:56
davidpil2002 pushed a commit that referenced this pull request May 8, 2025
…et#21095)

Adding the below fix from FRR FRRouting/frr#17297

This is to fix the following crash which is a statistical issue

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/lib/frr/zebra -A 127.0.0.1 -s 90000000 -M dplane_fpm_nl -M snmp'.
Program terminated with signal SIGABRT, Aborted.
#0  0x00007fccd7351e2c in ?? () from /lib/x86_64-linux-gnu/libc.so.6
[Current thread is 1 (Thread 0x7fccd6faf7c0 (LWP 36))]
(gdb) bt
#0  0x00007fccd7351e2c in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007fccd7302fb2 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x00007fccd72ed472 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#3  0x00007fccd75bb3a9 in _zlog_assert_failed (xref=xref@entry=0x7fccd7652380 <_xref.16>, extra=extra@entry=0x0) at ../lib/zlog.c:678
#4  0x00007fccd759b2fe in route_node_delete (node=<optimized out>) at ../lib/table.c:352
#5  0x00007fccd759b445 in route_unlock_node (node=0x0) at ../lib/table.h:258
#6  route_next (node=<optimized out>) at ../lib/table.c:436
#7  route_next (node=node@entry=0x56029d89e560) at ../lib/table.c:410
#8  0x000056029b6b6b7a in if_lookup_by_name_per_ns (ns=ns@entry=0x56029d873d90, ifname=ifname@entry=0x7fccc0029340 "PortChannel1020")
    at ../zebra/interface.c:312
#9  0x000056029b6b8b36 in zebra_if_dplane_ifp_handling (ctx=0x7fccc0029310) at ../zebra/interface.c:1867
sonic-net#10 zebra_if_dplane_result (ctx=0x7fccc0029310) at ../zebra/interface.c:2221
sonic-net#11 0x000056029b7137a9 in rib_process_dplane_results (thread=<optimized out>) at ../zebra/zebra_rib.c:4810
sonic-net#12 0x00007fccd75a0e0d in thread_call (thread=thread@entry=0x7ffe8e553cc0) at ../lib/thread.c:1990
sonic-net#13 0x00007fccd7559368 in frr_run (master=0x56029d65a040) at ../lib/libfrr.c:1198
sonic-net#14 0x000056029b6ac317 in main (argc=9, argv=0x7ffe8e5540d8) at ../zebra/main.c:478
davidpil2002 pushed a commit that referenced this pull request Jul 26, 2026
…dating udevd rules (sonic-net#26343)

- Why I did it
On SONiC SmartSwitch platforms with DPUs, systemd-udevd crashes with SIGABRT on every reboot when DPU firmware initialization is slow. During the initramfs boot phase, a standalone systemd-udevd daemon is started to handle device discovery. If DPU firmware takes longer than the 60-second udevadm settle timeout (BlueField-3 DPUs can take 120 seconds each in the failure case when they are stuck), the initramfs cannot stop this udevd before switch_root. The stale process survives into the real system but is never chrooted into the overlayfs root, leaving it with a broken filesystem view. When dpu-udev-manager.sh writes udev rules, the stale udevd detects the change and crashes on an assertion in systemd's chase() path resolution (assert(path_is_absolute(p)) at chase.c:648), because dir_fd_is_root() returns false for a process whose root still points to the initramfs rootfs rather than the overlayfs.

This triggers a systemd issue : systemd/systemd#29559 which maintainers doesn't consider as a bug from systemd side. Raising this fix for our usecase.

Core was generated by `/usr/lib/systemd/systemd-udevd --daemon --resolve-names=never'.
Program terminated with signal SIGABRT, Aborted.
#0  0x00007f29fe7f695c in ?? () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) bt
#0  0x00007f29fe7f695c in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007f29fe7a1cc2 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x00007f29fe78a4ac in abort () from /lib/x86_64-linux-gnu/libc.so.6
#3  0x00007f29fea50c11 in ?? () from /usr/lib/x86_64-linux-gnu/systemd/libsystemd-shared-257.so
#4  0x00007f29feb94a8b in chase () from /usr/lib/x86_64-linux-gnu/systemd/libsystemd-shared-257.so
#5  0x00007f29feb956e2 in chase_and_opendir () from /usr/lib/x86_64-linux-gnu/systemd/libsystemd-shared-257.so
#6  0x00007f29feb9a609 in conf_files_list_strv () from /usr/lib/x86_64-linux-gnu/systemd/libsystemd-shared-257.so
#7  0x00007f29fea913e8 in config_get_stats_by_path () from /usr/lib/x86_64-linux-gnu/systemd/libsystemd-shared-257.so
#8  0x0000559f295519cf in ?? ()
#9  0x0000559f29553a77 in ?? ()
sonic-net#10 0x00007f29fec36055 in ?? () from /usr/lib/x86_64-linux-gnu/systemd/libsystemd-shared-257.so
sonic-net#11 0x00007f29fec3668d in sd_event_dispatch () from /usr/lib/x86_64-linux-gnu/systemd/libsystemd-shared-257.so
sonic-net#12 0x00007f29fec394a8 in sd_event_run () from /usr/lib/x86_64-linux-gnu/systemd/libsystemd-shared-257.so
sonic-net#13 0x00007f29fec396c7 in sd_event_loop () from /usr/lib/x86_64-linux-gnu/systemd/libsystemd-shared-257.so
sonic-net#14 0x0000559f29545820 in ?? ()
sonic-net#15 0x00007f29fe78bca8 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
sonic-net#16 0x00007f29fe78bd65 in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6
sonic-net#17 0x0000559f29545c51 in ?? ()

- How I did it
Added a kill_stale_udevd() function to dpu-udev-manager.sh that runs before writing the udev rules. It identifies the systemd-managed udevd PID via systemctl show, then kills any other systemd-udevd --daemon process that doesn't match -- these are leftover initramfs instances. If no stale process exists (e.g. DPUs are healthy and the initramfs udevd exited cleanly), the function is a no-op.

- How to verify it
Deploy the image on a SmartSwitch with DPUs in a state where firmware initialization times out (>60s per DPU) by stopping image installation before firmware install step
Reboot the switch
Verify no new systemd-udevd coredumps in /var/core/
Verify the stale process was killed: journalctl -b 0 | grep dpu-udev-manager should show killing stale initramfs udevd PID (systemd udevd is PID )
Verify systemd-udevd.service is healthy: systemctl status systemd-udevd should show active (running)
Verify DPU udev rules were written: cat /etc/udev/rules.d/92-midplane-intf.rules should contain the DPU interface naming rules

Signed-off-by: Hemanth Kumar Tirupati <tirupatihemanthkumar@gmail.com>
davidpil2002 pushed a commit that referenced this pull request Jul 26, 2026
…m.d (sonic-net#27996)

What: Updated files/build_templates/sonic_debian_extension.j2 to also copy com.sonic.*.conf dbus config files (e.g. com.sonic.RackManager.conf) to /etc/dbus-1/system.d/, not just xyz.openbmc_project.*.conf.
Why: sonic-redfish PR #3 adds com.sonic.RackManager.conf which doesn't match the existing xyz.openbmc_project pattern; without it sonic-dbus-bridge fails to start and buildimage breaks.
How: Added a loop over com.sonic.*.conf (file-existence guarded) copying into the host system.d dir on aspeed.
Testing: All CI green — Azure.sonic-buildimage + all KVM tests pass, DCO/EasyCLA/Semgrep pass. Approved by judyjoseph, chinmoy-nexthop, yxieca.

Signed-off-by: shreyansh-nexthop <shreyansh@nexthop.ai>
davidpil2002 pushed a commit that referenced this pull request Jul 26, 2026
…ically (sonic-net#28157)

#### Why I did it
src/sonic-redfish
```
* c24aa81 - (HEAD -> master, origin/master, origin/HEAD) Merge pull request #3 from nexthop-ai/oem/bmcweb-with-dbus-bridge (11 hours ago) [judyjoseph]
* b39fa2b - pmon-hld : align with platform design and schema (5 days ago) [Chinmoy Dey]
* 0a6164d - schema-test: adding api test for generic schema and field unit test (5 days ago) [Chinmoy Dey]
* ea2de01 - oem-schema: generic schema support for Alert adn Telemetry (5 days ago) [Chinmoy Dey]
* d0062b5 - oem-src: Adding GET, patch update, new test added (5 days ago) [Chinmoy Dey]
* 5b46cc8 - doc-update: readme update for oem and test (5 days ago) [Chinmoy Dey]
* 788e6d8 - test-framework-update: support OEM POST api and redis validation (5 days ago) [Chinmoy Dey]
* 49b4001 - oem-schema: Generic field supoort for oem telemetry (5 days ago) [Chinmoy Dey]
* abcb8e0 - oem-schema: Generic field supoort for oem Alert (5 days ago) [Chinmoy Dey]
* f86121a - oem-bmcweb: centralize D-Bus constants, cap body size, refine HTTP status mapping (5 days ago) [Chinmoy Dey]
* 964b372 - oem-bridge: dedicate com.sonic.RackManager bus name and offload Redis I/O to a worker thread (5 days ago) [Chinmoy Dey]
* 2d5b126 - oem-redfish-tests: add Redfish API integration cases for SONiC OEM routes (5 days ago) [Chinmoy Dey]
* 26361e5 - oem-unit-tests: add field_mapping gtest suite + header-only test support (5 days ago) [Chinmoy Dey]
* 948b53b - oem-build: integrate OEM extension copy step into build (5 days ago) [Chinmoy Dey]
* baeb3af - oem-bmcweb-integration: patch bmcweb to register SONiC OEM routes (5 days ago) [Chinmoy Dey]
* d7b747b - oem-bridge-integration: wire RackManagerReceiver into BridgeApp (5 days ago) [Chinmoy Dey]
* 1b09cf7 - oem-bridge-infra: add RackManagerReceiver D-Bus->Redis bridge (5 days ago) [Chinmoy Dey]
* c79e933 - oem-bmcweb-headers: add SONiC OEM Redfish route headers for bmcweb (5 days ago) [Chinmoy Dey]
* 3179d07 - oem-schema: add SONiC Redfish OEM JSON schemas (5 days ago) [Chinmoy Dey]
```
#### How I did it
#### How to verify it
#### Description for the changelog
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants