如何在 winecfg 中的給定位置永久修復 cd 驅動器
我在 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/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 圖示或菜單項)來執行教育程序。