ทดลองเกี่ยวกับ Virtualization
เดี๋ยวนี้ qemu พร้อม kqemu มีเป็นแบบแพกเกจเรียบร้อย การติดตั้งจึงต่างออกไปจากเดิม
สำหรับใน Feisty การติดตั้งเป็นดังนี้
ส่วนของ qemu
ติดตั้ง qemu
$ sudo aptitude install qemu
ส่วนของ kqemu
ติดตั้ง module-assistant
$ sudo aptitude install module-assistant
ติดตั้ง kqemu ผ่าน module-assistant
$ sudo m-a a-i kqemu
ใน Feisty ไม่ยอมสร้าง /dev/kqemu ให้ ต้องทำเอง
$ sudo mknod /dev/kqemu c 250 0
$ sudo chmod 666 /dev/kqemu
$ sudo modprobe kqemu
ส่วนของเน็ตเวิร์ก
สร้างตาราง nat ไว้รอก่อน
$ sudo iptables -t nat -D POSTROUTING -j MASQUERADE -o eth0
$ sudo iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0
ติดตั้งแพกเก็จชื่อ uml-utilities
$ sudo aptitude install uml-utilities
เอาอินเทอร์เฟส tun ขึ้นมา
$ sudo modprobe tun
$ sudo chmod 666 /dev/net/tun
qemu จะใช้งานเน็ตเวิร์กผ่านอินเทอร์เฟส tap0 เราจึงต้องสร้าง tap0 ขึ้นมา สมมุติว่าเราชื่อ user1
$ sudo tunctl -u user1
เสร็จแล้ว
สมมุติว่าเรามีอิมเมจ winxp.img อยู่แล้ว สามารถเรียกใช้งาน qemu ด้วย
$ qemu -kernel-kqemu -hda winxp.img -net nic -net tap,ifname=tap0
บันทึกเกร็ดเพิ่มเติม
$ qemu-img create -f qcow winxp.qcow 5G
$ qemu-img create -b winxp.qcow -f qcow winxp.ovl
$qemu-img commit winxp.ovl
สรุปว่าสำหรับ qemu ตั้งแต่รุ่น 0.8.2 เป็นต้นไป ต้องทดลองดูหลาย ๆ แบบ ดูว่าแบบไหนดีที่สุด ไม่จำเป็นต้องเป็นตามคู่มือเสมอไป
หมายเหตุ
อ้างอิง
ทดลองใช้ qemu กับ usb
ในการสั่งรัน ต้องเติมพารามิเตอร์ -usbdevice host:XXXX:XXXX
ต่อท้ายคำสั่ง
ซึ่งค่านี้คือค่า Vender ID และ Product ID ตามลำดับ โดยหาได้จากคำสั่ง lsusb
ตัวอย่างของเครื่องผมคือ
ต้องการใช้งาน usb ใน qemu โดยมี Printer Epson Stylus Photo 830 และสแกนเนอร์ UMAX Astra 5650
ดูค่าไอดี
$ lsusb
Bus 005 Device 001: ID 0000:0000 Bus 004 Device 001: ID 0000:0000 Bus 003 Device 002: ID 04b8:0005 Seiko Epson Corp. Stylus Printer Bus 003 Device 001: ID 0000:0000 Bus 002 Device 001: ID 0000:0000 Bus 001 Device 002: ID 0461:0392 Primax Electronics, Ltd Bus 001 Device 001: ID 0000:0000
สั่งรัน qemu
$ qemu YOUR-PARAMETER -usbdevice host:04b8:0005 -usbdevice host:0461:0392
เสียง
ใช้คำสั่ง
$ qemu YOUR-PARAMETER -soundhw all
รุ่นนี้เป็นรุ่นปรับแก้บั๊กเรื่อง NumLock/CapsLock ไม่ยอมเปลี่ยน ตามที่เคยบันทึกไว้
แต่ผมลืมแพกเกจที่ต้องการก่อนติดตั้งหมดแล้ว ฝากดูเอาเองตอน debuild หรือ configure
วิธีสร้างแพกเกจเดเบียน
$ sudo aptitude install devscripts
$ apt-get source qemu
$ cd qemu-0.9.0+20070816
$ vi sdl.c
. . . if (ev->keysym.sym == SDLK_PAUSE) { /* specific case */ v = 0; if (ev->type == SDL_KEYUP) v |= 0x80; kbd_put_keycode(0xe1); kbd_put_keycode(0x1d | v); // kbd_put_keycode(0x45 | v); return; } if (kbd_layout) { keycode = sdl_keyevent_to_keycode_generic(ev); } else { keycode = sdl_keyevent_to_keycode(ev); } switch(keycode) { case 0x00: /* sent when leaving window: reset the modifiers state */ reset_keys(); return; case 0x2a: /* Left Shift */ case 0x36: /* Right Shift */ case 0x1d: /* Left CTRL */ case 0x9d: /* Right CTRL */ case 0x38: /* Left ALT */ case 0xb8: /* Right ALT */ if (ev->type == SDL_KEYUP) modifiers_state[keycode] = 0; else modifiers_state[keycode] = 1; break; //case 0x45: /* num lock */ //case 0x3a: /* caps lock */ /* SDL does not send the key up event, so we generate it */ // kbd_put_keycode(keycode); // kbd_put_keycode(keycode | 0x80); // return; } . . .
$ debuild -us -uc
จะได้แพกเกจเดเบียน ตามต้องการ
ติดตั้งด้วยคำสั่ง
$ sudo dpkg -i ../qemu_0.9.0+20070816-1_i386.deb
วิธีสร้างแพกเกจแบบทั่วไป
$ wget http://fabrice.bellard.free.fr/qemu/qemu-0.9.0.tar.gz
$ tar xfz qemu-0.9.0.tar.gz
$ cd qemu-0.9.0
$ configure --cc=gcc-3.4
$ make
$ checkinstall -D make install
$ make qemu-doc.html
$ make qemu-tech.html
$ make qemu.1
$ make qemu-img.1
$ sudo make install-doc
$ make tarbin
จะได้แพกเกจ qemu-0.9.0-i386.tar.gz ตามต้องการ โดยไฟล์จะมาอยู่ที่ไดเรกทอรี่ Home
Download
หากคร้านที่จะคอมไพล์เอง ดาวน์โหลดได้ที่นี่ครับ ฝากทดสอบบั๊กให้ด้วย
เมื่อได้ลองใช้งาน qemu แบบจริงจัง เจอปัญหาว่า Num Lock กับ Caps Lock มีอาการแปลก ๆ กดแล้วได้ผลบ้าง ไม่ได้ผลบ้าง
เลยลองถอด qemu ของดิสโตร แล้วดาวน์โหลด qemu รุ่นล่าสุดมาลองดูซอร์สโค๊ด
$ sudo aptitude remove qemu
$ wget http://fabrice.bellard.free.fr/qemu/qemu-0.9.0.tar.gz
$ tar xfz qemu-0.9.0.tar.gz
$ cd qemu-0.9.0
ค้นข้อมูลในกูเกิลดู พบว่าต้นตออยู่ที่ไฟล์ sdl.c
พบว่า qemu แก้ปัญหา sdl ไม่ยอมส่งรหัส Num Lock - Caps Lock ไปให้ระบบ ด้วยการเขียนโค๊ดส่งรหัสเอง
แต่ปัจจุบันนี้ sdl น่าจะแก้ปัญหานี้แล้ว แต่โค๊ดส่วนนี้ยังคงอยู่ เลยทดลองเติมคอมเมนต์ในโค๊ดส่วนนี้ดู
$ vi sdl.c
... //case 0x45: /* num lock */ //case 0x3a: /* caps lock */ /* SDL does not send the key up event, so we generate it */ // kbd_put_keycode(keycode); // kbd_put_keycode(keycode | 0x80); // return; ...
แล้วจึงคอมไพล์ใหม่ ด้วย gcc-3.4 ซึ่งต้องติดตั้งใหม่
$ sudo aptitude install gcc-3.4
$ ./configure --cc=gcc-3.4
$ make
$ sudo make install
ผลปรากฎว่า สามารถใช้คีย์ Num Lock และ Caps Lock ได้อย่างที่ควรจะเป็นครับ
ทดลองกับเดเบียน Lenny และอูบุนตู Feisty ไลบรารี libsdl1.2-dev ทั้งคู่
จะเอามาลองทดสอบ Windows XP
ใช้ซีพียูอินเทล E6300 (เป็น VT อันดับเบื้องต้นที่สามารถวิ่ง Unmodified OS ได้) แรม 1G
ติดตั้ง xen
$ sudo aptitude install xen-hypervisor-3.0.3-1-i386 xen-utils-common
ติดตั้ง Dom0
$ sudo aptitude install xen-linux-system-2.6.18-4-xen-686
บูตใหม่ด้วย Dom0
เตรียมติดตั้ง DomU ที่เป็น Windows XP
$ sudo aptitude install xen-ioemu-3.0.3-1
สร้างไฟล์คอนฟิกสำหรับ Windows XP
$ sudo vi /etc/xen/winxp.cfg
ติดตั้ง DomU ไว้บนพาร์ติชั่นของฮาร์ดดิสก์จริง ๆ คือ /dev/hda2
ติดตั้งเน็ตเวิร์กตามค่าปริยาย คือเป็นแบบบริดจ์
เนื้อไฟล์เป็นดังนี้
kernel = "/usr/lib/xen-3.0.3-1/boot/hvmloader" device_model ='/usr/lib/xen-3.0.3-1/bin/qemu-dm' builder='hvm' memory = 384 name = "winxp" vcpus=1 disk = ['phy:/dev/hda2,ioemu:hda,w','phy:/dev/hdb,hdb:cdrom,r'] boot='d' vif = [ 'type=ioemu, bridge=xenbr0' ] vnc=1 vncviewer=1 serial='pty' ne2000=0
ติดตั้ง VNC สำหรับดูหน้าจอ Windows XP
$ sudo aptitude install xtightvncviewer
เริ่มบูตเพื่อติดตั้ง DomU
$ sudo xm create winxp.cfg
เมื่อเคอร์เซอร์หลุดออกมาสู่ภาวะพร้อม ก็สั่งดูหน้าจอติดตั้ง Windows XP ด้วย xtightvncviewer
$ xtightvncviewer localhost
... ติดตั้งตามปกติ ...
หมายเหตุ
$ xtightvncviewer localhost
ใหม่boot = 'c'
ด้วยผลการทดลอง
Control Panel -> Mouse -> TAB-Pointer options -> ปิด Enhance pointer position
สรุป
ถึงแม้จะยังไม่สมบูรณ์แบบ แต่ก็น่าใช้มาก โดยเฉพาะถ้าต้องการความเร็วในการใช้งาน การติดตั้งก็ไม่ยากเหมือนแต่ก่อน
เสียดายที่ต้องใช้กับซีพียูที่มีโหมด Vitualize เท่านั้น (Intel-VT, AMD-Pacifica) และโอเอสก็ต้องเป็น 32bit ขึ้นไปแบบ Windows XP
ถ้าใช้กับ Win98 ได้นี่จะประหยัดไลเซ่นซ์วินโดวส์เก่า ๆ ได้เยอะเลย
อ้างอิง
หลังจากทดลอง Xen แล้ว พบว่ายังมีปัญหาเกี่ยวกับคีย์บอร์ดที่ค่อนข้างเอาแน่เอานอนไม่ได้ และปัญหาความไม่คุ้นเคยในการใช้เมาส์ผ่าน VNC
จึงได้มาทดลองใช้ VirtualBox
ซีพียูอินเทล E6300 หน่วยความจำ 1G
พบว่า
จึงบันทึกการปรับตั้งค่าไว้ดังนี้
มีปัญหาว่าบางครั้ง แม้จะแก้ไขให้เราอยู่ในกลุ่ม vboxusers แล้วก็ตาม แต่บางครั้งก็ยังไม่สามารถรันได้ จึงแก้ไขให้ /dev/vboxdrv เป็นโหมด 666 ผ่าน udev
$ sudo vi /etc/udev/rules.d/60-vboxdrv.rules
แก้จาก KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660"
แก้เป็น
KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0666"
แก้ไขค่าเน็ตเวิร์ก tun ให้เป็น 666 เหมือนกัน
$ sudo vi /etc/udev/rules.d/020_permissions.rules
แก้เป็น
... KERNEL=="tun", MODE="0666" ...
สร้างสคริปต์สำหรับเน็ตเวิร์กแบบกำหนดเอง
$ vi ~/ifup-tap0
sudo iptables -t nat -D POSTROUTING -j MASQUERADE -o eth0 sudo iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 UNAME=$USER sudo tunctl -u $UNAME -t tap0 sudo ifconfig tap0 192.168.4.254 up
$ sudo chmod 755 ~/ifup-tap0
ตั้งค่าให้ VirtualBox ใช้เน็ตเวิร์กแบบ Host Interface
Setting -> Network -> Host Interface
Interface name : tap0
Setup application : ~/ifup-tap0
สำหรับ Windows XP เขาให้หน่วยความจำปริยายมาเป็น 128M แต่เรากำหนดเป็น 384M
ใน Windows XP ตั้งค่าให้ไอพีเป็น 192.168.1.4 และเกตเวย์เป็น 192.168.4.254
$ sudo mount -o loop,offset=0x$(hd -h 100000 IMAGE.vdi | grep "eb 52 90 4e 54 46 53" | cut -c 1-8) IMAGE.vdi /MOUNT/POINT
$ sudo mount -o loop,offset=0x$(hd -h 100000 IMAGE.vdi | grep "eb 3C 90" | cut -c 1-8) IMAGE.vdi /MOUNT/POINT
มีงานที่ต้องการทดสอบการแสดงผล ของ Safari/iBooks ใน iPhone/iPad (iOS) และ Mac (OS X) จึงต้องลง OS X เพื่อทดสอบ แอปที่จะใช้ คือ iBooks, iBooks Author และ Xcode ต้องการทรัพยากรเป็น Mavericks (10.9) แต่ Mavericks ไม่มีแผ่นขาย มีขายแต่ Snow Leopard (10.6.3) จึงต้องมีขั้นตอนเยอะหน่อย
host: Debian 3.12-1-amd64
cpu: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
ram: 8G
VirtualBox: Official 4.3
iBoot-Ivy-Bridge.iso
ไว้ (ถ้าบูตไม่ผ่าน ลองดาวน์โหลด iBoot ตัวอื่นดู)เอา VirtualBox สร้าง Virtual Machine ใหม่ดังนี้
Name: osx Type: Max OS X Version: Mac OS X (64 bit) Memory size: 2048 Hard drive: virtual hard drive 30.00GB VDI (VirtualBox Disk Image) (ค่าปริยาย 20G ไม่พอ) Storage on physical hard drive: Dynamically allocated
ตั้งค่าอื่น
System: Motherboard: ยกเลิก Enable EFI (special OSes only) Display: Video: Enable 3D Acceleration Storage: Controller: SATA -> Empty เปลี่ยน Attributes: Choose a virtual CD/DVD disk file: เปลี่ยนเป็น iBoot-Ivy-Bridge.iso ที่เตรียมไว้
ส่วนที่เหลือ ใช้ค่าปริยายทั้งหมด
เสร็จแล้วก็บูตเข้า iBoot ต่อด้วย Snow Leopard เพื่อติดตั้ง
ตอนบูตเข้า iBoot ให้ใส่แผ่น Snow Leopard ในซีดีรอม แล้วเปลี่ยน Devices เป็น Host Drive ATAPI แล้วกด F5 เพื่อรีเฟรช แล้วจึงบูตติดตึ้ง Snow Leopard
Devices -> CD/DVD devices -> Host Drive ATAPI (sr0) กด F5 บูตด้วย Mac OS X Install DVD
ติดตั้งตามปกติ ระหว่างติดตั้งต้องมีการสร้างพาร์ติชั่นด้วย
Utilities -> Disk Utility เลือก 32.21 GB VBOX HARDISK -> Partition -> + -> Name: osx Apply
ติดตั้งต่อจนเสร็จ
บูตเข้าระบบโดยต้องกลับไปใช้ iBoot-Ivy-Bridge
อีกครั้ง แล้วเลือกเข้า osx ที่ติดตั้งเสร็จแล้ว
ถ้าบูตไม่ขึ้น ให้ลองปิดและบูตใหม่
หลังติดตั้งเสร็จเรียบร้อย ให้อัปเดตระบบ เพื่อให้มี App Store
Apple -> Software Update
อัปเดตเสร็จ รีบูตใหม่ ระบบจะกลายเป็น 10.6.8 และมี App Store เรียบร้อย
ดาวน์โหลด Mavericks ผ่าน AppStore ขนาดประมาณ 5.3GB (5GiB)
เมื่อเสร็จ ไฟล์ที่ได้จะอยู่ที่ /Applications/Install OS X Mavericks.app
แปลงเป็น iso เพื่อจะนำไปติดตั้งในขั้นตอนต่อไป
เข้า Terminal
Applications -> Utilities -> Terminal
แล้วพิมพ์คำสั่งดังนี้
# Mount the installer image hdiutil attach /Applications/Install\ OS\ X\ Mavericks.app/Contents/SharedSupport/InstallESD.dmg -noverify -nobrowse -mountpoint /Volumes/install_app # Convert the boot image to a sparse bundle hdiutil convert /Volumes/install_app/BaseSystem.dmg -format UDSP -o /tmp/Mavericks # Increase the sparse bundle capacity to accommodate the packages hdiutil resize -size 8g /tmp/Mavericks.sparseimage # Mount the sparse bundle for package addition hdiutil attach /tmp/Mavericks.sparseimage -noverify -nobrowse -mountpoint /Volumes/install_build # Remove Package link and replace with actual files rm /Volumes/install_build/System/Installation/Packages cp -rp /Volumes/install_app/Packages /Volumes/install_build/System/Installation/ # Unmount the installer image hdiutil detach /Volumes/install_app # Unmount the sparse bundle hdiutil detach /Volumes/install_build # Resize the partition in the sparse bundle to remove any free space hdiutil resize -size `hdiutil resize -limits /tmp/Mavericks.sparseimage | tail -n 1 | awk '{ print $1 }'`b /tmp/Mavericks.sparseimage # Convert the sparse bundle to ISO/CD master hdiutil convert /tmp/Mavericks.sparseimage -format UDTO -o /tmp/Mavericks # Remove the sparse bundle rm /tmp/Mavericks.sparseimage # Rename the ISO and move it to the desktop mv /tmp/Mavericks.cdr ~/Desktop/Mavericks.iso
คัดลอก Mavericks.iso
บน Desktop มาสู่เครื่องจริง (อาจผ่าน usb หรือเน็ตเวิร์ค - ผมใช้ผ่านเน็ตเวิร์ค) เพื่อจะนำไปติดตั้งในขั้นตอนต่อไป
ปิดเครื่อง
จบขั้นแรก
หากต้องการทดสอบ Snow Leopard ต่อไปก็สามารถเก็บ Virtual Machine "osx" นี้ไว้ได้ แต่หากไม่ต้องการใช้แล้วก็ลบทิ้งได้เลย
เอา VirtualBox สร้าง Virtual Machine ใหม่ดังนี้
Name: osx64 Type: Max OS X Version: Mac OS X (64 bit) Memory size: 2048 Hard drive: virtual hard drive 30.00GB VDI (VirtualBox Disk Image) (ถ้าต้องใช้งานจริงจัง ควรเป็น 40G ขึ้นไป) Storage on physical hard drive: Dynamically allocated
คราวนี้ไม่ต้องใช้ iBoot แล้ว โดยจะใช้ Mavericks.iso
ที่ได้จากขั้นตอนก่อนหน้ามาทำเป็น virtual CD/DVD disk file
สำหรับบูตเพื่อติดตั้ง และไม่ต้องยกเลิก EFI แล้ว
ตั้งค่าอื่น
System: Processor: 2 CPU Display: Video: Video Memory: 32 MB (ใช้ค่าอื่นแล้วเปิด System Information ไม่ได้) Enable 3D Acceleration Storage: Controller: SATA -> Empty เปลี่ยน Attributes: Choose a virtual CD/DVD disk file: เปลี่ยนเป็น Mavericks.iso ที่เตรียมไว้
ก่อนจะบูต ให้บอก VirtualBox ว่าจะติดตั้งเป็น 64 บิต และเลือกหน้าจอเป็นขนาด 1440x900
เข้า Terminal ของลินุกซ์ แล้วพิมพ์ดังนี้
VM=osx64 N=4 #N can be one of 0,1,2,3,4,5 referring to the 640x480, 800x600, 1024x768, 1280x1024, 1440x900, 1920x1200 screen resolution respectively (5 may not worked). VBoxManage modifyvm "$VM" --firmware efi64 VBoxManage setextradata "$VM" VBoxInternal2/EfiGopMode $N VBoxManage setextradata "$VM" VBoxInternal2/SmcDeviceKey "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
แล้วก็เริ่มสตาร์ท osx64 เพื่อติดต้้งได้เลย บูตครั้งแรกอาจนานหน่อยและมีรายงานความผิดพลาดเยอะ แต่ไม่ต้องสนใจ
วิธีติดตั้งเหมือนเดิม คือต้องพาร์ติชั่นก่อน แล้วติดตั้งต่อจนจบ
ตอนบูตครั้งแรก อย่าลืมเปลี่ยน virtual CD/DVD จาก Mavericks กลับเป็น Host Drive ATAPI (sr0)
จบแล้ว
SYSTEM
OS: Debian Linux 4.18.0-3-amd64
CPU: AMD Ryzen 7 1700 Eight-Core Processor
VirtualBox: virtualbox-5.2 : 5.2.20-125813~Ubuntu~bionic
STEP
1. CREATE VM
2. MODIFY VM
3. BOOT INSTALLER
4. BOOT NEW OS
5. CREATE NEXT VERSION CDR INSTALLER
6. FIX VirtualBox NOT SUPPORT apfs IN High Sierra/Mojave
1. CREATE VM
General
Machine -> New
Name="NAME OF VM"
Type=Mac OS X
Version=Mac OS X (64-bit)
Storage
HDD=NEW VDI DISK IMAGE (20-60G)
CD=CDR INSTALLER
2. MODIFY VM
RUN COMMANDS:
VM_RES="1280x960" #EXAMPLE NAME="NAME OF VM" #EXAMPLE VBoxManage modifyvm "$NAME" --usbxhci on --firmware efi --chipset ich9 --mouse usbtablet --keyboard usb --vram 128 --cpus 2 --memory 4096 --boot1 dvd --boot2 disk --boot3 none --boot4 none --cpu-profile "Intel Core i7-6700K" --cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff VBoxManage setextradata "$NAME" "CustomVideoMode1" "${VM_RES}x32" VBoxManage setextradata "$NAME" VBoxInternal2/EfiGraphicsResolution "$VM_RES" VBoxManage setextradata "$NAME" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3" VBoxManage setextradata "$NAME" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0" VBoxManage setextradata "$NAME" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple" VBoxManage setextradata "$NAME" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" VBoxManage setextradata "$NAME" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1 #FOR Snow Leopard: NUMBER OF CPU=1 VBoxManage modifyvm "$NAME" --usbxhci on --firmware efi --chipset ich9 --mouse usbtablet --keyboard usb --vram 128 --cpus 1 --memory 4096 --boot1 dvd --boot2 disk --boot3 none --boot4 none --cpu-profile "Intel Core i7-6700K" --cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff #FOR Sierra: SOLVE PARAVIRTUALIZATION BUG #https://gist.github.com/arobb/447a962af4f07ef81e79987d686275e5 #https://www.insanelymac.com/forum/topic/292170-how-to-spoof-real-mac-in-vmware/ VBoxManage setextradata "$NAME" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Mac-F22589C8" VBoxManage setextradata "$NAME" "VBoxInternal/Devices/efi/0/Config/DmiSystemSerial" "CK1156I6DB6" VBoxManage modifyvm "$NAME" --paravirtprovider none #REVERT BACK WHEN FINISH INSTALLATION VBoxManage modifyvm "$NAME" --paravirtprovider default ##SOME USEFUL SETTINGS, DO NOT RUN ##BOOT SINGLE USER #VBoxManage setextradata "$NAME" VBoxInternal2/EfiBootArgs "-s" ##REVERT #VBoxManage setextradata "$NAME" VBoxInternal2/EfiBootArgs "" ##TURN OFF #VBoxManage setextradata "$NAME" VBoxInternal2/EfiBootArgs " " ##VERBOSE #VBoxManage setextradata "$NAME" VBoxInternal2/EfiBootArgs "-v" ##NO AMD, NO NVIDIA #VBoxManage setextradata "$NAME" VBoxInternal2/EfiBootArgs "-s agc=0 -amd_no_dgpu_accel nv_disable=1" ##DEBUG #VBoxManage setextradata "$NAME" VBoxInternal2/EfiBootArgs "-v debug=0x144" #IF MOUSE OR KEYBOARD DO NOT WORK, TRY TO ADD NEW USB FILTERS
3. BOOT INSTALLER
#STEP
#- ERASE DISK
#- INSTALL
#FOR Mavericks NETWORK MAY NOT WORK, JUST INSTALL LOCALLY, WILL WORK AFTER REBOOT.
4. BOOT NEW OS
5. CREATE NEXT VERSION CDR INSTALLER
#GET PACKAGES FROM SAFARI, DO NOT INSTALL:
#LION
https://itunes.apple.com/app/id444303913?mt=12
#MOUNTAIN LION
https://itunes.apple.com/app/id537386512?mt=12
#MAVERICKS
https://itunes.apple.com/app/id675248567?mt=12
#YOSEMITE
https://itunes.apple.com/app/id444303913?mt=12
#EL CAPITAN
https://itunes.apple.com/app/id1147835434?mt=12
#SIERRA
https://itunes.apple.com/app/id1127487414?mt=12
#HIGH SIERRA
https://itunes.apple.com/app/id1246284741?mt=12
#MOJAVE
https://itunes.apple.com/app/id1398502828?mt=12
#IF FAIL, DOWNLOAD FROM HERE
#http://osxdaily.com/2018/09/29/download-full-macos-mojave-installer/
#http://dosdude1.com/mojave/
#AFTER FINISH INSTALLATION, RE-DOWNLOAD FROM APPLE AGAIN, THEN RE-CREATE INSTALLER FROM MOJAVE
#SOME LINK ARE DEAD, PLEASE DOWNLOAD FROM "iTunes -> Purchased"
#START BUILD FILE="ElCapitan" #EXAMPLE APPDIR="/Applications/Install OS X El Capitan.app" #EXAMPLE SIZE=8000 #CREATE IMAGE AND MOUNT hdiutil create -o /tmp/$FILE -size ${SIZE}m -layout SPUD -fs HFS+J # -> /tmp/$FILE.dmg hdiutil attach /tmp/$FILE.dmg -noverify -nobrowse # -> /Volumes/untitled #***** asr METHOD ***** (<=Yosemite, El Capitan(CDR), Sierra) #MOUNT InstallESD hdiutil attach "$APPDIR/Contents/SharedSupport/InstallESD.dmg" # -> /Volumes/OS X Install ESD ESD="/Volumes/OS X Install ESD" #FOR <= Yosemite, Sierra: #RESTORE BaseSystem TO IMAGE asr restore -source "$ESD/BaseSystem.dmg" -target /Volumes/untitled -noprompt -noverify -erase #/Volumes/untitled -> /Volumes/OS X Base System #COPY PACKAGES rm "/Volumes/OS X Base System/System/Installation/Packages" cp -av "$ESD/Packages" "/Volumes/OS X Base System/System/Installation/" #FOR >= Yosemite: cp -av "$ESD/BaseSystem.dmg" "/Volumes/OS X Base System/" cp -av "$ESD/BaseSystem.chunklist" "/Volumes/OS X Base System/" #FOR >= El Capitan(CDR): cp -av "$ESD/AppleDiagnostics.dmg" "/Volumes/OS X Base System/" cp -av "$ESD/AppleDiagnostics.chunklist" "/Volumes/OS X Base System/" #UNMOUNT ALL hdiutil detach "/Volumes/OS X Base System" hdiutil detach "$ESD" #***** createinstallmedia METHOD ***** (El Capitan(VDI), High Sierra, Mojave) #CREATE INSTALLER TO IMAGE #FOR El Capitan(VDI) (USE VDI INSTEAD OF CDR - NEED WRITABLE MEDIA WHEN INSTALL), >= High Sierra: sudo "$APPDIR/Contents/Resources/createinstallmedia" --volume /Volumes/untitled/ --applicationpath "$APPDIR" --nointeraction #/Volumes/untitles -> /Volumes/Install OS X XXX #UNMOUNT BASE hdiutil detach "/Volumes/Install XXX" #***** END 2 METHOD ***** #RESIZE IMAGE FOR BEST FIT hdiutil resize -size `hdiutil resize -limits /tmp/$FILE.dmg | tail -n 1 | awk '{ print $1 }'`b /tmp/$FILE.dmg #CONVERT IMAGE TO CDR hdiutil convert /tmp/$FILE.dmg -format UDTO -o /tmp/$FILE # -> /tmp/$FILE.cdr #COPY TO HOST scp /tmp/$FILE.cdr USER1@HOST1:/WHERE/TO/STORE/IMAGE
6. FIX VirtualBox NOT SUPPORT apfs IN High Sierra/Mojave
#FOR Mojave FIRST BOOT fs1: cd macOS\ Install\ Data cd Locked\ Files cd Boot\ Files boot.efi #PREPARE apfs DRIVER FOR NEXT BOOT #https://github.com/acidanthera/AppleSupportPkg #AT Debian HOST mkdir /tmp/tmp cd /tmp/tmp wget https://github.com/acidanthera/AppleSupportPkg/releases/download/2.0.5/AppleSupport-v2.0.5-RELEASE.zip unzip AppleSupport-v2.0.5-RELEASE.zip cd Drivers/ genisoimage -o ../driver.iso . #ATTACH /tmp/tmp/driver.iso TO Mojave GUEST OPTICAL DRIVE STORAGE #BOOT Mojave GUEST fs1: load APFSDRIV.EFI load USBKBDXE.EFI load APPLEUIS.EFI map -r fs1: cd System\Library\CoreServices boot.efi #IF FAILED, TRY TO LOAD JUST APFSDRIV.EFI #AFTER FINISH INSTALLATION, CREATE startup.nsh FOR NEXT BOOT #https://forums.virtualbox.org/viewtopic.php?f=22&t=88258&sid=20c97a3fb77e1578f58f3b1fd74460eb&start=15 #https://github.com/img2tab/okiomov/blob/master/macos_okiomov.sh #AT Mojave GUEST diskutil list sudo mkdir /Volumes/efi sudo mount -t msdos /dev/disk1s1 /Volumes/efi mkdir -p /Volumes/efi/EFI/DRIVERS cp -av /Volumes/CDROM/* /Volumes/efi/EFI/DRIVERS/ ls /Volumes/efi/EFI/DRIVERS/ >> /Volumes/efi/startup.nsh vi /Volumes/efi/startup.nsh
load fs0:\EFI\DRIVERS\APFSDRIV.EFI load fs0:\EFI\DRIVERS\USBKBDXE.EFI load fs0:\EFI\DRIVERS\APPLEUIS.EFI map -r for %a run (1 5) fs%a: cd "macOS Install Data\Locked Files\Boot Files" boot.efi cd "System\Library\CoreServices" boot.efi endfor
#SHUTDOWN GUEST AND DETACH driver.iso #IF FAILED, TRY TO LOAD JUST APFSDRIV.EFI
##### SOME USEFUL LINK/COMMANDS #####
#IF BOOT FAILED, TRY TO BOOT...
#FROM: fs1:>macOS Install Data\Locked Files\Boot Files\boot.efi
#OR: fs1:>System\Library\CoreServices\boot.efi
#CREATE BOOTABLE INSTALLER
#https://support.apple.com/th-th/HT201372
#SOLVE "Install macOS High Sierra.app does not appear to be a valid OS installer application."
#https://www.reddit.com/r/MacOS/comments/7470rb/install_macos_high_sierraapp_does_not_appear_to/
sudo cp -av /macOS Install Data /Applications/Install macOS High Sierra.app/Contents/SharedSupport
#CREATE High Sierra ISO INSTALLER
#https://www.howtogeek.com/289594/how-to-install-macos-sierra-in-virtualbox-on-windows-10/
#REF
#https://github.com/rtrouton/create_macos_vm_install_dmg
#Mojave
#https://astr0baby.wordpress.com/2018/09/25/running-macos-mojave-10-14-on-virtualbox-5-2-18-on-linux-x86_64/
MOJAVE
OpenVZ เป็นซอฟต์แวร์ที่ใช้ทำ virtualization ที่ใช้กับลินุกซ์เท่านั้น
มีข้อแตกต่างจาก xen ตรงที่ใช้เพียงเคอร์เนลเดียว
ข้อดีคือ เร็วและพร้อมใช้
ข้อเสียคือ ไม่มีการ swap หน่วยความจำ ถ้าหน่วยความจำเต็ม โปรเซสที่มาทีหลังจะตายหมด
(แต่ก็ยังมีข้อดีในข้อเสีย คือ openvz จะบริหารการสลับหน่วยความจำระหว่าง guest os อย่างมีประสิทธิภาพ และโปรเซสที่รันอยู่ก่อนที่หน่วยความจำจะเต็ม จะยังคงได้ความเร็วที่เกือบคงที่)
กำหนด
cpu: Intel E2140
mb: ECS P4M890T-M V2.0
ram: 4GB
debian: Lenny
host: server1.example.com, 192.168.1.31, 2.6.26-2-openvz-686
guest-101: test.example.com, 192.168.1.131
vz-partition: /dev/sda9
ติดตั้ง
เริ่มบน lenny
# aptitude install linux-image-2.6.26-2-openvz-686 vzctl vzquota
แก้ไขระบบตามคู่มือ
# vi /etc/sysctl.conf
... #openvz net.ipv4.conf.all.rp_filter=1 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.conf.default.forwarding=1 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.ip_forward=1 kernel.sysrq = 1 net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.eth0.proxy_arp=1 ...
สั่งปรับให้มีผลทันที
# sysctl -p
แก้ระบบเน็ตเวิร์คสำหรับ guest ตามคำแนะนำ
# vi /etc/vz/vz.conf
... # Controls which interfaces to send ARP requests and modify APR tables on. #NEIGHBOUR_DEVS=detect NEIGHBOUR_DEVS=all ...
บูตใหม่
# shutdown -r now
ตรวจผลหลังการบูต
# uname -r
2.6.26-2-openvz-686
สมมุติว่าจะติดตั้งระบบ openvz container ไว้ที่ /dev/sda9 ที่ฟอร์แมตเป็น ext3 ไว้เรียบร้อยแล้ว
สั่งหยุดเพิ่อปรับระบบ
# /etc/init.d/vz stop
แก้ไข fstab เพื่อให้เมานต์ที่ /var/lib/vz อัตโนมัติ
# vi /etc/fstab
... /dev/sda9 /var/lib/vz ext3 defaults 0 2 ...
ย้ายไฟล์ที่ติดตั้งแล้วมาที่ /dev/sda9 แล้วเริ่ม openvz ใหม่
# mkdir /mnt/tmp # mount /dev/sda9 /mnt/tmp # mv /var/lib/vz/* /mnt/tmp # umount /mnt/tmp # mount -a # /etc/init.d/vz start
เนื่องจากค่าไฟล์คอนฟิกของ openvz นั้น ปรับต้้งยากมาก เราเลยจะเอา util ของเขามาใช้เป็นตัวอย่าง
ไปที่ที่เก็บไฟล์คอนฟิก
# cd /etc/vz/conf
สร้างตัวอย่างไฟล์คอนฟิก โดยสมมุติว่าเราจะแบ่งให้เซิร์ฟเวอร์เครื่องนี้มี 4 guest os โดยให้ชื่อไอดี (ของอันแรก) ว่า 101
# vzsplit -n 4 > 101.conf
ปรับแต่งค่าอื่น ๆ ของ guest ตามการกำหนดข้างต้น
# vzctl set 101 --onboot yes --save # vzctl set 101 --hostname test.example.com --save # vzctl set 101 --ipadd 192.168.1.131 --save # vzctl set 101 --nameserver ns1.example.com --save
ติดตั้ง guest os โดยไปดาวน์โหลด template มาจาก debian.systs.org
# cd /var/lib/vz/template/cache/ # wget http://debian.systs.org/ostemplates/debian-5.0-i386-minimal.tar.gz
ติดตั้ง
# vzctl create 101 --ostemplate debian-5.0-i386-minimal
หากต้องการคัดลอก apt source-list ก็สามารถคัดลอกจาก host ไปใช้ได้
# cp /etc/apt/sources.list /var/lib/vz/private/101/etc/apt
เริ่มระบบ
# vzctl start 101
ตั้งรหัสผ่านของ guest ให้ root
# vzctl exec 101 passwd
ใช้งานผ่าน vzctl
# vzctl enter 102
(ออกด้วย exit)
หรือใช้งานผ่าน ssh
# ssh root@test.example.com
ติดตั้งส่วนของ guest ที่ยังเหลืออยู่
# aptitude update # aptitude install console-data locales # dpkg-reconfigure locales # aptitude upgrade
เสร็จแล้วครับ
ที่มา
WebVZ เป็นโปรแกรมจัดการ OpenVZ แบบ web based
ตอนนี้ยังทำอะไรไม่ได้มาก แต่ติดตั้งไว้ก็ดี เผื่อทำงานอะไรเล็ก ๆ น้อย ๆ
สมมุติว่าเครื่องหลักมีไอพี 192.168.1.31
# aptitude install ruby rubygems libsqlite3-ruby sqlite3 rails # gem install -v=2.1.0 rails #รอ 1 เพลิน # ln -sf /var/lib/vz / # cd /usr/local # wget http://downloads.sourceforge.net/project/webvz/webvz/webvz%202.0/webvz.2.0.tar.gz # tar xfz webvz.2.0.tar.gz # ln -sf webvz.2.0 webvz # cd webvz # ruby script/server -b 192.168.1.31
เครื่องอื่น ๆ ในวง สามารถใช้งานผ่าน url: http://192.168.1.31:3000
user: admin
pass: admin123
เสร็จแล้ว
ที่มา
บันทึกการทำ container ใช้เอง ด้วย debootstrap
# aptitude install debootstrap # cd /var/lib/vz/private # mkdir 1001 # debootstrap --arch=amd64 lenny 1001 http://server1.example.com:9999/debian # cp /etc/apt/sources.list 1001/etc/apt/ # chroot 1001 # aptitude install console-data locales ssh screen less vim # dpkg-reconfigure locales # passwd # aptitude update # aptitude upgrade # vi /etc/inittab
... ตัดทิ้ง--------8<--------------------- # Note that on most Debian systems tty7 is used by the X Window System, # so if you want to add more getty's go ahead but skip tty7 if you run X. # 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 จบตัดทิ้ง--------->8-------------------- ...
(อาจติดตั้งแพกเกจ หรือปรับแต่งค่าอื่น ๆ ที่จำเป็นเพิ่มได้)
# exit
เก็บไว้ใช้ในโอกาสต่อไป
# cd 1001 # tar cfz ../debian.tar.gz *
เที่ยวหลังก็สามารถแตกไฟล์ออกมาใช้งานได้ เช่น
# mkdir 1002 # cd 1002 # tar xfz ../debian.tar.gz
เป็นต้น
Xen เป็นซอฟต์แวร์ที่ใช้ทำ virtualization ในทางทฤษฎีสามารถรัน guest os ใด ๆ ก็ได้ โดยมีข้อแม้คือ ซีพียู ต้องรองรับการทำ virtualization ด้วย แต่ถ้าซีพียูไม่รองรับ ต้องใช้กับ os ที่ดัดแปลงให้ใช้กับ xen เท่านั้น
(คราวก่อนติดตั้งเพื่อทดลอง windows แต่เที่ยวนี้จะทำ host)
ข้อดีคือ เร็วพอควร และสามารถ swap หน่วยความจำได้ ทำให้ใช้งานได้เหมือนในระบบลินุกส์ปกติ
ข้อเสียคือ เนื่องจากแยกเคอร์เนลและฮาร์ดแวร์กันอย่างเด็ดขาด จึงทำให้ต้องการฮาร์ดแวร์มากกว่าปกติ และหากหน่วยความจำที่แบ่งให้แต่ละ guest os ไม่พอ xen จะทำการสลับหน่วยความจำลงดิสก์ ทำให้ระบบทำงานช้ามาก (ซึ่งจะมีผลกับทุก ๆ โปรเซสที่ยังค้างอยู่ในหน่วยความจำ คือช้าทั้งระบบ)
กำหนด
cpu: Intel E2140
mb: ECS P4M890T-M V2.0
ram: 4GB
host: server1.example.com, 192.168.1.31
guest-101: test.example.com, 192.168.1.131, bridged
xen-physical-partition: /dev/sda10,xvda
apt-proxy: 192.168.1.3:9999
ติดตั้ง Xen - dom0
เริ่มติดตั้งบน lenny
# aptitude install xen-hypervisor-3.2-1-i386 xen-linux-system-2.6.26-2-xen-686 xen-utils-3.2-1 xenstore-utils xen-shell
จะใช้เน็ตเวิร์กแบบ bridge
# vi /etc/xen/xend-config.sxp
... # (network-script network-dummy) (network-script network-bridge) ...
บูตใหม่
# shutdown -r now
ตรวจผลหลังการบูต
# uname -r
2.6.26-2-xen-686
ติดตั้ง domU
สมมุติว่าจะติดตั้ง xen-domU ไว้ที่ฮาร์ดดิสก์จริง /dev/sda10 ที่แบ่งพาร์ติชั่นเป็น ext3 ไว้เรียบร้อยแล้ว โดยจะเมานต์ /dev/sda10 เป็น /dev/xvda ใน xen และแบ่งพาร์ติชั่นต่าง ๆ ของ domU ใน /dev/xvda
# xm block-attach 0 phy:/dev/sda10 xvda w
ใช้ fdisk แบ่งพาร์ติชั่นตามใจชอบ
# fdisk /dev/xvda
ในที่นี้สมมุติว่า /dev/xvda5 เมานต์เป็น /
และ /dev/xvda6 ใช้เป็น swap
ฟอร์แมต ext3 และ swap ตามลำดับ
# mkfs.ext3 /dev/xvda5 # mkswap /dev/xvda6
ใช้วิธีติดตั้งแบบ debootstrap เนื่องจากเร็วกว่าวิธีอื่น
ติดตั้ง debootstrap
# aptitude install debootstrap
ติดตั้ง lenny บน /dev/xvda5 ผ่าน apt-proxy 192.168.1.3:9999
และเนื่องจากซีพียูไม่รองรับการทำ virtualize จึงต้องติดตั้งเคอร์เนลที่แปลงมาใช้กับ xen แล้ว
# mkdir /mnt/tmp # mount /dev/xvda5 /mnt/tmp # debootstrap lenny /mnt/tmp http://192.168.1.3:9999/debian # mount -t proc none /mnt/tmp/proc # mount -o bind /dev /mnt/tmp/dev # mount -t sysfs none /mnt/tmp/sys # cp /etc/apt/sources.list /mnt/tmp/etc/ # ehco 'test.example.com' > /mnt/tmp/etc/hostname # chroot /mnt/tmp
test# vi /etc/network/interface
# The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address 192.168.1.131 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.3 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 192.168.1.3 dns-search example.com
test# vi /etc/fstab
... #proc /proc proc defaults 0 0 /dev/xvda5 / ext3 errors=remount-ro 0 1 /dev/xvda6 none swap sw 0 0
test# aptitude update test# aptitude install console-data locales ssh test# dpkg-reconfigure locales test# aptitude upgrade test# aptitude install linux-image-2.6.26-2-xen-686 test# passwd test# exit # umount /mnt/tmp/sys # umount /mnt/tmp/dev # umount /mnt/tmp/proc # umount /mnt/tmp # xm block-detach 0 xvda
สร้างไฟล์คอนฟิก
# vi /etc/xen/101.cfg
# # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.26-2-xen-686' ramdisk = '/boot/initrd.img-2.6.26-2-xen-686' memory = '1024' # # Disk device(s). # root = '/dev/xvda5 ro' disk = [ 'phy:sda10,xvda,w' ] # # Hostname # name = 'test.example.com' # # Networking # vif = [ 'bridge=eth0' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart'
เริ่ม domU - 101.cfg
# xm create 101.cfg
ตรวจสถานะ
# xm list
เข้าใช้งาน domU ด้วย ssh
# ssh root@test.example.com
เสร็จแล้วครับ
ที่มา
cpu: Intel E6300
mb: Asrock Conroe945G-DVI
ram: 1G
เที่ยวนี้ลองคอมไพล์ซอร์สเอง ไม่ผ่านซักอย่าง เลยใช้แบบไบนารีดีกว่า
ทำตาม wiki.ubuntu.com/XenOnEdgy เกือบทั้งหมด
เอาแพกเกจที่เกี่ยวข้องมาก่อน
$ sudo apt-get install xen-hypervisor-3.0-i386 xen-image-xen0-2.6.17-6-generic-xen0 xen-utils-3.0
+++ xen-hypervisor-3.0-i386* xen-image-xen0-2.6.17-6-generic-xen0*
xen-ioemu-3.0* xen-utils-3.0*
สร้างแรมดิสก์สำหรับบูตไว้ที่ /boot
$ sudo mkinitramfs -o /boot/xen0-linux-2.6.17-6-generic-xen0.initrd.img 2.6.17-6-generic-xen0
แก้ไขเมนูบูตให้ Xen อยู่อันแรก
$ sudo vi /boot/grub/menu.lst
ของเดิม /boot อยู่ที่ /dev/hda5 และ / อยู่ที่ /dev/hda7
... title XEN/2.6.17 root (hd0,4) kernel /boot/xen-3.0-i386.gz module /boot/xen0-linux-2.6.17-6-generic-xen0 root=/dev/hda7 ro module /boot/xen0-linux-2.6.17-6-generic-xen0.initrd.img ...
เน็ตเวิร์กยังไม่ได้ลอง เดี๋ยวจะกลับมาลอง
ในตัวอย่างของ wiki เขาใช้ลินุกส์เป็น DomU แล้วใช้ disk image เป็นไดร์ฟ
แต่ในที่นี้จะติดตั้ง WinXP โดยแบ่งพาร์ติชั่นจริง ๆ เป็นไดร์ฟ
สร้างไฟล์คอนฟิก ตั้งชื่อว่า winxp.cfg
$ sudo vi /etc/xen/winxp.cfg
พาร์ติชั่นที่ใช้ ผมแยกไปใช้ SATA คือ /dev/sda1
kernel = "/usr/lib/xen-ioemu-3.0/boot/hvmloader" builder='hvm' memory = 384 name = "winxp" vcpus=1 vif = [ 'type=ioemu, bridge=xenbr0' ] disk = ['phy:/dev/sda1,ioemu:hda,w','phy:/dev/hdb,hdb:cdrom,r'] device_model ='/usr/lib/xen-ioemu-3.0/bin/qemu-dm' boot='d' vnc=1 vncviewer=1 serial='pty' ne2000=0
ก่อนบูตเพื่อติดตั้ง ต้องติด xvncviewer ก่อน
$ sudo apt-get install xtightvncviewer
แล้วก็ลองบูตเพื่อติดตั้งได้เลย ด้วยคำสั่ง
$ sudo xm create winxp.cfg
รีบตามไปดูจอของ WinXP ด้วยการเรียกใช้ xvncviewer
$ xtightvncviewer localhost
ผลการทดลอง
ข้อดีคือ ความเร็วที่เกี่ยวกับฮาร์ดแวร์ดีถึงดีมาก รู้สึกหน่วงนิดเดียว สามารถใช้งานได้อย่างจริงจัง
ข้อเสีย เหมือนเดิม คือการแสดงผลผ่าน VNC มีข้อจำกัดมาก คือ
ข้อเสียอื่น ๆ ก็พอยอมรับได้ครับ เมื่อแลกกับความเร็วที่ได้มา
(ลองกับ WinMe ยังไม่ผ่านครับ)
เนื่องจากอูบุนตูเปลี่ยนการเมานต์ดิสก์ จากเดิมที่กำหนดเป็นค่าดีไวซ์ มาเป็น UUID แทน (เข้าใจว่าเปลี่ยนมาหลายรุ่นแล้ว)
และเนื่องจากผมแบ่งพาร์ติชั่นแยกไว้หลายอัน เพื่อให้ลงได้หลายดิสโตรและสามารถใช้ข้อมูลร่วมกันได้ ทำไปทำมากลัวงง ผมเลยกำหนดค่าให้ไดรฟ์ใหม่ จาก UUID กลับมาใช้เป็น /dev/hda? แบบเก่า
ลองตรวจดูว่าจะใช้ค่าอะไรบ้างด้วยคำสั่ง
$ mount
ปรากฎว่าอูบุนตูแปลงค่าเดิม /dev/hda? กลายเป็น /dev/sda? เสียหมด
ก็เลยต้องปรับแก้ค่าในไฟล์ /etc/fstab จาก UUID=... มาเป็น /dev/sda? ให้หมด
วันนี้จะกลับมาทดสอบ Xen อีกครั้ง งานที่เคยเปลี่ยนค่าพาร์ติชั่นไว้เลยกลายมาเป็นปัญหา เพราะเคอร์เนลของ Xen หาไดรฟ์ sda? ไม่พบ
ทางแก้คือต้องแก้กลับมาเป็น UUID เหมือนเดิม
คำสั่งที่ใช้คือ
$ ls /dev/disk/by-uuid/ -alh
total 0 drwxr-xr-x 2 root root 180 May 9 21:27 . drwxr-xr-x 5 root root 100 May 9 21:27 .. lrwxrwxrwx 1 root root 10 May 9 21:27 0e6d39ab-0446-46d6-a6fa-e0d37dc1d73c -> ../../sdb1 lrwxrwxrwx 1 root root 10 May 9 21:27 17905509-63dd-40e5-99fd-6522baa71c13 -> ../../sda9 lrwxrwxrwx 1 root root 10 May 9 21:27 257ff35d-8add-492c-9b76-e3adc11ff7f8 -> ../../sda7 lrwxrwxrwx 1 root root 10 May 9 21:27 2A13-19F4 -> ../../sda1 lrwxrwxrwx 1 root root 10 May 9 21:27 50f0a6d8-10d6-4a6c-b1ff-3508d66f618e -> ../../sda2 lrwxrwxrwx 1 root root 10 May 9 21:27 694d81d4-da76-430c-acb4-78491037055e -> ../../sda8 lrwxrwxrwx 1 root root 10 May 9 21:27 f64defd2-5ebd-4749-947c-b02b55ee4137 -> ../../sda6
แล้วจึงตามแก้ค่าในไฟล์ /etc/fstab และไฟล์ /boot/grub/menu.lst ให้หมด
เมื่อเปลี่ยนกลับมาเป็นรูป UUID=... เรียบร้อยแล้ว ก็จะสามารถบูต Xen ได้อย่างที่ควรจะเป็น
อีกคำสั่งนึงคือ
$ sudo vol_id -u /dev/sda8
694d81d4-da76-430c-acb4-78491037055e
เอามาจาก ubuntuforum แต่ลืมบันทึกครับ