ระบบปฏิบัติการมากขึ้นเรื่อยๆ โดน Bloated ด้วย Services มากมายรันในพื้นหลัง แม้จะไม่กิน CPU มาก แต่เพิ่ม Boot Time และ RAM Usage โชคดีที่ Open-source OS ให้อำนาจและเสรีภาพทำได้ทุกอย่าง หมายความว่า Disable หรือ Remove อะไรที่ไม่ได้ใช้งานได้ นี่คือวิธีปิด Services ไม่จำเป็นเพื่อปรับปรุง Boot Time Linux
หมายเหตุ: แสดงวิธี Disable Services แทนการ Remove เพราะความเสี่ยงน้อยกว่าที่จะทำให้ระบบพังถาวร และกลับสู่เดิมได้โดยแค่ Enable Service กลับ ถ้าสังเกตว่าบางอย่างที่มีประโยชน์หยุดทำงาน
วิเคราะห์เวลาที่แต่ละ Service ใช้โหลด
Linux Distro ส่วนใหญ่ใช้ Systemd โดยค่าเริ่มต้น ในชุด Utilities มีโปรแกรมวิเคราะห์ Boot Speed แสดง Total Boot Time และเวลาที่แต่ละ Service ใช้ โปรดทราบ: บาง Services โหลดแบบ Parallel ถ้าตัวหนึ่งใช้ 2 วินาที อีกตัว 3 วินาที ไม่แปลกว่าใช้รวม 5 วินาที อาจน้อยกว่านั้นมาก
เปิด Terminal รัน:
systemd-analyze
แสดงเวลา Kernel และ Core System Services เริ่มต้น ไม่รวมเวลา Desktop Animations หรือ User Apps โหลดเสร็จ
ดูเวลา Graphical Interface เริ่มต้นได้ด้วย:
systemd-analyze critical-chain graphical.target
แสดง Chain ของ Services นำไปสู่ Graphical Target ถึง แม้มีประโยชน์ แต่เป็น Milestone ทางเทคนิค ไใช่เวลาที่ Desktop Idle สนิท เพราะ Background Components อาจยังโหลดต่อ
หมายเหตุ: โปรแกรม Auto-start ใน Desktop Environment มักจัดการผ่าน Desktop-specific Autostart Settings หรือ Systemd User Services
คำสั่งที่มีประโยชน์ที่สุดสำหรับ Tutorial นี้:
systemd-analyze blame
เลื่อนดูรายการด้วย Arrow Keys หรือ Page Up/Down กด q ออก
ใช้ Systemctl ปิด Services ไม่จำเป็น
เห็นในรูปก่อนหน้า Services อย่าง snapd ใช้หลายวินาที บน SSD น่าละเลย แต่บน HDD แบบเดิม เวลานี้เป็นหลายวินาที และรวมกันเยอะมาก
ถ้าไม่ต้องการ snapd (จัดการ Snap Packages) ปิดได้ด้วย:
sudo systemctl disable snapd.service
หลัง Reboot อาจยังเห็น snapd เริ่มภายใต้เงื่อนไขบางอย่าง เพราะ snapd ใช้ Socket Activation เริ่ม On-demand แม้ Service จะ Disabled
ระบุ Units ที่เกี่ยวข้อง:
systemd-analyze blame | grep snap
ช่วยระบุว่า Snap-related Units ไหนมีส่วนทำให้ Startup ช้า
จัดการ Socket-Activated Services
Services บางตัวรวม snapd ใช้ Socket Activation หมายถึง Service ยังเริ่มได้เมื่อมีการพยายามติดต่อ แม้จะ Disabled
ถ้า snapd ยังปรากฏหลัง Reboot Units ที่เกี่ยวข้องอย่าง snapd.socket หรือ snapd.seeded.service อาจเป็นสาเหตุ ในกรณีแบบนี้ Mask Service และ Socket มีประสิทธิภาพมากกว่า:
sudo systemctl mask snapd.service
sudo systemctl mask snapd.socket
Masking บล็อก Service ทั้งหมด ไม่ให้ Dependencies หรือ Socket เริ่มได้ แต่ใช้ระมัดระวัง โดยเฉพาะ Distro ที่พึ่ง Snap Packages สำหรับ System Updates หรือ Apps
แยกความแตกต่าง "Disable" กับ "Masking": Disable บอก systemd อย่าเริ่มอัตโนมัติ Masking ไปไกลกว่า ป้องกันไม่ให้เริ่มได้เลย ในกรณีส่วนใหญ่ Disable พอแล้ว Masking เหมาะสำหรับ Services ที่ยืดยืนเริ่มซ้ำ หรือชัดเจนว่าไม่จำเป็นบนระบบคุณ
เพิ่มเติม ขึ้นกับ Setup คุณ อาจพบ Services อื่นที่ปิดได้ปลอดภัย:
avahi-daemon.service
ModemManager.service
thermald.service
แต่ต้อง Research Service ก่อนปิดเสมอ อะไรที่ไม่จำเป็นบน Desktop อาจสำคัญบน Laptop หรือ Server
สรุป
ปิด Services ไม่จำเป็น ลด Boot Time และปล่อย System Resources โดยเฉพาะระบบ HDD แม้บน SSD สมัยใหม่ ตัด Services ไม่ใช้งาน ช่วยให้ระบบสะอาดและมีประสิทธิภาพ
มี Graphical Tools อย่าง Stacer จัดการ Services แต่ให้ Control จำกัด หรือ Functionality เก่า สำหรับการจัดการที่สอดคล้องและแม่นยำข้าม Distro คำสั่ง systemctl CLI ยังคงเป็นตัวเลือกน่าเชื่อถือที่สุด