วันนี้เปรี้ยว รู้สึกเกิดอยากอัพ Mac OS X 10.11 El Capitan ขึ้นมาเผื่อว่าคอมพ์จะเร็วขึ้น ก็เลยกดลงแบบใสๆ
การติดตั้งทุกอย่างดูปกติดี Boot ขึ้นมาอย่างสวยงาม
ใช้งานได้พักนึง เอ๊ะ ทำไมคอมพ์มันอืดๆ ก็เลยไปเปิดดู Activity Monitor ... โอ้แม่เจ้า kernel_task กิน CPU ไป 1000% คอมพ์ค้างจ้าาาาา ทำงานไม่ได้เลย -*-
แต่ก็ไม่ได้ตื่นตระหนกตกกะใจอะไร เพราะเคยเจอมาก่อนหน้านี้แล้ว ทั้งนี้ทั้งนั้น มันหาใช่ความผิดของ El Capitan ไม่ แต่เป็นเพราะเราใช้แบตที่ไม่ได้ผลิตโดยแอปเปิ้ล (หรือที่เรียกว่าแบต OEM/REM) หนะ จุดเริ่มต้นมาจากแบตเก่าบวมเป่งคล้ายจะระเบิด
แต่เนื่องจาก MacBook ก็แอบเก่าอยู่ ตอนนั้นก็เลยวิ่งหาแบตแท้จากแอปเปิ้ลมาเปลี่ยนไม่ได้ เลยไปสอย OEM/REM มาแทน
เสียบเข้าแทนอันเก่าได้พอดีๆสวยงาม แต่พอเปิดเครื่องเท่านั้นแหละ ... ทำไมช้าฟระ! ช้าแบบช้านรก ทำงานไม่ได้เลย ขยับเม้าส์ยังไม่ไป
พอไปค้นๆในเนตก็พบว่ามันเป็นเพราะเราใช้แบตไม่แท้ ก็เลยมีปัญหา ... งงหละสิว่ามันเกี่ยวอะไรกับแบต
ดังนั้นก็เลยเขียนบล็อกนี้มาเผื่อมีใครเจอปัญหาแบบเดียวกัน
สาเหตุ
แบตของ MacBook ไม่ได้เป็นแค่แบตไว้จ่ายพลัง แต่ยังมีระบบ Sensor ป้อนข้อมูลกลับให้ระบบปฏิบัติการด้วย เช่นเรื่องของความร้อน บลาๆๆๆ และ Mac OS X ก็ทำซอฟต์แวร์ไว้เพื่ออ่านข้อมูลเหล่านี้ด้วย
พอเราเปลี่ยนไปใช้แบต OEM/REM มันก็ทำให้ซอฟต์แวร์ไม่สามารถทำงานร่วมกับแบตได้อย่างสมบูรณ์ และแทนที่จะแค่ทำงานไม่ได้เฉยๆ กลับกลายเป็นทำให้โปรเซสที่ชื่อว่า kernel_task กิน CPU 100% หรือมากกว่าจนทำให้ใช้งานไม่ได้นั่นเอง
และนี่คือสาเหตุที่ทำให้คอมพ์ค้างจนทำงานไม่ได้
แต่ถามว่าเกิดกับทุกกรณีมั้ย? ตอบว่าไม่นะครับ แบตบางยี่ห้อก็ไม่เกิด บางยี่ห้อก็เกิด แล้วแต่หลายๆปัจจัย และยังไม่สามารถสรุปผลได้ว่าอะไรเป็นปัจจัยให้เกิดได้บ้าง ตามหลักแล้ว OEM ไม่น่าจะมีปัญหาเพราะคุมการผลิตโดยแอปเปิ้ล แต่ REM น่าจะมีปัญหาเพราะไม่ได้ผลิตตามมาตรฐาน แต่เอาเข้าจริงแล้วเราก็ไม่สามารถแยกกันได้ง่ายๆว่าอันไหน OEM อันไหน REM ก็เอาเป็นว่าถ้าเกิดมีปัญหา บล็อกนี้น่าจะช่วยแก้ไขปัญหาได้ครับ
อธิบายวิธีแก้
วิธีแก้ค่อนข้างง่าย บน Yosemite เนี่ยแค่แอบไปแก้ไฟล์ระบบนิดหน่อยเพื่อปิดระบบการทำงานร่วมกับแบตเตอรี่ แต่ผลเสียที่ตามมาคือ พัดลมจะไม่ทำงาน แต่ก็ทำอะไรไม่ได้นี่เนอะ เวลาจะใช้งานจึงต้องใช้งานอย่างมีสติหลังจากปิดระบบนี้ไป
ก็ภาวนาว่าบน El Capitan จะแก้ไขเรื่องนี้ แบบอย่างน้อยถ้ามันเป็นแบต OEM/REM ก็ช่วยตัดพัดลมทิ้งไปเฉยๆได้มั้ย ไม่ต้องมาวุ่นวงวุ่นวาย
แต่พอเอาเข้าจริง วุ่นวายกว่าเดิมอีกจ้าาาาาา เพราะบน El Capitan มันก็มีปัญหาเดิมเด๊ะ วิธีแก้ก็เหมือนเดิมเด๊ะกับตอน Yosemite แต่~~~~~~~~~~~~~ มันยากกว่าเดิม เพราะ El Capitan มาพร้อมระบบการป้องกันการแก้ไขไฟล์ระบบอย่าง Rootless ทำให้ไม่สามารถเข้าไปแก้ได้แบบง่ายๆอีกต่อไป ต้องเล่นท่ายากอีก
รู้จักระบบ Rootless ของ El Capitan
บน Mac OS X รุ่นก่อนๆเราสามารถใช้สิทธิ์ Root ในการเข้าแก้ไขไฟล์ระบบได้อย่างเต็มที่
ซึ่งผลที่ตามมาก็คือหากใคร Tweak มั่วก็พังสิ
บน El Capitan ก็เลยเคร่งขึ้นหน่อยด้วยการเพิ่มระบบที่ชื่อว่า System Integrity Protection หรือมีชื่อเล่นที่เรียกง่ายๆว่า Rootless หรือเอาแบบภาษาชาวบ้านคือ ชั้นเป็นไฟล์ระบบ ถึงแกเป็น Root (ผู้ที่ควรมีสิทธิ์ในการทำทุกอย่าง) แกก็อย่ามายุ่ง! เราจะไม่สามารถทำอะไรกับไฟล์ระบบได้เลยนอกจากเข้าไปอ่านดู ลบทิ้งไม่ได้ แก้ไขไม่ได้
ซึ่งแน่นอนไฟล์ที่เราต้องจัดการเพื่อทำให้คอมพ์เราเลิกค้างมันก็เป็นไฟล์ระบบ ก็เลยไม่สามารถใช้วิธีง่ายๆบน El Capitan ได้แล้ว
อิ๊บอ๋ายหละสิ ...
วิธีแก้แบบทีละขั้นตอน
ถ้าเข้าใจทุกสิ่งอย่างและ ถึงเวลามาเริ่มต้นแก้ไขละครับ
วิธีแก้แบบแรก
ซื้อแบตใหม่ ...
อ้าว ... ก็เอาน่า ถ้าหาแบตแท้ได้ก็จะดีกว่าเพราะระบบจะได้ทำงานสมบูรณ์แบบ
แต่ส่วนใหญ่คงไม่ไปซื้อมั้ง ก็ซื้อแบต OEM/REM มาแล้วหนิ ! จะเอาไปรองขาโต๊ะก็กะไรอยู่
ดังนั้นมาวิธีที่สอง
วิธีแก้แบบที่สอง
เนื่องจาก Rootless เจ้ากรรมที่ไม่อนุญาตให้เรายุ่งกับไฟล์ระบบได้ แต่จริงๆเรายังสามารถแตะต้องได้นะ เพียงแต่ต้องทำใน Recovery Mode ครับ
วิธีเข้า Recovery Mode คือให้ปิดเครื่องและกดเปิดใหม่พร้อมกด Cmd+R ค้างไว้ จนกระทั่งโลโก้แอปเปิ้ลโผล่ขึ้นบนจอแล้วก็ปล่อยปุ่มได้
ขอโน้ตไว้นิดนึง เนื่องจาก Recovery Mode มันก็คือ Mac OS X ตัวย่อมๆ ดังนั้นปัญหาเรื่อง kernel_task กิน CPU 100% ก็จะเกิดใน Recovery Mode ด้วยเช่นกัน ส่งผลให้การบูทเข้า Recovery Mode จะช้ามากกกก บางทีอาจจะค้างไปเลย
ถ้าเกิน 5 นาทีแล้วยังค้างอยู่ ให้ปิดแล้วเปิดใหม่ได้เลยครับ
หลังจากที่มันขึ้นมาก็จะเข้าเป็นหน้าตาแบบนี้ ให้กดที่ Utilities -> Terminal ตามนี้เลยครับ
พอ Terminal ขึ้นมา อย่างแรกที่เราต้องทำคือ หาว่า MacBook ของเราโมเดลอะไร ด้วยคำสั่งนี้
sysctl hw.model
ซึ่งมันจะพ่นออกมาเป็นชื่อตามนี้ครับ
ให้จำไว้ แล้วก็ cd เข้าตาม Directory นี้เลย
cd /Volumes/MACINTOSH_DRIVE/System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources/
โดยแทนที่ MACINTOSH_DRIVE ด้วยชื่อ Drive ที่คุณลง Mac ไว้ครับ โดยปกติน่าจะเป็น Macintosh HD นะ (หากใครยังใช้ Terminal ไม่คล่อง แนะนำให้พิมพ์ 2-3 ตัวแล้วกด Tab เอาครับ มันจะเดาตัวที่ขึ้นต้นด้วยตัวอักษรที่เราพิมพ์เข้าไปให้ โอกาสพิมพ์ผิดก็จะได้น้อยลง)
คราวนี้ลอง ls
ดู ก็จะเจอไฟล์นึงที่หน้าตาคล้ายๆกับ Model Identifier จากขั้นตอนด้านบน เช่น
ให้ทำการย้ายไฟล์นี้ไปไว้ที่อื่นครับ (จริงๆคือลบก็ได้ แต่เผื่อกรณีฉุกเฉิน ย้ายไปเก็บไว้สักที่จะดีกว่า) คำสั่งก็ตามนี้เลยครับ
mv MacBookPro8_2.plist /Volumes/MACINTOSH_DRIVE/Users/
โดยอย่าลืมแทนที่ชื่อไฟล์ MacBookPro8_2.plist
ให้ตรงกับรุ่นของท่านด้วยนะครับ ไม่งั้นก็จะไม่มีประโยชน์อะไร
หลังจากที่ทุกอย่างเรียบร้อยก็ Reboot ได้เล้ย
reboot
เป็นอันเสร็จพิธี คราวนี้คอมพ์ของท่านก็จะกลับมาทำงานได้ปกติละครับ
ขอเตือนย้ำไว้อีกที จากนี้ MacBook จะไม่สามารถเปิดพัดลมได้แล้ว หลีกเลี่ยงการใช้งานในที่ที่การระบายอากาศแย่นะครับ หรือไม่ก็หาอะไรมาเป่าๆ ไม่งั้นจะ Overheat ได้
ก็หวังว่าจะมีประโยชน์นะครับ ตอนนี้แฮปปี้กับ El Capitan มาก =D