通常一个串行端口足以通过 minicom 控制 Qemu 上的旧 SVR4(我知道这是一个非常旧的系统,不安全等..)。我已经在虚拟机配置中设置了这两个端口
<serial type="pty">
<source path="/dev/pts/1"/>
<target type="isa-serial" port="0">
<model name="isa-serial"/>
</target>
<alias name="serial0"/>
</serial>
serial type="pty">
<source path="/dev/pts/2"/>
<target type="isa-serial" port="1">
<model name="isa-serial"/>
</target>
<alias name="serial1"/>
</serial>
但启动时仅启用一个端口
find /dev/ -name *tty* -print
/dev/systty
/dev/tty00
/dev/tty
/dev/tty00s
/dev/tty00h
所以我尝试重建内核。在 SVR4 上,首先要重建内核,我在文件 /etc/conf/sdevice.d/asy 中进行更改
asy Y 1 7 1 4 3f8 3ff 0 0
asy Y 1 7 1 3 2f8 2ff 0 0
语法很简单:asy是驱动程序Y启用它,1 7 1我不知道,3是中断(在我的所有系统上,irq 3由第二个串行端口使用,4由第一个串行端口使用)。 3f8-3ff和2f8-2ff是端口间隔,0 0我不知道
然后我用 idbuild 重建内核。重启后,同样的情况。如果我编辑文件
/etc/conf/node.d/asy
asy tty00 c 0
asy term/00 c 0
asy tty00s c 0
asy tty00h c 128
asy term/00s c 0
asy term/00h c 128
asy tty01 c 1
asy term/01 c 1
asy tty01s c 1
asy tty01h c 128
asy term/01s c 1
asy term/01h c 128
并重新创建节点
idmknod -s
我有这种奇怪的情况
ls -ld /dev/tty*
crw-rw-rw- 1 bin bin 16, 0 Dec 25 19:31 /dev/tty
crw--w---- 1 myuser tty 3, 0 Mar 27 05:20 /dev/tty00
crw-rw-rw- 1 root root 3,128 Mar 27 04:26 /dev/tty00h
crw-rw-rw- 1 root root 3, 0 Mar 27 04:26 /dev/tty00s
crw--w---- 1 root root 3, 0 Mar 27 05:20 /dev/tty01
crw-rw-rw- 1 root root 3,128 Mar 27 04:26 /dev/tty01h
crw-rw-rw- 1 root root 3, 0 Mar 27 04:26 /dev/tty01s
所有文件都使用主编号 3。为什么 4 被完全忽略?我想念什么?可能是内核中的错误还是其他原因?在我的所有系统上,这两个序列号都被识别,现代(Linux)和旧(Sco Unix)。我发现 SVR4 在 qemu 上看不到任何串行端口(第一个除外),在 86box 和 bochs 上也看不到。