在运行时启用串行系统控制台

在运行时启用串行系统控制台

有 Linux 内核启动选项可以启用系统控制台,例如console=console=ttyS0,115200console=ttyS0,115200n8 http://www.linuxtopia.org/online_books/linux_kernel/kernel_configuration/re01.html

传递此选项后,linux内核将把所有(或部分)内核消息打印到控制台,这对于调试很有用。

有没有办法在运行时更改 Linux 中的系统控制台,而无需重新启动(使用一些特殊的 sysctls/ioctls/或/proc文件/sys系统)?

第一种情况:我在当前启动中没有console=选项(在 /proc/cmdline 中检查)并且我想启用 dmesg 打印到 /dev/ttyS0 串行端口来调试情况。

第二种情况:我的设置有误console=ttyS0,9600,想在不重启的情况下更改速度(删除旧控制台设置,添加具有良好 115200 设置的新控制台;或者只是更改速度)。

console=选项在哪里解析,当前设置存储在哪里?/sys/proc

答案1

这对我有用:

sudo agetty ttyUSB0 115200
sudo password:
ctrl+z
bg
disown

如果您不使用 disown 终端将会关闭并且 agetty 也将终止(关闭终端时发出 SIGHUP 信号)。

您可以从另一台电脑使用 登录screen /dev/ttyUSB0 115200。将显示登录名/密码提示。

答案2

运行时没有添加完整的真实硬件控制台,但在某些情况下会更好:使用“netconsole”。它是以太网中通过 udp 进行的内核控制台仿真,单向,仅用于收集内核日志。不再需要 usb-uart 适配器或零调制解调器电缆或价格过高的 com-over-ethernet“控制台服务器”设备。并且不再传输(您可能希望使用经典内核控制台来发送魔法 SysRq,但不适用于 netconsole)。

文档:https://www.kernel.org/doc/Documentation/networking/netconsole.txt

例子:

应在内核配置中启用 Netconsole(或将其构建为模块)才能使其正常工作。(有时可以构建用于运行内核的 netconsole 模块,并将其 modprobe 到 Linux 中而无需重启)。

要使用 Linux 命令行启用(需重新启动),请添加:

netconsole=[src-port]@[src-ip]/[<dev>],[tgt-port]@<tgt-ip>/[tgt-macaddr]

需要指定所有内容:源 udp 端口​​、源 ipv4 地址、网络接口名称(如“eth0”)(udev 将 eth0 重命名为与位置相关的名称是否可以正常工作?)、目标 udp 端口​​和 ipv4,以及目标 mac 地址(六字节格式为 00:13:32:20:r9:a5)。

接收器是nc -u -l $tgt_port

来自 Arch wiki 的运行时配置示例 -https://wiki.archlinux.org/index.php/Netconsole

# set log level for kernel messages
dmesg -n 8

modprobe configfs
modprobe netconsole
mount none -t configfs /sys/kernel/config

# 'netconsole' dir is auto created if the module is loaded 
mkdir /sys/kernel/config/netconsole/target1
cd /sys/kernel/config/netconsole/target1

# set local IP address
echo 192.168.0.111 > local_ip
# set destination IP address
echo 192.168.0.17 > remote_ip
# set local network device name (find it trough ifconfig, examples: eth0, eno1, wlan0)
echo eno1 > dev_name
# find destination MAC address
arping -I $(cat dev_name) $(cat remote_ip) -f | grep -o ..:..:..:..:..:.. > remote_mac

echo 1 > enabled

相关内容