sonic-buildimage

编译SONiC交换机镜像
描述

以下是关于如何为网络交换机构建(ONIE)兼容网络操作系统(NOS)安装程序镜像的说明,以及如何构建在NOS内运行的Docker镜像。请注意,SONiC镜像是根据每个ASIC平台来构建的。使用相同ASIC平台的交换机共享一个通用镜像。有关支持的交换机和ASIC的列表,请参阅此列表。

硬件

任何服务器都可作为构建映像的服务器。我们使用的服务器带有1T容量的硬盘。操作系统是Ubuntu 16.04。

先决条件
SAI 版本

请参考 SONiC 路线图 中关于每个SONiC版本所对应的SAI版本信息. SAI全称 Switch Abstraction Interface,交换机抽象接口。

克隆或者获取带有所有git子模块的代码库
为了递归克隆代码仓库,假设Git版本为1.9或更高版本:

git clone https://github.com/Azure/sonic-buildimage.git

用法
要构建SONiC安装程序镜像和Docker镜像,请运行以下命令:

# 确保你的开发系统上加载 'overlay' 模块
sudo modprobe overlay# 进入源码目录
cd sonic-buildimage# (可选的) 获取特定分支。默认情况下,使用主分支
git checkout [branch_name]# 克隆仓库后执行make init一次,亦或取得带有子模块更新的远程仓库后也要执行一次
make init# 执行make configure一次以配置ASIC
make configure PLATFORM=[ASIC_VENDOR]# 构建SONiC镜像
make all

注意:

建议预留50G的可用空间以构建一个平台镜像.

如果Docker的工作目录 /var/lib/docker,位于没有足够可用空间的分区上,你可能会在Docker容器生成作业期间遇到如下错误:

/usr/bin/tar: /path/to/sonic-buildimage/<some_file>: Cannot write: No space left on device

解决方案是 移动目录 到由充足空闲空间的分区.

export http_proxy="http://XXXX:6080"

export https_proxy="http://XXXX:6080"

在编译过程中,使用随后的命令开启Http(s)代理:http_proxy=[your_proxy] https_proxy=[your_proxy] make

将你的用户账号添加到 docker 组中,并使用此账号编译. 不支持 root 或者 sudo 命令.

SONiC安装程序包含需要的所有Docker镜像。SONiC对同一ASIC供应商的所有设备使用同一个镜像。支持的ASIC供应商包括:

PLATFORM=broadcom
PLATFORM=marvell
PLATFORM=mellanox
PLATFORM=cavium
PLATFORM=centec
PLATFORM=nephos
PLATFORM=p4
PLATFORM=vs
对于 Broadcom 公司的 ASIC平台硬件, 我们构建 ONIE 和 EOS 两个镜像.

Arista公司的硬件使用 EOS 镜像, ONIE 镜像用于所有其它基于Broadcom公司 ASIC 硬件的设备.

make configure PLATFORM=broadcom
# 构建 Debian stretch 所需目标
BLDENV=stretch make stretch
# 构建 ONIE 镜像
make target/sonic-broadcom.bin
# 构建 EOS 镜像
make target/sonic-aboot-broadcom.swi

你可能会发现规则/配置文件很有用。它们包含构建过程的配置选项,诸如添加更多详细信息或显示基础镜像的依赖关系、用户名和密码等.

每个Docker镜像构建,保存到 target/ 目录. 所以,举例,仅构建docker-database,执行以下命令:

make target/docker-database.gz

同样的对于Debian 软件包, 保存于 target/debs/ 目录:

make target/debs/swss_1.0.0_amd64.deb

每个目标都有相应的clean清空目标,所以,要清空SWSS,执行以下命令:

make target/debs/swss_1.0.0_amd64.deb-clean

建议使用clean目标来清空所有一并构建的软件包,例如dev软件包。为了更熟悉构建过程并对其进行一些更改,建议阅读此简短的文档.

注意:
如果你是第一次运行make,则会自动生成以 sonic-slave-${USER} 命名的Docker镜像。这可能需要一段时间,但这是一次性操作,所以请耐心等待。

根root用户账号已禁用. 尽管如此,新创建的用户可使用 sudo 命令.

目标目录是./target,包含NOS安装程序镜像和docker镜像.

sonic-generic.bin: SONiC 交换机安装程序镜像 (ONIE compatible)
sonic-aboot.bin: SONiC 交换机安装程序镜像 (Aboot compatible)
docker-base.gz: 用于其它Docker镜像构建的基础Docker镜像,仅用于构建过程 (gzip tar archive)
docker-database.gz: 用于内存中键值对存储的Docker镜像,用作进程间通信 (gzip tar archive)
docker-fpm.gz: 启用FPM模块的Quagga路由软件包Docker镜像 (gzip tar archive)
docker-orchagent-brcm.gz: Broadcom平台上用作交换机状态服务(SWSS)的Docker镜像 (gzip tar archive)
docker-orchagent-cavm.gz: Cavium平台上用作交换机状态服务(SWSS)的Docker镜像 (gzip tar archive)
docker-orchagent-mlnx.gz: Mellanox平台上用作交换机状态服务(SWSS)的Docker镜像 (gzip tar archive)
docker-orchagent-nephos.gz: Nephos平台上用作交换机状态服务(SWSS)的Docker镜像 (gzip tar archive)
docker-syncd-brcm.gz: 用于守护进程同步数据库和Broadcom交换ASIC的Docker镜像 (gzip tar archive)
docker-syncd-cavm.gz: 用于守护进程同步数据库和Cavium交换ASIC的Docker镜像 (gzip tar archive)
docker-syncd-mlnx.gz: 用于守护进程同步数据库和Mellanox交换ASIC的Docker镜像 (gzip tar archive)
docker-syncd-nephos.gz: 用于守护进程同步数据库和Nephos交换ASIC的Docker镜像 (gzip tar archive)
docker-sonic-p4.gz: 用于P4软件交换机的综合Docker镜像 (gzip tar archive)
docker-sonic-vs.gz: 用于软件虚拟交换机的综合Docker镜像 (gzip tar archive)

贡献指南
贡献被接受之前,所有贡献者必须签署贡献许可协议。联系 sonic-cla-agreements@microsoft.com.

编译SONiC交换机镜像(转,参考2)相关推荐

  1. zabbix华为交换机模板_【教程】思科交换机镜像端口配置实例

    关注我,你的眼睛会怀孕 镜像口就是把思科交换机上的其他口的数据流量全部转到一个口或者两个口上,通常被用作排查问题或者获取数据流量.下面简单介绍下怎么配置源目的镜像口吧. 1.使用telnet或者ssh ...

  2. 常用品牌交换机镜像抓包配置

    华为交换机镜像配置观察口配置: <huawei-switch>system-view [huawei-switch]observe-port 1 interface GigabitEthe ...

  3. Docker - 编译安装nginx镜像

    目录 知识点1:制作镜像的常用指令 RUN和CMD/ENTRYPOINT的区别 首先需要一个安装nginx的脚本 制作Dockerfile 开始制作镜像 查看镜像是否制作成功 启动一个容器来测试镜像 ...

  4. H3C交换机镜像的几种方法

    H3C交换机镜像的几种方法 基于端口镜像: [H3C]mirroring-group 1 local      #创建镜像组编号 [H3C]mirroring-group 1 monitor-port ...

  5. Android内核开发:系统编译输出的镜像文件

    本文是<Android内核开发>的第四篇文章,主要介绍一下源码编译输出的几个重要的镜像文件,这里把bootloader源码和Linux内核源码的编译输出也算在其中,因为毕竟Android系 ...

  6. 配置树莓派linux的内核和编译并将镜像拷贝至树莓派

    驱动代码的编写需要一个提前编译好的内核,编译内核就必须配置,配置的最终目标会生成.config文件,该文件指导makefile去把有用的东西组织成内核. 如何生成.config文件: 第一种方式: 厂 ...

  7. android 编译完后镜像在哪个文件夹,Android源码编译后

    在out/target/product/generic下生成的三个镜像文件:ramdisk.img,system.img,userdata.img以及它们对应的目录树root,system,data. ...

  8. android内核编译教程,Android内核开发:系统编译输出的镜像文件

    主要介绍一下源码编译输出的几个重要的镜像文件,这里把bootloader源码和Linux内核源码的编译输出也算在其中,因为毕竟Android系统缺少了这两个部分在设备上也是跑不起来的. 1. MLO, ...

  9. Qt编译PX4源码,参考如下进行配置

    参考链接: https://blog.csdn.net/qq_38768959/article/details/106822491 如单独打开一个的话可以选择打开仿真编译套件,如需下载则选择下载套件!

  10. 博达交换机镜像端口配置_“量身定制”的轨道交通工业以太网交换机,RT FORUM2019春季大会智慧解决方案12...

    工业以太网交换机(Industrial etherent switch)是满足工业现场需要,技术上与商业以太网交换机兼容,而实时通讯.可靠性.稳定性.安全性.环境适应性等各方面要求高于商业以太网交换机 ...

最新文章

  1. ashx文件和HttpHandler
  2. 福利 | 50张第四届UBDC全域大数据峰会赠票大放送!
  3. 不同路径 II-dp
  4. css随堂笔记(一)
  5. 在VS中怎么用vb画矩形_(十四)矩形和操作展示逻辑操作
  6. docker(二)基本操作
  7. (转)人工智能无处不在,这次是有公司用它来炒股
  8. Swift - URL转码解码
  9. android微信支付指纹支付密码错误,安卓微信支付怎么设置指纹锁
  10. 创建github或者gitee(国内版github)账户
  11. HTML播放器快进不显示进度条,MediaSource播放视频,快进(直接点击进度条)的时候怎么知道range范围呢...
  12. android 微信架构,微信App支付技术架构全解析
  13. 计算机无法检测到键盘,电脑无法识别键盘
  14. 干货 | 手把手教你搭建一套OpenStack云平台
  15. 网络推广和网络营销的区别
  16. mplayer 视频播放器_如何全屏播放视频并使它与MPlayer循环播放?
  17. Python+pytest+requests 自动化测试框架
  18. mysql 拼音排序_MySQL按常规排序、自定义排序和按中文拼音字母排序的方法
  19. informatica客户端连接报错pcsf_46008
  20. 宽动态范围的高端电流 检测:三种解决方案

热门文章

  1. 浅谈FMA与SMA(test)
  2. JavaSE--异常信息打印
  3. idea安装Scala插件
  4. angular 倒计时
  5. 无法验证的代码未能通过策略检查
  6. java生成随机验证图片的实现
  7. c# Excel的操作
  8. azkaban的最简版搭建
  9. Web API 处理机制剖析 --- 拨开迷雾看本质
  10. Tomcat6升级到Tomcat9