Skip to content

Commit 076d53a

Browse files
Merge pull request #2840 from madeline-underwood/kernel
Kernel_reviewed
2 parents 873703c + a20b3a4 commit 076d53a

5 files changed

Lines changed: 45 additions & 42 deletions

File tree

content/learning-paths/servers-and-cloud-computing/kernel-build/_index.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
---
22
title: Build Linux kernels for Arm cloud instances
33

4-
draft: true
5-
cascade:
6-
draft: true
7-
84
minutes_to_complete: 60
95

106
who_is_this_for: This is an advanced topic for software developers building custom Linux kernels on Arm servers and cloud instances.

content/learning-paths/servers-and-cloud-computing/kernel-build/_next-steps.md

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,7 @@ next_step_guidance: >
44
55
recommended_path: "/learning-paths/servers-and-cloud-computing/profiling-for-neoverse/"
66

7-
further_reading:
8-
- resource:
9-
title: TuxMake documentation
10-
link: https://tuxmake.org/
11-
type: documentation
12-
- resource:
13-
title: Linux kernel documentation
14-
link: https://www.kernel.org/doc/html/latest/
15-
type: documentation
16-
- resource:
17-
title: arm_kernel_install_guide repository
18-
link: https://github.com/geremyCohen/arm_kernel_install_guide
19-
type: website
20-
- resource:
21-
title: Arm Neoverse system architecture
22-
link: https://developer.arm.com/documentation/den0024/latest/
23-
type: documentation
24-
25-
26-
### FIXED, DO NOT MODIFY THIS FILE, unless you need to update the 'further_reading' list.
7+
### FIXED, DO NOT MODIFY THIS FILE.
278
weight: 21
289
layout: learningpathall
2910
---

content/learning-paths/servers-and-cloud-computing/kernel-build/how-to-1.md

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ The repository you just cloned contains helper scripts for building and managing
4444

4545
The `kernel_build_and_install.sh` script supports two main workflows:
4646

47-
1. **General usage** - Build kernels for direct installation or downstream packaging
48-
2. **Fastpath usage** - Build kernels with additional headers and perf configuration needed by the Fastpath validation tool
47+
- **General usage** - Build kernels for direct installation or downstream packaging
48+
- **Fastpath usage** - Build kernels with additional headers and perf configuration needed by the Fastpath validation tool
4949

5050
### About Fastpath
5151

@@ -90,6 +90,29 @@ Check that the script is executable and displays help information:
9090
./scripts/kernel_build_and_install.sh --help
9191
```
9292

93-
The expected output shows all available flags and usage examples.
93+
The expected output is similar to:
94+
95+
```output
96+
Usage: kernel_build_and_install.sh [OPTIONS]
97+
98+
Options:
99+
--demo-default-build Build v6.18.1 with default configuration
100+
--demo-fastpath-build Build v6.18.1 and v6.19-rc1 with Fastpath configs
101+
--tag <tag> Specify a kernel version to build
102+
--tags <tag1,tag2,...> Build multiple kernel versions in parallel
103+
--kernel-install [true|false|tag] Install kernel after building
104+
--fastpath [true|false] Enable Fastpath configuration overlay
105+
--change-to-64k [true|false] Build kernel with 64 KB page size
106+
--help Display this help message
107+
...
108+
```
109+
110+
## What you've accomplished and what's next
111+
112+
In this section, you've:
113+
- Configured an Arm cloud instance with the required build dependencies
114+
- Cloned the kernel build helper repository
115+
- Learned about the available build script flags for general and Fastpath workflows
116+
- Verified your build environment is ready
94117

95-
You're now ready to build Linux kernels on your Arm instance. The next section covers standard kernel build workflows.
118+
The next section covers standard kernel build workflows for direct installation or downstream packaging.

content/learning-paths/servers-and-cloud-computing/kernel-build/how-to-2.md

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ weight: 3
66
layout: learningpathall
77
---
88

9-
This section covers standard kernel build workflows for direct installation or downstream packaging.
10-
9+
## Standard kernel workflows
1110

11+
Standard kernel builds produce general-purpose kernels suitable for production deployment, development testing, or distribution packaging. These workflows let you build specific versions, install them directly, or package them for later use.
1212

13-
## Kernel Build only
13+
This section covers standard kernel build workflows for direct installation or downstream packaging.
1414

15-
{{% notice Note %}}
16-
The kernel versions given in the \--tags flag, such as `v6.18.1` in the first example below, are arbitrary (but valid) Linux kernel versions; If you prefer to use kernel versions different from the examples, its ok to replace it with your alternative.
15+
{{% notice Note on kernel build only %}}
16+
The kernel versions given in the \--tags flag, such as `v6.18.1` in the first example below, are arbitrary (but valid) Linux kernel versions. If you prefer to use kernel versions different from the examples, you can replace them with your preferred versions.
1717

18-
Kernel.org hosts all official Linux kernel releases: https://www.kernel.org/. Feel free to browse and select any stable or mainline release version depicted.
18+
Kernel.org hosts all official Linux kernel releases: https://www.kernel.org/. Browse and select any stable or mainline release version.
1919
{{% /notice %}}
2020

2121

@@ -65,13 +65,15 @@ This command writes a self-contained plan such as `/tmp/kernel_plan_v6.18.1_<has
6565
--dry-run
6666
```
6767

68-
Run the plan file later—on the same host or another system with the required dependencies—to replay the exact workflow:
68+
Run the plan file later—on the same host or another system with the required dependencies—to replay the exact workflow. Replace `<hash>` with the actual hash value from your generated plan file:
6969

7070
```bash
7171
bash /tmp/kernel_plan_v6.18.1_<hash>.sh
7272
```
7373

74-
## Kernel Install
74+
You can use tab completion or `ls /tmp/kernel_plan_*.sh` to find the exact filename.
75+
76+
## Install kernel
7577

7678
{{% notice Note %}}
7779
The following sections demonstrate build and install scenarios.
@@ -117,7 +119,7 @@ This approach is useful when you want to:
117119
- Compare different kernel versions
118120
- Prepare multiple kernels for testing
119121
- Build a library of kernel versions for deployment
120-
-
122+
121123
To build two kernel versions in parallel, run the following command (it will build both `v6.18.1` and `v6.19-rc1`, but only install `v6.18.1`):
122124

123125
```bash
@@ -156,7 +158,7 @@ The expected output is `65536` for 64 KB builds, compared to `4096` for standard
156158

157159
### Install previously built kernels
158160

159-
As there are two input formats for building kernel artifacts which match the build output formats: flat files and Debian packages. Choose the appropriate installation method based on your prior build format.
161+
There are two input formats for kernel artifacts that match the build output formats: flat files and Debian packages. Choose the appropriate installation method based on your prior build format.
160162

161163
#### Flat-file installation
162164

@@ -183,7 +185,7 @@ To install from previously built Debian packages (`.deb` files):
183185

184186
This installs the `.deb` artifacts produced earlier via `--include-bindeb-pkg`, expecting files such as `linux-image-*` and `linux-headers-*` to exist in the source directory.
185187

186-
### What you've accomplished and what's next
188+
## What you've accomplished and what's next
187189

188190
In this section, you've learned how to:
189191
- Build standard Linux kernels for Arm instances

content/learning-paths/servers-and-cloud-computing/kernel-build/how-to-3.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ weight: 4
55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
8+
## What is Fastpath mode?
89

910
Fastpath builds use the same TuxMake pipelines but add a configuration fragment that exposes the interfaces needed by the Fastpath testing framework. This includes extra headers, Linux Perf for performance profiling, and Docker so Fastpath can control and automate testing.
1011

@@ -13,9 +14,9 @@ Fastpath builds use the same TuxMake pipelines but add a configuration fragment
1314
Fastpath workflows are build-only: don't combine `--fastpath true` (or the demo shortcut) with `--kernel-install` or any `--install-from` commands.
1415

1516
The proper workflow is:
16-
1. Build the kernel with Fastpath configuration enabled
17-
2. Copy the flat artifacts (`Image.gz`, `modules.tar.xz`, and `config`) to the Fastpath host
18-
3. Let the Fastpath tooling handle deployment to the SUT (System Under Test)
17+
- Build the kernel with Fastpath configuration enabled
18+
- Copy the flat artifacts (`Image.gz`, `modules.tar.xz`, and `config`) to the Fastpath host
19+
- Let the Fastpath tooling handle deployment to the SUT (System Under Test)
1920

2021
### Install Docker for Fastpath
2122

0 commit comments

Comments
 (0)