VirtualBox/在虛擬機中安裝 Arch Linux

出自 Arch Linux 中文维基

本文或本節需要翻譯。要貢獻翻譯,請訪問簡體中文翻譯團隊

附註: Partial translation(在 Talk:VirtualBox/在虛擬機中安裝 Arch Linux# 中討論)

本文介紹如何在 VirtualBox 中安裝 Arch linux。

在虛擬機的虛擬光碟機裡加載 Arch Linux 的安裝鏡像,然後按照安裝指南裡的步驟繼續即可。

安裝[編輯 | 編輯原始碼]

以 EFI 模式安裝(可選)[編輯 | 編輯原始碼]

如果你想在 VirtualBox 裡以 EFI 模式安裝 Arch Linux,這需要在虛擬機的設置窗口裡,先從左側選擇 System,再從右側選擇 Motherboard 標籤頁,最後勾選 Enable EFI (special OSes only) 選項。從安裝鏡像的啟動菜單裡選好 Arch Linux 的內核之後,這時啟動過程要卡頓一兩分鐘,之後就能正常進入系統,稍安勿躁。

等系統和啟動引導程序安裝成功之後,VirtualBox 會首先嘗試從 ESP 加載 /EFI/BOOT/BOOTX64.EFI。如果這個首選的文件加載失敗,VirtualBox 會從 ESP 根目錄嘗試加載 EFI shell 腳本 startup.nsh。這樣來說,為了能順利進入系統,你需要從下面幾種方案選一個:

  • 每次都從 EFI shell 手動選擇啟動引導程序
  • 把啟動引導程序的 .EFI 文件移動到默認位置:/EFI/BOOT/BOOTX64.EFI
  • 自己編寫 ESP 分區的 /startup.nsh 腳本,用這個腳本加載想使用的引導程序(例如 \EFI\grub\grubx64.efi
  • 從 ESP 分區的 startup.nsh 腳本直接啟動到 Linux

雖然 VirtualBox 支持按 F2 進入自帶的 VirtualBox Boot Manager 來管理 EFI 啟動過程,但這部分功能還不完整而且有 bug。它還不能持久保存交互式設置的 EFI 變量。也就是說,開機時按下 F12 之後手動添加的、或者用 efibootmgr 添加的 EFI 項目,重啟後依然可以生效,但關機之後就會失效。

另見:UEFI VirtualBox installation boot problems.

安裝客體機插件[編輯 | 編輯原始碼]

VirtualBox 客體機插件 為客體系統提供了必要的驅動與應用軟體,其作用包括改善圖像解析度與滑鼠支持等。在客體機的 Arch Linux 系統裡:

注意:
  • 另一個安裝方案是從宿主機(如果也是 Arch 系統)安裝 virtualbox-guest-iso,這個軟體包裡有供客體機安裝插件的 ISO 文件。裝好這個包之後,啟動客體機,點擊菜單項目 Devices -> Insert Guest Additions CD Image 即可加載安裝鏡像。
  • 若要手動重新編譯客體機的 VirtualBox 內核模塊,以 root 權限運行 rcvboxadd setup 即可。

客體機裡運行的插件和主體機上的 VirtualBox 程序版本需要匹配。否則某些功能(比如剪貼板互通)可能會失效。如果你在客體機裡升級系統(比如運行了 pacman -Syu),那麼宿主機上的 VirtualBox 也要跟進更新到最新版。VirtualBox GUI 菜單裡的 "Check for updates" 功能未必夠用,可以去官網 VirtualBox.org 再看看。

加載 VirtualBox 內核模塊[編輯 | 編輯原始碼]

若要開機自動加載模塊,啟用 vboxservice.service 服務即可。該服務還能起到將客戶機時間與宿主機同步的功能。

若要手動加載模塊,使用這個命令:

# modprobe -a vboxguest vboxsf vboxvideo

啟動 VirtualBox 客體機服務[編輯 | 編輯原始碼]

安裝並加載了 VirtualBox 內核模塊之後,如果你在虛擬機系統裡使用 X,那麼推薦啟動這樣一個客體機服務:服務的程序名字叫 VBoxClient,它與 X 窗口系統溝通來實現其功能。具體功能包括:

  • 在宿主機與客體機之間互通剪貼板,實現滑鼠拖拽文件
  • 無縫窗口模式
  • 宿主機的虛擬機窗口縮放之後,使客體機的顯示解析度與之自動匹配
  • 檢查宿主機的 VirtualBox 的版本

上述功能由專門的命令行參數來各自啟用:

$ VBoxClient --clipboard --draganddrop --seamless --display --checkhostversion

為了方便,VBoxClient-all 這個 shell 腳本能取代上面這一整行命令。

virtualbox-guest-utils 包提供了 XDG 自啟動項目 /etc/xdg/autostart/vboxclient.desktop,這會在登錄 X 時自動運行 VBoxClient-all。然而,如果你在用的桌面環境窗口管理器不支持 XDG 自啟動,那麼你就需要手動配置。詳見自動啟動#桌面環境

至此,你的 Arch Linux 應該能在虛擬機裡正常運行了。需要指出的是,某些功能(如剪貼板互通)在 VirtualBox 裡是默認禁用的。這需要在各個虛擬機的設置選項裡手動開啟(Settings > General > Advanced > Shared Clipboard)。

顯卡加速[編輯 | 編輯原始碼]

從 VirtualBox 選項裡可以開啟顯卡加速。已知 GDM 顯示管理器從 3.16 版本起會導致顯卡加速失效。[1] 如果你遇到類似問題,可以換另一種顯示管理器(比如 LightDM)試試看。[2] [3]

啟用共享目錄[編輯 | 編輯原始碼]

共享目錄的設置在宿主機這邊操作。啟動 VirtualBox 的圖形管理界面,在虛擬機的設置界面的 Shared Folders 標籤頁可以找到相關設置。可以設置的項目包括:目錄在宿主機的位置 Folder Path,客戶機掛載點的名字 Folder name,還有 Read-onlyAuto-mount, Make permanent 等雜項。還有一種管理方法是使用 VBoxManage。詳情可以參閱 VirtualBox 手冊

無論用哪一種方法來掛載共享目錄,首先都要做些準備工作。

為了避免出現 /sbin/mount.vboxsf: mounting failed with the error: No such device 這種錯誤,首先要確保 vboxsf 內核模塊已經加載。只要按照前面的步驟在加載客體機裡加載內核模塊,這一步應該沒問題。

為了讓掛載之後的目錄能讓 root 之外的用戶也直接讀寫,還要:

手動掛載[編輯 | 編輯原始碼]

在 Arch Linux 客體系統裡掛載共享目錄的命令是:

# mount -t vboxsf <共享目录的名字> <客户机系统的挂载点>

這個命令可以查看 vboxsf 的掛載參數:

# mount.vboxsf

假如用戶不在 vboxsf 組裡,用這個命令可以把掛載點的讀寫權限授權給他:

# mount -t vboxsf -o uid=1000,gid=1000 home /mnt/

其中 uidgid 的值要與接受授權的用戶的值相對應。用 id 命令可以為該用戶找到這兩個值。

自動掛載[編輯 | 編輯原始碼]

注意: 自動掛載需要啟用 vboxservice 服務才能生效

為使用自動掛載功能,首先需要在 GUI 的管理界面裡勾選自動掛載,或者為命令行工具 VBoxManage sharedfolder 加上參數 --automount

此時,共享目錄應該已經在 /media/sf_<共享目錄的名字> 掛載上了。如果用戶沒有讀寫權限,確認一下該目錄的權限是否是 755。如果是 750 的話,確保該目錄屬於 vboxsf 組。

可以用軟連結把共享目錄連結到方便的位置,這樣就不必進入那麼遠的目錄了:

$ ln -s /media/sf_共享目录的名字 ~/my_documents

按配置於啟動時掛載[編輯 | 編輯原始碼]

fstab 可以用來掛載目錄。然而,為了避免 Systemd 啟動可能帶來的問題,要在 /etc/fstab 配置裡為共享目錄加上掛載選項 noauto,x-systemd.automount。這樣,共享目錄會在開機後初次訪問時掛載,而不是在系統啟動過程裡掛載。這可以避免 Systemd 在客體機插件加載之前就按 fstab 掛載目錄而導致的出錯。

sharedFolderName  /path/to/mntPtOnGuestMachine  vboxsf  uid=user,gid=group,rw,dmode=700,fmode=600,noauto,x-systemd.automount 
  • sharedFolderName: 在虛擬機設置界面 Settings > SharedFolders > Edit > FolderName 裡所設置的值。這個值和宿主機裡實際的目錄名可以不相同。要查看虛擬機的設置,在宿主機的 VirtualBox GUI 管理界面選中虛擬機,然後點擊工具欄的 Settings 按鈕,再從彈出的對話框裡選擇 Shared Folders
  • /path/to/mntPtOnGuestMachine: 如果這個路徑在虛擬機裡還不存在,那麼需要在掛載之前手動創建(用 mkdir 就可以)。
  • dmode/fmode 分別用來指定掛載共享目錄之後,下面的子目錄與文件的屬性。

mount.vboxsf 尚不支持 nofail 掛載參數:

desktop  /media/desktop  vboxsf  uid=user,gid=group,rw,dmode=700,fmode=600,nofail  0  0

從宿主機 SSH 登錄客體機[編輯 | 編輯原始碼]

在虛擬機設置的 Network 標籤頁 -> 右側打開 Advanced 摺疊 -> 單擊 Port Forwarding 按鈕,可以設置埠。

假如我們設置了將宿主機的 3022 埠轉發到客體機的 22 埠。然後在宿主機執行:

user@host$ ssh -p 3022 $USER@localhost

即可 SSH 登錄客體機。

用 SSHFS 來實現共享目錄[編輯 | 編輯原始碼]

配置好了埠轉發,再裝上 SSHFS,只要在宿主機運行這個命令就可以把客體機的目錄掛載到宿主機:

user@host$ sshfs -p 3022 $USER@localhost:$HOME ~/shared_folder

這樣也能實現互傳文件。

故障排除[編輯 | 編輯原始碼]

訪客作業系統中訪問串口[編輯 | 編輯原始碼]

請參閱 使用終端仿真器程序連接串口的操作方式.

安裝過程中TTY文本太小[編輯 | 編輯原始碼]

在主機上的VirtualBox管理器中,將顯示比例設置為2.00或3.00。

啟動 Xorg 之後虛擬機卡死[編輯 | 編輯原始碼]

出現這一問題的原因是驅動程序缺失或有錯。例如:[4][5]。試試從菜單項 Settings > Display 裡關閉 3D 加速,並確認要用的 Xorg 驅動都已裝好。

全屏模式只能看到黑屏[編輯 | 編輯原始碼]

在某些窗口管理器(i3, awesome)下運行 VirtualBox 時,由於頂層狀態欄(overlay bar)的問題,VirtualBox 的全屏模式會出現問題。試試在菜單項 "Guest Settings > User Interface > Mini ToolBar" 裡禁用 "Show in Full-screen/Seamless" 有可能繞過這一問題。詳情可見上游的問題匯報

如果屏幕是在某個大小之後開始黑屏,例如大於 2048 像素寬度時,請嘗試增加 Settings > Display > Screen > Video Memory

Linux 客體機的聲音緩慢 / 扭曲[編輯 | 編輯原始碼]

在 VirtualBox 裡運行時,Linux 內核的 AC97 音效卡驅動偶爾會猜錯時鐘頻率設定。這就會造成聲音播放速度太慢 / 太快。在 /etc/modprobe.d 目錄裡創建一個內容如下的文件即可解決:

options snd-intel8x0 ac97_clock=48000

Linux 宿主機存在音頻卡頓/延遲[編輯 | 編輯原始碼]

在某些情況下,音頻可能會出現延遲性能問題(例如在在線視頻流媒體中音頻與視頻不同步)。一個可能的解決方法是在VirtualBox中使用Intel HD音頻控制器,並通過在客戶作業系統的/etc/modprobe.d/ 目錄下的文件中添加以下行來禁用其節能功能:

options snd_hda_intel power_save=0 power_save_controller=N

Arch: pacstrap 腳本出錯[編輯 | 編輯原始碼]

如果在安裝 Arch 系統時,還沒有 啟動至新安裝到虛擬盤的系統,就用 pactrap 直接安裝客體機插件,需要以 root 身份運行一次 umount -l /mnt/dev 然後再次運行 pactrap。否則新裝的系統就不可用。

Windows 宿主機: VERR_ACCESS_DENIED[編輯 | 編輯原始碼]

為了能在 Windows 宿主機上讀取 RAW 格式的 VMDK 鏡像,VirtualBox GUI 需要以管理員權限啟動。

在Arch Linux客戶機中沒有硬體3D加速[編輯 | 編輯原始碼]

virtualbox-guest-utils 包的版本5.2.16-2缺少文件VBoxEGL.so. 這導致Arch Linux虛擬機無法正常使用3D加速。請參閱 FS#49752.

為了解決這個問題,請按照FS#49752#comment152254中提供的補丁集進行修復。需要對補丁集進行一些修復,以使其適用於版本5.2.16-2。

Plasma將客戶機的解析度重置為800×600[編輯 | 編輯原始碼]

See KDE#Cannot change screen resolution when running in a virtual machine.

在Plasma-X11最小安裝中出現黑屏[編輯 | 編輯原始碼]

如果您使用的是 plasma-desktop 最小安裝,而不是 plasma (包含Wayland支持), 那麼在啟動Plasma-X11會話後,可能會出現黑屏但有光標的情況。

要解決此問題,請在VirtualBox窗口中多次調整虛擬機窗口大小,然後通過以下方式手動設置解析度。

View -> Virtual Screen 1 -> Resize to 1024x768 (or other resolution you like)

然後 安裝 kscreen.

Open in KDE launcher System Settings -> Startup and Shutdown -> Background Services, stop and unselect KScreen2 and save settings. Issue should go away forever