ติดตั้ง VMware Tools บน Fedora 9 – Guest OS

หลังจากแนะนำบทความ ติดตั้ง 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

ข้อมูลอ้างอิง