Commit 8835296f authored by Robert Schmidt's avatar Robert Schmidt

Update README in top-level and docker folder

parent 1576f353
...@@ -36,11 +36,20 @@ Please see [NOTICE](NOTICE.md) file for third party software that is included in ...@@ -36,11 +36,20 @@ Please see [NOTICE](NOTICE.md) file for third party software that is included in
* [How to build](./doc/BUILD.md) * [How to build](./doc/BUILD.md)
* [How to run the modems](./doc/RUNMODEM.md) * [How to run the modems](./doc/RUNMODEM.md)
More information and documentation can be found in the [doc folder](./doc).
Unfortunately, not all information is available there, and information for
specific sub-systems might be available in the corresponding sub-directories.
To find all READMEs, this command might be handy:
```
find . -iname "readme*"
```
# RAN repository structure # # RAN repository structure #
The OpenAirInterface (OAI) software is composed of the following parts: The OpenAirInterface (OAI) software is composed of the following parts:
<pre> ```
openairinterface5g openairinterface5g
├── ci-scripts : Meta-scripts used by the OSA CI process. Contains also configuration files used day-to-day by CI. ├── ci-scripts : Meta-scripts used by the OSA CI process. Contains also configuration files used day-to-day by CI.
├── cmake_targets : Build utilities to compile (simulation, emulation and real-time platforms), and generated build files. ├── cmake_targets : Build utilities to compile (simulation, emulation and real-time platforms), and generated build files.
...@@ -88,5 +97,6 @@ openairinterface5g ...@@ -88,5 +97,6 @@ openairinterface5g
│   ├── TEST │   ├── TEST
│   ├── UDP │   ├── UDP
│   └── UTILS │   └── UTILS
├── radio : drivers for various radios such as USRP, AW2S, RFsim, ...
└── targets : Top-level wrappers for unitary simulation for PHY channels, system-level emulation (eNB-UE with and without S1), and realtime eNB and UE and RRH GW. └── targets : Top-level wrappers for unitary simulation for PHY channels, system-level emulation (eNB-UE with and without S1), and realtime eNB and UE and RRH GW.
</pre> ```
...@@ -30,52 +30,54 @@ For all platforms, the strategy for building docker/podman images is the same: ...@@ -30,52 +30,54 @@ For all platforms, the strategy for building docker/podman images is the same:
* all packages, compilers, ... * all packages, compilers, ...
* especially UHD is installed * especially UHD is installed
* Then, from the `ran-base` shared image, we create a shared image `ran-build` * Then, from the `ran-base` shared image, we create a shared image `ran-build`
in which all targets are compiled: into which all targets are compiled.
* Then from the `ran-build` shared image, we can build target images for:
- eNB - eNB
- gNB - gNB (with UHD)
- gNB (with AW2S), only on RHEL8
- lte-UE - lte-UE
- nr-UE - nr-UE
* Then from the `ran-build` shared image we can build target images for:
- eNB These target images will only contain:
- gNB
- lte-UE
- nr-UE
* These target images will only contain:
- the generated executable (for example `lte-softmodem`) - the generated executable (for example `lte-softmodem`)
- the generated shared libraries (for example `liboai_usrpdevif.so`) - the generated shared libraries (for example `liboai_usrpdevif.so`)
- the needed libraries and packages to run these generated binaries - the needed libraries and packages to run these generated binaries
- Some configuration file templates - Some configuration file templates
- Some tools (such as `ping`, `ifconfig`) - Some tools (such as `ping`, `ifconfig`)
TO DO: Note that on every push to develop (i.e., typically after integrating merge
requests), we build all images and push them to [Docker
- Proper entrypoints Hub](https://hub.docker.com/u/oaisoftwarealliance). To pull them, do
- Proper port exposure ```
- ... docker pull oaisoftwarealliance/oai-gnb:develop
docker pull oaisoftwarealliance/oai-nr-ue:develop
docker pull oaisoftwarealliance/oai-enb:develop
docker pull oaisoftwarealliance/oai-lte-ue:develop
```
Have a look at [this
README](../ci-scripts/yaml_files/5g_rfsimulator/README.md) to get some
information on how to use the images.
# 2. File organization # # 2. File organization #
Dockerfiles are named with the following naming convention: `Dockerfile.${target}.${OS-version}.${cluster-version}` Dockerfiles are named with the following naming convention: `Dockerfile.${target}.${OS-version}`
Targets can be: Targets can be:
- `base` for an image named `ran-base` (shared image) - `base` for an image named `ran-base` (shared image)
- `ran` for an image named `ran-build` (shared image) - `build` for an image named `ran-build` (shared image)
- `eNB` for an image named `oai-enb` - `eNB` for an image named `oai-enb`
- `gNB` for an image named `oai-gnb` - `gNB` for an image named `oai-gnb`
- `gNB.aw2s` for an image named `oai-gnb-aw2s`
- `lteUE` for an image named `oai-lte-ue` - `lteUE` for an image named `oai-lte-ue`
- `nrUE` for an image named `oai-nr-ue` - `nrUE` for an image named `oai-nr-ue`
The currently-supported OS are: The currently-supported OS are:
- `rhel8.2` for Red Hat Entreprise Linux - `rhel8.2` for Red Hat Entreprise Linux (including images for an OpenShift cluster)
- `ubuntu18` for Ubuntu 18.04 LTS - `ubuntu18` for Ubuntu 18.04 LTS
The currently-supported cluster version is: For more details regarding the build on an Openshift Cluster, see [OpenShift README](../openshift/README.md).
- `rhel8.2.oc4-9`
For more details in build within a Openshift Cluster, see [OpenShift README](../openshift/README.md) for more details.
# 3. Building using `docker` under Ubuntu 18.04 # # 3. Building using `docker` under Ubuntu 18.04 #
...@@ -87,26 +89,12 @@ For more details in build within a Openshift Cluster, see [OpenShift README](../ ...@@ -87,26 +89,12 @@ For more details in build within a Openshift Cluster, see [OpenShift README](../
## 3.2. Building the shared images ## ## 3.2. Building the shared images ##
Note: This can be done starting `2020.XX` tag on the `develop` branch, or any branch that includes that tag.
There are two shared images: one that has all dependencies, and a second that compiles all targets (eNB, gNB, [nr]UE). There are two shared images: one that has all dependencies, and a second that compiles all targets (eNB, gNB, [nr]UE).
```bash ```bash
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
cd openairinterface5g cd openairinterface5g
git checkout develop git checkout develop
```
In our Eurecom/OSA environment we need to pass a GIT proxy.
```bash
docker build --target ran-base --tag ran-base:latest --file docker/Dockerfile.base.ubuntu18 --build-arg NEEDED_GIT_PROXY="http://proxy.eurecom.fr:8080" .
docker build --target ran-build --tag ran-build:latest --file docker/Dockerfile.build.ubuntu18 --build-arg NEEDED_GIT_PROXY="http://proxy.eurecom.fr:8080" .
```
if you don't need it, do NOT pass any value:
```bash
docker build --target ran-base --tag ran-base:latest --file docker/Dockerfile.base.ubuntu18 . docker build --target ran-base --tag ran-base:latest --file docker/Dockerfile.base.ubuntu18 .
docker build --target ran-build --tag ran-build:latest --file docker/Dockerfile.build.ubuntu18 . docker build --target ran-build --tag ran-build:latest --file docker/Dockerfile.build.ubuntu18 .
``` ```
...@@ -149,11 +137,24 @@ docker image prune --force ...@@ -149,11 +137,24 @@ docker image prune --force
# 4. Building using `podman` under Red Hat Entreprise Linux 8.2 # # 4. Building using `podman` under Red Hat Entreprise Linux 8.2 #
TODO. Analogous to the above steps:
```
sudo podman build --target ran-base --tag ran-base:latest --file docker/Dockerfile.base.rhel8.2 .
sudo podman build --target ran-build --tag ran-build:latest --file docker/Dockerfile.build.rhel8.2 .
sudo podman build --target oai-enb --tag oai-enb:latest --file docker/Dockerfile.eNB.rhel8.2 .
```
# 5. Running modems using `docker` under Ubuntu 18.04 # # 5. Running modems using `docker` under Ubuntu 18.04 #
TODO. The easiest is to run them from a `docker-compose` file, which is used by the
CI to test OAI. Some folders under `ci-scripts/yaml_files` have a README that
you can follow. For 5G, the easiest is to start with the RFsimulator, as
described in [this README](../ci-scripts/yaml_files/5g_rfsimulator/README.md)
(you would of course use your own images instead of downloading them from
Docker hub).
For an example using a B210, please refer to [this `docker-compose`
file](../ci-scripts/yaml_files/sa_b200_gnb/docker-compose.yml).
# 6. Running modems using `podman` under Red Hat Entreprise Linux 8.2 # # 6. Running modems using `podman` under Red Hat Entreprise Linux 8.2 #
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment