Skip to content

Commit 5e03b66

Browse files
updating how terminals are referred to
1 parent d726949 commit 5e03b66

2 files changed

Lines changed: 67 additions & 18 deletions

File tree

content/learning-paths/servers-and-cloud-computing/cca-bootsync/_index.md

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,56 @@ prerequisites:
1616
- A cloud-based instance or an AArch64 or x86_64 computer running Linux. For more information about using cloud-based instances, see the [Arm cloud service providers](/learning-paths/servers-and-cloud-computing/csp/) Learning Path.
1717
- Completion of the [Run an application in a Realm using the Arm Confidential Compute Architecture (CCA)](/learning-paths/servers-and-cloud-computing/cca-container/) Learning Path
1818

19+
# START generated_summary_faq
20+
generated_summary_faq:
21+
template_version: summary-faq-v3
22+
generated_at: '2026-07-17T18:27:39Z'
23+
generator: ai
24+
ai_assisted: true
25+
ai_review_required: true
26+
model: gpt-5
27+
prompt_template: summary-faq-v3
28+
source_hash: 5b4a562e119669be2adcee1e0f304ca8cd2032cc5b6056ad01a88251019c010c
29+
summary_generated_at: '2026-07-17T18:27:39Z'
30+
summary_source_hash: 5b4a562e119669be2adcee1e0f304ca8cd2032cc5b6056ad01a88251019c010c
31+
faq_generated_at: '2026-07-17T18:27:39Z'
32+
faq_source_hash: 5b4a562e119669be2adcee1e0f304ca8cd2032cc5b6056ad01a88251019c010c
33+
summary: >-
34+
You'll use Arm CCA BootSync on an RME-enabled Armv9-A AEM Base FVP
35+
to deliver UEFI variables and secrets to a Realm during early boot, then validate Secure Boot
36+
and encrypted disk startup. First, you'll launch a Realm without injected data to observe
37+
firmware attestation. Next, you'll provide variable data for BootSync to complete and verify that Secure Boot rejects the unsigned kernel. After signing the kernel, you'll verify that Secure Boot is active. Finally, you'll encrypt the Realm root file system, inject the file system decryption secret through
38+
BootSync, and confirm that the disk unlocks during boot.
39+
faqs:
40+
- question: Do I need networking inside the Realm to deliver boot data?
41+
answer: >-
42+
No. BootSync operates before the guest operating system has networking and uses the Boot Injection protocol to provide early boot data.
43+
- question: How do I know BootSync requested variable data?
44+
answer: >-
45+
In the User Context service log, you'll see `BIB Variable Data Requested`
46+
and the expected `<RPV>_VAR.dat` file name. If the file is missing,
47+
BootSync reports `BootSyncNotDone`, and the Realm boots without Secure
48+
Boot enabled.
49+
- question: What result should I expect when Secure Boot is configured but the kernel is unsigned?
50+
answer: >-
51+
The unsigned kernel is rejected. This confirms that UEFI Secure Boot is enforcing signature
52+
verification.
53+
- question: After I sign the kernel, how do I verify that Secure Boot is enabled?
54+
answer: >-
55+
The signed kernel boots successfully and the Secure Boot UEFI variable reports `1`. Check
56+
that value to confirm the state.
57+
- question: How do I confirm the encrypted root file system unlocks correctly?
58+
answer: >-
59+
After BootSync supplies the correct passphrase, the boot log reports
60+
`LUKS partition unlocked, switching root`. Run `df -h` and verify that
61+
`/dev/mapper/cryptroot` is mounted at `/`.
62+
# END generated_summary_faq
63+
1964
author:
2065
- Anton Antonov
2166
- Pareena Verma
2267

23-
generate_summary_faq: true
68+
generate_summary_faq: false
2469
rerun_summary: false
2570
rerun_faqs: false
2671

@@ -72,3 +117,4 @@ weight: 1 # _index.md always has weight of 1 to order corr
72117
layout: "learningpathall" # All files under learning paths have this same wrapper
73118
learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content.
74119
---
120+

content/learning-paths/servers-and-cloud-computing/cca-bootsync/flow.md

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ You'll configure and validate both failure and success cases:
1919

2020
You'll run the User Context service in a Docker container and launch CCA Realms on an Arm Fixed Virtual Platform (FVP) in a separate Docker container.
2121

22-
You'll use two terminals. In the first terminal, you'll run the User Context service. This service represents the Realm initiator and decides whether to release BootSync data. In the second terminal, you'll run the Arm CCA FVP and launch Realm virtual machines using `lkvm-bootsync`.
22+
You'll use two terminals:
23+
24+
- In the User Context terminal, you'll run the User Context service. This service represents the Realm initiator and decides whether to release BootSync data.
25+
- In the FVP terminal, you'll run the Arm CCA FVP and launch Realm virtual machines using `lkvm-bootsync`.
2326

2427
## Install dependencies
2528

@@ -53,11 +56,11 @@ Add your user name to the Docker group so you can run Docker without `sudo`:
5356
sudo usermod -aG docker $USER
5457
newgrp docker
5558
```
56-
The group change applies to new shells; `newgrp docker` updates the current terminal.
59+
The group change applies to new shells; `newgrp docker` updates the current shell.
5760

5861
## Start the User Context service
5962

60-
First, pull the Docker image with the pre-built User Context service. Then, run the container:
63+
In the User Context terminal, pull the Docker image with the pre-built User Context service. Then, run the container:
6164

6265
```bash
6366
docker pull armswdev/cca-learning-path:cca-key-broker-v4
@@ -67,7 +70,7 @@ docker run --rm -it --network cca-trustee --name user-context armswdev/cca-learn
6770

6871
The `cca-trustee` Docker network is important. It lets the FVP container resolve the User Context service by container name, `user-context`, when `lkvm-bootsync` later uses `--service-ip user-context`.
6972

70-
Now, within your running Docker container, start the User Context service using the `run-user-context-service.sh` script.
73+
In the User Context terminal, start the User Context service inside the running container using the `run-user-context-service.sh` script.
7174
The User Context service is part of the [EDK2](https://gitlab.arm.com/linux-arm/edk2-cca/-/tree/cca/4441_measured_boot_v1/ArmVirtPkg/ArmCcaBootSync/UserContext) project.
7275
Created specifically as a proof of concept, it's intentionally small and not designed for production use.
7376

@@ -83,7 +86,7 @@ You'll be asked for a passphrase for the Secure Boot signing certificates. Remem
8386

8487
## Validate BootSync failure without boot data
8588

86-
With the User Context service running in one terminal, open up a new terminal in which you'll run CCA Realms.
89+
With the User Context service running in the User Context terminal, open the FVP terminal.
8790

8891
Pull the Docker image with the pre-built FVP and CCA reference software stack. Then, run the container connected to the same Docker network:
8992

@@ -163,7 +166,7 @@ Stop the Realm:
163166
poweroff
164167
```
165168

166-
On the terminal with the User Context service, you can see that the Realm firmware requested a Variable Data file, but the file is missing:
169+
In the User Context terminal, you can see that the Realm firmware requested a Variable Data file, but the file is missing:
167170

168171
```output
169172
INFO: BIB Variable Data Requested
@@ -180,7 +183,7 @@ Next, you'll add the missing Boot Information Block data and repeat the launch.
180183

181184
## Pass UEFI variable data and validate unsigned kernel rejection
182185

183-
On the terminal with the User Context service, stop the service by pressing `Ctrl-C`.
186+
In the User Context terminal, stop the service by pressing `Ctrl-C`.
184187

185188
The RPV and file names used here are details of this Learning Path's reference implementation. One User Context service can support multiple Realms by using the RPV as a file-name prefix. A Realm launched with `--realm-pv ARMCCA01` requests files that start with `ARMCCA01`. If the matching files are missing, BootSync can establish a session and complete attestation, but the User Context can't provide the requested boot information.
186189

@@ -197,13 +200,13 @@ Create a Secret Data file with a test string that'll be shared with a Realm usin
197200
echo "My Realm secret data" > SecureBoot/ARMCCA01_SEC.dat
198201
```
199202

200-
Relaunch the User Context service:
203+
In the User Context terminal, relaunch the User Context service:
201204

202205
```bash
203206
./run-user-context-service.sh
204207
```
205208

206-
On the terminal with FVP, relaunch the Realm with the same RPV:
209+
In the FVP terminal, relaunch the Realm with the same RPV:
207210

208211
```bash
209212
cd /cca
@@ -218,7 +221,7 @@ cd /cca
218221

219222
Keeping the same `--realm-pv ARMCCA01` is what links the Realm request to the files you created.
220223

221-
On the terminal with the User Context service, you can see that attestation succeeded and BootSync completed:
224+
In the User Context terminal, you can see that attestation succeeded and BootSync completed:
222225

223226
```output
224227
Info: Received FIN. Disconnecting.
@@ -247,7 +250,7 @@ Next, you'll launch a Realm with a signed kernel image.
247250

248251
## Sign the kernel and verify Secure Boot
249252

250-
On the terminal with FVP, use the `sign_guest_kernel.sh` script to sign the Realm Linux kernel with the Secure Boot certificate generated earlier by the User Context setup script. When prompted, enter the passphrase you used for the Secure Boot signing certificates:
253+
In the FVP terminal, use the `sign_guest_kernel.sh` script to sign the Realm Linux kernel with the Secure Boot certificate generated earlier by the User Context setup script. When prompted, enter the passphrase you used for the Secure Boot signing certificates:
251254

252255
```bash { output_lines="2-3" }
253256
sign_guest_kernel.sh
@@ -256,7 +259,7 @@ Enter PEM pass phrase:
256259
Signing Unsigned original image
257260
```
258261

259-
Relaunch the Realm. Use the same User Context service, service port, and RPV so the Realm receives the same Secure Boot variable data:
262+
In the FVP terminal, relaunch the Realm. Use the same User Context service, service port, and RPV so the Realm receives the same Secure Boot variable data:
260263

261264
```bash
262265
cd /cca
@@ -353,7 +356,7 @@ There are different ways to provide a Realm with access to encrypted partitions
353356

354357
{{% /notice %}}
355358

356-
On the terminal with the running FVP, use the `encrypt_rootfs.sh` script to encrypt the root partition in the Realm disk image and add an `initrd` image to the kernel parameters.
359+
In the FVP terminal, use the `encrypt_rootfs.sh` script to encrypt the root partition in the Realm disk image and add an `initrd` image to the kernel parameters.
357360

358361
You'll be asked for a passphrase to encrypt the root partition. Use a memorable test passphrase and keep it available, because you'll later write the same value into `ARMCCA01_SEC.dat` for BootSync to release.
359362

@@ -376,7 +379,7 @@ Enable Initrd image
376379

377380
### Validate failed disk unlock
378381

379-
Relaunch the Realm. At this point, `ARMCCA01_SEC.dat` still contains the test string from the previous Secure Boot step, not the disk encryption passphrase:
382+
In the FVP terminal, relaunch the Realm. At this point, `ARMCCA01_SEC.dat` still contains the test string from the previous Secure Boot step, not the disk encryption passphrase:
380383

381384
```bash
382385
cd /cca
@@ -431,7 +434,7 @@ The init script failed to unlock the encrypted partition because the Secret Data
431434

432435
Now, update the BootSync secret.
433436

434-
On the terminal with the User Context service, stop the service by pressing `Ctrl-C`.
437+
In the User Context terminal, stop the service by pressing `Ctrl-C`.
435438

436439
Save the encryption passphrase into the Secret Data file. Use `echo -n` so the file contains only the passphrase and no trailing newline character:
437440

@@ -440,13 +443,13 @@ ROOTFS_PASSPHRASE='replace-with-the-passphrase-you-used-for-encrypt_rootfs'
440443
echo -n "$ROOTFS_PASSPHRASE" > SecureBoot/ARMCCA01_SEC.dat
441444
```
442445

443-
Relaunch the User Context service:
446+
In the User Context terminal, relaunch the User Context service:
444447

445448
```bash
446449
./run-user-context-service.sh
447450
```
448451

449-
On the terminal with FVP, relaunch the Realm with the same RPV:
452+
In the FVP terminal, relaunch the Realm with the same RPV:
450453

451454
```bash
452455
cd /cca

0 commit comments

Comments
 (0)