下一页 上一页 目录

11. 问题与修复

11.1 安全问题

一个功能完整的 Dosemu 需要 suid root 权限,例如才能访问端口。然而,大多数 dos 程序不需要这个权限,因此在 X 环境下运行时,通常不需要以 root 身份运行 dosemu。Dosemu 仅在必要时以 suid “root” 身份运行,并在之后立即释放此权限。但是,使用 DPMI 时,Dos 客户端程序可以访问整个用户空间,因此也可以修改 dosemu 代码本身。在 /etc/dosemu.conf 中使用 'secure' 选项可以禁用此功能。在 README.txt 文件的“安全”部分中讨论了其他几个重要的安全注意事项。

11.2 dosemu 说 “ERROR: general protection” 并在我运行某些程序时终止

如果您的程序使用 DPMI 并且您没有启用 DPMI,则会发生这种情况。尝试更改行

$_dpmi = (off)
在 /etc/dosemu.conf 中为
$_dpmi = (nnnn)
其中 nnnn 是您希望分配给 DOS 程序的内存大小(以千字节为单位)(例如,Doom 大约需要 4000 千字节)。如果您这样做,则不应以 root 身份运行 dosemu(请参阅“安全问题”部分) - 在任何情况下,最好不要尽可能以 root 身份运行 dosemu。

另一个可能的原因是您的程序使用 VCPI(有关更多详细信息,请参阅 EMUfailure.txt)或其他一些切换到保护模式的方式(DPMI 除外),在这种情况下,它永远无法在 dosemu 下工作。

如果都不是这种情况,请参阅 1.14 节 我有一个程序失败,但未在 EMUfailure.txt 中列出。

11.3 Dosemu 在启动时死机。我安装了 Win95。

Dosemu 依赖于 hdimage 上的 Dos 版本和您映射的驱动器包含相同的 command.com。如果不是这样,dosemu 迟早会崩溃。使用 Win95 在按下 F4、F5 和 F8 键并显示 “Starting Win95” 文本时提供的双启动选项,Win95 驱动器上的版本可能会交换。请特别注意 command.com。让您的 config.emu 中的 shell 变量指向正确的静态版本的 command.com,例如:shell=c:\win95\command.com c:\ /P /E:1024 (97/02/28)

11.4 Dosemu 挂起!我该如何杀死它?

切换到另一个控制台并键入 dosdebug,然后键入 kill(可能需要一段时间,但最终会起作用)。

11.5 Dosemu 崩溃了,现在我无法输入任何内容。

Daniel Barlow(jo95004@sable.ox.ac.uk) 报告 (95/4/8):

如果您没有终端或网络访问权限可以用来登录,您可能需要按下复位按钮。如果您仍然可以通过某种方式获得可用的 shell,请运行 “kbd_mode -a” 以将键盘切换出原始模式,和/或在控制台上运行 “stty sane”,以便您可以看到您正在键入的内容。

一个有用的方法是使用脚本来运行 dosemu,并在 dosemu 之后立即自动运行 “kbd_mode -a”。当 dosemu 崩溃时,脚本通常会恢复运行,并执行 “kbd_mode -a” 命令。

11.6 我在 dosemu.conf 中启用了 EMS 内存,但没有帮助。

Rob Janssen (rob@pe1chl.ampr.org) 报告 (94/7/11):

不要忘记从 config.sys 文件中加载提供的 ems.sys。

11.7 如何摆脱所有那些烦人的 “磁盘更改” 消息?

(94/8/11)

获取并安装 klogd。尝试

         sunsite.unc.edu:/pub/Linux/system/Daemons/sysklogd1.2.tgz

11.8 为什么 dosemu 在控制台模式下退出后无法第二次运行?

Aldy Hernandez (aldy@sauron.cc.andrews.edu) 报告 (94/7/8):

您应该禁用您的视频和/或 BIOS 缓存。

11.9 为什么 dosemu 可以在终端中运行,但不能在控制台中运行?

JyiJiin Luo (jjluo@casbah.acns.nwu.edu) 报告 (94/4/19):

我以前也遇到过完全相同的问题。我发现我的 AMI BIOS 中的所有视频阴影都必须禁用。现在 dosemu 在我的系统上运行良好。

11.10 如何加速 dosemu?

在某些情况下,调整 dosemu.conf 文件中 HogThreshold 变量的值很有用。

Daniel Barlow(jo95004@sable.ox.ac.uk) 报告 (95/4/8):

HogThreshold 现在应设置为系统启动时报告的 BogoMips 值的大约一半。

11.11 我的 CDROM 驱动器在 dosemu 下读取某些文件时遇到问题。

Vinod G Kulkarni (vinod@cse.iitb.ernet.in) 报告 (94/4/7):

当从 linux 挂载 CDROM 并在 dosemu 中使用(映射驱动器)时,可能会出现一些问题。内核中的 CD-ROM 驱动程序 (iso9660) 尝试找出文件的类型(即二进制文件或文本文件)。如果找不到,它会尝试使用启发式方法猜测文件的类型。当(几乎)文本文件被视为二进制文件时,此启发式方法在某些情况下会失败。(我不知道这是一个错误还是一个特性。)

这样做的结果是,如果您从 CD-ROM 复制此类文件(从 linux 本身,而不一定是 dosemu),则生成的文件通常会比原始文件更大。(在 ^J,^M 之前添加空格。)因此,在 dosemu 中运行的程序会给出错误或挂起,这可能会被误认为是 dosemu 的问题。

Rob Janssen (pe1chl@rabo.nl) 报告 (94/8/10):

解决此问题的方法是完全关闭转换。将选项 “-o conv=binary” 传递给挂载 CD-ROM 的 mount 命令,或在 /etc/fstab 中使用以下内容

/dev/cdrom      /cdrom          iso9660 conv=binary,ro
不需要对内核进行任何补丁。

11.12 如何查看调试输出?

Daniel Barlow(jo95004@sable.ox.ac.uk) 报告 (95/4/8):

从 dosemu 0.60 开始,调试输出被重定向到命令行上指定的文件。使用 “dos -D+a -o /tmp/debug” 将所有调试输出记录到 /tmp/debug。不再需要重定向 stderr

11.13 为什么我的击键被回显了两次??

Nick Holloway (alfie@dcs.warwick.ac.uk) 报告 (94/2/22):

在玩过一些 stty 设置后运行 dos,我得到了双重按键。我现在可以揭示原因了!

它仅在 dos 在控制台上以设置 'istrip' 的情况下运行时发生。这是(我认为)因为原始扫描码被 'istrip' 破坏,因此按键释放事件看起来像按键按下事件。

因此,在使用控制台上的扫描码时,需要关闭输入处理(对于 tty 行来说,这样做不是一个好主意)。

11.14 Dosemu 扰乱了我的屏幕?

对于那些在 dosemu 中未完全支持的显卡,如果允许控制台图形,dosemu 崩溃可能会使您的控制台处于混乱且几乎无法使用的状态。为了应对这种情况,Spudgun <spudgun@earthlight.co.nz> 发布了以下解决方案。首先,在控制台上运行时保存您的寄存器 ~> cat /usr/bin/savetextmode ~> restoretextmode -w /etc/textregs ~> restorefont -w /etc/fontdata 然后,当崩溃发生时,运行以下脚本:restoretextmode -r /etc/textregs restorefont -r /etc/fontdata restorepalette

如果它不能修复它,那就没什么能修复了 我还发现运行 X 服务器有时会将我的显卡寄存器置于一种奇怪的状态,在这种状态下,此脚本使情况变得更糟,我认为自从更改 X 服务器和/或在 X 运行时在 vt 上运行 savetextmode 之后,情况有所改善。(97/04/08)

11.15 MS FoxPro 2.6 无法运行

FoxPro 2.6 无法在网络驱动器上运行。Alexey Naidyonov <growler@growler.tsu.tula.ru> 在这个问题上指出:我猜您的 FoxPro 文件在 lredir'ed 磁盘上,是吗?问题是 FoxPro 在这样的磁盘上无法运行,但是当我在 /etc/dosemu/conf 中说 disk { partition ... } 时,它可以运行。


下一页 上一页 目录