# Build embedded Linux applications on an Arm server

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/rpi-mxnet/)
- [Install a Raspberry Pi OS file system](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/rpi-mxnet/setup/)
- [Build MXNet](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/rpi-mxnet/build/)
- [Install on Raspberry Pi](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/rpi-mxnet/deploy/)
- [Next Steps](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/rpi-mxnet/_next-steps/)

## About this Learning Path

| Skill level:      | Advanced             |
|-------------------|----------------------|
| Reading time:     | 1 hr 30 min          |
| Last updated:     | 14 Aug 2026          |

| Author:                    | Jason Andrews, Arm [GitHub](https://github.com/jasonrandrews) [LinkedIn](https://linkedin.com/in/jason-andrews-7b05a8) |
|----------------------------|----------------------------------------------------------------------------------------------------------------------------------|
| Arm IP:                    | [Neoverse](https://support.arm.com/?tab=compute-ip&Product%20Type=Infrastructure%20Processors) [Cortex-A](https://support.arm.com/?tab=compute-ip&Product%20Type=Application%20Processors) |
| Tags:                      | [Containers and Virtualization](/tag/containers-and-virtualization) [Linux](/tag/linux) [Raspberry Pi](/tag/raspberry-pi) [MXNet](/tag/mxnet) |

### Who is this for?
This is an advanced topic for software developers who want to reduce compile time for embedded Linux software projects.

### What will you learn?
Upon completion of this Learning Path, you will be able to:

- Install a Raspberry Pi OS file system on an Arm server
- Reduce compile time for a Linux application, the MXNet machine learning framework
- Transfer the compiled MXNet application to a Raspberry Pi and test it
- Utilize an Arm server to reduce compile time for your own embedded Linux projects

### Prerequisites
Before starting, you will need the following:

- An Arm computer running Linux. Cloud instances can be used, refer to the list of [Arm cloud service providers](/learning-paths/servers-and-cloud-computing/csp/).
- A Raspberry Pi 3 or 4 board

### Summary
You’ll use an Arm Linux server to build MXNet in a Raspberry Pi OS file system before deploying it to a Raspberry Pi. First, you’ll install build dependencies, switch to the `pi` user, and compile MXNet inside the target file system. Then, you’ll retrieve the updated image, write it to an SD card, and start it on a Raspberry Pi 3 or 4.

### Frequently asked questions
<details>
<summary>How do I know I’m working inside the Raspberry Pi OS file system before building?</summary>
You should have a root (#) prompt within the Raspberry Pi OS environment and be able to switch to the `pi` user.
</details>

<details>
<summary>Which user should I use to build MXNet?</summary>
Switch from root to the `pi` user before building. Run `su pi` and work from the `pi` user’s home directory.
</details>

<details>
<summary>What packages do I need to install before cloning and building MXNet?</summary>
Install `git`, `cmake`, `ninja-build`, `gfortran`, `lapack/blas`, OpenCV, OpenBLAS, `python3-dev`, `python3-pip`, `python-dev`, and `virtualenv` with `apt`. Then, install Cython with `pip3`.
</details>

<details>
<summary>Which file should I copy from the server to write to the SD card?</summary>
Copy the Raspberry Pi OS image you built on the server with `scp` using your server’s IP address and SSH key.
</details>

<details>
<summary>Can I complete this Learning Path without a physical Raspberry Pi?</summary>
Yes. The Raspberry Pi deployment step is optional, so you can stop after producing the Raspberry Pi OS image.
</details>
