1. 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核心功能容器化运行)
验证方法与判定标准
完成上述配置后,按以下步骤验证部署是否成功:
- SSH连通性验证:从宿主机执行
ssh admin@<管理IP>,能成功登录并进入SONiC命令行即通过。 - 版本信息验证:执行
show version,输出包含SONiC版本号、内核版本、构建信息等即通过。 - 接口状态验证:执行
show interfaces status,能看到管理接口(eth0)状态为Up,且显示配置的IP地址。 - 路由验证:执行
show ip route,能看到默认路由指向配置的网关地址。 - 容器运行验证:执行
docker ps,能看到至少syncd、swss、bgpd等核心容器处于Up状态。
以上五项全部满足,即可判定SONiC基础环境搭建成功。若某项不通过,检查对应配置步骤或网络连接后重新验证。
故障排查提示
若SSH无法连接,首先在控制台执行show ip interfaces确认管理IP是否正确获取或配置;若容器未正常运行,执行sudo systemctl status sonic-delayed查看服务状态,并使用sudo journalctl -u sonic-delayed查看日志定位问题。配置修改后务必执行config save -y持久化,否则重启后配置丢失。