编译SONiC交换机镜像(转,参考2)

2023-05-16

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.
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编译SONiC交换机镜像(转,参考2) 的相关文章

  • SONIC+P4

    SONIC简介 背景 微软于2015年先后发表了SAI和SONIC SONIC产业日益繁荣 xff0c 已超过六十家 创新 SONiC使用了大量现有的开源技术 xff1a Docker Redis Quagga和LLDPD以及自动化配置工具
  • SONiC+P4实践——P4Runtime下发ACL表项

    转载请表明出处 注 xff1a SONiC系统为vs版本 Part1 xff1a 实现外部宿主机与SONiC的网络连通 步骤 1 xff1a 打开一个ubuntu系统安装kvm及其依赖 xff08 1 xff09 查看CPU是否支持虚拟化
  • SONiC中的config文件夹中的__init__.py文件和main.py文件,这两个文件的作用分别是什么...

    在SONiC中 xff0c config文件夹中的 init py文件和main py文件分别有以下作用 xff1a init py文件 xff1a 这个文件是一个Python包的初始化文件 xff0c 它的主要作用是定义这个包的结构和内容
  • SONiC中的SAI接口使用方法和原理

    SONiC是一款开源网络操作系统 xff0c SAI Switch Abstraction Interface 接口是用于与硬件交互的接口 SAI接口定义了硬件平台必须实现的功能 xff0c 使得软件能够与硬件无缝衔接 SAI接口使用方法如
  • Sonic测试架构介绍

    Sonic项目简介 Sonic Software for Open Networking in the CloudSonic是基于Linux的开源网络操作系统 xff0c 可以跑在多个不同芯片厂商交换机上Sonic在2016年OCP峰会上
  • SONIC config_db.json文件的前生今世

    config db json的使用 系统启动时从config db json中读取数据并写入CONFIG DB数据库 xff0c 前提是config db json存在 xff1b 保存当前系统的一些配置信息 xff0c 通过config
  • sonic处理netlink事件

    sonic处理netlink事件 sonic在处理路由 xff0c 接口up down 接口地址变化 xff0c team等事件上极大的依赖内核 sonic通过监听rtnl事件来响应linux事件 从而感知相关信息变化 libnl soni
  • sonic配置team与实现机制

    sonic实现team代码框架图 xff1a sonic修改lag模式配置步骤 1 修改文件teamd j2 docker exec it teamd bash cd usr share sonic templates vim teamd
  • SONIC VLAN配置流程

    SONIC VLAN配置流程 sonic vlan配置通过订阅config db的键空间事件完成vlan配置信息从config db到内核和硬件 config db json格式如下 xff1a 34 VLAN 34 34 Vlan1000
  • 2020年12月30日 当SONiC遇到P4

    当SONiC遇到P4 SONiC P4 是SONiC中运行的P4虚拟交换机 xff0c 当前的SONiC P4是一个docker image xff0c 可以运行在任意的docker环境中 看看SONiC和P4能碰撞出什么火花 SONiC的
  • 2021-02-06 SONiC SAI结构 Adapter&Adapter Host

    SONiC SAI SAI 结构 SAI是SONiC系统最精华的部分 xff0c SAI spec对SAI如何定义的以及SAI如何被SONiC系统初始化和调用有一些具体的介绍 首先还是一个High Level Design的图 xff1a
  • 2021-02-07 SONiC SAI结构2 1D Bridge

    SONiC SAI结构2 1D Bridge 以太网交换流水线结构 SONiC SAI对交换机 路由器的报文处理流程建立了标准化的行为模型 即使不同的交换芯片内部实现报文处理的方式各不相同 xff0c 由于行为模型是报文处理过程的抽象描述
  • 2021-04-26 SONiC: 转发和管理平面接口SAI模型

    2021 04 26 SONiC 转发和管理平面接口SAI模型 SAI模型中转发平面和管理平面接口 转发平面和管理平面之间的接口是控制报文从转发平面传递到控制平面CPU处理的接口 对于各种类型的交换机而言 xff0c 大量不同种类的控制报文
  • 2021-06-25 SONiC 系统BGP配置命令

    2021 06 25 SONiC 系统BGP配置命令 SONiC系统BGP配置 SONiC系统所默认包含的BGP模块在201811版的SONiC之前是开源的Quagga软件 xff0c 之后改成了更流行的FRR FRR中的Show命令是以
  • 2021年8月14日 七夕节的相遇 SONiC+P4实现

    2021年8月14日 七夕节的相遇 SONiC 43 P4实现 ONF启动了PINS项目 xff0c P4 integrated network stack
  • 2021-08-29 SONiC中基于策略的哈希配置

    SONiC中基于策略的哈希配置 SONiC可以支持对不同类型的报文采取不同的Hash算法 对于多通道 多链路连接的情况 xff0c 如LAG和ECMP的接口上 xff0c 交换机和路由器采用Hash算法对报文中指定的字段进行Hash计算 x
  • 2021-09-19 当SONiC遇到P4之二

    当SONiC遇到P4之二 P4描述SAI 在当SONiC遇到P4中介绍了用P4来实现SAI Model的方式 xff0c 这种方式利用了P4数据平面编程的功能实现了SAI模型 xff0c 将P4和SONiC这两个分别位于网络数据平面和控制平
  • sonic 架构学习

    射人先射马 xff0c 擒贼先擒王 在我们学习sonic的过程中 xff0c 无疑了解sonic的架构是非常重要的 xff0c 然后再去了解各个模块的细节 xff0c 总分学习模式 下面是我自我学习并翻译的链接https github co
  • sonic-ios-bridge(sib)性能监控之系统性能及应用性能

    sib下载地址 xff1a Releases SonicCloudOrg sonic ios bridge GitHub 可以看到最新版本为V1 3 7 下载到本地并解压后即可使用 性能监控使用帮助 xff1a sib perfmon h
  • 编译SONiC交换机镜像(转,参考2)

    sonic buildimage 编译SONiC交换机镜像 描述 以下是关于如何为网络交换机构建 ONIE 兼容网络操作系统 xff08 NOS xff09 安装程序镜像的说明 xff0c 以及如何构建在NOS内运行的Docker镜像 请注

随机推荐

  • sysctl

    sysctl命令用于运行时配置内核参数 xff0c 这些参数位于 proc sys 目录 xff0c 可以使用sysctl修改系统变量 xff0c 也可以通过编辑 etc sysctl conf文件来修改系统变量 sysctl 选项 参数
  • function declaration isn't a prototype解决办法

    对以上程序 xff0c 在编译驱动的时候会出现以下warning 在网上查到解决办法是 xff1a 即使函数括号内没有任何参数 xff0c 也要加一个void类型 xff0c 来避免这种warning xff1a 解决如下 xff1a
  • i2c信号的ACK与NACK

    nbsp nbsp nbsp nbsp nbsp nbsp nbsp 我们平时在调试I2C的时候可能很少去关注NACK信号 只知道如果Master发送数据 MSB先发 LSB后发 连续发送一个字节 8个bit 之后Slave会回复一个ACK
  • ubuntu的recovery mode

    偶尔会遇到Ubuntu无法正常启动的情况 xff0c 这时候需修改某些文件让系统正常启动 xff0c 如果直接进入 recovery 模式 xff0c 默认是文件权限只读 xff0c 无法修改文件 这时我们需要进入recovery 的单用户
  • oprofile库安装与使用

    一 概述 oprofile库是linux平台上的一个功能强大的性能分析工具 xff0c 支持两种采样方式 xff1a 基于事件的采样与基于时间的采样 1 xff09 基于事件的采样 xff1a oprofile只记录特定事件 xff08 比
  • 超声波模块

    HC SR04 简介 HC SR04超声波模块可提供2cm 400cm的距离感测功能 xff0c 测量精度可以达到3mm 模块包括超声波发射器 xff0c 接收器与控制电路 基本工作原理 1 采用Trig引脚触发 xff0c 给至少10us
  • /proc/interrupts

    proc interrupts中的字段依次是逻辑中断号 中断在各CPU上发生的次数 xff0c 中断所属父设备名称 硬件中断号 中断触发方式 电平或边沿 中断名称 proc interrupts的具体实现查看代码kernel irq pro
  • BGP-LS 简介

    BGP LS xff08 BGP Link state xff09 汇总IGP协议收集的拓扑信息上送给上层控制器 产生原因 BGP LS是收集网络拓扑的一种新的方式 BGP LS特性产生前 xff0c 路由器使用IGP xff08 OSPF
  • ubuntu下vnc使用

    使用apt cache search vncserver命令搜索可以用来安装vncserver的软件包 xff0c 这里选用vnc4server安装vnc 2 使用apt get install vnc4server命令安装vncserve
  • 使用“反射”将 Java 中一种对象类型转换为另外一种类型

    将一种对象类型转换为另外一种类型的常用场景 场景如下 xff1a 一般后端是使用 MVC 三层架构进行分层 实体类 User 用于接收数据库中的数据 xff1b 表现层 UserVo 将数据传给前端 这中间免不了要将实体类转换为表现层中的对
  • Ubuntu18.04 vnc灰屏问题

    vnc安装完以后 xff0c 用客户端登录发现只有5901端口可用 xff0c 但是其他端口登录上去以后都是灰屏的 查找了一下 xff0c 需要修改配置文件 vnc xstartup为如下内容 xff1a bin bash export d
  • 安装docker

    1 查看docker安装目录 whereis docker docker usr bin docker etc docker usr libexec docker usr share man man1 docker 1 gz 2 查询运行文
  • 关于PiBOT使用的一些问题汇总--ing

    xff1a 多机通讯是按照教程设置环境变量ROS MASTER URI 初始化 pibot init env sh xff0c 使用rostopic已经能够查看 xff0c 但是主机PC无法启动launch 原因 xff1a 个人测试是需要
  • ubuntu 19.10系统解决E: 仓库 “http://ppa.launchpad.net/webupd8team/java/ubuntu eoan Release” 没有 Release 文件。

    在终端换源后遇到E 仓库 http ppa launchpad net webupd8team java ubuntu eoan Release 没有 Release 文件 问题 解决方法 xff1a 将对应的ppa删除即可 第一步 xff
  • 使用org-mode生成晨检报告

    原文地址 https lujun9972 github io blog 2020 04 10 使用org mode生成晨检报告 index html 我们设置了每天8点多自动进行调用一次晨检脚本 xff0c 该脚本会将检查的一些数据存入本地
  • 使用Pi-hole屏蔽广告

    原文地址 https www lujun9972 win blog 2020 12 05 使用pi hole屏蔽广告 index html 目录 获取Pi的对外IP地址安装Pi hole配置DNS配置拦截域名 获取Pi的对外IP地址 我们一
  • 笑话理解之Mature

    原文地址 https www lujun9972 win blog 2020 12 09 笑话理解之mature index html 目录 The difference between government bonds and men T
  • 笑话理解之Hearing

    原文地址 https www lujun9972 win blog 2020 12 09 笑话理解之hearing index html 目录 The Hearing Problem The Hearing Problem In a chu
  • Emacs 作为 MPD 客户端

    原文地址 https www lujun9972 win blog 2022 06 26 emacs 作为 mpd 客户端 index html 今天才知道 xff0c Emacs居然内置了一个 mpc el 可以将 Emacs 转换为 M
  • 编译SONiC交换机镜像(转,参考2)

    sonic buildimage 编译SONiC交换机镜像 描述 以下是关于如何为网络交换机构建 ONIE 兼容网络操作系统 xff08 NOS xff09 安装程序镜像的说明 xff0c 以及如何构建在NOS内运行的Docker镜像 请注