我在 wine 中安装了一些基于 CD 的 Windows 教育软件,它运行得很好,除了由于某种原因它找不到磁盘,除非我手动将路径从默认位置 G:/media/user/cdname/ 更改为 D:/media /user/cdname/,但每次我放入新 CD 时都会重置回 G:/...。有没有办法永久将此位置更改为D?磁盘太多,无法从我的硬盘驱动器虚拟安装它们
这是在 ubuntu 19.04 和 wine 4.7 上
编辑- 的输出ls -l ~/.wine/dosdevices
是
total 0
lrwxrwxrwx 1 user_family user_family 10 Apr 30 18:08 c: -> ../drive_c
lrwxrwxrwx 1 user_family user_family 27 May 2 11:56 d: -> /media/user_family/Geom-9
lrwxrwxrwx 1 user_family user_family 8 May 2 11:43 d:: -> /dev/sr0
lrwxrwxrwx 1 user_family user_family 1 May 1 14:16 e: -> /
lrwxrwxrwx 1 user_family user_family 8 Apr 30 18:08 f:: -> /dev/sde
lrwxrwxrwx 1 user_family user_family 27 May 2 11:43 g: -> /media/user_family/Geom-9
lrwxrwxrwx 1 user_family user_family 8 May 1 15:33 g:: -> /dev/sr0
lrwxrwxrwx 1 user_family user_family 8 Apr 30 18:08 h:: -> /dev/sdc
lrwxrwxrwx 1 user_family user_family 8 Apr 30 22:15 i:: -> /dev/sdf
lrwxrwxrwx 1 user_family user_family 19 May 1 14:38 j: -> /home/user_family
lrwxrwxrwx 1 user_family user_family 8 May 2 11:44 k:: -> /dev/sdd
lrwxrwxrwx 1 user_family user_family 1 Apr 30 18:08 z: -> /
遵循 telcoM 的解决方案可以使 CD 驱动器根据需要显示在正确的 D:/ 位置。但winecfg
每次放入新磁盘或位置指向旧磁盘时,我仍然需要进入,并且在程序中出现 no cd 错误。每次只需运行 winecfg 来更新指向新磁盘的指针就足够了,但我希望能够在不进行编辑的情况下启动程序。这是终端输出,除了关闭之外没有对 winecfg 进行任何更改:
user_family@user-pc-home:~$ ls -l ~/.wine/dosdevices
total 0
lrwxrwxrwx 1 user_family user_family 10 Apr 30 18:08 c: -> ../drive_c
lrwxrwxrwx 1 user_family user_family 27 May 3 09:25 d: -> /media/user_family/Alg2-2
lrwxrwxrwx 1 user_family user_family 8 May 2 11:43 d:: -> /dev/sr0
lrwxrwxrwx 1 user_family user_family 1 May 1 14:16 e: -> /
lrwxrwxrwx 1 user_family user_family 8 Apr 30 18:08 f:: -> /dev/sde
lrwxrwxrwx 1 user_family user_family 8 Apr 30 18:08 h:: -> /dev/sdc
lrwxrwxrwx 1 user_family user_family 8 Apr 30 22:15 i:: -> /dev/sdf
lrwxrwxrwx 1 user_family user_family 19 May 1 14:38 j: -> /home/user_family
lrwxrwxrwx 1 user_family user_family 8 May 2 11:44 k:: -> /dev/sdd
lrwxrwxrwx 1 user_family user_family 1 Apr 30 18:08 z: -> /
user_family@user-pc-home:~$ winecfg
000b:fixme:winediag:start_process Wine Staging 4.7 is a testing version containing experimental patches.
000b:fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org.
0019:fixme:ntoskrnl:ObDereferenceObject failed to release 0x1bc50
0019:fixme:ntoskrnl:ObDereferenceObject failed to release 0x1cd40
0019:fixme:ntoskrnl:ObDereferenceObject failed to release 0x1bb70
user_family@user-pc-home:~$
user_family@user-pc-home:~$ ls -l ~/.wine/dosdevices
total 0
lrwxrwxrwx 1 user_family user_family 10 Apr 30 18:08 c: -> ../drive_c
lrwxrwxrwx 1 user_family user_family 28 May 3 09:36 d: -> /media/user_family/Geom-10
lrwxrwxrwx 1 user_family user_family 8 May 2 11:43 d:: -> /dev/sr0
lrwxrwxrwx 1 user_family user_family 1 May 1 14:16 e: -> /
lrwxrwxrwx 1 user_family user_family 8 Apr 30 18:08 f:: -> /dev/sde
lrwxrwxrwx 1 user_family user_family 8 Apr 30 18:08 h:: -> /dev/sdc
lrwxrwxrwx 1 user_family user_family 8 Apr 30 22:15 i:: -> /dev/sdf
lrwxrwxrwx 1 user_family user_family 19 May 1 14:38 j: -> /home/user_family
lrwxrwxrwx 1 user_family user_family 8 May 2 11:44 k:: -> /dev/sdd
lrwxrwxrwx 1 user_family user_family 1 Apr 30 18:08 z: -> /
user_family@user-pc-home:~$
我想也许我太具体了,所以我尝试使用D:\media\user-family\
winecfg 中的更高级别的文件夹,并希望当我放入新磁盘时它会自动挑选出适当的子文件夹,但这不起作用,并且 winecfg 将其重写为无论如何,当我第二次运行 winecfg 时,完整路径。
答案1
请注意,在目录中,和符号链接~/.wine/dosdevices
都指向(我假设是 CD 的安装点),并且和都指向CD 驱动器的设备。d:
g:
/media/user_family/Geom-9
d::
g::
/dev/sr0
当 Wine 未运行时,删除额外的g:
符号g::
链接:
rm ~/.wine/dosdevices/g: ~/.wine/dosdevices/g::
删除重复项后,您的 CD 驱动器应保留为 D:。
udisks2
第二个问题是每个光盘都安装到不同的路径,这是使用子系统处理可移动设备的结果。出于安全原因,udisks2
不允许请求安装的用户以任何方式影响安装点的选择。
默认情况下,它会在位置 中为任何本地用户安装 CD /media/<username>/<CD volume name>
。通过设置ENV{UDISKS_FILESYSTEM_SHARED}="1"
应用于 CD 驱动器的 udev 规则,您可以将默认路径更改为/media/<CD volume name>
.但这对您没有帮助,因为 CD 的卷标仍然用作安装点名称的一部分,并且那这是根本没有被编程预期的事情wine
——至少现在还没有。
但你可以尝试将这一行放入你的/etc/fstab
文件中:
/dev/sr0 /media/cdrom iso9660,udf ro,noauto,user 0 0
然后用于sudo mkdir /media/cdrom
创建一个空目录,该目录将用作所有 CD 的安装点。
这应该覆盖udisks2
对 CD 驱动器的处理,并告诉系统任何 CD 都应该安装到该特定安装点,无论其卷标是什么。这是在 Linux 中使用 CD 驱动器的老式方式,也是wine
当前所期望的。
但是,当 CD 驱动器在 中列出时/etc/fstab
,udisks2
可能会也可能不会完全跳过它:您可能会失去 CD 驱动器基于 GUI 的安装功能(我尚未在 Ubuntu 19.04 上验证这一点)。但如果是这样,您现在应该能够以普通用户身份使用mount /media/cdrom
和命令,甚至无需使用.因此,使用三个命令编写脚本将非常简单:umount /media/cdrom
sudo
#!/bin/sh
mount /media/cdrom # mount the CD before starting wine
wine <your educational program and its options, if any>
umount /media/cdrom # unmount the CD after wine exits
...然后使用该脚本(可能装扮成漂亮的 GUI 图标或菜单项)来运行教育程序。