2014年3月20日 星期四

解決「VirtualBox 虛擬機的 Fedora 不能自動啟動 Guest Additions 安裝」(三)

最近在安裝 Guest Additions 時,又出現不能自動跳出正常的安裝畫面。回顧過去的發文,僅列出幾個解決這個問題的方法(其它較臨時性的作法未列),就有以下這麼多,
  1. 解決「VirtualBox 虛擬機的 Fedora 不能自動啟動 Guest Additions 安裝」
  2. VBox 裏 Fedora 安裝 Guest Additions 的準備工作
  3. VirtualBox 的「Guest Additions 成功升級」必勝秘技
  4. 解決「Fedora 18 不能安裝 Guest Additions 4.1.24」
  5. 解決「VBox 虛擬機的 Linux 之核心升級 3.11 後不能用『共用資料夾』」問題
  6. 在以 headless 模式啟動之 VirtualBox VM 安裝 Guest Additions
  7. 解決「VirtualBox 虛擬機的 Fedora 不能自動啟動 Guest Additions 安裝」(二)
這次又出問題,得想個一定可解決這個問題的方法才好。這個解決步驟一定要適用這個要求:
  • DVD 接在『IDE 控制器』或『SATA 控制器』
  • 可安裝與 VirtualBox 同一版本,或其它不同版本的『Guest Additions』
查閱之前的發文,以最近一次的發文最適合,就拿它來整理、修改一下。詳細步驟如下:

一、查詢「虛擬機」的 DVD 所接之控制器與埠號

不同的 VirtualBox 版本中,所用的『控制器』之名稱有些不同,要在命令模式下命令時,名稱一定要正確,不然命令會錯誤而不被執行。查詢「虛擬機」這些資訊的命令為『VBoxManage showvminfo VM_Name』,
[SiB@Core-i7 ~]$ VBoxManage showvminfo VM_Name
Name:VM_Name
Guest OS:Fedora (64 bit)
UUID:3d4cbc13-694d-446f-a790-0d1717ff31cc
.....
Teleporter Password:
Storage Controller Name (0):IDE 控制器
Storage Controller Type (0):PIIX4
Storage Controller Instance Number (0):0
Storage Controller Max Port Count (0):2
Storage Controller Port Count (0):2
Storage Controller Bootable (0):on
Storage Controller Name (1):SATA 控制器
Storage Controller Type (1):IntelAhci
Storage Controller Instance Number (1):0
Storage Controller Max Port Count (1):30
Storage Controller Port Count (1):1
Storage Controller Bootable (1):on
IDE 控制器 (1, 0):     Empty (ejected)
SATA 控制器 (0, 0): /home/SiB/VirtualBox VMs/VM_Name/VM_Name.vdi (UUID: f24a6f85-4c86-4035-b2a6-4558c1f0636c)
NIC 1:      MAC:      0800271D5084, Attachment: Bridged Interface 'eth0', Cable connected: on, Trace: off (file: none), Type: virtio, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
.....
Guest Facilities:

No active facilities.
其中『VM_Name』是該「虛擬機」的名稱,與安裝『Guest Additions』有關的資訊有四列,分別列表說明如下:
儲 存 裝 置 名 稱規格、狀態說    明
Storage Controller Name (0):IDE 控制器有時回應為『IDE』或『IDE Controller』
Storage Controller Name (1):SATA 控制器有時回應為『SATA』或『SATA 控制器』
IDE 控制器 (1, 0):Empty (ejected)

(目前無光碟)
DVD 在『IDE 控制器』的『第二個主埠』
(0, 0):『IDE 控制器』的『第一個主埠』
(0, 1):『IDE 控制器』的『第一個副埠』
(1, 0):『IDE 控制器』的『第二個主埠』
(1, 1):『IDE 控制器』的『第二個副埠』
SATA 控制器 (0, 0):/home/SiB/Vir...
(虛擬硬碟的
 目錄、名稱)
DVD 在『SATA 控制器』的『連接埠 0』。

:將 DVD 接在 SATA 又可改善「虛擬機」的效能,故本文提供的方法可使用者不論是 VirtualBox 的哪個版本,都可放心將 DVD 接在 SATA 控制器上。

二、掛載 Guest Additions 光碟 ISO 檔

這步驟的操作都在「虛擬機」所在的「主機電腦」進行,依 DVD 裝置所接的控制器,或與掛載的 Guest Additions 版本之相同與否又可分為三種,請讀者自行選擇適當的命令。

(1) DVD 裝置接在『IDE 控制器』(同版本)

假設『CD/DVD 裝置』接在「虛擬機」的『IDE 控制器』的『 第二主埠』上,其命令為
[SiB@Core-i7 ~]$ VBoxManage storageattach VM_Name --storagectl "IDE 控制器" --port 1 --device 0 --type=dvddrive --medium /usr/share/virtualbox/VBoxGuestAdditions.iso
其中,
參數說明
VBoxManageVirtualBox 的文字模式控制命令
storageattachVBoxManage 的次級命令,依用途分為數個次級命令。
VM_Name「虛擬機」的名稱,有空白字元時用雙引號括起來,或用跳脫字元(在 Linux 為『\ 』即『\』加一個空白。
--storagectl "IDE 控制器"指定「儲存裝置」的控制卡名稱
:名稱以由『VBoxManage showvminfo <VM name>』查詢為準。
--port 1DVD「儲存裝置」接在第二個控制埠。
註一:第一個控制埠之編號為 0,通常為硬碟。
註二:如果已掛載數顆硬碟,則 DVD 的埠號可能不為 1。
--device 0接在『主埠』,若接在『副埠』則為 1。
--type=dvddrive「儲存裝置」的類別為 DVD
--medium /usr/share/vir...儲存媒體為與 VirtualBox 同一版本的 Guest Additions。

(2) DVD 裝置接在『SATA 控制器』(同版本)

假設『CD/DVD 裝置』接在「虛擬機」的『 SATA 連接埠 1』,則其命令為
[SiB@Core-i7 ~]$ VBoxManage storageattach VM_test --storagectl "SATA 控制器" --port 1 --type=dvddrive --medium /usr/share/virtualbox/VBoxGuestAdditions.iso
其中,
參數說明
VBoxManageVirtualBox 的文字模式控制命令
storageattachVBoxManage 的次級命令,依用途分為數個次級命令。
VM_Name「虛擬機」的名稱,有空白字元時用雙引號括起來,或用跳脫字元(在 Linux 為『\ 』即『\』加一個空白。
--storagectl "SATA 控制器"指定「儲存裝置」的控制卡名稱
:名稱以由『VBoxManage showvminfo <VM name>』查詢為準。
--port 1DVD「儲存裝置」接在『SATA 連接埠 1』。
註一:第一個控制埠之編號為 0,通常為硬碟。
註二:如果已掛載數顆硬碟,則 DVD 的埠號可能不為 1。
--type=dvddrive「儲存裝置」的類別為 DVD
--medium /usr/share/vir...儲存媒體為與 VirtualBox 同一版本的 Guest Additions。

(3) 掛載『CD/DVD 裝置』的光碟 ISO 檔(不同版本)

在某些情形下,同一版本的 Guest Additions 可能一『客用作業系統(Guest OS)』有些相容問題,此時安裝不同版本的 Guest Additions 可暫時讓系統繼續執行(前文 3)。這個命令可以指定任何一個 ISO 檔放入『CD/DVD 裝置』,將自不同版本的 VirtualBox 安裝檔分離出的 Guest Additions 光碟 ISO 檔,掛載至 DVD 裝置,
[root@Core-i7 ~]# VBoxManage storageattach VM_test --storagectl "SATA" --port 1 --type=dvddrive --medium /home/SiB/VBoxGuestAdditions_4.3.8.iso
上例中,假設自 VirtualBox 4.3.8 分離出『VBoxGuestAdditions.iso』,重新命名為『VBoxGuestAdditions_4.3.8.iso』以資分別,並儲放在使用者 SiB 的家目錄下。其它參數請參考 (1) (2) 的內容。

三、安裝 Guest Additons (在虛擬機中操作)

在較新版本的 Fedora 系統中,完成步驟二時,會跳出一個『詢問是否執行』的視窗,
使用者回應【確定】後,會出現另一個『確認執行』的視窗,
應該要跳出一個『root 權限』的認證視窗,待使用者授權後才開始執行安裝步驟。可能就是這個認證視窗未跳出,以致後續過程未能繼續所致。
  下面的例子,是由「終端機」直接下達安裝命令,在較新的 Fedora 系統中,光碟會掛載在『/run/media/SiB/』這個目錄之下,『VBOXADDITIONS_4.1.32_92798』是光碟的標題名稱。執行的過程如下所示,
[root@VBox-VM ~]# /run/media/SiB/VBOXADDITIONS_4.1.32_92798/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.1.32 Guest Additions for Linux.........
VirtualBox Guest Additions installer
Removing installed version 4.1.30 of VirtualBox Guest Additions...
Removing existing VirtualBox DKMS kernel modules[確定 ]
Removing existing VirtualBox non-DKMS kernel modules[確定 ]
Building the VirtualBox Guest Additions kernel modules[確定 ]
Doing non-kernel setup of the Guest Additions[確定 ]
Starting the VirtualBox Guest Additions[確定 ]
You should restart your guest to make sure the new modules are actually used

Installing the Window System drivers
Installing X.Org Server 1.14 modules[確定 ]
Setting up the Window System to use the Guest Additions[確定 ]
You may need to restart the hal service and the Window System (or just restart
the guest system) to enable the Guest Additions.

Installing graphics libraries and desktop services component[確定 ]
[root@Core-i7 ~]#
上例中『/run/media/SiB/VBOXADDITIONS_4.1.32_92798/VBoxLinuxAdditions.run』命令的構成為:『/run/media/SiB』這個目錄是 Fedora 系統中,『主控台』(即在電腦前操作)使用者的光碟掛載處,VBOXADDITIONS_4.1.32_92798 是 Guest Additions 光碟的標籤,而『VBoxLinuxAdditions.run』則是執行安裝任務的程式。

:有時候使用者名稱(上例中之 SiB)被顯示為一個大於或等於 1000 的整數,這是 Fedora 的使用者『識別編號』。如果讀者不知道自己的『識別編號』,可以用『ll -n』這個命令查詢,
[SiBt@VBox-VM ~]$ ll -n
總計 32
drwxr-xr-x. 1000 1000 4096 3月 13 11:48 下載
drwxr-xr-x.210001000409612月 1810:28公共
drwxr-xr-x.21000100040963月 1917:45圖片
drwxr-xr-x.210001000409612月 1810:28影片
drwxr-xr-x.21000100040963月 1917:20文件
drwxr-xr-x.21000100040963月 1813:08桌面
drwxr-xr-x.210001000409612月 1810:28模板
drwxr-xr-x.210001000409612月 1810:28音樂
上例中第三欄及第四欄的 1000 分別是使用者的『識別編號』及『群組編號』。

已測試版本:

  • 主機、本地電腦:Fedora 14, 20
  • 虛擬機:Fedora 20
  • VirtualBox 4.1.32, 4.3.8

參考資料:

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)