安装SONiC
1. 准备工作
1.1. 制作 SONiC 安装U盘
1.1.1. 依赖材料
- 一台带 USB 接口的白盒交换机(已安装 SONiC 系统)
- 一个空U盘 (容量高于2G)
- 两个安装文件:sonic.bin 和 sonic-recovery.bin
- sonic.bin,全量安装 SONiC 系统的二进制文件(六百多MB)
- sonic-recovery.bin,构建/恢复 SONiC-OS 系统基础环境的二进制文件(约三百MB)
其中,sonic.bin 和 sonic-recovery.bin 的编译方式如下:
备注:
- 编译 SONiC 版本需确保当前登录用户已加入 docker 组
- 查询当前 docker 组用户列表的命令为:
sudo cat /etc/group | grep docker
- 若当前登录用户不在 docker 组用户列表中,则需添加到 docker 组用户列表,命令为:
sudo usermod -aG docker ${当前用户名}
1 | 1. 进入 SONiC 源码目录 |
1.1.2. 制作安装U盘
- 上传两个安装文件到(用于制作安装U盘的)SONiC白盒交换机的 /host/ 目录
1 | 拷贝安装文件到交换机(eg. 通过 scp 命令传输) |
- 在(用于制作安装U盘的)白盒交换机上,安装 SONiC-OS recovery 基础镜像
1 | 进入 /host/ 目录 |
- 重启设备,进入上一步新安装的SONIC-OS recovery 基础镜像系统
(依据当前时间,在GRUB中选择进入上一步安装的系统版本) - 插入U盘,查看U盘盘符
(根据U盘容量判别,eg. 32G)
1 | fdisk -l |
- 制作安装U盘
(上一步获知的U盘盘符名:/dev/sdb
)
1 | ./sonic-recovery.bin -u -n /dev/sdb |
- 同时将两个安装文件拷贝到U盘
(上一步获知的U盘分区名:/dev/sdb3)
1 | 挂载U盘 |
1.2. 安装/配置 minicom 串口工具
minicom 对比 screen 优势:
- screen 方式连接串口设备:
screen /dev/tty.usbserial-110 115200
- 优势:系统自带,随用随取。
- 短板:用完要关闭需要先按Ctrl+A,再按Ctrl+K来杀掉进程;可能遇到在关闭后/dev路径没有Serial文件而无法使用的情况。
- minicom 串口工具连接串口设备:
minicom -c on
- 优势:使用便捷,仅需一次配置,后续自动调用连接配置;稳定性好;支持热插拔;功能丰富。
1.2.1. 安装 minicom 串口工具
- 执行
brew install minicom
命令安装 minicom (依赖工具 HomeBrew)
1.2.2. 配置 minicom 串口工具
- 查询串口设备ID
(需在串口线连接 交换机 与 Mac笔记本后执行下方命令才能看到)
1 | ls -l /dev/tty.usb* |
- 进入 minicom 配置界面
1 | minicom -s |
- 进入串口配置项
上下方向键移动光标,选择“Serial port setup”,Enter 确认 - 更改串口设备 ID
按 A 进入“Serial Device”配置,删除默认值 /dev/modem,更改为第 1 步查询得到的设备 ID(eg./dev/tty.usbserial-110
),Enter 确认更改 - 更改波特率
按 E 进入“Bps/Par/Bits”配置,选择适当波特率(如,按 E 切换波特率为 115200),Enter 确认更改 - 关闭硬件流控
按 F 切换“Hardware Flow Control”开关值,切换为“NO”
示例配置如下:
1 | +-----------------------------------------------------------------------+ |
- 保存配置
按 Enter 或 Esc 退回到“configuration”主界面,选择“Save setup as dfl”保存为默认配置,最后选择“Exit from Minicom”退出
1.2.3. 通过 minicom 串口工具登录交换机
- 用串口线连接 交换机 与 Mac笔记本
- 通过串口工具访问交换机(终端执行命令为:
minicom -c on
)
备注: ESC + Z 可调出 minicom 工具的命令菜单
2. 安装 SONiC
2.1. 通过 U 盘安装 SONiC 系统
1. 从U盘启动
- 交换机插入安装U盘
- 重启(BIOS 默认优先从U盘启动)
- 输入U盘中 SONiC 系统的用户/密码: admin/admin
- 进入 /host/ 目录,确认存在两个安装文件 :sonic.bin 和 sonic-recovery.bin
2. (交换机)硬盘分区并准备SONiC-OS基础环境
通过 sonic-recovery.bin 对(交换机)硬盘进行分区并准备 SONiC-OS 基础环境
- (1). 通过
blkid
命令查看交换机分区信息及了解硬盘类型(sda 或 nvme) - (2a). 若执行blkid命令显示的信息中,硬盘类型为 sda ,则执行以下命令:
1 | ./sonic-recovery.bin -n /dev/sda |
- (2b). 若执行blkid命令显示的信息中,硬盘类型为 nvme ,则执行以下命令:
1 | ./sonic-recovery.bin -n /dev/nvme0n1 |
- (3). 再次通过
blkid
命令查看硬盘分区信息,确认硬盘分区信息囊括下方所有 LABEL
(GRUB、SONiC-OS、Recovery、Diag、Reserved、Log)
3. 安装 SONiC 系统
执行下方命令安装 SONiC 系统
1 | ./sonic.bin |
4. 拔掉U盘,重启
2.2. 通过 ONIE 重装 SONiC
1. 卸载旧 SONiC
- 串口访问设备(切COM-E),手动重启;
- 在 GRUB 菜单选择 ONIE: Uninstall OS,等待其卸载旧 SONiC 系统后自动重启;
- 在重启后的 GRUB 菜单选择 ONIE: Rescue;
- 在提示 “please press enter to activate this console” 后,按回车进入 ONIE 系统
2. 手动配置 ONIE 系统的管理 IP
配置同网段IP
1 | ifconfig eth0 1.2.3.4 netmask 255.255.255.0 |
3. 拷贝 SONiC 安装镜像到 ONIE 系统的 /tmp 路径
1 | scp admin@4.5.6.7:/home/admin/sonic.bin /tmp/ |
4. 通过 onie-nos-install 安装 SONiC 镜像
1 | onie-nos-install /tmp/sonic.bin |
2.3. 通过 sonic_installer 更新 SONiC
若设备已安装旧版 SONiC,可直接通过 sonic_installer 指令更新版本
1 | sudo sonic_installer install -f /home/admin/new-sonic.bin |
3. 配置交换机IP及管理网路由
备注:
- 建议串口访问下执行下述操作,ssh 访问可能会因重新分配 IP 导致断连
- 重启后 IP 配置丢失根因:ZTP 服务启动后若发现同时缺失配置文件
/etc/sonic/config_db.json
和 旧配置文件夹/etc/sonic/old_config/
,将自动获取IP,强制覆盖已配置的静态 IP。
故在新设备配置IP,需先开启 ZTP 服务并执行 config save 生成配置文件,然后配置静态管理 IP,以防止重启后 ZTP 检测到无配置文件而去自动获取IP导致IP配置丢失。- 若发现设备缺失配置文件
/etc/sonic/config_db.json
,执行下方 3(a) 步即可配置IP并生成配置文件。- 若发现设备管理 IP 丢失(
/etc/network/interfaces
文件被删 ),执行下方 3(b) 步即可配置静态 IP(此文件为生成文件,不推荐手动配置)。
(SONiC 支持通过 cli 配置,可作为接线后临时测试的配置参考)
- 查看设备状态信息
1 | 查看此设备有无“用户配置”文件 |
- 打开“零配置部署”功能(Zero Touch Provisioning,ZTP)
1 | 若 ztp 服务未开启,需执行下方命令开启 ZTP 服务 |
- 若设备缺失配置文件
/etc/sonic/config_db.json
且启动时 ztp 服务已开启,执行ip addr | grep eth0
将能看到已自动获取的 IP(eg.10.0.0.2) - 若此时无 IP,执行下方 3(a) 步即可配置IP并生成配置文件。
- 配置IP
(如配置交换机的 静态IP为:10.0.0.2/24、网关为:10.0.0.0)
a. 方式一:通过调用cli命令配置IP(推荐)
1 | cli |
或调 cli 命令行
1 | 调命令配置静态IP和网关(静态IP为:10.0.0.2/24、网关为:10.0.0.0) |
生成配置文件
1 | sudo config save |
查看生成的配置文件中是否包含管理IP字段
1 | sed -n "$(grep -n 'MGMT_INTERFACE' /etc/sonic/config_db.json | tail -1 | cut -d : -f 1), +5p" /etc/sonic/config_db.json |
b. 方式二:通过直接修改网卡配置文件(临时,重启后失效)
通过 sudo vi /etc/network/interfaces
修改网卡配置文件,示例配置内容如下:
1 | auto lo |
生效配置
(以下方式均可)
- a.重启网络:
sudo /etc/init.d/networking restart
或sudo service networking restart
- b.重启网卡(eg. eth0):
sudo ifdown eth0
或sudo ifup eth0
4. 参考文档
相关文章