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 系統裡:
- 若需要支持 X,安裝 virtualbox-guest-utils包
- 若不需支持 X,安裝 virtualbox-guest-utils-nox包
- 另一個安裝方案是從宿主機(如果也是 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-only,Auto-mount, Make permanent 等雜項。還有一種管理方法是使用 VBoxManage
。詳情可以參閱 VirtualBox 手冊。
無論用哪一種方法來掛載共享目錄,首先都要做些準備工作。
為了避免出現 /sbin/mount.vboxsf: mounting failed with the error: No such device
這種錯誤,首先要確保 vboxsf
內核模塊已經加載。只要按照前面的步驟在加載客體機裡加載內核模塊,這一步應該沒問題。
為了讓掛載之後的目錄能讓 root 之外的用戶也直接讀寫,還要:
- 安裝 virtualbox-guest-utils包 軟體包時會創建用戶組
vboxsf
(在前面的步驟就裝過了) - 你的用戶需要加入到
vboxsf
用戶組
手動掛載[編輯 | 編輯原始碼]
在 Arch Linux 客體系統裡掛載共享目錄的命令是:
# mount -t vboxsf <共享目录的名字> <客户机系统的挂载点>
這個命令可以查看 vboxsf 的掛載參數:
# mount.vboxsf
假如用戶不在 vboxsf
組裡,用這個命令可以把掛載點的讀寫權限授權給他:
# mount -t vboxsf -o uid=1000,gid=1000 home /mnt/
其中 uid 和 gid 的值要與接受授權的用戶的值相對應。用 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)
Open in KDE launcher System Settings -> Startup and Shutdown -> Background Services, stop and unselect KScreen2 and save settings. Issue should go away forever