หลังจากแนะนำบทความ ติดตั้ง VMware Server บน Fedora 9 ไปแล้ว ซึ่งเป็นการติดตั้ง VMware Server โดยใช้ Host OS เป็นลีนุกซ์ Fedora 9
ในบทความนี้จะเพิ่มเติมวิธีการติดตั้ง VMware Tools ซึ่งเป็นโปรแกรมที่ติดตั้งบน Guest OS ที่ลงลีนุกซ์เพื่อเพิ่มประสิทธิภาพการทำงานของลีนุกซ์บน Guest OS ให้ดียิ่งขึ้น โดยตัวอย่างจะเป็นการติดตั้ง VMware Tools เวอร์ชั่น 1.0.7 บน Fedora 9
ตัวอย่างคุณสมบัติที่เพิ่มขึ้นของ Guest OS หลังจากการติดตั้ง VMware Tools
- ช่วยเรื่องการรับส่งไฟล์ระหว่าง Host และ Guest OS
- เพิ่มประสิทธิภาพการจัดการเรื่องหน่วยความจำ (Memory Management)
- เพิ่มความสามารถของการแสดงผล (Video) และการใช้ Mouse ระหว่าง Host และ Guest OS
หมายเหตุ
- ขอย้ำอีกที VMware Tools เป็นโปรแกรมที่ติดตั้งบน Guest OS ตัวอย่างทั้งหมดในบทความนี้ติดตั้งและคอนฟิกบนลีนุกซ์ที่เป็น Guest OS ทั้งสิ้น
- จริงๆ แล้ว ถึงแม้ไม่ลง VMware Tools บน Guest OS ไม่ว่าจะติดตั้ง OS อะไร ก็สามารถใช้ได้ แต่แนะนำให้ลงเพิ่ม เพื่อเพิ่มประสิทธิภาพ โดยตัวโปรแกรมนั้นสามารถติดตั้งได้หลาย OS ไม่ว่าจะเป็น Linux, Windows หรือ Sun Solaris
ความต้องการของระบบ (Guest OS)
ก่อนที่จะติดตั้งและคอนฟิก VMware Tools บน Fedora 9 ได้ ต้องติดตั้ง kernel-devel ตามตัวอย่าง
[root@fc9-guest ~]# rpm -ivh kernel-devel-2.6.25-14.fc9.i686.rpm Preparing... ########################################### [100%] 1:kernel-devel ########################################### [100%]
ไฟล์อื่นๆ ที่จำเป็นคือ
- libdnet-1.12-3.fc9.i386.rpm
- libdnet-progs-1.12-3.fc9.i386.rpm
- libdnet-devel-1.12-3.fc9.i386.rpm
- libicu-3.8.1-7.fc9.i386.rpm
- libicu-devel-3.8.1-7.fc9.i386.rpm
ติดตั้งโปรแกรม VMware Tools บน Guest
ในโปรแกรม VMware Server Console คลิ้กเลือก VM -> Install VMware Tools…
หลังคลิ้กเลือกแล้ว โปรแกรม VMware Server Console จะเข้าสู่โหมดการติดตั้ง VMware Tools โดยจะสร้างซีดีไดร์ฟเสมือนขึ้นมา ด้านในจะมีไฟล์สำหรับการติดตั้ง ให้ใช้คำสั่ง mount ซีดีไดร์ฟเสมือนขึ้นมาแล้วคัดลอกไฟล์ตัวโปรแกรมออกมา ให้เลือกไฟล์ชนิด rpm
ตัวอย่างการ mount ซีดีไดร์ฟเสมือนในโหมดการติดตั้ง VMware Tools
[root@fc9-guest ~]# mount /dev/cdrom /media/ mount: block device /dev/sr0 is write-protected, mounting read-only
[root@fc9-guest ~]# ls /media/ VMwareTools-1.0.7-108231.i386.rpm VMwareTools-1.0.7-108231.tar.gz
[root@fc9-guest ~]# cp /media/VMwareTools-1.0.7-108231.i386.rpm .
ใช้คำสั่ง rpm เพื่อติดตั้งไฟล์ VMware Tools
[root@fc9-guest ~]# rpm -ivh VMwareTools-1.0.7-108231.i386.rpm Preparing... ########################################### [100%] 1:VMwareTools ########################################### [100%]
ดาวน์โหลดและติดตั้ง Open Virtual Machine Tools
หลังจากติดตั้งไฟล์ VMware Tools แล้ว สำหรับ Fedora 9 นั้น ก่อนที่จะคอนฟิกขั้นต่อไปได้ ต้องดาวน์โหลดไฟล์ Open Virtual Machine Tools เพิ่มเติมเพื่อแก้ไขแทนที่โค้ดที่ติดตั้งมากับ VMware Tools ก่อนที่คอมไพล์ kernel module ขึ้นมาใหม่
หมายเหตุ สามารถดูปัญหาที่เกิดขึ้นบน Fedora 9 ในกรณีที่พยายามคอนฟิก VMware Tools โดยไม่ได้ติดตั้ง Open Virtual Machine Tools ในด้านล่างของบทความนี้
ดาวน์โหลด Open Virtual Machine Tools จาก http://open-vm-tools.sourceforge.net/ ตอนที่เขียนบทความเป็นเวอร์ชั่น open-vm-tools-2008.09.03-114782.tar.gz
เมื่อได้ไฟล์มาแล้ว ก็ทำการแตกไฟล์และคอมไพล์และนำโค้ดที่ได้จากการคอมไพล์เข้าไปแทนที่โค้ดที่ติดตั้งมากับ VMware Tools
[root@fc9-guest ~]# tar zxvf open-vm-tools-2008.09.03-114782.tar.gz open-vm-tools-2008.09.03-114782/ open-vm-tools-2008.09.03-114782/modules/ open-vm-tools-2008.09.03-114782/modules/Makefile.am open-vm-tools-2008.09.03-114782/modules/linux/ ... ... open-vm-tools-2008.09.03-114782/configure open-vm-tools-2008.09.03-114782/INSTALL open-vm-tools-2008.09.03-114782/Makefile.in open-vm-tools-2008.09.03-114782/FILES
[root@fc9-guest ~]# cd open-vm-tools-2008.09.03-114782/
คอมไฟล์โค้ดของ Open Virtual Machine Tools
หมายเหตุ การคอมไพล์ด้านล่างนี้ใส่ ‘without-x’ เนื่องจากเครื่องที่ทดสอบไม่มีการติดตั้ง X Window ถ้าเครื่องที่ต้องการใช้มี X Window ติดตั้งอยู่แล้ว สามารถเอาออบชั่นนี้ออกไปได้
[root@fc9-guest open-vm-tools-2008.09.03-114782]# ./configure --without-x --without-procps checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu checking build system type... (cached) i686-pc-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c ... ... ... config.status: creating modules/Makefile config.status: creating scripts/Makefile config.status: executing depfiles commands config.status: executing libtool commands
[root@fc9-guest open-vm-tools-2008.09.03-114782]# make Making all in lib make[1]: Entering directory `/root/open-vm-tools-2008.09.03-114782/lib' Making all in guestRpc make[2]: Entering directory `/root/open-vm-tools-2008.09.03-114782/lib/guestRpc' ... ... make[1]: Leaving directory `/root/open-vm-tools-2008.09.03-114782/modules' make[1]: Entering directory `/root/open-vm-tools-2008.09.03-114782' make[1]: Nothing to be done for `all-am'. make[1]: Leaving directory `/root/open-vm-tools-2008.09.03-114782'
หลังจากคอมไพล์เสร็จแล้ว รวม (tar) ไฟล์ ที่ได้ แล้วใช้คำสั่ง cp เพื่อคัดลอกไฟล์ที่คอมไพล์ได้ไปแทนที่ไฟล์ที่มากับ VMware Tools ตามตัวอย่างต่อไปนี้
[root@fc9-guest open-vm-tools-2008.09.03-114782]# cd modules/linux/
[root@fc9-guest linux]# cp -a ./vmhgfs ./vmhgfs-only [root@fc9-guest linux]# cp -a ./vmmemctl ./vmmemctl-only [root@fc9-guest linux]# cp -a ./vmxnet ./vmxnet-only [root@fc9-guest linux]# tar cf vmhgfs.tar vmhgfs-only [root@fc9-guest linux]# tar cf vmmemctl.tar vmmemctl-only [root@fc9-guest linux]# tar cf vmxnet.tar vmxnet-only
[root@fc9-guest linux]# cp *.tar /usr/lib/vmware-tools/modules/source cp: overwrite `/usr/lib/vmware-tools/modules/source/vmhgfs.tar'? y cp: overwrite `/usr/lib/vmware-tools/modules/source/vmmemctl.tar'? y cp: overwrite `/usr/lib/vmware-tools/modules/source/vmxnet.tar'? y
คอนฟิก VMware Tools
ก่อนทีจะรันคอนฟิกให้สร้างไฟล์ /etc/modprobe.conf ขึ้นมาก่อน ถ้ายังไม่มี เพราะการรันคอนฟิก vmware-config-tools.pl จะมีการสร้างคอนฟิกสำหรับการโหลด kernel module เก็บไว้ในไฟล์นี้
[root@fc9-guest ~]# touch /etc/modprobe.conf [root@fc9-guest ~]# vmware-config-tools.pl Stopping VMware Tools services in the virtual machine: Guest operating system daemon: [ OK ] Trying to find a suitable vmhgfs module for your running kernel.
None of the pre-built vmhgfs modules for VMware Tools is suitable for your running kernel. Do you want this program to try to build the vmhgfs module for your system (you need to have a C compiler installed on your system)? [yes] Using compiler "/usr/bin/gcc". Use environment variable CC to override.
What is the location of the directory of C header files that match your running kernel? [/lib/modules/2.6.25-14.fc9.i686/build/include] Extracting the sources of the vmhgfs module.
Building the vmhgfs module.
Using 2.6.x kernel build system. make: Entering directory `/tmp/vmware-config10/vmhgfs-only' make -C /lib/modules/2.6.25-14.fc9.i686/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules make[1]: Entering directory `/usr/src/kernels/2.6.25-14.fc9.i686' CC [M] /tmp/vmware-config10/vmhgfs-only/backdoor.o CC [M] /tmp/vmware-config10/vmhgfs-only/backdoorGcc32.o CC [M] /tmp/vmware-config10/vmhgfs-only/bdhandler.o CC [M] /tmp/vmware-config10/vmhgfs-only/cpName.o CC [M] /tmp/vmware-config10/vmhgfs-only/cpNameLinux.o CC [M] /tmp/vmware-config10/vmhgfs-only/cpNameLite.o CC [M] /tmp/vmware-config10/vmhgfs-only/dentry.o CC [M] /tmp/vmware-config10/vmhgfs-only/dir.o CC [M] /tmp/vmware-config10/vmhgfs-only/file.o CC [M] /tmp/vmware-config10/vmhgfs-only/filesystem.o CC [M] /tmp/vmware-config10/vmhgfs-only/fsutil.o CC [M] /tmp/vmware-config10/vmhgfs-only/hgfsBd.o CC [M] /tmp/vmware-config10/vmhgfs-only/hgfsEscapeLinux.o CC [M] /tmp/vmware-config10/vmhgfs-only/hgfsUtil.o CC [M] /tmp/vmware-config10/vmhgfs-only/inode.o CC [M] /tmp/vmware-config10/vmhgfs-only/kernelStubsLinux.o CC [M] /tmp/vmware-config10/vmhgfs-only/link.o CC [M] /tmp/vmware-config10/vmhgfs-only/messageBackdoor.o CC [M] /tmp/vmware-config10/vmhgfs-only/message.o CC [M] /tmp/vmware-config10/vmhgfs-only/module.o CC [M] /tmp/vmware-config10/vmhgfs-only/page.o CC [M] /tmp/vmware-config10/vmhgfs-only/request.o CC [M] /tmp/vmware-config10/vmhgfs-only/rpcout.o CC [M] /tmp/vmware-config10/vmhgfs-only/staticEscape.o CC [M] /tmp/vmware-config10/vmhgfs-only/stubs.o CC [M] /tmp/vmware-config10/vmhgfs-only/super.o CC [M] /tmp/vmware-config10/vmhgfs-only/vmhgfs.mod.o LD [M] /tmp/vmware-config10/vmhgfs-only/vmhgfs.o Building modules, stage 2. MODPOST 1 modules CC /tmp/vmware-config10/vmhgfs-only/vmhgfs.mod.o LD [M] /tmp/vmware-config10/vmhgfs-only/vmhgfs.ko make[1]: Leaving directory `/usr/src/kernels/2.6.25-14.fc9.i686' cp -f vmhgfs.ko ./../vmhgfs.o make: Leaving directory `/tmp/vmware-config10/vmhgfs-only' The module loads perfectly in the running kernel.
pcnet32 30964 0 Unloading pcnet32 module
Extracting the sources of the vmxnet module.
Building the vmxnet module.
Using 2.6.x kernel build system. make: Entering directory `/tmp/vmware-config10/vmxnet-only' make -C /lib/modules/2.6.25-14.fc9.i686/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules make[1]: Entering directory `/usr/src/kernels/2.6.25-14.fc9.i686' CC [M] /tmp/vmware-config10/vmxnet-only/vmxnet.o Building modules, stage 2. MODPOST 1 modules CC /tmp/vmware-config10/vmxnet-only/vmxnet.mod.o LD [M] /tmp/vmware-config10/vmxnet-only/vmxnet.ko make[1]: Leaving directory `/usr/src/kernels/2.6.25-14.fc9.i686' cp -f vmxnet.ko ./../vmxnet.o make: Leaving directory `/tmp/vmware-config10/vmxnet-only' The module loads perfectly in the running kernel.
No X install found.
Starting VMware Tools services in the virtual machine: Switching to guest configuration: [ OK ] Guest filesystem driver: [ OK ] Guest vmxnet fast network device: [ OK ] DMA setup: [ OK ] Guest operating system daemon: [ OK ]
The configuration of VMware Tools 1.0.7 build-108231 for Linux for this running kernel completed successfully.
You must restart your X session before any mouse or graphics changes take effect.
You can now run VMware Tools by invoking the following command: "/usr/bin/vmware-toolbox" during an X session.
To make use of the vmxnet driver you will need to rebooot. Enjoy,
--the VMware team
ตัวอย่างไฟล์ /etc/modprobe.conf หลังจากการคอนฟิก
[root@fc9-guest ~]# cat /etc/modprobe.conf # Added by VMware Tools install vmnics /sbin/modprobe vmxnet; /sbin/modprobe pcnet32; /bin/true alias char-major-14 sb options sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330
เมื่อคอนฟิกเสร็จแล้ว ต้องรีบูต (shutdown -r) เครื่องเพื่อให้ไฟล์ของ VMware Tools ที่ติดตั้งไปมีผล
ตรวจสอบหลังจากติดตั้ง VMware Tools
ตัวอย่างที่เห็นได้ชัดสุดหลังจากการติดตั้ง VMware Tools คือมีการเปลี่ยนแปลงชนิดของการ์ดเน็ตเวิร์กคือจาก pcnet32 ไปเป็น vmxnet
ตัวอย่างชนิดของการ์ดเน็ตเวิร์กก่อนติดตั้ง VMware Tools
[root@fc9-guest ~]# lsmod | grep net pcnet32 30964 0 mii 8192 1 pcnet32
[root@fc9-guest ~]# ethtool eth0 Settings for eth0: Current message level: 0x00000007 (7) Link detected: yes
ตัวอย่างชนิดของการ์ดเน็ตเวิร์กหลังติดตั้ง VMware Tools
[root@fc9-guest ~]# lsmod | grep net
vmxnet 17152 0
pcnet32 30964 0
mii 8192 1 pcnet32
[root@fc9-guest ~]# ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 1000baseT/Full Supports auto-negotiation: No Advertised link modes: Not reported Advertised auto-negotiation: No Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: off Link detected: yes
ยกเลิกการติดตั้ง VMware Tools
หากมีปัญหาในการใช้งาน VMware Tools สามารถยกเลิกการติดตั้งโดยใช้คำสั่ง rpm เพื่อถอด (uninstall) โปรแกรม VMware Tools ออกจากลีนุกซ์ได้
[root@fc9-k1 ~]# rpm -ev VMwareTools-6535-108231.i386
หลังจากถอดโปรแกรมแล้ว รีบู๊ตเครื่องหนี่งครั้ง ก็จะกลับมาสู่สภาพเดิม
ปัญหาที่พบในการติดตั้ง VMware Tool บน Fedora 9 โดยไม่ได้ติดตั้ง Open Virtual Machine Tools
[root@fc9-k2 ~]# vmware-config-tools.pl
Stopping VMware Tools services in the virtual machine: Guest operating system daemon: [ OK ] Trying to find a suitable vmhgfs module for your running kernel.
None of the pre-built vmhgfs modules for VMware Tools is suitable for your running kernel. Do you want this program to try to build the vmhgfs module for your system (you need to have a C compiler installed on your system)? [yes] Using compiler "/usr/bin/gcc". Use environment variable CC to override.
What is the location of the directory of C header files that match your running kernel? [/lib/modules/2.6.25-14.fc9.i686/build/include] Extracting the sources of the vmhgfs module.
Building the vmhgfs module.
Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-config8/vmhgfs-only'
make -C /lib/modules/2.6.25-14.fc9.i686/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/kernels/2.6.25-14.fc9.i686'
CC [M] /tmp/vmware-config8/vmhgfs-only/cpName.o
In file included from include/linux/string.h:11,
from /tmp/vmware-config8/vmhgfs-only/cpName.h:18,
from /tmp/vmware-config8/vmhgfs-only/cpName.c:18:
include/linux/types.h:40: error: conflicting types for ‘uintptr_t’
/tmp/vmware-config8/vmhgfs-only/vm_basic_types.h:161: error: previous declaration of ‘uintptr_t’ was here
make[2]: *** [/tmp/vmware-config8/vmhgfs-only/cpName.o] Error 1
make[1]: *** [_module_/tmp/vmware-config8/vmhgfs-only] Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.25-14.fc9.i686'
make: *** [vmhgfs.ko] Error 2
make: Leaving directory `/tmp/vmware-config8/vmhgfs-only'
Unable to build the vmhgfs module.
The filesystem driver (vmhgfs module) is used only for the shared folder feature. The rest of the software provided by VMware Tools is designed to work independently of this feature. If you wish to have the shared folders feature, you can install the driver by running vmware-config-tools.pl again after making sure that gcc, binutils, make and the kernel sources for your running kernel are installed on your machine. These packages are available on your distribution's installation CD.
[ Press Enter key to continue ]
Trying to find a suitable vmxnet module for your running kernel.
None of the pre-built vmxnet modules for VMware Tools is suitable for your running kernel. Do you want this program to try to build the vmxnet module for your system (you need to have a C compiler installed on your system)? [yes] Extracting the sources of the vmxnet module.
Building the vmxnet module.
Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-config9/vmxnet-only'
make -C /lib/modules/2.6.25-14.fc9.i686/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/kernels/2.6.25-14.fc9.i686'
CC [M] /tmp/vmware-config9/vmxnet-only/vmxnet.o
/tmp/vmware-config9/vmxnet-only/vmxnet.c: In function ‘vmxnet_open’:
/tmp/vmware-config9/vmxnet-only/vmxnet.c:675: error: ‘SA_SHIRQ’ undeclared (first use in this function)
/tmp/vmware-config9/vmxnet-only/vmxnet.c:675: error: (Each undeclared identifier is reported only once
/tmp/vmware-config9/vmxnet-only/vmxnet.c:675: error: for each function it appears in.)
/tmp/vmware-config9/vmxnet-only/vmxnet.c: In function ‘vmxnet_netpoll’:
/tmp/vmware-config9/vmxnet-only/vmxnet.c:1045: error: too many arguments to function ‘vmxnet_interrupt’
make[2]: *** [/tmp/vmware-config9/vmxnet-only/vmxnet.o] Error 1
make[1]: *** [_module_/tmp/vmware-config9/vmxnet-only] Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.25-14.fc9.i686'
make: *** [vmxnet.ko] Error 2
make: Leaving directory `/tmp/vmware-config9/vmxnet-only'
Unable to build the vmxnet module.
The fast network device driver (vmxnet module) is used only for our fast networking interface. The rest of the software provided by VMware Tools is designed to work independently of this feature. If you wish to have the fast network driver enabled, you can install the driver by running vmware-config-tools.pl again after making sure that gcc, binutils, make and the kernel sources for your running kernel are installed on your machine. These packages are available on your distribution's installation CD.
[ Press Enter key to continue ]
No X install found.
Starting VMware Tools services in the virtual machine: Switching to guest configuration: [ OK ] DMA setup: [ OK ] Guest operating system daemon: [ OK ]
The configuration of VMware Tools 1.0.7 build-108231 for Linux for this running kernel completed successfully.
You must restart your X session before any mouse or graphics changes take effect.
You can now run VMware Tools by invoking the following command: "/usr/bin/vmware-toolbox" during an X session.
Enjoy,
--the VMware team