กำลังทำการปรับปรุง *****
มีอะไรบ้างที่ทำให้สามารถใช้ระบบปฏิบัติการ OS X บนเครื่องพีซี หลังจากที Apple ได้หันมาใช้ซีพียูที่ผลิตโดย Intel ทำให้หลายคนรวมผมด้วยมีโอกาสใช้ระบบปฎิบัติการ OS X พร้อมกับการพัฒนาการที่ก้าวกระโดดของโลก Hackintosh ทำให้เดี่ยวนี้สามารถติดตั้งระบบได้ไม่เกินหนึ่งชั่วโมงสำหรับผู้ที่ไม่มีประสบการณ์อะไรเลย ปัจจุบันจะเห็นได้ว่าชาว OSx86 จะมุ่งเน้นการติดตั้งจากแผ่น retail DVD มากกว่าการใช้แผ่นที่ดัดแปลงแก้ไข เพราะว่าแผ่นแปลงไม่สามารถตอบสนองได้เต็มที
หมายเหตุ ผมจะเน้นกับการใช้ OS X 10.6 เป็นหลัก
ในที่นี้ผมจะขอกล่าวถึงว่าอะไรบ้างที่เป็นปัจจัยทำให้เครื่องของคุณใช้ OS X บนพีซีได้
1)
Chameleon boot loaderปัจจุบันเป็นรุ่น RC5 และยังอยู่ในการพัฒนาและปรับปรุง ชุดนี้(ประกอบด้วย boot boot0 boot1h)เป็นตัวสำคัญที่จะทำให้บูตเข้า OS X ได้ โดยที่ boot จะอยู่ใน root partition ตัว boot0 จะอยู่ MBR และตัว boot1h จะอยู่ที่ partition's bootsector
ตัวบูตปัจจุบันได้ถูกพัฒนามากขึ้นโดยสามารถ
- ใช้เป็นตัวบูตการ์ดจอ แลน
- แก้ไขการรีสตาร์ท
- ดึงความสามารถของซีพียูเช่น Speedstep ลดการใช้พลังงาน
- ทำงานแทน PlatformUUID.kext เพราะแต่ละเตรื่องจะต้องมี UUID เป็นของตนเองโดยอิงจาก mac address ของแลน จะเป็นประโยชน์ต่อการใช้ iTunes
- ให้ข้อมูลลักษณะของเครื่องเช่น MacPro3,1 MacPro4,1 iMac7,1 โดนอิงจากซีพียู โดยที่ไม่ต้องใช้ smbios.plist
- แสดงข้อมูลของแรม ทั้งนี้ขึ้นอยู่กับฐานข้อมูล
- แก้ไขการใช้ USB ports เป็นต้น
กล่าวได้คือเป็นตัวกลางการสื่อสารระหว่างฮาร์ดแวร์และซอฟแวร์ นอกจากนี้ก็ต้องมีองค์ประกอบอื่นคือ /Extra folder ที่จะใช้งานร่วมกับตัวบูต ภายในจะมี
- com.apple.Boot.plist ที่มีค่า key และ string ในการเรียกใช้งานของตัวบูต
- smbios.plist ถ้ามีตัวนี้อยู่ตัวบูตจะอ้างอิงลักษณะเครื่องจากตัวนี้
- DSDT.aml ตัวบูตจะอ้างอิงตัวนี้เป็นหลักก่อนเพื่อให้ระบบรู้จัก
- /Extra folder ภายในจะประกอบด้วย kext ที่นอกเหนือจากต้นฉบับหรือจากต้นฉบับก็ได้ และสามารถอยู่ใรรูปแบบของ Extensions.mkext
แหล่งศึกษาเพิ่มเติม
2)
kext ที่นอกเหนือจากที่มีอยู่ในแผ่น retail DVD
- FakeSMC.kext*** ตัวนี้สำคัญพอๆกับตัวบูต พัฒนาโดย netkas ซึ่งได้มาจาก open source โดยทำงานเสมือน key ถ้าไม่มีตัวนี้ก็ไม่สามารถบูตเข้าได้ และตัวนี้ก็ยังทำงานร่วมกับตัวชี้วัดอุณหภูมิ ความเร็วรอบของพัดลม เป็นต้น
ข้อมูลเพิ่มเติม
https://github.com/kozlek/HWSensors จะประกอบด้วย FakeSMC.kext และ Hardware monitors application
- SleepEnabler.kext ทำให้เครื่องเข้าโหมด Sleep แต่มีข้อเสียต้องลบทิ้งก่อนอัพเดตเวอร์ชั่นใหม่ แก้ไขโดยใช้การแก้ไขเพิ่มเติมที่ DSDT
- AHCIPortinjector.kext เป็นการป้อนรหัสอุปกรณ์(device-id)ให้ระบบรู้จัก ตัวนี้เป็นแบบ legacy kext
- ElliottForceLegacyRTC.kext ป้องกันการรีเซต CMOS โดยเฉพาะ Gigabyte mainboards ซึ่งสามารถแก้ไขที่ DSDT ได้เช่นเดียวกัน
- IOAHCIBlockStorageInjector.kext ทำให้ระบบมองเห็นเป็นอุปกรณ์ภายใน ไม่ใช่อุปกรณ์ต่อพ่วงที่จะแสดงเป็น icon สีส้ม
- NullCPUPowerManagement.kext ไม่โหลด AppleIntelCPUPowerManagement.kext และช่วยลดอุณหภูมิ
- OpenHaltRestart.kext ช่วยทำให้ระบบรีสตทาร์ทเครื่องได้ นอกเหนือจากการแก้ไข DSDT
- RealtekR1000.kext ใช้กับแลนการ์ด Realtek
- PlatformUUID.kext เป็นตัวให้ข้อมูล UUID กับระบบซึ่งผู้ใช้กำหนดเองหรือใช้เครื่องมือหาค่า ปัจจุบันไม่นิยมใช้เพราะว่าตัวบูตจะเป็นตัวจัดการ โดยพื้นฐานจะอ้างอิง mac address ของแลน และคำนวณหาค่า
- AppleACPIPS2Nub.kext & ApplePS2Controller.kext สำหรับอุปกรณ์ต่อเชื่อมด้วย PS2 เช่น เมาส์ และ คีย์บอร์ด
- Legacy kext อาจจะเป็นชื่ออะไรก็ได้ จะมีส่วนประกอบเพียงอย่างดียวคือ info.plist ไม่มี binary file ภายใน info.plist จะประกอบด้วย IOKitPersonalities ทั้งนี้ขึ้นอยู่กับอุปกรณ์ที่ใช้ เป็นการส่งข้อมูลของอุปกรณ์เพื่อให้ระบบรู้จักและทำการโหลด kext เข้าสู่ kernel
***ที่ใช้ร่วมกับ FakeSMC.kext และโปรแกรมวัดอุปกรณ์เช่น iStatMenu
- IntelTheraml.kext บอกอุณหภูมิ CPU
- SuperIOFamily.kext ใช้กับชิปวัดอุปกรณ์บนเมนบอร์ด เช่น iTE IT8718 chip
- NVClockX.kext ใช้วัดการ์ด nVidia แต่ยังมีข้อจำกัดในการพัฒนาโดยไม่สามารถใช้กับการ์ดที่ออกมาใหม่ได้ เนื่องจากขาดคนที่มีความรู้และ source code
การติดตั้งส่วนใหญ่ที่กล่าวมานี้จะอยูในส่วน /Extra แต่บางตัวก็ต้องอยู่ใน /System/Library/Extensions ทั้งนี้ขึ้นอยู่กับผู้พํฒนา
3)
การใช้ DSDT เป็นประโยชน์อย่างมากต่อการใช้อุปกรณ์ เป็นการใช้ DSM method สัมพันธ์กับ address ของอุปกรณ์
- เป็นตัวส่งข้อมูลเกี่ยวกับการ์ดจอ แลน sound on board & sound on graphic card เพื่อให้ใช้งานได้ แต่ทั้งนี้ขึ้นอยู่กับอุปกรณ์ด้วย ยกตัวอย่างเช่น (1) ALC662 บน ASUS สามารถแสดงรายชื่อบน Sound Prefernces แต่เมื่อเลือกใช้งานแล้วเสียงไม่ออก (2) การ์ดจอระหว่าง Gigabyte HD5770 และ Sapphire vapor-x HD5770 การใช้งาน HDMI port จะต่างกัน ถ้าต่อ HDMI กับ Gigabyte HD5770 ผลที่ได้คือเป็น mirror และไม่มีเสียงออกแม้ว่าจะใช้ DSDT ต่างจาก HDMI's Sapphire vapor-x HD5770 จะได้งานที่สมบูรณ์กว่า กล่าวคือจะเป็นอิสระหรือ mirror และยังมีเสียงออกทาง HDMI ข้อสังเกตุจาการใช้วินโดว์เสียงของ Sapphire จะออกจาก HDMI & DisplayPort ไม่มีเสียงออกแม้จะใช้หัวแปลง ATI's DVI2HDMI ต่างจาก Gigabyte HD5770 เสียงออกได้ทุกช่องเมื่อใช้กับวินโดว์
- ป้องกันการรีเซต CMOS โดยแก้ไขในส่วนของ Device (RTC)
- การสร้าง device-id เทียมให้กับอุปกรณ์ที่ไม่ตรงกับซอฟแวร์ด้วย DSM method ตัวอย่างเช่น การทำให้ระบบเห็น USB ports เป็นลักษณะ built-in หรือการทำให้ AppleLPC.kext โหลดเข้าสู่ระบบ เพื่อใช้งานกับ AppleIntelCPUPowerManagement.kext โดยการเพิ่มต่า device-id ใน DSDT ให้ตรงกับตัวต้นฉบับ นอกจากนี้ก็สามารถใช้แบบ legacy kext เป็นการโหลดรหัสอุปกรณ์ซึ่งไม่มีอยู่ในต้นฉบับ ถ้า AppleLPC.kext ไม่โหลดเข้าสู่ kernel อุณหภูมิของซีพียูจะสูงกว่า
เช่น
00:1f.0 ISA bridge [0601]: Intel Corporation 82801IR (ICH9R) LPC Interface Controller [8086:2916] (rev 02)
ซึ่ง 8086 2916 จะมีอยู่ในต้นฉบับ ไม่จำเป็นต้องแก้ไข DSDT หรือใช้ legacy kext แต่ถ้าไม่ตรงกับต้นฉบับ ถ้าใช้ผ่าน DSDT ค่าจะต้องตรงกับตัวต้นฉบับ แต่ถ้าใช้ผ่าน legacy kext ก็ให้ใส่ค่าตรงกับอุปกรณ์นั้นได้เลย อาจจะงงเล็กน้อยแต่ไม่ยาก
ข้อมูลเพิ่มเติม
http://www.projectosx.com/forum/index.php?showtopic=3594)
การใช้ EFI string ปัจจุบันเป็นที่นิยมน้อยมากเพราะขั้นตอนค่อนข้างจะยุ่งยาก ต้องแปลงจาก xml เป็น HEX ถ้าทำไม่ถูกต้องเครื่องจะค้างหรือรีสตาร์ทเอง จึงไม่ขอกล่าวรายละเอียด
5)
แผ่นบูตหรือ USB boot ในการติดตั้งแบบปัจจุบันจะนิยมใช้แบบการติดตั้งจากแผ่น OS X 10.6.# retail DVD โดยอาศัยแผ่นบูตเป็นตัวนำเพื่อให้ได้ติดตั้งบนฮาร์ดดิสค์ได้สมบูรณ์ โดยแผ่นบูตก็จะประกอบด้วย boot และ kext ที่จำเป็นสำหรับอุปรณ์นั้นทั้งนี้ขึ้นอยู่กับคนทำ บางแผ่นบูตอาจจะใช้แบบทั่วไปหรือเฉพาะเจาะจงก็ได้ บางแบบจะมีไดรเวอร์ของการ์ดจออยู่ด้วย
เมื่อติดตั้งบนฮาร์ดดิสต์แล้วก็ต้องทำการติดตั้ง boot loader และ kext ต่างๆ และ com.apple.Boot.plist & smbios.plist & DSDT.aml(สำหรับเมนบอร์ดของใครของมัน) ชึ่งการติดตั้งจะเป็นการติดตั้งกึ่งสำเร็จรูปหรือแบบสำเร็จรูปเช่น MultiBeast ทั้งนี้ขึ้นอยู่กับประสบการณ์ของแต่ละบุคคล
ประโยชน์การใช้ USB boot loader คือผู้ใช้สามารถกำหนดที่เครื่องให้บูต USB ก่อน เมื่อเสียบ USB boot เข้าไปและเปิดเครื่องเพื่อเข้าสู่ระบบ OS X ได้เลยโดยกำหนดพาร์ติชั่นที่จะบูตอัตโนมัตใน com.apple.Boot.plist ถ้าไม่ได้เสียบ USB boot เครื่องจะเข้าสู่วินโดว์ตามปกติ เป็นต้น
ข้อมูลเพิ่มเติม
http://www.mondifymac.com/forum/index.php?topic=69.0http://www.mondifymac.com/forum/index.php?topic=26.0*********************************************************************
อุปกรณ์ต่างๆ
การ์ดจอถึงแม้ว่า OS X จะมีไดรเวอร์รองรับอยู่แล้วแต่ระบบก็ยังไม่รู้จักการ์ดจออยู่ดี ดังนั้นจำเป็นต้องใช้ตัวช่วยเพื่อเป็นการป้อนข้อมูลจำเป็นของการ์ดจอเช่น device-id, memory, address, nvcap (of nVidia), framebuffer (of ATi/AMD) เพื่อให้ระบบรู้จัก การใช้แต่ละตัวก็มีข้อดีและข้อเสีย
1) การใช้ ATY_Init.kext for ATI หรือ NVEnabler.kext
สำหรับ ATY_Init.kext ภายในจะประกอบด้วย binary file และ info.plist ในนี้จะประกอบด้วย name of framebuffer จำนวนพอร์ท เป็นต้น ข้อจำกัดคือใช้ได้แค่ 32bit เท่านั้น
สำหรับ NVEnabler.kext ก็ใช้กับ nVidia ปัจจุบันอ่านพบว่าไม่สามารถใช้งานกับ OS X 10.6.5 ได้ เนื่องจากภายในก็มี binary file ซึ่งอาจจะไม่ได้รับการพํฒนาให้เหมาะกับ mach_kernel ใหม่ๆ
2) การใช้ EFI/GFX string
มีองค์ประกอบคล้ายกับ info.plist โดยเปลี่ยนจาก xml เป็น HEX ตัวเลขของ HEX ที่ได้ก็จะนำไปใส่ใน com.apple.Boot.plist
<key>device-properties</key>
<string> ค่าของ HEX </string>
ปัจจุบันนิยมใช้น้อยลง เหมาะใช้กับ nVidia และสามารถใช้ได้มากกว่าหนึ่งตัว
3) การใ่ส่ค่า GFX ใน DSDT
เหมาะกับการ์ด nVidia โดยเฉพาะถ้าต้องการใช้งานมากกว่าหนึ่งตัว โดยจะมีข้อมูลเกี่ยวกับ จำนวนพอร์ท หน่วยความจำ และที่สำคัญ nvcap ที่จะบ่งบอกลักษณะของพอร์ท แต่ก็มีข้อควรระวังถึงแม้ว่าจะได้ข้อมูล nvcap มาจากรอมของการ์ดจอแต่ก็ใช่ว่าจะสามารถใช้ได้ อันนี้ต้องทดลอง
สำหรับ ATi/AMD HDxxxx ถ้าจะใช้กับ OS X 10.6.x จะค่อนข้างยุ่งยากมากกว่า องค์ประกอบจะคล้ายกับ info.plist ใน ATY_Init.kext แต่ส่วนสำคัญอยู่ที่ bin-image ถ้านำมาแปลงใส่ใน DSDT ก็จะใช้เวลาและความอดทน อย่างไรก็ตามการ์ดจอรุ่นใหม่เช่น Sapphire HD5xxx จะใช้ HDMI audio ได้ก็ต่อเมื่อมีการใส่ค่าใน DSDT สำหรับ HDAU
4) การใช้ตัวบูค จะบอกระบบให้ทราบ
ถ้ามีรายชื่อของการ์ดจออยู่ในตัวบูตก็สามารถใช้ได้โดยกำหนดค่าใน com.apple.Boot.plist
<key>GraphicsEnabler</key>
<string>Yes</string>
ในระบบสามารถมีวิธีการที่สามและสี่ร่วมกัน โดยระบบจะอ้างอิง DSDT ก่อน
ถ้าใช้ DSDT ที่มี GFX method & HDAU (HDMI audio) กับ ATY_Init.kext ระบบอาจจะเิกิด kernel panic
ถ้าใช้ DSDT ที่มี GFX method & HDAU กับการ์ดจอที่ไม่มี sound chip ก็จะเกิด kernel panic ได้เช่นกัน
ถ้า kext ที่จำเป็นต้องใช้กับการ์ดจอถ้าไม่มี device-id ก็ต้องเพิ่มเข้าไปและทำการติดตั้งตัว kext ที่แก้ไขไปยัง /S/L/E พร้อมกับต้องล้าง kextcahes โดยจะขอยกตัวอย่าง ATi HD5770 มี device-id 0x100268b8 จะใช้ได้ก็ต้องมี ATI5000Controller.kext ในนี้จะมี IOPCIMatch -> 0x68b81002 นอกจากนี้แล้วก็จะใช้ ATIFramebuffer.kext ใน kext นี้จะมีชื่อของ framebuffer ที่จะเหมาะกับการ์ดจอตามตัวอย่างนี้คือ Vervet เป็นต้น
ข้อมูลเพิ่มเติม เกี่ยวกับ ATi/AMD HDxxx
http://netkas.org/?p=465การ์ดแลนบางตัวระบบไม่รู้จักจึงจำเป็นต้องอาศัยตัวช่วย และสำคัญต่อ Time Machine ระบบต้องการมองเห็นแลนหลักเป็น en0
- การใช้ DSDT เพื่อให้ระบบมองเห็นเป็น built-in
- ใช้ตัวบูต โดยใส่ค่าใน com.apple.Boot.plist
<key>EthernetBuiltin</key>
<string>Yes</string>
- การใช้ kext เช่น RealtekR1000.kext หรือ Lnx2Mac's Realtek RTL81xx Driver
ข้อมูลเพิ่มเติม
http://lnx2mac.blogspot.comการ์ดเสียงบนบอร์ดที่นิยมใช้ก็มีสองวิธีที่จะกล่าวคือ
- การใช้ DSDT โดยการเปลี่ยน Device (AZL) เป็น Device (HDEF) และเพิ่ม DMS method
- การใช้ HDAEnabler.kext
โดยทั้งสองวิธีจะสัมพันธ์ device-id ของอุปกรณ์และ legacy kext หรือ AppleHDA.kext
device-id ที่แปลงค่าจาก HEX เป็น DEC ใน kext จะต้องตรงกับอุปกรณ์
ถ้าโชคดีหน่อยอย่าง ALC889a/ALC885 ก็สามารถใช้ legacy kext ได้โดยไม่ต้องไปแก้ไข AppleHDA.kext เพียงแต่ปรับปรุง layout ให้ตรงกับ ALC889a/ALC885 การแก้ไขนี้มีสองตัวที่เป็น plug-in
- AppleHDAPlatformDriver.kext
- AppleHDAHardwareConfigDriver.kext
ข้อมูลเพิ่มเติม
USB Bluetoothขอยกตัวอย่างของ ASUS USB Bluetooth โดยพื้นฐานระบบจะโหลด kext เข้าสู่ kernel แต่ก็มองเป็นอุปกรณ์เสริม การใช้งานอาจจะไม่สมบูรณ์เต็มที่ จึงจำเป็นต้องใช้ legacy kext ที่มีข้อมูลของ Product-id & Vendor-id ที่สัมพันธ์กับ BroadcomUSBBluetoothHCIController.kext เป็นต้น
ไม่ใช้ legacy kext
Apple Bluetooth Software Version: 2.3.8f7
Hardware Settings:
Address: 00:00:00:00:00:00 (ปิดข้อมูล)
Manufacturer: Broadcom
Name: NewTown
Firmware Version: 14 (21298)
Bluetooth Power: On
Discoverable: Yes
Vendor ID: 0
Product ID: 0x1
HCI Version: 4 (0x4)
HCI Revision: 21298 (0x5332)
LMP Version: 4 (0x4)
LMP Subversion: 16910 (0x420e)
Device Type (Major): Computer
Device Type (Complete): Macintosh Desktop
Composite Class Of Device: 3670276 (0x380104)
Device Class (Major): 1 (0x1)
Device Class (Minor): 1 (0x1)
Service Class: 448 (0x1c0)
Requires Authentication: No
ใช้ legacy kext
Apple Bluetooth Software Version: 2.3.8f7
Hardware Settings:
Address: 00-00-00-00-00-00 (ปิดข้อมูล)
Manufacturer: Broadcom
Name: NewTown
Firmware Version: 14 (21298)
Bluetooth Power: On
Discoverable: Yes
Vendor ID: 0xa5c
Product ID: 0x2148
HCI Version: 4 (0x4)
HCI Revision: 21298 (0x5332)
LMP Version: 4 (0x4)
LMP Subversion: 16910 (0x420e)
Device Type (Major): Computer
Device Type (Complete): Macintosh Desktop
Composite Class Of Device: 3670276 (0x380104)
Device Class (Major): 1 (0x1)
Device Class (Minor): 1 (0x1)
Service Class: 448 (0x1c0)
Requires Authentication: No
*****************************************************************คำสั่งเทอร์มินอล ในส่วนนี้อาจจะมีข้อบกพร่องรบกวนชี้แนะด้วย
ก่อนเข้าบูตระบบ กด F8 หรืออาจขึ้นอยู่กับข้อกำหนดใน com.apple.Boot.plist
-s เข้าสู่ Single mode ส่วนใหญ่ใช้เพื่อแก้ไขกรณีเกิด kernel panic
-x เข้าสู่ save mode จะโหลด kext ที่จำเป็นเท่านั้น
-v เป็นการแสดง log ขณะทำการบูต ถ้าติดค้างอะไรก็จะทราบว่าอะไร
-F โหลด kext จาก /System/Library/Extensions ไม่เอามาจาก kextcaches
arch=i386 ใช้เข้าสู่ 32bit โดยที่ดีฟอลต์ของบูตจะเข้าสู่ 64bit
นอกจากนี้ก็ยังสามารถพิมพ์ค่าที่อยู่ใน com.apple.Boot.plist ได้เช่นเดียวกัน โดยให้มีคำสั่วเป็นตรงกันข้ามหรือไม่มีคำสั่งตัวนั้นอยู่
เช่น ใน com.apple.Boot.plist มี <key>GraphicsEnabler</key> <string>Yes</string> เมื่อทำการพิมพ์ก่อนบูตเข้าระบบสามารถพิมพ์ได้ดังนี้ GraphicsEnabler=No ระบบก็จะไม่ใช้ตัวบูตส่งข้อมูลเกี่ยวกับการ์ดจอทำให้ระบบใช้งานการ์ดจอในระดับ VESA mode ในขณะเดียวกันถ้าใช้ DSDT จะต้องไม่มีส่วนของการ์ดจอ
ตัวอย่างการพิมพ์หลายๆตัว
-v arch=i386 GraphicsEnabler=No EthernetBuiltin=No เป็นต้น
--------------------------
ถ้าเข้าสู่ -s จะทำอะไรได้บ้าง
ก่อนอื่นต้องพิมพ์คำสั้ง เพื่อทำการแก้ไ้ข
/sbin/mount -uw /
ใช้ลบ DSDT.aml
# rm -rf /DSDT.aml
ใช้ลบ kext
# rm -rf /System/Library/Extensions/name.kext
ใช้ลบ kext ใน /Extra
# rm -rf /Extra/name.kext
ใช้ล้าง kextcaches ที่ OS X 10.6 จะใช้ในการบูตเข้าสู่ระบบ
# rm -r -v /System/Library/Caches/com.apple.kext.caches/*
ใช้ลบค่าอ้งอิงของการ์ดจอ
# rm -f /Library/Prefernces/com.apple.window*
# rm -f /Users/user name/Library/Preferences/ByHost/com.apple.window*
# rm -f /Users/user name/Library/Preferences/ByHost/com.apple.pref*
คำสั่งที่ใช้สำหรับ Permissions & kextcaches
http://osx86.sojugarden.com/2009/09/permissions-kext-caches/พิมพ์ restart เพื่อบูตเข้าสู่ระบบ
---------------------------
ใช้ติดตั้ง boot จาก Desktop
# sudo cp -R -f /Users/user name/Desktop/boot /
จะเป็น hidden file
---------------------------
จากที่ได้กล่าวมาข้างต้น จะเห็นว่ามีหลายวิธีการและผสมผสานอย่างเหมาะสมเพื่อให้ใช้ OS X บนพีซีอย่างสมบูรณ์แบบ ทั้งนี้ขึ้นอยู่กับการใช้งานอุปกรณ์และประสบการณ์ของผู้ใช้เอง จุดมุ่งหวังเพื่อให้เข้าใจแบบพื้นๆ ส่วนรายละเอียดและวีธีการผมจะไม่เน้นในหัวข้อนี้
หมายยเหตุ
เป็นการเขียนจากประสบการณ์ อาจจะมีข้อบกพร่องในรายละเอียดบ้างก็ต้องขออภัยมา ณ ที่นี้ด้วย
ถ้ามีคำแนะนำกรุณาชี้แนะด้วย ขอบคุณครับ
Last edited: 2012-03-13