使用 TNT 的 PD16 的虛拟機(我使用的版本是 16.1.2 (49151),應該是目前 TNT 最新版的),Mac 更新到 big sur 後,發現虛拟機打開後,無法連接配接網絡。目前,可用的解決方法隻有如下可用:
sudo -b /Applications/Parallels\ Desktop.app/Contents/MacOS/prl_client_app
但是,我并不願意這麼做,一是本來就不是使用的正版,二是 sudo 啟動,給軟體的權限太大了,還有就是,因為 sudo 啟動的,是以使用者目錄共享等這些,都是 mac 下 root 使用者中的。
。于是,我便想探索一下,為什麼會出現這個情況。
于是經過檢視系統日志,以及PD 官方的文檔:
系統關鍵日志:
......
event 4, if_name llw0
01-02 14:55:21.008 W /disp:21520:3c3c2/ Network setting was changed for 6 network subclass, event 1, if_name llw0
Error Domain=KMErrorDomain Code=27 "Extension with identifiers com.parallels.kext.netbridge,com.parallels.kext.vnic,com.parallels.kext.usbconnect,com.parallels.kext.hypervisor not approved to load. Please approve using System Preferences." UserInfo={NSLocalizedDescription=Extension with identifiers com.parallels.kext.netbridge,com.parallels.kext.vnic,com.parallels.kext.usbconnect,com.parallels.kext.hypervisor not approved to load. Please approve using System Preferences.}
01-02 14:59:42.388 F /service-wrap:21958:3fda9/ Stopping Parallels networking
01-02 14:59:42.443 F /prl_net:21547:3c24a/ ApplevisorNet::close_prlnet()
01-02 14:59:42.443 F /service-wrap:21958:3fda9/ Parallels Networking was stopped with retcode 0
01-02 14:59:45.075 F /prl_net:21547:3c24a/ ApplevisorNet::close_prlnet()
01-02 14:59:45.075 F /prl_net:21547:3e709/ stop_complete: status 1000
01-02 14:59:45.231 F /prl_net:21547:40113/ stop_complete: status 1000
01-02 15:01:17.410 F /service-wrap:698:18b0/ Starting Parallels networking...
01-02 15:01:17.573 F /prl_net_start:715:18fa/ Starting Parallels networking.
01-02 15:01:17.595 F /service-wrap:698:18b0/ Parallels networking sucessfully started
01-02 15:01:17.882 F /prl_naptd:738:1939/ Starting Parallels Network Daemon
01-02 15:01:17.932 F /prl_net:738:1939/ vmnet_start_interface started.
01-02 15:01:18.192 W /pvsHostInfo:705:18bf/ --- NET info refreshed ---
01-02 15:01:18.899 F /prl_net:738:1942/ if_created_handler: 1000 0x7fbb5bf0a2d0
01-02 15:01:18.899 F /prl_net:738:1942/ 0x7fbb5bf0a2d0 mtu 1500
01-02 15:01:18.899 F /prl_net:738:1942/ vm_mac: 00:1c:42:00:00:18; vmnet_framework_mac: 00:1c:42:00:00:18
01-02 15:01:18.901 F /prl_net:738:1939/ vmnet_start_interface started.
01-02 15:01:19.052 F /prl_net:738:1953/ if_created_handler: 1000 0x7fbb5bc1a740
01-02 15:01:19.052 F /prl_net:738:1953/ 0x7fbb5bc1a740 mtu 1500
01-02 15:01:19.052 F /prl_net:738:1953/ vm_mac: 00:1c:42:00:00:19; vmnet_framework_mac: 00:1c:42:00:00:19
01-02 15:01:19.053 W /prl_naptd:738:1939/ dns_filter_ipv6 = 1 on net0
01-02 15:01:19.401 F /prl_client_app:552:136e/ localhost: sending [DspCmdGetVirtualNetworkList] request...
01-02 15:01:19.427 F /disp:705:1944/ Processing command 'DspCmdGetVirtualNetworkList' 2110 (PJOC_SRV_GET_VIRTUAL_NETWORK_LIST) from client [{88a7945b-e3c7-49ef-8d3f-3a38f36d0d48}]
01-02 15:01:19.437 F /disp:705:1a95/ Command 'DspCmdGetVirtualNetworkList' 2110 processing was held up until dispatcher inited completelly in mode 1.
01-02 15:01:21.354 F /prl_client_app:552:136e/ localhost: sending [DspCmdGetVirtualNetworkList] request...
01-02 15:01:21.356 F /disp:705:1944/ Processing command 'DspCmdGetVirtualNetworkList' 2110 (PJOC_SRV_GET_VIRTUAL_NETWORK_LIST) from client [{88a7945b-e3c7-49ef-8d3f-3a38f36d0d48}]
01-02 15:01:21.357 F /disp:705:1c49/ Command 'DspCmdGetVirtualNetworkList' 2110 processing was held up until dispatcher inited completelly in mode 1.
01-02 15:01:21.462 F /disp:705:18bf/ initNetworkConfig() completed.
01-02 15:01:21.478 F /disp:705:1a95/ Command 'DspCmdGetVirtualNetworkList' 2110 processing will be continued
01-02 15:01:21.478 F /disp:705:1a95/ Processing command 'DspCmdGetVirtualNetworkList' 2110 (PJOC_SRV_GET_VIRTUAL_NETWORK_LIST) from client [{88a7945b-e3c7-49ef-8d3f-3a38f36d0d48}]
01-02 15:01:21.481 F /disp:705:1c49/ Command 'DspCmdGetVirtualNetworkList' 2110 processing will be continued
01-02 15:01:21.481 F /disp:705:1c49/ Processing command 'DspCmdGetVirtualNetworkList' 2110 (PJOC_SRV_GET_VIRTUAL_NETWORK_LIST) from client [{88a7945b-e3c7-49ef-8d3f-3a38f36d0d48}]
01-02 15:01:21.488 F /prl_client_app:552:136e/ localhost: received result for [DspCmdGetVirtualNetworkList]. RC = [PRL_ERR_SUCCESS]
01-02 15:01:21.511 F /prl_client_app:552:136e/ localhost: received result for [DspCmdGetVirtualNetworkList]. RC = [PRL_ERR_SUCCESS]
01-02 15:01:38.836 F /disp:705:239f/ Recieved event PET_VM_EVT_UPDATE_VMNET_STATE (101207) from vm {71f06e04-a5a7-472d-b46a-3bb43329255b} (name='Windows 10')
01-02 15:01:38.844 W /PrlGui:552:136e/ Message data: IssuerId={71f06e04-a5a7-472d-b46a-3bb43329255b}; Code=PRL_NET_PRLNET_OPEN_FAILED; Type=關鍵; Spontanous=1; CanBeHidden=0; ForceShow=0; UseActive=0; EventHandle=0xfb81; DefaultButton=1; Hint=0x0; ReportGenerated=0; Answers=[确定]; Short="網絡初始化失敗。"; Long="您的虛拟機将繼續正常運作,但将無法連接配接網絡。"; Details="";
01-02 15:01:38.844 F /PrlGui:552:136e/ Showing message box. Type = [關鍵, PRL_NET_PRLNET_OPEN_FAILED]. Id = {71f06e04-a5a7-472d-b46a-3bb43329255b}.
......
關鍵是這句話:
Error Domain=KMErrorDomain Code=27 "Extension with identifiers com.parallels.kext.netbridge,com.parallels.kext.vnic,com.parallels.kext.usbconnect,com.parallels.kext.hypervisor not approved to load. Please approve using System Preferences." UserInfo={NSLocalizedDescription=Extension with identifiers com.parallels.kext.netbridge,com.parallels.kext.vnic,com.parallels.kext.usbconnect,com.parallels.kext.hypervisor not approved to load. Please approve using System Preferences.}
然後貼上一個官方的文章:
https://www.parallels.com/cn/blogs/system-extensions-big-sur/

關鍵是看紅框内的差異圖,就知道了。
之是以 big sur 中,無法聯網,是因為PD 的核心擴充,被系統拒絕了。而打開 sudo 權限後,就擁有了 root 權限,是以核心擴充就被成功加載了。
但是,PD 官方也說了,PD 已經研發使用了最新的 macOS Big Sur API。是以,就是說使用的這個 TNT 二次加工的版本,雖然是最新版的,但是依然還是使用的舊版核心模式。
當然,還有一個方式,我就沒試了,就是關閉 macOS 核心的安全模式。