我有一台连接了 8 个串行端口的 RHEL6.9 服务器。RHEL 已将其中 4 个配置为 /dev/ttyS0-3,它们具有地址和 IRQ。
我一直在使用 mknod 命令创建设备 /dev/ttyS[0-3]。我知道 IRQ 5 和 7 是空闲的(我没有使用任何并行端口)
我一直在使用类似
mknod -m 666 /dev/ttyS4 c 4 64
但是,它似乎只是用相同的地址和 IRQ 复制了 /dev/ttyS0,但是,当我将其更改为 2 5 时,我只收到“没有这样的设备或地址”
setserial -g /dev/ttyS[0-9]
手册页显示最后 2 个参数 (4 64) 是版本。我天真地以为 4 映射到 IRQ。
我是否以正确的方式处理这个问题,假设我可以创建新的串行设备并分配地址和 IRQ?
如果是这样(警告后续问题),我可以从正在运行的 Linux 系统的某个地方获取地址吗?
提前谢谢了
答案1
您需要增加mknod
命令中的第二个数字,但保留第一个数字不变。例如...
mknod -m 666 /dev/ttyS4 c 4 68
mknod -m 666 /dev/ttyS5 c 4 69
mknod -m 666 /dev/ttyS6 c 4 70
mknod -m 666 /dev/ttyS7 c 4 71
这两个数字分别是主设备号和次设备号。对于同一类型的设备,主设备号将保持不变。对于每个实例,次设备号将发生变化。
由于您使用的是 RHEL 6.x,因此您可以等效地使用MAKEDEV
为您计算数字的命令...
$ cd /dev
$ sudo MAKEDEV -vx ttyS4
create ttyS4 c 4 68 root:uucp 660 system_u:object_r:tty_device_t:s0
$ ls -l ttyS4
crw-rw----. 1 root uucp 4, 68 Apr 26 12:02 ttyS4
注意:你不需要这个-v
标志,这只会让事情变得冗长,但你做想要-x
标志(精确),否则MAKEDEV
将创建任何与给定字符串匹配的设备(所以 ttyS40、ttyS41 等)