IPMI的SOL (Serial Over LAN) 和 UART

SOL是通过IPMI将BMC的串行控制器流量重定向到网络的一种方法,常用于远程操作OS和BIOS设置。UART是一种异步串行传输协议,用于OS与BMC之间的通信。在硬件层面,UART控制器和IO接口需要正确路由以实现SOL功能。OpenBMC的代码涉及到UART的路由配置,允许通过IPMI进行SOL操作。

SOL 全名是 Serial Over LAN, 对BMC来说这个功能和UART息息相关。因此这篇文章主要分为SOL和UART两个部分。

目录

IPMI的 Serial Over LAN(SOL)是什么?

你可能想知道的那些关于UART的东西

UART 介绍

UART 控制器和序列埠 (UART Controller and COM port)

OpenBMC 的code 


IPMI的 Serial Over LAN(SOL)是什么?

SOL在IPMI Spec中的描述是

Serial Over LAN(SOL) is the name for the redirection of baseboard serial controller traffic over an IPMI session. This can be used to enable asynchronous serial-based OS and pre-OS communication over a connection to the BMC.

简单翻译就是

Serial Over LAN(SOL)就是将BMC的串行控制器在IPMI 连线阶段重新导向,其中包含作业系统与BMC之间的非同步串行传输

在数据传输(Data communication)中,假如OS(发送端)想要传送一个字元'A' (二进位表示法为:01000001) 给BMC(接收端),在实体线路上,可以有两种选择:

  • Parallel communication(并行传输):由多条总线同时传输欲传送之数据。因为Clock skew(时序偏移)问题,所以频率和距离会有所限制。
  • Serial communication(串行传输):在单一总线上依序传输完数据,因此频率相对快。目前几乎取代并行传输,最常见的UART、I2C、SPI等都是属于串行传输。

在串行传输中,又可以分为同步(synchronous)和异步(Asynchronous)传输

  • 同步(synchronous):需搭配Clock讯号,效率高,可一对多。 I2C、SPI属于此类。
  • 异步(Asynchronous):效率低,仅可一对一。 UART属于此类。因此IPMI所提及的"Asynchronous serial-based OS communication over a connection to the BMC"指的就是BMC和OS之间的UART传输。

OS会藉由LPC/eSPI与BMC的UART Controller相接,我们就可以透过IPMI指令(ipmitool sol activate)将系统画面导向出来,以便远端去操作OS,其中包含下指令给OS或调整BIOS的设定。

在近年来的服务器设计中,通常板端也会有多个控制器,例如Chassis

### 串行通信通过局域网实现的技术与工具 在现代网络环境中,通过局域网(LAN)实现串行通信(Serial over LAN, SOL)是一种常见的需求。SOL 技术允许用户通过网络访问远程设备的串行端口,从而实现对设备的管理监控。以下是一些常用的技术工具。 #### 1. **IPMI (Intelligent Platform Management Interface)** IPMI 是一种标准接口,用于管理计算机系统及其相关组件。它支持通过网络访问系统的串行控制台,即使操作系统未运行或不可用时也能工作。IPMISOL 功能允许管理员通过网络连接到服务器的串行端口[^4]。 ```bash # 使用 IPMI 工具配置 SOL ipmitool sol activate ``` #### 2. **Minicom** Minicom 是一个流行的串行通信工具,通常用于本地串行端口的调试管理。通过结合 SSH 或其他网络协议,可以实现远程串行端口的访问。虽然 Minicom 本身不直接支持 SOL,但可以通过隧道技术实现类似功能[^5]。 ```bash # 使用 Minicom 连接到本地串行端口 minicom -D /dev/ttyS0 ``` #### 3. **PuTTY** PuTTY 是一个跨平台的终端仿真程序,支持多种协议,包括 SSH、Telnet 串行连接。通过配置 PuTTY,可以将串行通信重定向到网络端口,从而实现远程访问[^6]。 ```bash # 配置 PuTTY 进行串行通信 # 在 PuTTY 中选择 Serial,并设置正确的波特率参数 ``` #### 4. **socat** `socat` 是一个强大的工具,用于在不同类型的通信接口之间建立桥梁。它可以用来将串行端口的数据转发到网络端口,从而实现远程访问。以下是使用 `socat` 实现 SOL 的示例: ```bash # 在服务器端将串行端口转发到网络端口 socat TCP-LISTEN:2000,reuseaddr,fork OPEN:/dev/ttyS0,raw,echo=0,nonblock # 在客户端通过网络连接到串行端口 socat - TCP:server_ip:2000 ``` #### 5. **Netcat** Netcat 是一个简单但功能强大的工具,用于在网络中读取写入数据。通过 Netcat,可以将串行端口的数据转发到网络端口,从而实现远程访问[^7]。 ```bash # 在服务器端将串行端口转发到网络端口 nc -l 2000 < /dev/ttyS0 > /dev/ttyS0 # 在客户端通过网络连接到串行端口 nc server_ip 2000 ``` #### 6. **OpenSSH 端口转发** 通过 OpenSSH 的端口转发功能,可以将本地串行端口映射到远程网络端口。这为远程访问提供了安全的解决方案[^8]。 ```bash # 在本地机器上配置 SSH 端口转发 ssh -L 2000:localhost:2000 user@server_ip ``` --- ### 注意事项 - 在配置串行通信时,请确保网络安全性,避免未经授权的访问。 - 不同的操作系统可能需要不同的配置方法。例如,在 Red Hat/Fedora/CentOS 中,网络配置文件位于 `/etc/sysconfig/network-scripts/ifcfg-eth0`,而在 Ubuntu 中则位于 `/etc/network/interfaces`[^1]。 - 如果需要永久保存配置,请确保将相关命令添加到 `/etc/rc.d/rc.local` 文件中,以便在系统启动时自动执行。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值