VMware เป็นโปรแกรมประเภท Virtualization ที่ทำให้สามารถสร้างเครื่องจำลอง Guest ในเครื่องที่ลงโปรแกรมหรือที่เรียกว่า Host ได้ โดยเครื่องจำลอง (Guest) ซึ่งสามารถจะสร้างได้หลายเครื่อง (ขึ้นอยู่กับ CPU, Memory และ Disk ของเครื่อง Host) นั้นจะสามารถนำไปลง OS ได้ โดยเสมือนกับเครื่องจริงๆ เลย ทำให้เราสามารถทดสอบได้หลายๆ OS ภายในเครื่องเดียวกัน
VMware มีอยู่หลายเวอร์ชั่น ในบทความนี้จะแนะนำ VMware Server ซึ่งเป็นเวอร์ชั่นที่สามารถใช้งานได้ฟรีอย่างถูกต้อง (Free Virtualization) นำมาติดตั้งลงบน Host ที่รันลินุกซ์ โดยจะทดสอบบน Fedora 9
เตรียม Fedora สำหรับลง VMware Server
ก่อนที่จะลง VMware Server นั้น ต้องตรวจสอบลินุกซ์ที่ทำหน้าที่เป็น Host OS นั้นว่ามีโปรแกรมที่จำเป็นในการรันโปรแกรมหรือไม่
สำหรับ Fedora 9 ไฟล์ rpm ที่ต้องลงจะแยกเป็นสองส่วน ส่วนแรกเป็นไฟล์ library ที่เรียกใช้โดยโปรแกรม VMware Server ซึ่งต้องลงทั้งที่เป็นเวอร์ชั่น i386 และ x86_64 ไฟล์ rpm ที่จำเป็นต้องลงจะมีอยู่ในแผ่นดีวีดีติดตั้ง Fedora 9 อยู่แล้ว ดังนี้
- glibc-2.8-3.i686.rpm
- libgcc-4.3.0-8.i386.rpm
- libXau-1.0.3-5.fc9.i386.rpm
- libXdmcp-1.0.2-5.fc9.i386.rpm
- libxcb-1.1-4.fc9.i386.rpm
- libX11-1.1.4-1.fc9.i386.rpm
- libXext-1.0.4-1.fc9.i386.rpm
- libXtst-1.0.3-3.fc9.i386.rpm
- libICE-1.0.4-3.fc9.i386.rpm
- libSM-1.0.2-5.fc9.i386.rpm
- libXt-1.0.4-5.fc9.i386.rpm
- libXrender-0.9.4-3.fc9.i386.rpm
- zlib-1.2.3-18.fc9.i386.rpm
- audit-libs-1.7.2-6.fc9.i386.rpm
- cracklib-2.8.12-2.i386.rpm
- libselinux-2.0.61-1.fc9.i386.rpm
- pam-1.0.1-2.fc9.i386.rpm
ส่วนที่สองจะลงแยกขึ้นอยู่กับเวอร์ชั่น Fedora 9 ที่ใช้ โดยไฟล์ที่ต้องลงต้องดาวน์โหลดมาเพิ่มเติม
Fedora 9 i386 (http://mirrors.kernel.org/fedora/releases/9/Everything/i386/os/Packages)
- kernel-devel-2.6.25-14.fc9.i386.rpm
- xinetd-2.3.14-18.fc9.i386.rpm
- perl-ExtUtils-Embed-1.27-20.fc9.i386.rpm
Fedora 9 x86_64 (http://mirrors.kernel.org/fedora/releases/9/Everything/x86_64/os/Packages)
- kernel-devel-2.6.25-14.fc9.x86_64.rpm
- xinetd-2.3.14-18.fc9.x86_64.rpm
- perl-ExtUtils-Embed-1.27-20.fc9.x86_64.rpm
ดาวน์โหลด VMware Server
สามารถเข้าไปดาวน์โหลดโปรแกรม VMware Server ได้ฟรีที่ http://www.vmware.com/download/server/ เลือกดาวน์โหลดเวอร์ชั่น 1.0.x (ตัวอย่างในบทความนี้จะใช้เวอร์ชั่น 1.0.7) และเลือกไฟล์เป็นแบบ rpm
หลังจากดาวน์โหลดโปรแกรมแล้วต้องขอ serial number มาด้วย ซึ่งสามารถคลิ้กที่ลิ้งค์ register for your free serial number(s).
ติดตั้ง VMware Server
เมื่อดาวน์โหลดไฟล์ rpm ของ VMware Server แล้ว ก็ใช้คำสั่ง rpm เพื่อติดตั้ง
[root@vmware-host ~]# rpm -ivh VMware-server-1.0.7-108231.i386.rpm Preparing... ########################################### [100%] 1:VMware-server ########################################### [100%]
หลังจากติดตั้งโปรแกรม ถ้าพยายามรัน vmware เลย จะมีข้อความขึ้นเตือนว่าต้องคอนฟิกก่อนถึงจะใช้งานได้
[root@vmware-host ~]# /etc/init.d/vmware start VMware Server is installed, but it has not been (correctly) configured for the running kernel. To (re-)configure it, invoke the following command: /usr/bin/vmware-config.pl.
คอนฟิก VMware Server
หลังจากติดตั้งโปรแกรมแล้ว ก่อนที่จะใช้งานได้ต้องคอนฟิกก่อน ซึ่งสามารถทำได้โดยการรันคำสั่ง /usr/bin/vmware-config.pl
ในส่วนแรกจะเป็นเรื่องข้อตกลง License จะตรวจสอบโปรแกรมหรือ Library ที่จำเป็นในการรัน VMware และ
[root@vmware-host ~]# /usr/bin/vmware-config.pl
Making sure services for VMware Server are stopped.
Stopping VMware services: Virtual machine monitor [ OK ]
You must read and accept the End User License Agreement to continue. Press enter to display it.
VMWARE MASTER END USER LICENSE AGREEMENT ...
Do you accept? (yes/no) yes
Thank you.
Configuring fallback GTK+ 2.4 libraries.
In which directory do you want to install the mime type icons? [/usr/share/icons]
What directory contains your desktop menu entry files? These files have a .desktop file extension. [/usr/share/applications]
In which directory do you want to install the application's icon? [/usr/share/pixmaps]
/usr/share/applications/vmware-server.desktop: warning: value "vmware-server.png" for key "Icon" in group "Desktop Entry" is an icon name with an extension, but there should be no extension as described in the Icon Theme Specification if the value is not an absolute path /usr/share/applications/vmware-console-uri-handler.desktop: warning: value "vmware-server.png" for key "Icon" in group "Desktop Entry" is an icon name with an extension, but there should be no extension as described in the Icon
ในส่วนนี้จะเป็นการ re-compile kernel ใหม่เพื่อสร้าง kernel module ที่จำเป็นในการใช้งานของ VMware
Theme Specification if the value is not an absolute path Trying to find a suitable vmmon module for your running kernel.
None of the pre-built vmmon modules for VMware Server is suitable for your running kernel. Do you want this program to try to build the vmmon 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.x86_64/build/include]
Extracting the sources of the vmmon module.
Building the vmmon module.
Using 2.6.x kernel build system. make: Entering directory `/tmp/vmware-config0/vmmon-only' make -C /lib/modules/2.6.25-14.fc9.x86_64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules make[1]: Entering directory `/usr/src/kernels/2.6.25-14.fc9.x86_64' CC [M] /tmp/vmware-config0/vmmon-only/linux/driver.o CC [M] /tmp/vmware-config0/vmmon-only/linux/hostif.o CC [M] /tmp/vmware-config0/vmmon-only/common/cpuid.o ...
make[1]: Leaving directory `/usr/src/kernels/2.6.25-14.fc9.x86_64' cp -f vmmon.ko ./../vmmon.o make: Leaving directory `/tmp/vmware-config0/vmmon-only' The module loads perfectly in the running kernel.
หลังจาก compile kernel แล้ว โปรแกรมจะถามคอนฟิก network ของ LAN Card ที่ใช้ โดยดีฟอลต์จะมี 3 vmnet LAN Card ดังนี้
- vmnet0 (bridged) จะทำหน้าที่ bridge ระหว่าง LAN card จริงๆ ของ Host OS (Physical Port) เข้ากับ LAN ของ Guest OS เลย ซึ่งจะเปรียบเสมือน Guest OS ต่อเข้ากับ Network จริงๆ เลย
- vmnet1 (Host Only) จะเป็น network ที่เชื่อมโยงระหว่า Host OS และ Guest OS เท่านั้น ไม่มีการส่งออกไป network ภายนอกจริงๆ
- vmnet8 (NAT) จะเชื่อมโยง Host OS และ Guest OS เข้าด้วยกัน และ Host OS จะทำการ NAT ข้อมูลที่ Guest OS พยายามส่งออกไปภายนอก ซึ่งทำให้ Guest OS สามารถเชื่อมต่อกับ network ภายนอกได้ แต่เป็นแบบ NAT
ในที่นี้จะคอนฟิกเป็นดีฟอลต์ทั้งหมด ซึ่งเราสามารถเลือกแก้ไขได้ภายหลังจากการรัน vmware-config.pl อีกครั้ง หรือใช้คำสั่ง ifconfig แก้ไข
Do you want networking for your virtual machines? (yes/no/help) [yes]
Configuring a bridged network for vmnet0.
The following bridged networks have been defined:
. vmnet0 is bridged to eth0
All your ethernet interfaces are already bridged.
Do you want to be able to use NAT networking in your virtual machines? (yes/no) [yes]
Configuring a NAT network for vmnet8.
Do you want this program to probe for an unused private subnet? (yes/no/help) [yes]
Probing for an unused private subnet (this can take some time)...
The subnet 192.168.49.0/255.255.255.0 appears to be unused.
The following NAT networks have been defined:
. vmnet8 is a NAT network on private subnet 192.168.49.0.
Do you wish to configure another NAT network? (yes/no) [no]
Do you want to be able to use host-only networking in your virtual machines? [yes]
Configuring a host-only network for vmnet1.
Do you want this program to probe for an unused private subnet? (yes/no/help) [yes]
Probing for an unused private subnet (this can take some time)...
The subnet 172.16.146.0/255.255.255.0 appears to be unused.
The following host-only networks have been defined:
. vmnet1 is a host-only network on private subnet 172.16.146.0.
Do you wish to configure another host-only network? (yes/no) [no]
ส่วนต่อไปเป็นการ re-compile kernel ใหม่เพื่อสร้าง vmnet ซึ่งทำหน้าที่เป็น LAN card เสมือนเชื่อมต่อระหว่าง Host และ Guest
Extracting the sources of the vmnet module.
Building the vmnet module.
Using 2.6.x kernel build system. make: Entering directory `/tmp/vmware-config0/vmnet-only' make -C /lib/modules/2.6.25-14.fc9.x86_64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules make[1]: Entering directory `/usr/src/kernels/2.6.25-14.fc9.x86_64' CC [M] /tmp/vmware-config0/vmnet-only/driver.o CC [M] /tmp/vmware-config0/vmnet-only/hub.o CC [M] /tmp/vmware-config0/vmnet-only/userif.o CC [M] /tmp/vmware-config0/vmnet-only/netif.o CC [M] /tmp/vmware-config0/vmnet-only/bridge.o CC [M] /tmp/vmware-config0/vmnet-only/procfs.o CC [M] /tmp/vmware-config0/vmnet-only/smac_compat.o SHIPPED /tmp/vmware-config0/vmnet-only/smac_linux.x86_64.o LD [M] /tmp/vmware-config0/vmnet-only/vmnet.o Building modules, stage 2. MODPOST 1 modules WARNING: could not find /tmp/vmware-config0/vmnet-only/.smac_linux.x86_64.o.cmd for /tmp/vmware-config0/vmnet- only/smac_linux.x86_64.o CC /tmp/vmware-config0/vmnet-only/vmnet.mod.o LD [M] /tmp/vmware-config0/vmnet-only/vmnet.ko make[1]: Leaving directory `/usr/src/kernels/2.6.25-14.fc9.x86_64' cp -f vmnet.ko ./../vmnet.o make: Leaving directory `/tmp/vmware-config0/vmnet-only' The module loads perfectly in the running kernel.
เลือกพอร์ตที่ใช้ remote จาก VMware Server Console ส่วนใหญ่จะมีข้อความเตือนว่าพอร์ต 902 ถูกใช้ไปแล้ว ซึ่งดูได้จากไฟล์ /etc/services ดังนันต้องเลือกพอร์ตอื่นเพื่อรองรับการ remote เราสามารถเลือกได้ โดยดีฟอลต์จะเลือกเป็น 904
หมายเหตุ
- ต้องเปิดพอร์ต TCP 904 หรือพอร์ตที่ระบุ ใน Firewall ด้วย ในกรณีที่ต้องการใช้งาน remote จาก VMware Server Console
- เวลาใช้งาน remote จาก VMware Server Console ต้องระบุพอร์ตลงในช่อง Host name ด้วย เช่น 192.168.1.1:904
- User name และ Password ที่ใช้ remote คือ root
The default port : 902 is not free. We have selected a suitable alternative port for VMware Server use. You may override this value now. Remember to use this port when connecting to this server. Please specify a port for remote console connections to use [904]
WARNING: VMware Server has been configured to run on a port different from the default port. Remember to use this port when connecting to this server. Stopping xinetd: [FAILED] Starting xinetd: [ OK ] Configuring the VMware VmPerl Scripting API.
Building the VMware VmPerl Scripting API.
Using compiler "/usr/bin/gcc". Use environment variable CC to override.
Installing the VMware VmPerl Scripting API.
The installation of the VMware VmPerl Scripting API succeeded.
Generating SSL Server Certificate
ระบุ directory สำหรับเก็บไฟล์ที่สร้างเป็น Guest OS
In which directory do you want to keep your virtual machine files? [/var/lib/vmware/Virtual Machines]
The path "/var/lib/vmware/Virtual Machines" does not exist currently. This program is going to create it, including needed parent directories. Is this what you want? [yes] no
In which directory do you want to keep your virtual machine files? [/var/lib/vmware/Virtual Machines] /export/vmware
ใส่ serial number ที่ได้มา หลังจากใส่ตัวเลขที่ถูกต้อง โปรแกรม VMware Server จะถูกรันขึ้นมาโดยอัตโนมัติ
Do you want to enter a serial number now? (yes/no/help) [no] yes
Please enter your 20-character serial number.
Type XXXXX-XXXXX-XXXXX-XXXXX or 'Enter' to cancel: XXXXX-XXXXX-XXXXX-XXXXX
Starting VMware services: Virtual machine monitor [ OK ] Virtual ethernet [ OK ] Bridged networking on /dev/vmnet0 [ OK ] Host-only networking on /dev/vmnet1 (background) [ OK ] Host-only networking on /dev/vmnet8 (background) [ OK ] NAT service on /dev/vmnet8 [ OK ]
The configuration of VMware Server 1.0.7 build-108231 for Linux for this running kernel completed successfully.
แก้ไขไฟล์ pam เพื่อรองรับการ remote จาก Console
ไฟล์คอนฟิก pam ที่ติดตั้งมานั้น ต้องมีการแก้ไข เพื่อให้สามารถ remote จาก Console ได้
ไฟล์คอนฟิก pam ที่ติดตั้งมา (ไม่สามารถ remote ได้)
[root@vmware-host ~]# cat /etc/pam.d/vmware-authd
#%PAM-1.0
auth sufficient /usr/lib/vmware/lib/libpam.so.0/security/pam_unix2.so shadow nullok
auth required /usr/lib/vmware/lib/libpam.so.0/security/pam_unix_auth.so shadow nullok
account sufficient /usr/lib/vmware/lib/libpam.so.0/security/pam_unix2.so
account required /usr/lib/vmware/lib/libpam.so.0/security/pam_unix_acct.so
ต้องแก้ไขไฟล์ให้เป็นดังนี้
[root@vmware-host ~]# cat /etc/pam.d/vmware-authd #%PAM-1.0 auth sufficient pam_unix.so shadow nullok auth required pam_unix_auth.so shadow nullok account sufficient pam_unix.so account required pam_unix_acct.so
ตรวจสอบ process ของ VMware Server
process ต่างๆ ของ VMware Server ที่ตรวจสอบได้จากคำสั่ง ps จะตัวอย่างดังนี้
[root@vmware-host ~]# ps -ef | grep vm root 7738 1 0 01:22 pts/1 00:00:00 /usr/bin/vmnet-bridge -d /var/run/vmnet-bridge-0.pid /dev/vmnet0 eth0 root 7752 1 0 01:22 pts/1 00:00:00 /usr/bin/vmnet-netifup -d /var/run/vmnet-netifup-vmnet1.pid /dev/vmnet1 vmnet1 root 7767 1 0 01:22 ? 00:00:00 /usr/bin/vmnet-dhcpd -cf /etc/vmware/vmnet1/dhcpd/dhcpd.conf -lf /etc/vmware/vmnet1/dhcpd/dhcpd.leases -pf /var/run/vmnet-dhcpd-vmnet1.pid vmnet1 root 7784 2278 0 01:22 pts/1 00:00:00 grep vm
Start/Stop โปรแกรม VMware Server
ขั้นสุดท้ายหลังจากที่ตรวจสอบว่าโปรแกรม VMware Server ทำงานได้อย่างถูกต้องแล้ว ให้คอนฟิกเข้าไปใน service เพื่อให้ โปรแกรม Start / Stop เมื่อ เปิด / ปิด เครื่อง
[root@vmware-host ~]# chkconfig vmware [root@vmware-host ~]# chkconfig vmware on [root@vmware-host ~]# chkconfig --list vmware vmware 0:off 1:off 2:on 3:on 4:off 5:on 6:off
สามารถที่ใช้คำสั่ง service เพื่อ Start หรือ Stop ได้
ตัวอย่างการ Stop VMware Server
[root@vmware-host Packages]# /etc/init.d/vmware stop Stopping VMware services: Virtual machine monitor [ OK ] Bridged networking on /dev/vmnet0 [ OK ] DHCP server on /dev/vmnet1 [ OK ] Host-only networking on /dev/vmnet1 [ OK ] Host-only networking on /dev/vmnet8 [ OK ] Virtual ethernet [ OK ]
ตัวอย่างการ Start VMware Server
[root@vmware-host Packages]# /etc/init.d/vmware start Starting VMware services: Virtual machine monitor [ OK ] Virtual ethernet [ OK ] Bridged networking on /dev/vmnet0 [ OK ] Host-only networking on /dev/vmnet1 (background) [ OK ] Host-only networking on /dev/vmnet8 (background) [ OK ]
ข้อมูลอ้างอิง