Search

มาใช้ Mac OS X แบบ 64 บิตกัน

Apple ได้โปรโมทเรื่อง 64 บิตมานานหลายปีแล้วนับแต่ยุค Mac OS X Tiger และในคอมพิวเตอร์ยุคปัจจุบันของ Apple ก็ได้ใช้งาน CPU ที่สนับสนุน 64 บิตมาแล้วพักหนึ่ง บัดนี้น่าจะถึงเวลาอันดีที่เราจะมาทำความเข้าใจเรื่อง 64 บิตใน Mac OS X กัน มาดูกันว่ามันมีดีอะไร แล้วเราจะใช้มันได้หรือไม่ และจะใช้มันได้อย่างไร

ประวัติ 64 บิตอย่างย่อบน Mac OS X

Tiger เป็นระบบปฏิบัติการตัวแรกในสาย Mac OS X ที่สนับสนุนการใช้งาน Kernel แบบ 64 บิต ซึ่งในขณะนั้นส่วนที่รองรับ 64 บิตจริง ๆ ยังมีแค่เพียงส่วนของ UNIX ที่อยู่เบื้องหลังของตัวระบบเท่านั้น ใน Leopard การรองรับ 64 บิตมีมากขึ้นขยายมาถึงส่วนของ UI Framework ที่เป็น Cocoa แล้ว (ยกเลิกแผนการพัฒนา Carbon) และใน Snow Leopard ที่เพิ่มความสามารถในการใช้หน่วยความจำให้ใช้ได้มากถึง 16 TB (ถ้าสามารถผลิตได้) รวมถึงการเพิ่มความสามารถของ Application ระบบทุกตัว (ไม่เกี่ยวกับ iTunes, iLife และ QuickTime รุ่นเก่า) ให้รองรับการใช้งานแบบ 64 บิต

ทำไมต้อง 64 บิต

ปัญหาหลักของระบบปฏิบัติการแบบ 32 บิตคือไม่ว่าจะเพิ่มหน่วยความจำให้แก่เครื่องเท่าใด สามารถใช้งานหน่วยความจำสูงสุดทำได้แค่เพียง 4 GB เท่านั้น (ไม่นับข้อจำกัดบน Hardware สำหรับ CPU แบบ 32 บิตที่อ้างอิงหน่วยความจำได้สูงสุดแค่ 2 GB เท่านั้น) นอกจากนี้ด้วยความสามารถของ Mac OS X สามารถใช้ประโยชน์จาก 64 บิตในการป้องกันการถูกโจมตีจากโปรแกรมไม่พึงประสงค์ที่จ้องเล่นงานหน่วยความจำของโปรแกรมเพื่อแทรกแซงการปฏิบัติการของโปรแกรมนั้น ๆ ให้มีพฤติกรรมอันไม่พึงประสงค์ซึ่งอาจจะเป็นอันตรายต่อข้อมูลและตัวระบบปฏิบัติการ

อีกจุดที่ Apple พยายามขายในหน้าผลิตภัณฑ์คือความเร็วที่มากขึ้น ซึ่งก้ำกึ่งว่าอาจจะไม่เป็นความจริงก็ได้ เนื่องจากหมายเหตุตอนท้ายด้วยสเปคของเครื่องที่ใช้ทดสอบที่ต่างกัน คือ MacBook 2.0 GHz กับ iMac 2.66 GHz ทำให้ไม่สามารถสรุปได้ว่าเรื่องนี้เป็นจริงหรือไม่ คงจะต้องทดสอบด้วยเครื่องที่สเปคเท่ากัน เช่น Mac Pro (Mid 2010) ที่บูตเป็น 32 บิตและ 64 บิต จึงจะได้ข้อสรุปที่ชัดเจนในการทดสอบว่าช่วยเรื่องความเร็วจริงหรือไม่?

ความต้องการพื้นฐาน

เครื่องคอมพิวเตอร์ที่สนับสนุนการใช้งาน Kernel แบบ 64 บิต ซึ่งไม่ได้หมายความว่าจะเป็นเครื่องที่ใช้ CPU สนับสนุนคำสั่งแบบ 64 บิต (PowerPC G5, Intel Core 2 Duo หรือใหม่กว่า) ซึ่งทาง Apple ได้กำหนดชนิดของเครื่องไว้ตามลิงก์อ้างอิงด้านล่าง

สำหรับรายการเครื่องที่สนับสนุนการใช้งานคร่าวๆ (อ้างอิงจากวันที่เขียนบทความนี้) เป็นดังรายการต่อไปนี้

  • Mac Pro (Mid 2010)—กำหนดให้บูตเป็น 64 บิตเป็นค่าปริยาย
  • XServe (Early 2008 และหลังจากนั้น), Mac Pro (Early 2008 และหลังจากนั้น), Mac mini (Mid 2010)—กำหนดให้ Mac OS X Server บูตเป็น 64 บิตเป็นค่าปริยาย แต่สำหรับ Mac OS X ต้องกำหนดเอาเอง
  • iMac (Early 2008 และหลังจากนั้น), MacBook Pro (Early 2008 และหลังจากนั้น)

ข้อสังเกต: ไม่มี MacBook และ MacBook Air ในรายการนี้ ซึ่งน่าจะชัดเจนตามการวางสายผลิตภัณฑ์ของ Apple หากถึงยุคแห่ง 64 บิตจริง ๆ อาจจะมีปรากฏในรายการนี้ได้ในอนาคต

สำหรับกรณี Mac Pro/MacBook Pro ซึ่งสามารถต่อพ่วงอุปกรณ์เพิ่มเติมผ่านทางช่อง PCI Express/ExpressCard นั้น ตัวอุปกรณ์ที่ต่อพ่วงจำเป็นต้องมี Kernel Extension ที่รองรับ Kernel แบบ 64 บิตด้วยเพื่อให้สามารถใช้งานต่อไปได้ มิเช่นนั้นจะไม่สามารถใช้อุปกรณ์ดังกล่าวได้ในโหมด 64 บิต

วิธีการเปิดใช้งาน

การเปิดใช้งาน Mac OS X แบบ 64 บิตสามารถทำได้ 3 วิธีด้วยกัน แต่ในคลังความรู้ของ Apple แนะนำไว้เพียง 2 วิธีเท่านั้น ส่วนวิธีการที่ 3 เป็นวิธีการที่ไปค้นได้จากเว็บอื่นในอินเตอร์เน็ตซึ่งจะขอเรียกมันว่า “วิธีที่ Apple ไม่ได้แนะนำ” ซึ่งแต่ละวิธีก็มีข้อดี/ข้อเสียที่ต่างกันไป

สำหรับการบูตเป็น 64 บิตในหนแรกหลังจากที่เครื่องได้ผ่านการบูตเป็น 32 บิตมาก่อน จะใช้เวลานานแต่หากบูตใหม่เป็น 64 บิตอีกครั้งอย่างต่อเนื่องจะใช้เวลาที่น้อยลง

กดปุ่มบนแป้นพิมพ์เพื่อบูตเป็น 64 บิต

สำหรับเครื่องที่สนับสนุนการใช้งาน Kernel แบบ 64 บิต แต่ไม่ได้ถูกตั้งให้บูตเป็น 64 บิตโดยปริยาย ในขณะที่บูตเครื่อง กดปุ่ม 6 และ 4 บนแป้นพิมพ์ (กดค้างตั้งแต่เปิดเครื่องจนผ่านโลโก้  ไปจนเริ่มเห็นสัญลักษณ์วงกลมหมุนแสดงการโหลดข้อมูล)

สั่งให้บูต 64 บิตผ่านคำสั่ง systemsetup

สำหรับเครื่องที่สนับสนุนการใช้งาน Kernel แบบ 64 บิต แต่ไม่ได้ถูกตั้งให้บูตเป็น 64 บิตโดยปริยาย เปิดโปรแกรม Terminal ที่อยู่ใน Applications/Utilities แล้วพิมพ์คำสั่งต่อไปนี้

sudo systemsetup -setkernelbootarchitecture x86_64

คำสั่ง sudo จำเป็นต้องใช้สิทธิ์ระดับ Administrator ของ User ที่สั่งจำเป็นต้องมีการตั้ง Password ประจำ User นั้นด้วย

ผลลัพธ์ของคำสั่งนี้จะเป็นการแก้ไขไฟล์ /Library/Preferences/SystemConfiguration/com.apple.Boot.plist โดยเป็นการแก้ไขค่า Kernel Architecture จากที่ไม่มีการตั้งค่าไว้เป็น x86_64

การเปลี่ยนค่าปริยายบน NVRAM (วิธีที่ Apple ไม่ได้แนะนำ)

สำหรับเครื่องที่สนับสนุนการใช้งาน Kernel แบบ 64 บิต แต่ไม่ได้ถูกตั้งให้บูตเป็น 64 บิตโดยปริยาย นี่เป็นอีกวิธีที่สามารถทำได้ เปิดโปรแกรม Terminal แล้วพิมพ์คำสั่งต่อไปนี้

sudo nvram boot-args="arch=x86_64"

เปรียบเทียบวิธีการ

สำหรับวิธีกดปุ่มบนแป้นพิมพ์ จะใช้เพื่อต้องการเลือกใช้งาน Kernel แบบ 64 บิตเป็นครั้งคราวเท่านั้น ในการบูตครั้งถัดไปหากไม่ได้กดปุ่มบนแป้นพิมพ์อีกระบบจะไปตรวจค่าจาก /Library/Preferences/SystemConfiguration/com.apple.Boot.plist หากไม่พบการตั้งค่า Kernel Flag ก็จะใช้ค่าปริยายบน Hardware เป็นตัวกำหนดการเลือกใช้ Kernel

การสั่งให้บูต 64 บิตผ่านคำสั่ง systemsetup จะเป็นการกำหนดว่า Mac OS X ที่อยู่ใน Partition ที่ใช้บูตนี้จะถูกบูตเป็น 64 บิตเสมอ นั่นหมายความว่าหากทำการถอด Harddisk ก้อนนี้ไปเชื่อมต่อหรือทำ Target Disk กับเครื่องที่สนับสนุนการใช้งาน Kernel แบบ 64 บิต สามารถบูต Mac OS X ที่อยู่ใน Partition นี้ให้เป็น 64 บิตได้ทันทีโดยไม่ต้องกดปุ่มใด ๆ เพิ่มเติม การตั้งค่านี้จะมีความคงทนต่อการเปลี่ยนอุปกรณ์เช่น Logic Board ด้วย

สำหรับการเปลี่ยนค่าปริยายบน NVRAM นั้น เนื่องจากเป็นลำดับสุดท้ายในการตรวจสอบ (หากไม่มีค่าอื่น ๆ ตั้งไว้) นั้นหมายถึงว่าหากเครื่องคอมพิวเตอร์นี้ถูกเชื่อมต่อกับ Harddisk ใด ๆ ที่ติดตั้ง Mac OS X แต่ไม่ได้มีการตั้งค่า Kernel Architecture ไว้ Mac OS X ใน Partition นั้นจะถูกบูตให้เป็น 64 บิตเสมอ ซึ่งวิธีนี้จะไม่คงทนต่อการเปลี่ยนอุปกรณ์เช่น Logic Board และไม่คงทนต่อการ Reset PRAM/NVRAM ด้วย

หากต้องการบังคับให้ Partition ที่เราต้องการบูตเป็น 64 บิตเสมอ แนะนำให้ตั้งค่าผ่านคำสั่ง systemsetup แต่หากต้องการให้เครื่องคอมพิวเตอร์เครื่องนั้นบูตเป็น 64 บิตเสมอ แนะนำให้เปลี่ยนค่าปริยายบน NVRAM

ตรวจสอบว่าขณะนี้ใช้งานในโหมด 64 บิตหรือไม่?

ที่ทำมาทั้งหมดอาจจะไม่สำเร็จก็ได้ เพราะ Mac OS X ในโหมด 64 บิตก็ไม่ได้มีหน้าตาที่แตกต่างจากโหมด 32 บิตแต่อย่างใด ซึ่งวิธีการตรวจสอบสามารถทำได้โดย

  • เปิด System Profiler ซึ่งอยู่ใน Applications/Utilities หรือจะคลิ้กโลโก้  แล้วกดปุ่ม option ค้างคำว่า About This Mac จะเปลี่ยนเป็น System Profiler…
  • กดเลือก Software ที่ฝั่งด้านซ้าย
  • สังเกตข้อความ 64-bit Kernel and Extensions: ว่าต่อท้ายด้วย Yes หรือ No หากเป็น Yes แสดงว่ากำลังทำงานอยู่ในโหมด 64 บิต

Mac OS X 64 bit - Software

หรือสำหรับผู้ที่ใช้งานโปรแกรม Terminal แล้วพิมพ์คำสั่งต่อไปนี้

uname -a

ซึ่งสามารถตรวจสอบผลลัพธ์ในท่อนรองสุดท้ายและท่อนสุดท้ายของลัพธ์ หากแสดงว่าเป็น x86_64 แสดงว่าอยู่ในโหมด 64 บิต

อยากกลับไปใช้ 32 บิตจะทำอย่างไร?

หากต้องการเปลี่ยนแบบชั่วคราว สำหรับเครื่องที่ตั้งให้บูตเป็น 64 บิตแล้ว ในขณะที่บูตเครื่อง กดปุ่ม 3 และ 2 บนแป้นพิมพ์ (กดค้างตั้งแต่เปิดเครื่องจนผ่านโลโก้  ไปจนเริ่มเห็นสัญลักษณ์วงกลมหมุนแสดงการโหลดข้อมูล)

สำหรับการตั้งค่าของ systemsetup และ NVRAM ให้เปลี่ยนค่าจาก x86_64 เป็น i386 หากต้องการคืนค่าปริยาย สำหรับคำสั่ง systemsetup ให้เปลี่ยนค่าเป็น default สำหรับ NVRAM ให้ทำการ Reset PRAM ในขณะที่บูตเครื่อง กดปุ่ม command, option, P และ R บนแป้นพิมพ์ ค้างไว้จนขึ้นหน้าจอสีเทา แล้วเครื่องจะดับไปแล้วบูตขึ้นมาใหม่ด้วยเสียง Chime

อ้างอิง

posted on 11 November 2010, 10:50 am by ezy in Articles
  • http://twitter.com/golilabank ❤ Thanapol Limarun ❤

    ลองเซ็ทค่าดูแล้วครับ
    ขอบคุณมากครับ :)

  • http://www.facebook.com/jackthelad Vivid Charoenmetheewat

    อธิบายละเอียดมากครับ เดี๋ยวไว้จะลองทำดู ^^

  • http://www.facebook.com/profile.php?id=1513856893 Maximize Sa-pam

    อยากถามว่าถ้าไม่ทำมันต่างจากเดิมตรงไหนครับ เพราะผมเข้าไปดูใน Activity Monitor มันก็โปรแกรมส่วนใหญ่ก็รัน 64 bit อยู่แล้วอ่ะครับ เพียงแต่ถ้าเราทำมันจะมี process ที่ชื่อว่า kernel_task เป็น 64 bit แค่นั้นเอง ส่วนความเร็วก็เป็นปกติแรมก็เหมือนจะเป็น 4 GB เท่าเดิม

    • http://ezybzy.info ezy

      เป็นคำถามที่ดีครับ นั่นซิมันจะต่างกันอย่างไร

      ถ้าโปรแกรมมันรันได้แต่บน 64 บิตอย่างเดียว คุณก็คงต้องบูตเป็น 64 บิตเพื่อใช้งาน แต่กรณีของ Mac OS X ทาง Apple ได้วางแผนให้โปรแกรมที่สร้างขึ้นมาใช้ได้ทั้งแบบ 32 บิตและ 64 บิตใน Binary ตัวเดียวกัน นั่นจึงไม่ใช่ปัญหาสำหรับผู้ใช้ ที่ขึ้น Kind ใน Activity Monitor เป็นเพียงการบอกชนิดของ Process ว่าเป็นแบบใด ถึงจะขึ้นเป็น Intel (64 bit) แต่ถ้าคุณยังอยู่ในระบบปฏิบัติการโหมด 32 บิต อย่างไรก็ตามมันก็เป็น 32 บิตครับ ไม่ได้รับประโยชน์จากการเป็น 64 บิต

      แต่ก็ยังมีโปรแกรมอีกหลาย ๆ ตัวที่ยังใช้ Carbon สร้างส่วนติดต่อผู้ใช้ ทำให้ยังไม่สามารถผลิตรุ่น 64 บิตได้ เช่น iTunes แต่สำหรับ Service อื่น ๆ เช่น Apple Mobile Device สำหรับจัดการ iOS Device นั้นโชคดีที่ถึงจะเป็น Carbon แต่เนื่องจากไม่มีส่วนติดต่อผู้ใช้ทำให้สามารถสร้างรุ่น 32 และ 64 บิตได้

      ผมขอยกคำตอบของ FAQ ของ Microsoft ดังนี้ http://windows.microsoft.com/en-CA/windows-vista/32-bit-and-64-bit-Windows-frequently-asked-questions

      Can I run 64-bit programs on a 32-bit computer?

      If the program is specifically designed for the 64-bit version of Windows, it won’t work on the 32-bit version of Windows. (However, most programs designed for the 32-bit version of Windows will work on the 64-bit version of Windows.)

      ใน Windows ตอนนี้ ถ้าเป็นโปรแกรมที่สร้างจากพวก C/C++ ยังไม่เห็นว่าจะมีตัวไหนที่เป็นทั้ง 32 และ 64 บิตในตัวเดียวกันเลย อย่างโปรแกรมชุด Office ของ Microsoft ยังต้องแยกรุ่น 32 และ 64 บิตออกจากกัน ไม่นับ Windows ที่แยกรุ่นอยู่แล้ว พวก Server Product ก็เป็น 64 บิตอย่างเดียวเป็นส่วนใหญ่ เหตุผลหลักๆ ก็คงจะเพราะความต้องการหน่วยความจำที่เกินกว่า 4 GB ทำให้ไม่สามารถผลิตรุ่น 32 บิตออกมาได้

      • http://www.facebook.com/profile.php?id=1513856893 Maximize Sa-pam

        สรุปง่ายๆก็คือประมาณว่า ถ้าโปรแกรม 64 บิต เปิดมาใช้งานบน OS แบบ 32 บิต โปรแกรมนั้นมันก็จะทำงานแค่ 32 บิตเท่านั้น ถึงแม้ว่าใน Activity Monitor จะบอกว่าเป็น 32 บิตก็ตาม ผมเข้าใจถูกใช่ไหมครับ
        สอบถามอีกเรื่องหนึ่งครับ แล้วเรื่องแรมล่ะครับ ถ้ารัน Mac OS X 10.6 แบบ 32 บิต (ซึ่งผมใช้ MBP) บนเครื่องผมจะทำงานบนแรมเต็มๆ 4 GB หรือไม่ครับ

        • http://ezybzy.info ezy

          ครับ คือ 32, 64 บิตมันก็แค่วิธีการอ้างอิงตำแหน่งบนหน่วยความจำเท่านั้นเองครับ

          โดยปกติเราจะใช้ได้ไม่เต็มครับ เพราะเราจะถูกส่วนประมวลผลกราฟฟิกกันที่บนหน่วยความจำไป อันนี้อ้างอิงจากหมายเหตุเล็ก ๆ อยู่ตอนท้ายของ Tech Spec ของผลิตภัณฑ์ของ Apple ครับ

        • http://ezybzy.info ezy

          เหมือนผมจะให้ข้อมูลในคำตอบที่แล้วผิดไปซะแล้ว

          นี่คือข้อความที่ Apple เขียนไว้ใน http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/OSX_Technology_Overview/SystemTechnology/SystemTechnology.html ส่วนของ 64-Bit Kernel

          Mac OS X v10.6 and later contains a 64-bit kernel. Although Mac OS X allows a 32-bit kernel to run 64-bit applications, a 64-bit kernel provides several benefits:

          * The kernel can support large memory configurations more efficiently.
          * The maximum size of the buffer cache is increased, potentially improving I/O performance.
          * Performance is improved when working with specialized networking hardware that emulates memory mapping across a wire or with multiple video cards containing over 2 GB of video RAM.

          สรุปคือ มันน่าจะรันแบบ 64 บิตนั่นเอง แต่จะไม่ได้ประโยชน์ 3 ประการต่อท้ายพวกนั้น อันสุดท้ายนี่ผมนึกภาพไม่ออกว่ามันเป็นอย่างไรนะ

          • http://www.facebook.com/people/reiyw-mi-di-chi-fech-bukh/100000390139183 เรียว ไม่ได้ใช้เฟชบุ๊ค

            ข้อหลังนี่ตามหลักการถ้าการ์ดจอมี VRAM เยอะ อย่างพวกมีการ์ดจอหลายการ์ด การ์ดละแรงๆ 512MB ระบบ 32 bits จะ map ตำแหน่งหน่วยความจำรวมทั้งหมดได้แค่ 1.5GB ครับ ก็คือการ์ด 3 ใบแค่นั้นเองน่ะครับ ถ้าเกิดเราใช้ 4 ใบ VRAM มันจะเป็น 2GB ซึ่งจะต้องทำการ mapping และ unmapping physical address ซึ่งจะส่งผลให้ต้องมีการประมวลผลตรงนั้น ทำให้การทำงานช้าลงครับ

            แต่ถ้าใช้ 64 bits ก็สามารถ map address ตรงได้เลยครับเพราะอ้างอิง address ได้เยอะกว่า ทำให้การทำงานรวดเร็วครับ

            ไม่เพียงแต่ทำงานได้เร็วขึ้นนะครับ แต่จะลดโอกาสการเกิดข้อผิดพลาด จากการ mapping address ผิด ซึ่งอาจจะเกิดพวก kernel panic อะไรพวกนี้ได้ด้วยครับ ซึ่งตามหลักการก็จะทำให้การพัฒนา driver สำหรับอุปกรณ์พวกนี้ทำได้ง่ายขึ้นครับผม

          • http://ezybzy.info ezy

            ขอบคุณสำหรับการขยายความครับ

          • http://www.facebook.com/profile.php?id=1513856893 Maximize Sa-pam

            ขอบคุณทั้งสองท่านสำหรับข้อมูลครับ ความรู้เพียบเลย….

  • http://www.facebook.com/atikran พระครูสมุห์จิรพันธ์ จิรพนฺธโว

    หามานานเลย อนุโมทนาบุญ สำหรับความรู้ครั้งนี้มาก ๆ เจริญพร

  • http://www.facebook.com/tanasap Tanasap Phaojumroon

    ลองทำแล้วครับ แต่ดันแชร์เน็ตจากไอโฟนไม่ได้ เลยกลับมาใช้32 นอกจากนั้นก็ไม่เห็นความแตกต่างอะไรเท่าไหร่ครับ (หรือเราลองเล่นน้อยไป)

    • http://ezybzy.info ezy

      เอ๊ะ ผมก็ใช้มันได้ปกตินะครับ (ผ่าน USB)

  • http://www.facebook.com/tanasap Tanasap Phaojumroon

    ผมก็ใช้ผ่าน USB อ่ะ

  • http://www.facebook.com/profile.php?id=100000529343971 Narit Panichpol

    ถ้าเปลี่ยนเป็น 64 บิทแล้ว ถ้าเป็นmacbook pro จะเปลืองแบทมากกว่า 32 บิท รีป่าวครับ ??

    • http://www.facebook.com/profile.php?id=841174143 เรียว ชีวิตทดลอง

      คิดว่าไม่น่าจะต่างกันมากนะครับ :-) แต่ก็ยังไม่ได้ลองเปรียบเทียบ ที่ผมคิดแบบนี้เพราะคร่าวๆแล้ว มันน่าจะกินหรือไม่กินแบท จากการที่ต้องประมวลผลอะไรมากน้อยเท่าไหร่มากกว่า

      ซึ่งผมว่าถ้าอย่างในกรณีทำงานกับหน่วยความจำใหญ่ๆ I/O ใหญ่ๆ แล้วมี overhead ในการ map / unmap address แบบนั้นน่าจะต้องเปลืองไปกับการประมวลผลมากกว่า การที่สามารถ addressing ได้โดยตรงจากระบบ 64 bits เลยนะครับ

      อย่างไรก็ตามเป็นการคาดเดาของผมเอง :-)

  • http://www.facebook.com/people/Puchong-Suwannit/1282819169 Puchong Suwannit

    หลังจากลองเปลี่ยนเป็น 64 Bit แล้ว ถ้าใช้งานโดยรวมอาจจะมองไม่เฆ้นความต่างมากนัก แต่ถ้าลองกับ Application ที่รองรับ 64 Bit แล้วก็เห็นผลจริงๆครับ เมื่อกี้ลองกับ Aperture ถ้าเทียบกับตอนที่เป็น 32 Bit ตัว 64 Bit ใช้เวลาเปิดเร็วกว่ามาก