Skip to content

Commit 7f63e12

Browse files
authored
Merge pull request #2298 from pareenaverma/content_review
OpenBMC LP tech review
2 parents cbd91c1 + faca4ce commit 7f63e12

File tree

6 files changed

+77
-77
lines changed

6 files changed

+77
-77
lines changed

content/learning-paths/servers-and-cloud-computing/openbmc-rdv3/1_introduction_openbmc.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ layout: learningpathall
88

99
## Introduction to OpenBMC and UEFI
1010

11-
In this module, you will learn the roles of OpenBMC and UEFI in the Arm server boot flow, and understand why simulating their integration is key to early-stage development.
11+
This section explains the roles of OpenBMC and UEFI in the Arm server boot flow, and highlights why simulating their integration is essential for early-stage development.
1212

1313
### OpenBMC
1414

@@ -32,7 +32,7 @@ OpenBMC is particularly well-suited to Arm-based server platforms like **[Neover
3232

3333
OpenBMC enables faster development cycles, open innovation, and reduced vendor lock-in across data centers, cloud platforms, and edge environments.
3434

35-
**In this Learning Path**, you’ll simulate how OpenBMC manages the early-stage boot process, power sequencing, and remote access for a virtual Neoverse RD-V3 server. You will interact with the BMC console, inspect boot logs, and verify serial-over-LAN and UART communication with the host.
35+
In this Learning Path, you’ll simulate how OpenBMC manages the early stage boot process, power sequencing, and remote access for a virtual Neoverse RD-V3 server. You will interact with the BMC console, inspect boot logs, and verify serial-over-LAN and UART communication with the host.
3636

3737
### UEFI
3838

@@ -67,4 +67,4 @@ These interactions are especially critical in Arm server-class platforms—like
6767

6868
In this Learning Path, you will build and run the UEFI firmware on the RD-V3 FVP host platform.
6969

70-
You will use OpenBMC to power on the virtual Arm server, access the serial console, and monitor the host boot progress like real hardware platform. By inspecting the full boot log and observing system behavior in simulation, you will gain valuable insights into how BMC and UEFI coordinate during early firmware bring-up.
70+
You will use OpenBMC to power on the virtual Arm server, access the serial console, and monitor the host boot progress like real hardware platform. By inspecting the full boot log and observing system behavior in simulation, you will gain valuable insights into how BMC and UEFI coordinate during early firmware bring-up.

content/learning-paths/servers-and-cloud-computing/openbmc-rdv3/2_openbmc_setup.md

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Set Up Pre-Silicon Development Environment for OpenBMC and UEFI
2+
title: Set Up the Pre-Silicon Development Environment for OpenBMC and UEFI
33
weight: 3
44

55
### FIXED, DO NOT MODIFY
@@ -8,27 +8,25 @@ layout: learningpathall
88

99
## Set Up Development Environment
1010

11-
In this module, you’ll prepare your workspace to build and simulate OpenBMC and UEFI firmware on the Neoverse RD-V3 platform using Arm Fixed Virtual Platforms (FVPs).
12-
You’ll install the required tools, configure repositories, and set up a Docker-based build environment for both BMC and host firmware.
11+
In this section, you’ll prepare your workspace to build and simulate OpenBMC and UEFI firmware on the Neoverse RD-V3 platform using Arm Fixed Virtual Platforms (FVPs).
12+
You will install the required tools, configure repositories, and set up a Docker-based build environment for both BMC and host firmware.
1313

1414
Before getting started, it’s strongly recommended to review the previous Learning Path: [CSS-V3 Pre-Silicon Software Development Using Neoverse Servers](https://learn.arm.com/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack).
15-
That guide walks you through how to use the CSSv3 reference design on FVP to perform early-stage development and validation.
15+
It walks you through how to use the CSSv3 reference design on FVP to perform early-stage development and validation.
1616

17-
Ensure your system meets the following requirements:
18-
- Access to an Arm Neoverse-based Linux machine (either cloud-based or local) is required, with at least 80 GB of free disk space, 48 GB of RAM, and running Ubuntu 22.04 LTS.
19-
- Working knowledge of Docker, Git, and Linux terminal tools
20-
- Basic understanding of server firmware stack (UEFI, BMC, TF-A, etc.)
21-
- Docker installed, or GitHub Codespaces-compatible development environment
17+
You will perform the steps outlined below on your Arm Neoverse-based Linux machine running Ubuntu 22.04 LTS. You will need at least 80 GB of free disk space, 48 GB of RAM.
2218

2319
### Install Required Packages
2420

2521
Install the base packages for building OpenBMC with the Yocto Project:
2622

2723
```bash
2824
sudo apt update
29-
sudo apt install git gcc g++ make file wget gawk diffstat bzip2 cpio chrpath zstd lz4 bzip2 unzip
25+
sudo apt install -y git gcc g++ make file wget gawk diffstat bzip2 cpio chrpath zstd lz4 bzip2 unzip
3026
```
3127

28+
Install [Docker](/install-guides/docker)
29+
3230
### Set Up the repo Tool
3331

3432
```bash
@@ -38,9 +36,9 @@ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
3836
chmod a+rx ~/.bin/repo
3937
```
4038

41-
### Download the Arm FVP Model (RD-V3)
39+
### Download and Install the Arm FVP Model (RD-V3)
4240

43-
Download and extract the RD-V3 FVP binary from Arm:
41+
Download and extract the RD-V3 FVP:
4442
```bash
4543
mkdir ~/fvp
4644
cd ~/fvp
@@ -49,7 +47,7 @@ tar -xvf FVP_RD_V3_R1_11.29_35_Linux64_armv8l.tgz
4947
./FVP_RD_V3_R1.sh
5048
```
5149

52-
The FVP installation may prompt you with a few questionschoosing the default options is sufficient for this learning path. By default, the FVP will be installed in /home/ubuntu/FVP_RD_V3_R1.
50+
The FVP installation may prompt you with a few questions, choosing the default options is sufficient for this learning path. By default, the FVP will be installed in `$HOME/FVP_RD_V3_R1`.
5351

5452

5553
### Initialize the Host Build Environment
@@ -59,12 +57,10 @@ Set up a workspace for host firmware builds:
5957
```bash
6058
mkdir ~/host
6159
cd host
62-
6360
~/.bin/repo init -u "https://git.gitlab.arm.com/infra-solutions/reference-design/infra-refdesign-manifests.git" \
6461
-m "pinned-rdv3r1-bmc.xml" \
6562
-b "refs/tags/RD-INFRA-2025.07.03" \
6663
--depth=1
67-
6864
repo sync -c -j $(nproc) --fetch-submodules --force-sync --no-clone-bundle
6965
```
7066

@@ -85,10 +81,10 @@ git pull origin main
8581

8682
This approach allows you to fetch only the `patch` folder from the remote Git repository—saving time and disk space.
8783

88-
Next, create an `apply_patch.sh` script inside the `~` directory and paste in the following content.
84+
Next, using a file editor of your choice, create an `apply_patch.sh` script inside the `~` directory and paste in the following content.
8985
This script will automatically apply the necessary patches to each firmware component.
9086

91-
```patch
87+
```bash
9288
FVP_DIR="host"
9389
SOURCE=${PWD}
9490

@@ -139,9 +135,9 @@ These patches enable additional UEFI features, integrate the Redfish client, and
139135
### Build RDv3 R1 Host Docker Image
140136

141137
Before building the host image, update the following line in `~/host/grub/bootstrap` to replace the `git://` protocol.
142-
Some networks or corporate environments restrict `git://` access due to firewall or security policies. Switching to `https://` ensures reliable and secure access to external Git repositories.
138+
Some networks may restrict `git://` access due to firewall or security policies. Switching to `https://` ensures reliable and secure access to external Git repositories.
143139

144-
```
140+
```bash
145141
diff --git a/bootstrap b/bootstrap
146142
index 5b08e7e2d..031784582 100755
147143
--- a/bootstrap
@@ -174,10 +170,14 @@ docker run --rm \
174170
bash -c "./build-scripts/rdinfra/build-test-busybox.sh -p rdv3r1 all"
175171
```
176172
177-
Once complete, you can observe the build binary in `~/host/output/rdv3r1/rdv3r1/`
173+
Once complete, you can observe the build binary in `~/host/output/rdv3r1/rdv3r1/`:
178174
179-
```
175+
```bash
180176
ls -la host/output/rdv3r1/rdv3r1/
177+
```
178+
The directory contents should look like:
179+
180+
```output
181181
total 4308
182182
drwxr-xr-x 2 ubuntu ubuntu 4096 Aug 18 10:19 .
183183
drwxr-xr-x 4 ubuntu ubuntu 4096 Aug 18 10:20 ..
@@ -210,13 +210,13 @@ lrwxrwxrwx 1 ubuntu ubuntu 33 Aug 18 10:19 uefi.bin -> ../components/css-co
210210
211211
212212
{{% notice Note %}}
213-
The other [Arm Learning Path](https://learn.arm.com/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/3_rdv3_sw_build/) provides a complete introduction to setting up the RDv3 development environment — feel free to refer to it for more details.
213+
This [Arm Learning Path](/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/3_rdv3_sw_build/) provides a complete introduction to setting up the RDv3 development environment, please refer to it for more details.
214214
{{% /notice %}}
215215
216216
217217
### Build OpenBMC Image
218218
219-
OpenBMC is built on the Yocto Project, which uses BitBake as its build tool.
219+
OpenBMC is built on the Yocto Project, which uses `BitBake` as its build tool.
220220
You don’t need to download BitBake separately, as it is included in the OpenBMC build environment.
221221
Once you’ve set up the OpenBMC repository and initialized the build environment, BitBake is already available for building images, compiling packages, or running other tasks.
222222
@@ -230,9 +230,9 @@ source setup fvp
230230
bitbake obmc-phosphor-image
231231
```
232232
233-
During the OpenBMC build process, you may encounter a native compilation error when building Node.js (especially version 22+) due to high memory usage during the V8 engine build phase depends on your build machine.
233+
During the OpenBMC build process, you may encounter a native compilation error when building `Node.js` (especially version 22+) due to high memory usage during the V8 engine build phase.
234234
235-
```log
235+
```output
236236
g++: fatal error: Killed signal terminated program cc1plus
237237
compilation terminated.
238238
ERROR: oe_runmake failed
@@ -249,9 +249,9 @@ PARALLEL_MAKE = "-j2"
249249
250250
This ensures that BitBake only runs two parallel tasks and that each Makefile invocation limits itself to two threads. It significantly reduces peak memory usage and avoids OOM terminations.
251251
252-
Once success build, you should see a successful build message similar to:
252+
With a successful build, you should see output similar to:
253253
254-
```
254+
```output
255255
Loading cache: 100% | | ETA: --:--:--
256256
Loaded 0 entries from dependency cache.
257257
Parsing recipes: 100% |#############################################################################################################| Time: 0:00:09
@@ -290,9 +290,9 @@ This confirms that the OpenBMC image was built successfully.
290290
The first build may take up to an hour depending on your system performance, as it downloads and compiles the entire firmware stack.
291291
{{% /notice %}}
292292
293-
Your workspace should now follow a structured layout that separates the FVP simulator, host build system, OpenBMC source, and patches—making it easier to organize, maintain, and troubleshoot your simulation environment.
293+
Your workspace should now be structured to separate the FVP, host build system, OpenBMC source, and patches—simplifying organization, maintenance, and troubleshooting.
294294
295-
```text
295+
```output
296296
├── FVP_RD_V3_R1
297297
├── apply_patch.sh
298298
├── fvp
@@ -319,4 +319,4 @@ Your workspace should now follow a structured layout that separates the FVP simu
319319
└── run.sh
320320
```
321321
322-
With both the OpenBMC and host firmware environments built and configured, you’re now fully prepared to launch the full system simulation and observe the boot process in action.
322+
With both the OpenBMC and host firmware environments built and configured, you’re now fully prepared to launch the full system simulation and observe the boot process in action.

content/learning-paths/servers-and-cloud-computing/openbmc-rdv3/3_openbmc_simulate.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Run Pre-Silicon OpenBMC and Host UEFI Simulation
2+
title: Run OpenBMC and Host UEFI Simulation on RD-V3 FVP
33
weight: 4
44

55
### FIXED, DO NOT MODIFY
@@ -11,39 +11,39 @@ layout: learningpathall
1111
With your environment prepared, you can now simulate the full pre-silicon firmware boot flow using the Arm Neoverse RD-V3 reference design.
1212
You’ll build the OpenBMC image, launch the Arm Fixed Virtual Platform (FVP), and observe the full boot process of both the BMC and host UEFI firmware in a simulated environment.
1313

14-
This simulation launches multiple UART consoleseach mapped to a separate terminal window for different subsystems (e.g., Neoverse V3, Cortex‑M55, Cortex‑M7, and the Cortex-A BMC).
14+
This simulation launches multiple UART consoles,each mapped to a separate terminal window for different subsystems (e.g., Neoverse V3, Cortex‑M55, Cortex‑M7, and the Cortex-A BMC).
1515

16-
These graphical terminal windows require a desktop session. If you're accessing the simulation over SSH (e.g., on an AWS instance), they may not display properly.
16+
These graphical terminal windows require a desktop session. If you're accessing the simulation over SSH (e.g., on a cloud instance), they may not display properly.
1717

18-
To ensure proper display and interactivity, we recommend installing a Remote Desktop environment using XRDP.
18+
To ensure proper display and interactivity, it is recommended to install a Remote Desktop environment using XRDP.
1919

20-
In AWS Ubuntu 22.04 instance, you need install required packages:
20+
On an Arm cloud Ubuntu 22.04 instance, you will need to install required packages:
2121

2222
```bash
2323
sudo apt update
2424
sudo apt install -y ubuntu-desktop xrdp xfce4 xfce4-goodies pv xterm sshpass socat retry
2525
sudo systemctl enable --now xrdp
2626
```
2727

28-
You may need to follow the Step 2 on RDv3 [learning path](https://learn.arm.com/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/4_rdv3_on_fvp/) to setup the networking and GDM configuration.
28+
You may need to follow the Step 2 on the [RD-V3 learning path](/learning-paths/servers-and-cloud-computing/neoverse-rdv3-swstack/4_rdv3_on_fvp/) to setup the networking and GDM configuration.
2929

3030
Once connected via Remote Desktop, open a terminal and launch the RD‑V3 FVP simulation:
3131

3232
## Execute Pre-Silicon OpenBMC Simulation
3333

34-
To make the simulation process smoother and more intuitive, you’ll need to modify a script from Arm’s GitLab repository.
34+
To make the simulation process more intuitive, you’ll need to modify a script from Arm’s GitLab repository:
3535

3636
```bash
3737
cd ~
3838
wget https://gitlab.arm.com/server_management/PoCs/fvp-poc/-/raw/2a79ae93560969a3b802dfb3d7d89f9fd9dee5a6/run.sh
3939
```
4040

41-
Before running the simulation, open the run.sh script and locate the line that defines FVP_KEYWORD.
41+
Before running the simulation, open the `run.sh` script and locate the line that defines FVP_KEYWORD.
4242
This variable determines when the host FVP should be launched by monitoring OpenBMC’s console output.
4343
If not set correctly, the script may hang or fail to start the host simulation.
4444
Update the line to:
4545

46-
```
46+
```output
4747
FVP_KEYWORD="terminal2: Listening for serial connection on port"
4848
```
4949

@@ -65,7 +65,7 @@ The `run.sh` script will:
6565

6666
Once the simulation is running, the `OpenBMC FVP console` will stop at the Linux login prompt:
6767

68-
```
68+
```output
6969
[ OK ] Started phosphor systemd target monitor.
7070
[ OK ] Started Sensor Monitor.
7171
Starting Hostname Service...
@@ -81,14 +81,14 @@ Phosphor OpenBMC (Phosphor OpenBMC Project Reference Distro) nodistro.0 fvp ttyA
8181
fvp login:
8282
```
8383

84-
Type OpenBMC default username `root` and password is `0penBmc`.
84+
Enter the OpenBMC default username `root` and password, which is `0penBmc`.
8585

8686

8787
{{% notice Note %}}
8888
The first character of the password is the number ***0***, not a capital ***O***.
8989
{{% /notice %}}
9090

91-
After login, you’ll be dropped into the OpenBMC shell a minimal Linux environment running inside the simulated BMC.
91+
After login, you will be dropped into the OpenBMC shell, a minimal Linux environment running inside the simulated BMC.
9292

9393
The host-side UEFI simulation will appear in the `FVP terminal_ns_uart0` console.
9494
You may briefly see the UEFI Firmware Setup Menu—select `Continue` to proceed with boot.
@@ -102,8 +102,7 @@ A successful simulation will show login prompts on both BMC and host consoles. Y
102102

103103
![img2 alt-text#center](openbmc_cssv3_sim.jpg "Simuation Success")
104104

105-
To avoid excessive network bandwidth usage, the following is a 60×-speed simulation recording.
106-
It gives you a quick visual overview of how OpenBMC and UEFI boot and interact during pre-silicon execution.
105+
Shown here is a simulation recording. It gives you a quick visual overview of how OpenBMC and UEFI boot and interact during pre-silicon execution.
107106

108107
![img1 alt-text#center](openbmc_cssv3_running.gif "Simuation Running")
109108

@@ -116,5 +115,5 @@ After simulation completes, logs for both the BMC and host will be stored in `~/
116115
By reviewing the contents of the logs folder, you can verify the expected system behavior or quickly diagnose
117116
any anomalies that arise during boot or runtime.
118117

119-
With the simulation running successfully, you’re now ready to perform real-time testing between the host and the BMC.
120-
In the next module, you’ll explore how to interact with the BMC using UART and IPMI from the host sidevalidating communication channels in a pre-silicon context.
118+
With the simulation running successfully, you are now ready to perform real-time testing between the host and the BMC.
119+
In the next section, you will explore how to interact with the BMC using UART and IPMI from the host side, validating communication channels in a pre-silicon context.

content/learning-paths/servers-and-cloud-computing/openbmc-rdv3/4_openbmc_communicate.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ layout: learningpathall
88

99
## Access the Host Console via OpenBMC SOL
1010

11-
The OpenBMC platform provides `Serial over LAN` (SOL), allowing you to access the host console (RD-V3 FVP) remotely through the BMCwithout needing a physical serial cable.
12-
In this module, you’ll use `socat` to create a virtual UART bridge, verify port mappings, and access the host console via the BMC Web UI.
11+
The OpenBMC platform provides `Serial over LAN` (SOL), allowing you to access the host console (RD-V3 FVP) remotely through the BMC, without needing a physical serial cable.
12+
In this section, you will use `socat` to create a virtual UART bridge, verify port mappings, and access the host console via the BMC Web UI.
1313

1414
### Step 1: Connect the BMC and Host Consoles
1515

@@ -19,13 +19,13 @@ Run the following command on your development Linux machine (where the simulatio
1919
socat -x tcp:localhost:5005 tcp:localhost:5067
2020
```
2121

22-
This command connects the host-side UART port (5005) to the BMC-side port (5067), allowing bidirectional serial communication.
22+
This command connects the host-side UART port (5005) to the BMC-side port (5067), allowing bi-directional serial communication.
2323

2424
{{% notice Note %}}
2525
If you see a Connection refused error, check the FVP logs to verify the port numbers:
26-
* In fvp_boot.log, look for a line like:
26+
* In `fvp_boot.log`, look for a line like:
2727
terminal_ns_uart0: Listening for serial connection on port 5005
28-
* In obmc_boot.log, confirm the corresponding line:
28+
* In `obmc_boot.log`, confirm the corresponding line:
2929
terminal_3: Listening for serial connection on port 5067
3030
{{% /notice %}}
3131

@@ -56,15 +56,15 @@ This updates the BMC’s internal host state, allowing UEFI to begin execution.
5656
{{% notice Note %}}
5757
As a reminder, the first character of the password is the number ***0***, not a capital ***O***.
5858
{{% /notice %}}
59-
After login, you'll see the Web UI dashboard:
59+
After login, you should see the Web UI dashboard:
6060

6161
- From the Overview page, click the `SOL Console` button.
6262
![img4 alt-text#center](openbmc_webui_overview.jpg "WebUI Overview")
6363

6464
- The SOL terminal in the Web UI will display the host console output (UEFI shell or Linux login). You can type commands directly as if you were connected over a physical serial line.
6565
![img5 alt-text#center](openbmc_webui_sol.jpg "WebUI SOL")
6666

67-
Once connected to the SOL terminal, you can monitor the UEFI boot sequence, interact with the host shell, and run diagnostic or recovery workflowsjust as if you were connected to a physical serial port.
67+
Once connected to the SOL terminal, you can monitor the UEFI boot sequence, interact with the host shell, and run diagnostic or recovery workflows, just as if you were connected to a physical serial port.
6868

6969
This confirms that OpenBMC is fully managing host power and console access in your simulated environment.
7070

0 commit comments

Comments
 (0)