Ubuntu

如何在 winecfg 中的給定位置永久修復 cd 驅動器

  • May 5, 2019

我在 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 時,完整路徑。

請注意,在~/.wine/dosdevices目錄中,符號連結d:g:符號連結都指向/media/user_family/Geom-9(我假設​​它是 CD 的安裝點),並且兩者都d::指向g::CD/dev/sr0驅動器的設備。

當 Wine 沒有執行時,刪除額外的g:符號g::連結:

rm ~/.wine/dosdevices/g: ~/.wine/dosdevices/g::

刪除重複項後,您的 CD 驅動器應保持為 D:。


第二個問題,即每個磁碟都安裝到不同路徑的事實,是使用udisks2子系統處理可移動設備的結果。出於安全原因,udisks2不允許請求掛載的使用者以任何方式影響掛載點的選擇。

預設情況下,它會在 location 中為任何本地使用者安裝 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/fstabudisks2可能會或可能不會完全跳過它:您可能會失去 CD 驅動器的基於 GUI 的掛載功能(我尚未在 Ubuntu 19.04 上驗證這一點)。但如果是這樣,您現在應該能夠以普通使用者的身份使用mount /media/cdromumount /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 圖示或菜單項)來執行教育程序。

引用自:https://unix.stackexchange.com/questions/516665