VirtualBox/在虛擬機中安裝 Arch Linux - Arch Linux 中文维基

跳至內容

# VirtualBox/在虛擬機中安裝 Arch Linux

出自 Arch Linux 中文维基
< VirtualBox

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

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

相關文章

- VirtualBox

本文介紹如何在 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)

然後安裝 kscreen包.

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

分類：​

- 安裝過程
- 虛擬機管理

隱藏分類：​

- 使用「模板:Translateme」標記的頁面或章節

VirtualBox/在虛擬機中安裝 Arch Linux
新增話題