-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy patharticle-eboot-secure-boot-deepdive.html
More file actions
132 lines (131 loc) · 24.4 KB
/
Copy patharticle-eboot-secure-boot-deepdive.html
File metadata and controls
132 lines (131 loc) · 24.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<!DOCTYPE html>
<html lang="en"><head>
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<meta content="EmbeddedOS Foundation — eBootloader Secure Boot Deep Dive | EmbeddedOS. Open-source embedded OS, neural interfaces, and AI-powered edge computing." name="description"/>
<meta charset="utf-8"/><meta content="width=device-width, initial-scale=1.0" name="viewport"/><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;600;700&display=swap" rel="stylesheet"/><link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;600;700&display=swap" rel="stylesheet"/><meta content="An end-to-end tour of eBoot's chain of trust — root-of-trust keys, immutable stage 0, signed manifests, anti-rollback counters, and the runtime…" name="description"/><meta content="#0066cc" name="theme-color"/><meta content="index,follow,max-image-preview:large,max-snippet:-1,max-video-preview:-1" name="robots"/><meta content="index,follow,max-image-preview:large,max-snippet:-1,max-video-preview:-1" name="googlebot"/><meta content="index,follow" name="bingbot"><meta content="general" name="rating"><meta content="telephone=no" name="format-detection"/><meta content="en_US" property="og:locale"/><meta content="EmbeddedOS Research Foundation — open-source embedded AI systems stack" property="og:image:alt"/><meta content="@EmbeddedOS_ORG" name="twitter:site"/><meta content="@EmbeddedOS_ORG" name="twitter:creator"/><link href="rss.xml" rel="alternate" title="EmbeddedOS Newsroom" type="application/rss+xml"/><link href="manifest.json" rel="manifest"><meta content="EoS Editorial" name="author"/><meta content="eBootloader secure boot: a measured-launch walkthrough — EmbeddedOS" property="og:title"/><meta content="An end-to-end tour of eBoot's chain of trust — root-of-trust keys, immutable stage 0, signed manifests, anti-rollback counters, and the runtime attestation hooks EAI consumes during model load." property="og:description"/><meta content="article" property="og:type"/><meta content="2026-05-06T08:00:00Z" property="article:published_time"/><meta content="2026-05-06T08:00:00Z" property="article:modified_time"/><meta content="EoS Editorial" property="article:author"/><meta content="Security & Boot" property="article:section"/><meta content="Security & Boot" property="article:tag"/><meta content="EmbeddedOS" property="article:tag"/><meta content="Open Source" property="article:tag"/><meta content="https://www.embeddedos.org/article-eboot-secure-boot-deepdive" property="og:url"/><meta content="https://www.embeddedos.org/img/og-cover.svg" property="og:image"/><meta content="1200" property="og:image:width"/><meta content="630" property="og:image:height"/><meta content="EmbeddedOS" property="og:site_name"/><meta content="summary_large_image" name="twitter:card"/><meta content="eBootloader secure boot: a measured-launch walkthrough — EmbeddedOS" name="twitter:title"/><meta content="An end-to-end tour of eBoot's chain of trust — root-of-trust keys, immutable stage 0, signed manifests, anti-rollback counters, and the runtime attestation hooks EAI consumes during model load." name="twitter:description"/><meta content="https://www.embeddedos.org/img/og-cover.svg" name="twitter:image"/><link href="https://www.embeddedos.org/article-eboot-secure-boot-deepdive" rel="canonical"/><link href="img/logo.svg" rel="apple-touch-icon"/><link href="favicon.svg" rel="icon" type="image/svg+xml"/><title>eBootloader Secure Boot Deep Dive | EmbeddedOS</title>
<link href="css/style.v7.css" rel="stylesheet"/> <script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Article",
"headline": "eBootloader secure boot: a measured-launch walkthrough",
"description": "An end-to-end tour of eBoot's chain of trust \u2014 root-of-trust keys, immutable stage 0, signed manifests, anti-rollback counters, and the runtime attestation hooks EAI consumes during model load.",
"datePublished": "2026-05-06",
"dateModified": "2026-05-06",
"author": {
"@type": "Organization",
"name": "EoS Editorial"
},
"publisher": {
"@type": "Organization",
"name": "EmbeddedOS Research Foundation",
"logo": {
"@type": "ImageObject",
"url": "https://www.embeddedos.org/img/logo.svg"
}
},
"mainEntityOfPage": "https://www.embeddedos.org/article-eboot-secure-boot-deepdive",
"image": "https://www.embeddedos.org/img/og-cover.svg",
"articleSection": "Security & Boot",
"url": "https://www.embeddedos.org/article-eboot-secure-boot-deepdive"
},
{
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.embeddedos.org/"
},
{
"@type": "ListItem",
"position": 2,
"name": "News",
"item": "https://www.embeddedos.org/news"
},
{
"@type": "ListItem",
"position": 3,
"name": "eBootloader secure boot: a measured-launch walkthrough",
"item": "https://www.embeddedos.org/article-eboot-secure-boot-deepdive"
}
]
}
]
}
</script>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","@id":"https://www.embeddedos.org/article-eboot-secure-boot-deepdive#webpage","url":"https://www.embeddedos.org/article-eboot-secure-boot-deepdive","speakable":{"@type":"SpeakableSpecification","cssSelector":[".article-hero__title",".article-hero__dek",".prose p:first-of-type"]},"isPartOf":{"@id":"https://www.embeddedos.org/#website"}}</script> <link href="https://www.embeddedos.org/article-eboot-secure-boot-deepdive.html" rel="canonical"/>
</link></meta></meta> <link rel="stylesheet" href="/css/theme-light.css"/>
<script defer src="/js/site-chrome.js"></script>
</head><body class="page-article-eboot-secure-boot-deepdive"><a class="skip-link" href="#main-content">Skip to main content</a><header class="navbar">
<div class="brand-bar">
<div class="nav-container">
<a aria-label="EmbeddedOS Home" class="logo" href="/">
<div class="logo-icon">EoS</div>
<span class="logo-text">Embedded<span>OS</span></span>
</a>
<nav aria-label="Main navigation">
<ul class="nav-links" id="nav-links" role="menubar">
<li role="none"><a href="news.html" role="menuitem">News</a></li>
<li class="has-dropdown" role="none">
<a aria-expanded="false" aria-haspopup="true" href="research.html" role="menuitem">Research <span aria-hidden="true" class="nav-caret">▾</span></a>
<ul class="dropdown-menu" role="menu">
<li role="none"><a href="research.html" role="menuitem">Neural Link Architecture</a></li>
<li role="none"><a href="roadmap.html" role="menuitem">Roadmap</a></li>
<li role="none"><a href="changelog.html" role="menuitem">Changelog</a></li>
<li role="none"><a href="neural-link-ai.html" role="menuitem">Neural Link & AI Integration</a></li>
<li role="none"><a href="ai-os.html" role="menuitem">AI Operating Systems</a></li>
<li role="none"><a href="building-os.html" role="menuitem">Building OS with Linux/RTOS</a></li>
<li role="none"><a href="future-research.html" role="menuitem">Future Research</a></li>
</ul>
</li>
<li class="has-dropdown" role="none">
<a aria-expanded="false" aria-haspopup="true" href="membership.html" role="menuitem">Programs <span aria-hidden="true" class="nav-caret">▾</span></a>
<ul class="dropdown-menu" role="menu">
<li role="none"><a href="membership.html" role="menuitem">Membership</a></li>
<li role="none"><a href="certification.html" role="menuitem">Certification</a></li>
<li role="none"><a href="internship.html" role="menuitem">Internship</a></li>
<li role="none"><a href="careers.html" role="menuitem">Careers</a></li>
</ul>
</li>
<li class="has-dropdown" role="none">
<a aria-expanded="false" aria-haspopup="true" href="products.html" role="menuitem">Products <span aria-hidden="true" class="nav-caret">▾</span></a>
<ul class="dropdown-menu" role="menu">
<li role="none"><a href="product-eos.html" role="menuitem">EoS (RTOS)</a></li>
<li role="none"><a href="product-eos-platform.html" role="menuitem">eos-platform</a></li>
<li role="none"><a href="product-eboot.html" role="menuitem">eBootloader</a></li>
<li role="none"><a href="product-ebuild.html" role="menuitem">eBuild</a></li>
<li role="none"><a href="product-eai.html" role="menuitem">EAI</a></li>
<li role="none"><a href="product-eni.html" role="menuitem">ENI</a></li>
<li role="none"><a href="product-eipc.html" role="menuitem">EIPC</a></li>
<li role="none"><a href="product-eapps.html" role="menuitem">eApps</a></li>
<li role="none"><a href="product-eosim.html" role="menuitem">EoSim</a></li>
<li role="none"><a href="product-eostudio.html" role="menuitem">EoStudio</a></li>
<li role="none"><a href="product-edb.html" role="menuitem">eDB</a></li>
<li role="none"><a href="product-ebowser.html" role="menuitem">eBowser</a></li>
<li role="none"><a href="product-eoffice.html" role="menuitem">eOffice</a></li>
<li role="none"><a href="product-eserviceapps.html" role="menuitem">eServiceApps</a></li>
</ul>
</li>
<li role="none"><a href="ecosystem.html" role="menuitem">Ecosystem</a></li>
<li role="none"><a href="about.html" role="menuitem">About</a></li>
<li role="none"><a href="security.html" role="menuitem">Security</a></li>
<li role="none"><a href="contact.html" role="menuitem">Contact</a></li>
<li role="none"><a class="nav-cta nav-cta--donate" href="donate.html#donate-now" role="menuitem" style="background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 4px 16px rgba(16,185,129,.35);margin-right:.4rem;">♥ Donate</a></li><li role="none"><a class="nav-cta" href="membership.html" role="menuitem">Join Now</a></li>
</ul>
</nav>
<button aria-controls="nav-links" aria-expanded="false" aria-label="Toggle navigation menu" class="mobile-menu-btn" type="button"><span class="hamburger-line"></span><span class="hamburger-line"></span><span class="hamburger-line"></span></button>
</div>
</div>
</header><main data-topic="security-boot" id="main-content"><header class="article-hero"><nav aria-label="Breadcrumb" class="article-hero__crumbs"><a href="index.html">Home</a> · <a href="news.html">News</a> · <a href="news.html#topic-security-boot">Security & Boot</a></nav><span class="kicker kicker--green"><a class="kicker" href="news.html#topic-security-boot">Security & Boot</a></span><h1 class="article-hero__title">eBootloader secure boot: a measured-launch walkthrough</h1><p class="article-hero__dek">An end-to-end tour of eBoot's chain of trust — root-of-trust keys, immutable stage 0, signed manifests, anti-rollback counters, and the runtime attestation hooks EAI consumes during model load.</p><div class="byline"><span class="byline__avatar">EE</span><span>EoS Editorial</span><span class="byline__sep">·</span><time datetime="2026-05-06">2026-05-06</time><span class="byline__sep">·</span><span>11 min read</span></div><div aria-label="Decorative cover for Security & Boot" class="article-hero__media" role="img"><img alt="Secure chip with cryptographic engraving — eBoot deep-dive" decoding="async" height="520" loading="lazy" src="img/photos/secure-boot.svg" width="1200"/></div></header><div class="layout-article"><article class="layout-article__main prose"><h2>Chain of trust</h2><p>eBootloader's chain of trust starts before any code runs. The root-of-trust public key is fused into one-time-programmable (OTP) memory at provisioning. Stage 0 — a 4 KB immutable bootrom — verifies the next stage's signature against that key before transferring control.</p><h2>Stage progression</h2><ol><li><strong>Stage 0 (4 KB, OTP):</strong> verifies stage 1 signature. Anti-rollback counter is incremented in OTP.</li><li><strong>Stage 1 (32 KB, signed):</strong> verifies signed manifest, sets up MMU, loads stage 2 from primary or fallback partition.</li><li><strong>Stage 2 (eOS RTOS image, signed manifest):</strong> verifies all loaded modules against the manifest before scheduling user code.</li><li><strong>Runtime attestation:</strong> EAI calls <code>eboot_attest()</code> at model load to assert the live image hash matches what was booted.</li></ol><h2>Anti-rollback counters</h2><p>Each signed manifest carries a monotonic counter. The OTP-backed comparator refuses to load any image with a counter lower than the high-water mark. This is the only defense against a signed-but-vulnerable older image being re-flashed by an attacker who controls the storage bus.</p> <pre><code>// eBoot anti-rollback (stage 0 pseudocode)
hwm = otp_read_u32(OTP_HWM_OFFSET);
if (manifest.counter < hwm) {
panic("anti-rollback violation");
}
if (manifest.counter > hwm) {
otp_write_u32(OTP_HWM_OFFSET, manifest.counter);
}</code></pre> <h2>Runtime attestation</h2><p>Once stage 2 is running, downstream subsystems can request a measurement of the boot chain via <code>eboot_attest()</code>. The returned blob is signed by a key derived from the device root, suitable for forwarding to a remote verifier. EAI uses this before unsealing model weights — we describe the integration in <a href="article-eai-llm-bench.html">our EAI release post</a>.</p><h2>Non-goals</h2><p>eBoot is not a TEE. There is no parallel secure-world execution context. If your threat model includes a kernel-level adversary running concurrently with secure code, you want EoS-S, not eBoot.</p><div aria-label="Topic" class="article-tags"><span class="byline" style="margin:0">Filed under:</span><a class="topic-chip" href="news.html#topic-security-boot">Security & Boot</a></div><section class="article-readnext"><h2>Read next</h2><div class="article-readnext__grid"><a class="article-card" data-topic="security-boot" href="article-edb-encryption-at-rest.html"><div class="article-card__media"><img alt="Storage media — encryption at rest" height="340" loading="lazy" src="img/photos/alt-encrypt.svg" width="600"/></div><div class="article-card__body"><span class="kicker">Security & Boot</span><h3 class="article-card__title">eDB ships AES-XTS at-rest encryption — even on 64 KB devices</h3><p class="article-card__dek">eDB's new storage layer adds page-level AES-XTS encryption with hardware-key offload on supported MCUs. The catch: it had to fit in 6 KB of code on the smallest target. Here's how.</p><p class="article-card__byline">EoS Editorial · 2026-05-02 · 7 min read</p></div></a><a class="article-card" data-topic="apps-platforms" href="article-eos-platform-launch.html"><div class="article-card__media"><img alt="Embedded systems engineering — platform" height="340" loading="lazy" src="img/photos/alt-platform.svg" width="600"/></div><div class="article-card__body"><span class="kicker">Apps & Platforms</span><h3 class="article-card__title">eos-platform 1.0 lands: one toolchain, every EoS profile</h3><p class="article-card__dek">After eighteen months of incremental releases, the eos-platform meta-distribution reaches 1.0 with stable APIs, a unified package manifest, and reproducible builds across all 14 EoS components.</p><p class="article-card__byline">EoS Editorial · 2026-05-12 · 7 min read</p></div></a><a class="article-card" data-topic="embedded-ai" href="article-eai-llm-bench.html"><div class="article-card__media"><img alt="AI / LLM data visualisation" height="340" loading="lazy" src="img/photos/alt-llm.svg" width="600"/></div><div class="article-card__body"><span class="kicker kicker--purple">Embedded AI</span><h3 class="article-card__title">EAI 0.9 ships INT4 LLM runtime — 11 tok/s on a Cortex-M85</h3><p class="article-card__dek">EAI's new quantized inference path squeezes a 1.3B-parameter model into 312 MB of flash and runs at interactive speed on a 480 MHz microcontroller. We dig into the kernel scheduler that made it possible.</p><p class="article-card__byline">EoS Editorial · 2026-05-10 · 9 min read</p></div></a></div></section></article><aside aria-label="Sidebar" class="layout-article__sidebar"><section class="widget widget--newsletter"><h3 class="widget__title">Newsletter</h3><p>Weekly publication, no spam.</p><form action="#" class="newsletter-form" id="newsletterForm-0" method="post"><input aria-label="Email" placeholder="you@domain.com" type="email"/><button type="submit">Subscribe</button></form></section><section class="widget widget--latest"><h3 class="widget__title">Latest</h3><ul class="widget__list"><li><a href="article-eos-platform-launch.html">eos-platform 1.0 lands: one toolchain, every EoS profile</a></li><li><a href="article-eai-llm-bench.html">EAI 0.9 ships INT4 LLM runtime — 11 tok/s on a Cortex-M85</a></li><li><a href="article-eni-1024-channel-pipeline.html">ENI's 1,024-channel pipeline: deterministic spike sorting in 800 µs</a></li><li><a href="article-eosim-hil-bridge.html">EoSim 2.4 HIL bridge: virtual peripherals talking to real silicon</a></li><li><a href="article-edb-encryption-at-rest.html">eDB ships AES-XTS at-rest encryption — even on 64 KB devices</a></li></ul></section><section class="widget widget--topics"><h3 class="widget__title">Topics</h3><div class="topic-chips"><a class="topic-chip" href="news.html#topic-rtos-kernel">RTOS & Kernel</a><a class="topic-chip" href="news.html#topic-embedded-ai">Embedded AI</a><a class="topic-chip" href="news.html#topic-neural-interface">Neural Interface</a><a class="topic-chip" href="news.html#topic-security-boot">Security & Boot</a><a class="topic-chip" href="news.html#topic-tools-sim">Tools & Sim</a><a class="topic-chip" href="news.html#topic-apps-platforms">Apps & Platforms</a><a class="topic-chip" href="news.html#topic-community">Community</a></div></section><section class="widget widget--podcast"><h3 class="widget__title">Listen</h3><ul class="widget__list"><li><a href="contact.html">EoS Podcast — latest episode</a></li><li><a href="contact.html">Subscribe (RSS / Apple / Spotify)</a></li></ul></section></aside></div></main><footer class="footer" role="contentinfo"><div class="footer-mega"><div class="footer-column"><h4>Components</h4><ul><li><a href="ecosystem.html">All 14 components</a></li><li><a href="product-eos.html">EoS (RTOS)</a></li><li><a href="product-eos-platform.html">eos-platform</a></li><li><a href="product-eai.html">EAI</a></li><li><a href="product-eni.html">ENI</a></li><li><a href="product-eipc.html">EIPC</a></li><li><a href="product-eboot.html">eBootloader</a></li><li><a href="product-ebuild.html">eBuild</a></li></ul></div><div class="footer-column"><h4>Newsroom</h4><ul><li><a href="news.html">All News</a></li><li><a href="news.html#topic-rtos-kernel">RTOS & Kernel</a></li><li><a href="news.html#topic-embedded-ai">Embedded AI</a></li><li><a href="news.html#topic-neural-interface">Neural Interface</a></li><li><a href="news.html#topic-security-boot">Security & Boot</a></li><li><a href="news.html#topic-tools-sim">Tools & Sim</a></li><li><a href="news.html#topic-community">Community</a></li></ul></div><div class="footer-column"><h4>Research</h4><ul><li><a href="research.html">Neural Link Architecture</a></li><li><a href="neural-link-ai.html">Neural Link & AI</a></li><li><a href="ai-os.html">AI Operating Systems</a></li><li><a href="building-os.html">Building OS</a></li><li><a href="future-research.html">Future Research</a></li><li><a href="resources.html">Theses & Papers</a></li><li><a href="documentation.html">Documentation</a></li></ul></div><div class="footer-column"><h4>Programs</h4><ul><li><a href="membership.html">Membership</a></li><li><a href="certification.html">Certification</a></li><li><a href="internship.html">Internships</a></li><li><a href="careers.html">Careers</a></li><li><a href="donate.html">Donate</a></li><li><a href="resources.html">Resources</a></li></ul></div><div class="footer-column"><h4>Industry & Community</h4><ul><li><a href="https://www.embedded.com/" rel="noopener noreferrer" target="_blank" title="News & analysis for embedded developers">Embedded.com <span aria-hidden="true" class="ext-arrow">↗</span></a></li><li><a href="https://embeddedsummit.com/" rel="noopener noreferrer" target="_blank" title="Annual community summit">Embedded Summit <span aria-hidden="true" class="ext-arrow">↗</span></a></li><li><a href="https://www.embedded-india.com/" rel="noopener noreferrer" target="_blank" title="Asia-Pacific embedded community">Embedded India <span aria-hidden="true" class="ext-arrow">↗</span></a></li><li><a href="https://www.toradex.com/" rel="noopener noreferrer" target="_blank" title="Embedded computing solutions">Toradex <span aria-hidden="true" class="ext-arrow">↗</span></a></li><li><a href="https://generisgp.com/" rel="noopener noreferrer" target="_blank" title="Strategic embedded events">Generis Group <span aria-hidden="true" class="ext-arrow">↗</span></a></li><li><a href="https://esweek.org/" rel="noopener noreferrer" target="_blank" title="Embedded Systems Week (academia)">ESWEEK <span aria-hidden="true" class="ext-arrow">↗</span></a></li><li><a href="https://embeddedonlineconference.com/" rel="noopener noreferrer" target="_blank" title="Online conference series">Embedded Online Conf. <span aria-hidden="true" class="ext-arrow">↗</span></a></li><li><a href="https://embedded-world-na.com/" rel="noopener noreferrer" target="_blank" title="North America trade show">Embedded World NA <span aria-hidden="true" class="ext-arrow">↗</span></a></li></ul></div><div class="footer-column"><h4>Foundation</h4><ul><li><a href="about.html">About Us</a></li><li><a href="contact.html">Contact</a></li><li><a href="donate.html">Support Our Mission</a></li><li><a href="membership.html">Partners</a></li><li><a href="privacy.html">Privacy Policy</a></li><li><a href="terms.html">Terms of Service</a></li><li><a href="code-of-conduct.html">Code of Conduct</a></li><li><a href="licenses.html">Open Source Licenses</a></li><li><a href="mailto:help@embeddedos.org">help@embeddedos.org</a></li><li><a href="mailto:security@embeddedos.org">security@embeddedos.org</a></li></ul></div></div><div class="footer-newsletter"><h4>📬 Stay in the Loop</h4><p>Get research updates, release notes, and community news — no spam, ever.</p><form action="#" class="newsletter-form" id="newsletterForm" method="post"><input aria-label="Email for newsletter" placeholder="your@email.com" required="" type="email"/><button type="submit">Subscribe</button></form><div class="newsletter-msg" id="newsletterMsg">✓ Thanks for subscribing!</div></div><div class="footer-divider"></div><div class="footer-bottom"><div class="footer-brand"><span class="logo-text">Embedded<span>OS</span></span><div class="footer-social"><a aria-label="EmbeddedOS on GitHub" href="https://github.com/embeddedos-org" rel="noopener noreferrer" target="_blank">GitHub</a><a aria-label="EmbeddedOS on X (Twitter)" href="https://x.com/EmbeddedOS_ORG" rel="noopener noreferrer" target="_blank">X</a><a aria-label="EmbeddedOS on LinkedIn" href="https://www.linkedin.com/company/embedded-operating-systems-research-foundation" rel="noopener noreferrer" target="_blank">LinkedIn</a><a aria-label="EmbeddedOS on YouTube" href="https://www.youtube.com/@EmbeddedOS_ORG" rel="noopener noreferrer" target="_blank">YouTube</a><a aria-label="EmbeddedOS on Facebook" href="https://www.facebook.com/people/Embedded-Operating-Systems-Research-Foundation/61588978691494/" rel="noopener noreferrer" target="_blank">Facebook</a><a aria-label="Contact us" href="contact.html">Contact</a><a aria-label="Newsroom" href="news.html">Newsroom</a></div></div><div class="footer-copyright"> © 2026 EmbeddedOS (EoS) Research Foundation. A 501(c)(3) nonprofit. All rights reserved. </div><div class="footer-legal"><a href="privacy.html">Privacy</a><a href="terms.html">Terms</a><a href="privacy.html#cookies">Cookies</a></div></div> <div style="text-align:center;padding:.6rem 0 0;border-top:1px solid rgba(255,255,255,.08);margin-top:.75rem;font-size:.75rem">Powered by <a href="https://www.interserver.net" rel="noopener noreferrer" style="font-weight:600;text-decoration:none" target="_blank">InterServer</a></div>
</footer><button aria-label="Scroll to top" class="scroll-top" type="button">↑</button> <script defer="" src="js/monitor.js"></script> <script defer="" src="js/main.js"></script>
</body></html>