mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-11-05 11:31:14 +00:00
6835dfa5e9
Signed-off-by: Henry Wang <Henry.Wang@arm.com>
87 lines
3.0 KiB
Markdown
87 lines
3.0 KiB
Markdown
- [Building Cloud Hypervisor](#building-cloud-hypervisor)
|
|
- [Preparation](#preparation)
|
|
- [Install prerequisites](#install-prerequisites)
|
|
- [Clone and build](#clone-and-build)
|
|
- [Containerized builds and tests](#containerized-builds-and-tests)
|
|
|
|
# Building Cloud Hypervisor
|
|
|
|
We recommend users use the pre-built binaries that are mentioned in the README.md file in the root of the repository. Building from source is only necessary if you wish to make modifications.
|
|
|
|
## Preparation
|
|
|
|
We create a folder to build and run `cloud-hypervisor` at `$HOME/cloud-hypervisor`
|
|
|
|
```shell
|
|
$ export CLOUDH=$HOME/cloud-hypervisor
|
|
$ mkdir $CLOUDH
|
|
```
|
|
|
|
## Install prerequisites
|
|
|
|
You need to install some prerequisite packages in order to build and test Cloud
|
|
Hypervisor. Here, all the steps are based on Ubuntu, for other Linux
|
|
distributions please replace the package manager and package name.
|
|
|
|
```shell
|
|
# Install basic packages needed. For a package list targeting for more
|
|
# functionalities for example the test, please see resources/Dockerfile.
|
|
$ sudo apt-get update
|
|
$ sudo apt install git build-essential m4 bison flex uuid-dev qemu-utils
|
|
# Install rust tool chain
|
|
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
|
# If you want to build statically linked binary please add musl target
|
|
$ rustup target add x86_64-unknown-linux-musl # x86-64
|
|
$ rustup target add aarch64-unknown-linux-musl # AArch64
|
|
```
|
|
|
|
## Clone and build
|
|
|
|
First you need to clone and build the Cloud Hypervisor repository:
|
|
|
|
```shell
|
|
$ pushd $CLOUDH
|
|
$ git clone https://github.com/cloud-hypervisor/cloud-hypervisor.git
|
|
$ cd cloud-hypervisor
|
|
$ cargo build --release
|
|
|
|
# We need to give the cloud-hypervisor binary the NET_ADMIN capabilities for it to set TAP interfaces up on the host.
|
|
$ sudo setcap cap_net_admin+ep ./target/release/cloud-hypervisor
|
|
|
|
# If you want to build statically linked binary
|
|
$ cargo build --release --target=x86_64-unknown-linux-musl --all # x86-64
|
|
$ cargo build --release --target=aarch64-unknown-linux-musl --all # AArch64
|
|
$ popd
|
|
```
|
|
|
|
This will build a `cloud-hypervisor` binary under
|
|
`$CLOUDH/cloud-hypervisor/target/release/cloud-hypervisor`.
|
|
|
|
### Containerized builds and tests
|
|
|
|
If you want to build and test Cloud Hypervisor without having to install all the
|
|
required dependencies (The rust toolchain, cargo tools, etc), you can also use
|
|
Cloud Hypervisor's development script: `dev_cli.sh`. Please note that upon its
|
|
first invocation, this script will pull a fairly large container image.
|
|
|
|
For example, to build the Cloud Hypervisor release binary:
|
|
|
|
```shell
|
|
$ pushd $CLOUDH
|
|
$ cd cloud-hypervisor
|
|
$ ./scripts/dev_cli.sh build --release
|
|
```
|
|
|
|
With `dev_cli.sh`, one can also run the Cloud Hypervisor CI locally. This can be
|
|
very convenient for debugging CI errors without having to fully rely on the
|
|
Cloud Hypervisor CI infrastructure.
|
|
|
|
For example, to run the Cloud Hypervisor unit tests:
|
|
|
|
```shell
|
|
$ ./scripts/dev_cli.sh tests --unit
|
|
```
|
|
|
|
Run the `./scripts/dev_cli.sh --help` command to view all the supported
|
|
development script commands and their related options.
|