[VirtualBox] 在 Kali 裡安裝 VirtualBox Guest Additions 使用共享目錄
通常我用 VirtualBox 裝好一個 VM 後,就會立刻安裝 VirtualBox Guest Additions,
好讓 shared folder (共享目錄)的功能可以正常使用~
不知怎麼搞的,這件事情遇到 Kali Linux 後就常常出問題…
在 在 Linux VM 裡安裝 Guest Additions 這篇文章裡,
提到用 Insert Guest Additions CD image 的方式,但執行時可能會出現錯誤,
這時只要將光碟檔案複製出來再執行就行了,但沒想到這招今天也破功~
於是我又想照著 在 Kali Linux 裡安裝 VirtualBox Guest Additions 這篇寫的,
直接用 apt-get 安裝 virtualbox-guest-x11 這個套件,
裝是可以裝,但問題是最新版的 VirtualBox 似乎認不得這個 repository 裡的 Guest Additions,
而論壇上似乎也嗅到了 Oracle 並不支援 APT repository 上的 Guest Additions 的訊息…
最後決定還是使用 VirtualBox 直接提供的 Insert Guest Additions CD image 的方式,
再將遇到的問題一步步的解決,順便記錄一下~
1. 執行 VBoxLinuxAdditions.run
先照著 在 Linux VM 裡安裝 Guest Additions 這篇文章的方式,插入光碟執行,
照慣例會失敗,接著將光碟檔案複製出來,執行 VBoxLinuxAdditions.run,
cd ~ cp -R /media/cdrom0 ./ cd cdrom0 ./VBoxLinuxAdditions.run
如果也像我一樣失敗的話,看一下 /var/log/vboxadd-install.log 的內容:
Uninstalling modules from DKMS Attempting to install using DKMS Creating symlink /var/lib/dkms/vboxguest/5.0.20/source -> /usr/src/vboxguest-5.0.20 DKMS: add completed. Error! echo Your kernel headers for kernel 4.3.0-kali1-686-pae cannot be found at /lib/modules/4.3.0-kali1-686-pae/build or /lib/modules/4.3.0-kali1-686-pae/source. Failed to install using DKMS, attempting to install without /tmp/vbox.0/Makefile.include.header:97: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again. Stop. Creating user for the Guest Additions. Creating udev rule for the Guest Additions kernel module.
看來是 kernel header 檔案找不到,導致 VirtualBox 無法編譯 kernel module…
接下來得先解決這個問題才行~
2. 將系統升級到最新狀態
因為 APT repository 上放的通常是最新的 kernel header (舊版的可能要找找看,不過我懶得找了),
因此需要先將 Kali Linux 升到最新版 (跟 APT repository 上的一樣),
這樣就可以從 APT repository 拿到最新且與系統版本相符合的 kernel header 了~
執行下面的指令,用 APT 將 Kali Linux 升級到最新狀態並重開機:
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade sudo apt autoremove sudo reboot
重開機之後,用 uname 看一下現在的版本,
已經從 4.3.0-kali1-686-pae 變成 4.5.0-kali1-686-pae 了:
testuser@localhost:~/cdrom0$ uname -a
Linux localhost 4.5.0-kali1-686-pae #1 SMP Debian 4.5.3-2kali1 (2016-05-09) i686 GNU/Linux
3. 再次執行 VBoxLinuxAdditions.run
再執行一次 VBoxLinuxAdditions.run,這次會花比較久時間,
因為它有在編譯 kernel module (可以看 /var/log/vboxadd-install.log):
testuser@localhost:~/cdrom0$ sudo ./VBoxLinuxAdditions.run Verifying archive integrity... All good. Uncompressing VirtualBox 5.0.20 Guest Additions for Linux............ VirtualBox Guest Additions installer Removing installed version 5.0.20 of VirtualBox Guest Additions... Removing existing VirtualBox non-DKMS kernel modules ...done. Copying additional installer modules ... Installing additional modules ... Removing existing VirtualBox non-DKMS kernel modules ...done. Building the VirtualBox Guest Additions kernel modules The headers for the current running kernel were not found. If the following module compilation fails then this could be the reason. Building the main Guest Additions module ...done. Building the shared folder support module ...done. Building the graphics driver module ...done. Doing non-kernel setup of the Guest Additions ...done. You should restart your guest to make sure the new modules are actually used
這次沒有錯誤,可以重開機讓 VirtualBox Guest Additions 生效~
4. 設定 VirtualBox VM 的 share folder
到 Kali Linux VM 的 Machine > Settings > Shared Folders,
按下新增 + 鈕,來新增一個共享目錄:
設定好的畫面:
這時再將 Kali Linux 重開機,應該可以看到桌面上跑出一個 sf_MacHome 的磁碟,
那就是 VirtualBox 的共享目錄囉,用 mount 也可以看的到:
testuser@localhost:~$ mount MacHome on /media/sf_MacHome type vboxsf (rw,nodev,relatime)
要注意的是這個共享目錄只有 root 可以存取,
像我用一般使用者跑 Kali Linux 的話,就得用 sudo 才能看到這共享目錄裡的東西了~
參考資料:How to install Linux Kernel Headers on Kali Linux 2.0 (Kali Sana)