sonic-buildimage/README.md

103 lines
5.3 KiB
Markdown
Raw Normal View History

2016-11-16 20:40:19 -06:00
Mellanox[![Mellanox](https://sonic-jenkins.westus.cloudapp.azure.com/job/mellanox/job/buildimage-mlnx-all/badge/icon)](https://sonic-jenkins.westus.cloudapp.azure.com/job/mellanox/job/buildimage-mlnx-all)
2016-08-04 12:39:33 -05:00
# Build SONiC Switch Images - buildimage
2016-03-08 13:42:20 -06:00
# Description
Build an [Open Network Install Environment (ONIE)](https://github.com/opencomputeproject/onie) compatiable network operating system (NOS) installer image for network switches, and also build docker images running inside the NOS.
2016-03-22 23:23:05 -05:00
# Prerequisite
## 1. Build environment
Build a docker image by [the Dockerfile](https://github.com/Azure/sonic-build-tools/blob/master/sonic-slave/Dockerfile) and build all remains in the docker container.
git clone https://github.com/Azure/sonic-build-tools
cd sonic-build-tools
./build.sh sonic-slave
docker run -v /var/run/docker.sock:/var/run/docker.sock -it --privileged local/sonic-slave bash
You can also download sonic-slave docker from sonicdev docker registry using following command:
docker login -u 1dafc8d7-d19c-4f58-8653-e8d904f30dab -p sonic sonicdev-microsoft.azurecr.io:443
docker pull sonicdev-microsoft.azurecr.io:443/sonic-slave
docker run -v /var/run/docker.sock:/var/run/docker.sock -it --privileged sonicdev-microsoft.azurecr.io:443/sonic-slave bash
Note that all the below steps should be executed in the docker container, not in the host machine.
## 2. Clone or fetch the code repository with all git submodules
2016-08-04 12:39:33 -05:00
To clone the code repository recursively, assuming git version 1.9 or newer
2016-03-22 23:23:05 -05:00
2016-08-04 12:39:33 -05:00
git clone --recursive https://github.com/Azure/sonic-buildimage.git
2016-03-22 23:23:05 -05:00
2016-08-04 12:39:33 -05:00
If it is already cloned, however there is no files under ./dockers/docker-base/ or ./src/sonic-linux-kernel/, manually fetch all the git submodules.
git submodule update --init --recursive
2016-03-22 23:23:05 -05:00
2016-08-05 13:27:03 -05:00
## 3. Get vendor SAI SDK
Obtain Switch Abstraction Interface (SAI) SDK from one of supported vendors (see the list in [Usage](#usage) Section), and place it in the directory ./src/[VENDOR]-sdk/ as filelist.txt in that directory. Skip this step for p4 since it is an open source software switch.
2016-08-05 13:27:03 -05:00
2016-03-08 13:42:20 -06:00
# Usage
2016-08-05 13:27:03 -05:00
To build NOS installer image and docker images, run command line
2016-03-08 13:42:20 -06:00
2016-08-04 12:39:33 -05:00
make [VENDOR]-all USERNAME=[USERNAME] PASSWORD_ENCRYPTED=[PASSWORD_ENCRYPTED]
2016-03-08 13:42:20 -06:00
2016-08-05 13:27:03 -05:00
Supported VENDORs are:
2016-08-04 12:39:33 -05:00
- brcm: Broadcom
- mlnx: Mellanox
- cavm: Cavium
- p4: barefoot
2016-03-08 13:42:20 -06:00
2016-08-04 12:39:33 -05:00
For example, the user name is 'admin' and the password is 'YourPaSsWoRd'. To build all the images for Broadcom platform, use the command:
2016-03-08 13:42:20 -06:00
2016-08-04 12:39:33 -05:00
make brcm-all USERNAME="admin" PASSWORD_ENCRYPTED="$(perl -e 'print crypt("YourPaSsWoRd", "salt"),"\n"')"
2016-03-08 13:42:20 -06:00
2016-08-04 12:39:33 -05:00
The root is disabled, but the created user could sudo.
2016-03-08 13:42:20 -06:00
2016-08-04 12:39:33 -05:00
The target directory is ./target, containing the NOS installer image and docker images.
- sonic-generic.bin: SONiC switch installer image (ONIE compatiable)
2016-09-16 19:00:37 -05:00
- sonic-aboot.bin: SONiC switch installer image (Aboot compatiable)
- docker-base.gz: base docker image where other docker images are built from, only used in build process (gzip tar archive)
- docker-database.gz: docker image for in-memory key-value store, used as inter-process communication (gzip tar archive)
2016-08-04 12:39:33 -05:00
- docker-fpm.gz: docker image for quagga with fpm module enabled (gzip tar archive)
2016-09-16 19:00:37 -05:00
- docker-orchagent.gz: docker image for SWitch State Service (SWSS) (gzip tar archive)
- docker-syncd.gz: docker image for the daemon to sync database and Broadcom switch ASIC (gzip tar archive)
- docker-syncd-mlnx.gz: docker image for the daemon to sync database and Mellanox switch ASIC (gzip tar archive)
- docker-sonic-p4.gz: docker image for all-in-one for p4 software switch (gzip tar archive)
2016-03-08 13:42:20 -06:00
# Contribution guide
2016-08-08 12:38:36 -05:00
All contributors must sign a contribution license agreement before contributions can be accepted. Contact sonic-cla-agreements@microsoft.com.
2016-03-08 13:42:20 -06:00
### GitHub Workflow
We're following basic GitHub Flow. If you have no idea what we're talking about, check out [GitHub's official guide](https://guides.github.com/introduction/flow/). Note that merge is only performed by the repository maintainer.
Guide for performing commits:
* Isolate each commit to one component/bugfix/issue/feature
* Use a standard commit message format:
> [component/folder touched]: Description intent of your changes
>
> [List of changes]
>
> Signed-off-by: Your Name your@email.com
For example:
> swss-common: Stabilize the ConsumerTable
>
> * Fixing autoreconf
> * Fixing unit-tests by adding checkers and initialize the DB before start
> * Adding the ability to select from multiple channels
> * Health-Monitor - The idea of the patch is that if something went wrong with the notification channel,
> we will have the option to know about it (Query the LLEN table length).
>
> Signed-off-by: user@dev.null
* Each developer should fork this repository and [add the team as a Contributor](https://help.github.com/articles/adding-collaborators-to-a-personal-repository)
* Push your changes to your private fork and do "pull-request" to this repository
* Use a pull request to do code review
* Use issues to keep track of what is going on
2016-06-21 14:14:24 -05:00
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.