"ไม่ต้องมีเวทมนตร์ ไม่ต้องไปหาแม่มด แค่คุณทำสิ่งที่โลกระลึกถึงตลอดกาล แค่นั้นคุณก็เป็นอมตะแล้ว"
วิธีแก้ไขปัญหา MacBook อืดดดดจนใช้งานไม่ได้จากการใช้แบต OEM/REM บน El Capitan
3 Oct 2015 01:37   [26825 views]

วันนี้เปรี้ยว รู้สึกเกิดอยากอัพ 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

บทความที่เกี่ยวข้อง

Nov 6, 2015, 14:48
14661 views
บันทึก 1 สัปดาห์กับการพัฒนาแอป Hipception (iOS + Android)
Sep 8, 2015, 19:19
10539 views
"ธรณี" แอปมือถือที่โหดที่สุดตั้งแต่เคยทำมา ...
0 Comment(s)
Loading