0. 前言
vsdocker 是SONiC虚拟交换机的3个呈现方案之一。其主要做法是把SONiC中的主要部件全部放在一个docker镜像中,用户可以在不需要物理交换机的情况下自己的服务器上面体验SONiC。使用时只需要把镜像运行起来即可,启动后一个容器就是一个交换机。可以对其进行组网和各种配置操作。
如果嫌编译麻烦,这里 我也提供了一份我自己编译的sonic vsdocker镜像,也可直接下载使用。
1. 硬件环境准备
准备一台编译用的服务器:
阿里云服务器一台,配置8U16G,系统盘100G,操作系统ubuntu20.04,服务器开通在香港区域。为了省钱使用的按量付费,编译完成后释放掉即可。
注意:构建过程中会在github、各软件官网、dockerhub等网站下载大量数据,为了保证编包的顺利,服务器区域提议选在香港或者国外的地区,否则可能会遇到网络问题(列如网速过慢或者超时之类)。
2. 软件环境准备
第一,使用root用户登录服务器
2.1 安装一些依赖工具
由于ubuntu20.04已经没有python2,这里换成pip3了
sudo apt-get install -y git
sudo apt-get install -y python3-pip
sudo python3 -m pip install -U pip==9.0.3 # 中途会有一个报错,可以无视
sudo pip install --force-reinstall --upgrade jinja2>=2.10
sudo pip install j2cli
参考:https://github.com/Azure/sonic-buildimage/blob/master/README.md
2.2 安装docker-ce
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
参考:https://developer.aliyun.com/article/110806
2.3 重新编译安装git
主要是为了改一下编译配置,用openssl替换gnutls,否则执行make init的时候下载子仓库可能会提示TLS错误。
sudo apt-get install build-essential fakeroot dpkg-dev -y
sudo apt-get build-dep git -y
sudo apt-get install libcurl4-openssl-dev -y
cd ~
mkdir source-git
cd source-git/
apt-get source git
cd git-2.*.*/
sed -i -- s/libcurl4-gnutls-dev/libcurl4-openssl-dev/ ./debian/control
sed -i -- /TESTs*=s*test/d ./debian/rules
dpkg-buildpackage -rfakeroot -b -uc -us
sudo dpkg -i ../git_*ubuntu*.deb
参考:https://stackoverflow.com/questions/52529639/gnutls-recv-error-110-the-tls-connection-was-non-properly-terminated
2.4 创建新用户
需要新建一个用户,由于编译sonic不让使用root用户
# 创建用户
useradd -m -G docker -s /bin/bash sonic
# 将用户加入免密码sudo权限
chmod u+w /etc/sudoers
echo "sonic ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
chmod u-w /etc/sudoers
参考:https://www.cnblogs.com/wooluwalker/p/13161242.html
3. 开始编译
3.1 使用新用户进行操作
su sonic
cd ~
3.2 下载仓库
git clone https://github.com/Azure/sonic-buildimage.git
cd sonic-buildimage
3.3 执行编译
正式的编译过程实则就几句命令
# 这一个步骤大约5分钟
make init
# 这个步骤20分钟左右
make configure PLATFORM=vs
# 这个步骤1小时左右
BLDENV=buster make target/docker-sonic-vs.gz
构建完成后,将sonic-buildimage/target/docker-sonic-vs.gz 这个文件取回自己电脑上,
至此这台编译服务器的任务就完成了,
接下来把这台服务器释放掉(主要还是为了省钱,实际上你也可以选择把这台服务器当成常用服务器)
换到自己廉价的常用服务器上面进行其他的实验操作。
暂无评论内容