1. SONiC 源码构建环境搭建与最小镜像编译

SONiC 源码构建环境搭建与最小镜像编译 学习卡片

任务说明

本案例目标是在虚拟机或物理服务器上完成SONiC操作系统的安装与基础配置,使系统可通过SSH访问,并验证基本命令可用。SONiC(Software for Open Networking in the Cloud)是一个基于Debian的网络操作系统,用于交换机等网络设备。本案例以虚拟机为落地环境,使用官方发布的SONiC虚拟镜像(sonic-vs.img)完成部署。

环境准备

需要一台支持虚拟化的主机(VMware Workstation / KVM / VirtualBox均可),至少分配2个vCPU、4GB内存、50GB磁盘空间。网络采用桥接模式,使虚拟机与宿主机处于同一二层网络,便于后续SSH访问。下载SONiC虚拟镜像:

# 从SONiC官方发布仓库获取VS镜像(以202405版本为例)
wget https://sonic-build.azurewebsites.net/api/software/artifacts?branchName=202405&platform=vs&buildId=latest -O sonic-vs.img

虚拟机创建与系统安装

将下载的sonic-vs.img转换为虚拟机磁盘格式并启动。以KVM/libvirt为例:

# 安装qemu-img并转换镜像格式
qemu-img convert -f raw -O qcow2 sonic-vs.img sonic-vs.qcow2

# 创建虚拟机(使用virt-install)
virt-install \
  --name sonic-vs \
  --ram 4096 \
  --vcpus 2 \
  --disk path=/path/to/sonic-vs.qcow2,format=qcow2,size=50 \
  --network bridge=br0,model=virtio \
  --graphics vnc \
  --os-type linux \
  --os-variant debian10 \
  --import

启动后通过VNC连接虚拟机控制台,SONiC默认使用DHCP获取管理IP。在控制台登录界面使用默认凭据(用户名admin,密码YourPaSsWoRd)登录,首次登录会提示修改密码。

基础网络配置

登录后确认管理接口IP地址,并配置静态IP以确保稳定访问。SONiC使用config命令进行运行时配置,使用config save持久化配置。

# 查看当前管理IP
show ip interfaces

# 配置管理接口静态IP(以eth0为例,IP段根据实际网络调整)
sudo config interface ip add eth0 192.168.1.100/24
sudo config interface ip remove eth0 192.168.1.100/24  # 若需先删除DHCP地址

# 配置默认网关
sudo config route add default 192.168.1.1

# 保存配置
sudo config save -y

SSH访问与基础命令验证

在宿主机上通过SSH连接SONiC管理IP,验证系统可访问性。SONiC提供show命令族用于查看系统状态,sonic-clear用于清除统计信息,config用于配置管理。

# 宿主机执行SSH连接
ssh admin@192.168.1.100

# 登录后验证基础命令
show version          # 查看SONiC版本信息
show interfaces status  # 查看所有接口状态
show ip route         # 查看路由表
docker ps             # 查看运行中的容器(SONiC核心功能容器化运行)

验证方法与判定标准

完成上述配置后,按以下步骤验证部署是否成功:

  1. SSH连通性验证:从宿主机执行ssh admin@<管理IP>,能成功登录并进入SONiC命令行即通过。
  2. 版本信息验证:执行show version,输出包含SONiC版本号、内核版本、构建信息等即通过。
  3. 接口状态验证:执行show interfaces status,能看到管理接口(eth0)状态为Up,且显示配置的IP地址。
  4. 路由验证:执行show ip route,能看到默认路由指向配置的网关地址。
  5. 容器运行验证:执行docker ps,能看到至少syncd、swss、bgpd等核心容器处于Up状态。

以上五项全部满足,即可判定SONiC基础环境搭建成功。若某项不通过,检查对应配置步骤或网络连接后重新验证。

SONiC基础环境部署拓扑与验证路径 宿主机 KVM / VMware virt-install 创建VM SSH客户端 ssh admin@192.168.1.100 验证命令 show version show interfaces status show ip route docker ps SSH (TCP/22) SONiC虚拟机 (sonic-vs) 管理接口 eth0 IP: 192.168.1.100/24 网关: 192.168.1.1 配置命令 config interface ip add config route add default config save -y 核心容器 (Docker) syncd swss bgpd teamd lldpd dhcp_relay 数据面 判定标准(全部满足即通过) ✓ SSH登录成功 ✓ show version 输出版本信息 ✓ 接口状态Up且IP正确 ✓ 默认路由存在 ✓ 核心容器全部Up

故障排查提示

若SSH无法连接,首先在控制台执行show ip interfaces确认管理IP是否正确获取或配置;若容器未正常运行,执行sudo systemctl status sonic-delayed查看服务状态,并使用sudo journalctl -u sonic-delayed查看日志定位问题。配置修改后务必执行config save -y持久化,否则重启后配置丢失。