หน้าเว็บ

วันจันทร์ที่ 17 พฤศจิกายน พ.ศ. 2551

Clone VirtualBox Guest OS

ที่จะทำคือ ในเครื่องแรก มี VirtualBox ซึ่งมี GuestOS อยู่ และต้องการย้าย Guest OS ที่ใช้งานอยู่นี้ไปทำที่เครื่อง(physical)อื่น
ซึ่งไฟล์ที่ใช้เก็บ Guest OS นั้นจะมีสกุล .vdi ที่ตอนแรกเราได้สร้างเอาไว้ แต่ว่าจากลองอ่านๆมาเค้าว่าการก๊อปปี้ไฟล์นี้ไปดื้อๆเลยนั้นไม่ดีอาจมีปัญหาภายหลังได้

วิธีที่ถูกต้องให้ใช้คำสั่งที่มากับ VirtualBox อยู่แล้วในการ Clone
VBoxManage clonevdi sourcefile destfile
โดย sourcefile ให้ชี้ไปที่ vdi ที่เราต้องการทำการ clone ส่วน desfile ก็ให้ระบุเป็นไฟล์ใหม่ที่ต้องการ
เช่น
VBoxManage clonevdi "C:\vbox\ubuntu.vdi" "C:\clonevbox\cloneubuntu.vdi"
ซึ่งคำสั่ง VBoxManage จะอยู่ในโฟลเดอร์ที่เราลง VirtualBox ไว้ ถ้าเราไม่ได้เอาไว้ใน environment variable PATH เราก็ต้องระบบคำสั่งแบบ fullpath หรือไม่ก็ไปอยู่ที่โฟลเดอร์นั้นแล้วค่อยสั่ง

ป.ล. แต่ว่ายังมีปัญหาคือผมไม่สามารถเอา snapshot ติดไปด้วยได้ เลยแก้โดย merge ทุก snapshot ให้เหลือแค่อันล่าสุดอันเดียวครับ

ระบบที่ทดสอบ

HostOS: Windows XP SP2
VirtualBox: 2.0.4

Screen Resolution ไม่ auto-resize (VirtualBox & Intrepid)

อาการต่อเนื่องจากโพสก่อน http://ping2p.blogspot.com/2008/11/ubutu-8.html

แต่อันนี้คือ Screen Resolution ไม่ปรับขนาดตามหน้าจอของ host os และถ้าเลือกเปลี่ยนเองที่ System->Preferences->Screen Resolution ก็มีให้เลือกแค่ 800x600 กับ 640x480

วิธีแก้คือ
1) ตรวจสอบว่ามี vboxvideo_drv.so อยู่ที่ /usr/lib/xorg/modules/drivers
2) เป็น root แล้วแก้ไข /etc/X11/xorg.conf
2.1) เพิ่มใน section Device
Section "Device"
Identifier "Configured Video Device"
Driver "vboxvideo"
EndSection

2.2) เพิ่มใน section Screen
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
SubSection "Display"
Modes "1280x800" "1280x768" "1024x768" "800x600" "640x480"
EndSubSection
EndSection

โดยความละเอียดนั้นขึ้นอยู่กับความละเอียดที่รองรับของแต่ละเครื่อง
3) restart Ubuntu Guest

ระบบที่ทดสอบ
Host: Windows Vista SP1 Business
Guest: Ubuntu 8.10 Intrepid Ibex
VirtualBox: 2.0.4

ที่มา
http://ubuntuforums.org/showthread.php?t=886354

Mouse Integration ไม่ทำงาน (VirtualBox & Intrepid)

ปัญหาคือผมลง Ubutu 8.10 (Intrepid Ibex) บน Virtual Box ที่มี host คือ Windows Vista

พอลงเสร็จก็ทำงานได้ปกติ แต่คราวนี้พอจะลง Guest Addition เพื่อให้มันมี Mouse Integration ได้กลับพบปัญหาคือ Guest Addition บอกว่าลงสำเร็จด้วยดี แต่ Mouse Integration ยังไม่ทำงาน ต้องคอยคลิ๊กเพื่อให้ capture ก่อนถึงจะทำงานได้ แล้วค่อยกด Ctrl เพื่อออก ทำให้ไม่สะดวกเป็นอย่างมาก

ก็ไปพบวิธีแก้มาจาก ticket ของเวบ virtualbox เองดังนี้

1) ตรวจสอบว่ามีไฟล์ vboxmouse_drv.so อยู่ที่ /usr/lib/xorg/modules/input รึเปล่า (ควรมีอยู่)
2) เป็น root แล้วแก้ไขไฟล์ /etc/X11/xorg.conf โดยให้เพิ่ม
Section "InputDevice"
Identifier "Configured Mouse"
Driver "vboxmouse"
Option "CorePointer"
EndSection

เข้าไป (แต่ละบรรทัดใช้ tab หน้าสุด และระหว่างคำ)
3) restart ตัว guest linux

ระบบที่ทดสอบ

HostOS: Windows Vista SP1 Business
GuestOS: Ubuntu 8.10 Intrepid Ibex
VirtualBox: 2.0.4

ที่มา
http://www.virtualbox.org/ticket/2545
http://forums.virtualbox.org/viewtopic.php?p=43200#43200

วันอาทิตย์ที่ 2 พฤศจิกายน พ.ศ. 2551

ลง VirtualBox GuestAddition บน Linux Host

ใช้ host เป็น WindowsXP แล้วลง VirtualBox แล้วก็ลง CentOS5 เป็น Guest OS
คราวนี้พอจะลง GuestAddition แล้วปรากฎว่าไม่สามารถลงได้ ขึ้น error ดังนี้
[root@localhost VBOXADDITIONS_2.0.4_38405]# sh ./VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 2.0.4 Guest Additions for Linux installation....................
............................................................................................................................
............................................................................................................................
......................
VirtualBox 2.0.4 Guest Additions installation
Please install the build and header files for your current Linux kernel.
The current kernel version is 2.6.18-53.1.13.el5
Please install the GNU compiler.
Problems were found which would prevent the Guest Additions from installing.
Please correct these problems and try again.
ก็แก้ตาม step ที่ฟ้องมาเลยคือ
1. ลง build and header files
yum install kernel-devel
แล้วสร้าง link ไว้ด้วยใน /usr/src
cd /usr/src
ln -s kernels/2.6.18-92.1.6.el5-i686 linux

(เลขเวอร์ัชันขึ้นอยู่กับ kernel ของ linux แต่ละรุ่น)
2. ลง GNU compiler
yum install gcc
คราวนี้ก็กลับไปที่โฟลเดอร์ของ VBoxAddition แล้วสั่ง run ใหม่
sh ./VBoxLinuxAdditions-x86.run
เป็นอันเรียร้อย

ระบบที่ทดสอบ
Host OS: WindowsXP SP2
GuestOS: CentOS 5
VirtualBox: 2.0.4

อ้างอิง
http://www.centos.org/modules/newbb/viewtopic.php?topic_id=12724
http://aparker.co.uk/?p=7

วันเสาร์ที่ 12 กรกฎาคม พ.ศ. 2551

การเชื่อมต่อเนตเวิร์คเข้าสู่เครื่อง guest ใน VirtualBox

โดย default แล้ว Virtual Box นั้น เครื่องที่เป็น Guest (OS ที่ run ใน VirtualBox) จะใช้ NAT ในการเชื่อมต่อกับ Network ภายนอก (Network ของเครื่อง Host (OS หลักของเครื่องเราจริงๆ) )

แต่ปัญหาคือมันยอมให้ traffic request ออกด้านนอกได้ แต่มันไม่ยอมให้ traffic request จากด้านนอกเข้ามานี่สิ (คือยอมให้เราเข้าเวบด้านนอกได้ แต่ถ้าเราอยากจะ access ไปที่ web server ที่เราตั้งเอาไว้ใน guest จะยังทำไม่ได้)

วิธีแก้อย่างง่ายๆ คือ ใช้ VBoxManage ในการทำ Port Forwarding ของเครื่อง Host เพื่อไปยังเครื่อง Guest

เริ่มจาก ปิดตัว VirtualBox ซะก่อน (จะแค่สั่ง pause แล้ว save state ก็ได้)

ในเครื่อง Host เข้า Command Line (Cmd)


ถ้าไ่ม่ได้ตั้งค่า path ของ VirtualBox ให้ cd ไปที่ VirtualBox ที่เราลงไว้ เช่น C:\Program Files\innotek VirtualBox
แ้ล้วสั่งคำสั่งต่อไปนี้

1. ตั้งว่าจะใช้โปรโตคอลอะไร
VBoxManage setextradata "yourguestosname" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/Protocol" TCP

2. ตั้งว่าจะให้ไปเข้า Port อะไรของเครื่อง Guest
VBoxManage setextradata "yourguestosname" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/GuestPort" 80

3. ตั้งว่าจะใช้ port อะไรของเครื่อง Host
VBoxManage setextradata "yourguestosname" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/HostPort" 8888

โดย yourguestosname ให้แทนด้วยชื่อ Guest OS ที่ได้ตั้งเอาไว้ เช่นของผมตั้งไว้ว่า GUESTWIN
ส่วนคำว่า http ก็สามารถแทนด้วยชื่อ application อื่นๆที่ต้องการ เช่น ftp
แล้วก็หมายเลขก็ตาม app ที่เราให้บริการ

พอเซตค่าเสร็จก็เปิดให้ VirtualBox ทำงานก็จะพร้อมทำงานได้

จากตัวอย่างคือผมจะเข้า web server ของเครื่ือง Guest ที่เปิด port 80 เอาไว้ โดยสามารถพิมพ์ URL ใน browser ของเครื่อง host คือ http://localhost:8888/index.html เป็นต้น

ระบบที่ผมใช้ทดลอง
Host: Windows XP SP2
Guest: Windows Server 2003 SP2
VirtualBox: Version 1.5.6