我有一个连接8个串行端口的RHEL6.9服务器。 RHELconfiguration了4个/ dev / ttyS0-3,它们有地址和IRQ。
我一直在使用mknod命令来创build设备/ dev / ttyS [0-3]。 我知道IRQ 5和7是免费的(我没有使用任何并行端口)
我一直在使用类似的东西
mknod -m 666 /dev/ttyS4 c 4 64
但是,它似乎只是复制/ dev / ttyS0具有相同的地址和IRQ,但是,当我改变这2 5我只是得到“没有这样的设备或地址”从
setserial -g /dev/ttyS[0-9]
手册页build议最后2个参数(4 64)是版本。 我天真地认为4映射到IRQ。
假设我可以创build新的串行设备并分配一个地址和IRQ,我是否正确地采用了这种方法?
如果是这样(警告后续问题),我可以从正在运行的Linux系统的某个地方获得地址吗?
提前谢谢了
您需要增加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
这两个数字是主要和次要设备号码。 对于相同types的设备,主要设备号将保持不变。 次要设备号码将改变每个实例。
在使用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将创build任何匹配给定string的设备(所以ttyS40,ttyS41等)