Skip to content

Commit c4fd830

Browse files
authored
Update 2_openbmc_setup.md
1 parent c4df8f3 commit c4fd830

File tree

1 file changed

+30
-30
lines changed

1 file changed

+30
-30
lines changed

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.

0 commit comments

Comments
 (0)