原则上所有的系统都可以编译sonic,此处我们选择centos 7.7,虚拟机的内存空间建议给4G,建议根目录空间有200G(因为在编译的时候容器会占有非常大的空间,而容器的就位于根目录下的var目录中,所以我们建议安装的时候给根目录200G,或者给var目录单独挂载200G空间)
具体安装过程省略,其中关键步骤如下
此处我们选择硬盘大小为300G,其中200G都给根目录,100G给家目录(此处家目录是用来存放源码和编译文件的目录),
安装时可以选择图形化安装,因为图形化安装有很多服务都自带不用自己手动安装比如ssh等等,
上面的图片中三个红框内随便选一个都可以 ,此处选择GNOME桌面
首先配置虚拟机可以上网,具体步骤略
先将官方镜像源去掉
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
此处我们配置centos 7的基础源
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
配置centos7的epel源
[root@localhost ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
清除原有缓存并且,生成新缓存
[root@localhost ~]# yum clean all && yum makecache fast
因为sonic编译的时候是在一个隔离的容器环境中进行编译,这个容器环境已经被sonic维护人员制作好了,我们只需要安装docker拉取定制容器,在容器中进行编译即可
首先我们添加系统工具
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
添加docker的阿里云镜像
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
生成缓存
[root@localhost ~]# yum makecache fast
安装docker社区版
[root@localhost ~]# yum install docker-ce -y
启动docker服务,并且使其开机自启
[root@localhost ~]# systemctl start docker && systemctl enable docker
安装python的包工具pip
[root@localhost ~]# yum install -y python-pip
下载pip包版本限制在9.0.3
[root@localhost ~]# python2 -m pip install -U pip==9.0.3
安装jinja2的包使其版本大于2.10(在后面自动化编译是需要用jinja2包去识别jinja2类型的配置文件)
[root@localhost ~]# pip install --force-reinstall --upgrade jinja2>=2.10
[root@localhost ~]# pip install j2cli
创建用户sonic(此处用户名自定义),我们用sonic用户下载编译文件到sonic家目录
[root@localhost ~]# useradd sonic
将sonic用户加入到docker组中去,使sonic用户可以驱动docker
[root@localhost ~]# gpasswd -a sonic docker
加载overlay的文件驱动模块
[root@localhost ~]# modprobe overlay
下载git工具
[root@localhost ~]# yum install git -y
切换用户到sonic
[root@localhost ~]# su - sonic
退回sonic的家目录
[sonic@localhost ~]$ cd ~
克隆github上的sonic-buildimage
[sonic@localhost ~]$ git clone https://github.com/Azure/sonic-buildimage.git
进入下载的文件
[sonic@localhost ~]$ cd sonic-buildimage/
初始化 ,下载各个芯片平台的SDK,SAI、和二层,三层协议代码
[sonic@localhost sonic-buildimage]$ make init
选择芯片的厂家
[sonic@localhost sonic-buildimage]$ make configure PLATFORM=broadcom
make all
[sonic@localhost sonic-buildimage]$ make all