我在 Windows 中直接(「裸機」)和作為 VirtualBox 下的來賓啟動同一個 Linux 分割區。
當我直接啟動該分割區時,它會啟動並正常顯示桌面。但是,當我在虛擬機器中啟動時,我可以透過使用systemd.unit=multi-user.target
grub 啟動選項來啟動到 TTY 。
我的電腦有一個 nVidia GPU,因此為了啟動裸機,它安裝了 nvidia 驅動程式。但是,當我啟動 VM 時,VM 中不存在 nVidia GPU - VMWare 提供自己的虛擬 VGA 硬體。據我了解,Linux 為此提供了主流驅動程序,並且它們得到了正確的識別:
$ lspci -k
...
00:02.0 VGA compatible controller: VMware SVGA II Adapter
Subsystem: VMware SVGA II Adapter
Kernel driver in use: vmwgfx
Kernel modules: vmwgfx
...
如果我使用上述核心選項運行虛擬機,使其啟動到 TTY,然後透過 ssh 登入虛擬機,然後運行sudo systemctl start graphical.target
,虛擬機的圖形輸出再次顯示它在登入提示字元之前崩潰。它看起來像這樣:碰撞。 systemd 日誌包含以下日誌:日誌控制輸出。
我希望能夠在虛擬機器中啟動時不使用 nvidia 驅動程序,但在啟動裸機時使用 nvidia 驅動程式。我怎樣才能做到這一點?我真的很渴望讓它發揮作用。不幸的是,所有關於關閉 nvidia 驅動程式而不卸載它們的線上討論都是關於 optimus / prime / gpu 切換的主題,因為當您的筆記型電腦中同時有兩個 gpu 時,但這裡的情況並非如此。本質上,我正在做的事情就像我從一台具有 nvidia gpu 的電腦中取出硬碟,並將其放入具有通用 gpu(品牌為「VMware」)的電腦中,然後將其從那裡取出並將其放回nvidia 電腦中。我可以看到配置變更的指示,例如在grub 中有兩個單獨的選擇,一個用於“帶有nvidia gpu 的Linux”,一個用於“帶有vmware gpu 的Linux”,我必須選擇正確的一個。
我對此不是 100% 確定,但我了解 nvidia 驅動程式會修補內核,所以也許有一種方法可以選擇 nvidia 修補內核和非 nvidia 內核?這是一個很好的方法嗎?
我使用的是 Ubuntu 18.04 x64,並且使用的是 nvidia-390,但我可以將其版本更改為其他版本。
我將不勝感激任何和所有的提示。
答案1
事實證明,無需關閉 nVidia 驅動程式。這裡發生的情況是,凍結是由於 VirtualBox 中的一個錯誤造成的。將圖形控制器實作從 VMSVGA 切換到 VBoxVGA(而不是 VBoxSVGA)為我解決了這個問題,我現在可以啟動系統並取得桌面。
感謝 Freenode 上 vbox irc 頻道的 klaus-vb 提出了這個解決方案。他意識到了 Ubuntu 18.04 的錯誤。顯然 18.10 在這方面更好。