เคยสงสัยไหมเกี่ยวกับขั้นตอนต่างๆ ของ Linux ระบบปฏิบัติการโอเพนซอร์ส? การรู้กระบวนการบูททั้งหมดสามารถช่วยคุณแก้ไขปัญหา – โดยเฉพาะหากคุณเป็นผู้ดูแลระบบ
เกิดอะไรขึ้นเบื้องหลังเมื่อคุณเปิดอุปกรณ์? อ่านต่อเพื่อค้นหาคำตอบ
BIOS
Basic Input/Output System (BIOS) เป็นเฟิร์มแวร์ระดับต่ำที่จัดเก็บบนชิปหน่วยความจำเล็กในเมนบอร์ดของคอมพิวเตอร์ของคุณ เฟิร์มแวร์นี้ช่วยกระบวนการเริ่มต้นและจัดการการไหลของข้อมูลระหว่างเครื่องของคุณและอุปกรณ์อื่นๆ ที่เชื่อมต่อ เช่น เมาส์ พิมพ์ และตัวแปลงวิดีโอ

หน้าที่หลักของ BIOS ที่แสดงด้านบน คือการรัน Power-On Self Test (POST) การทดสอบนี้ตรวจสอบการทำงานของฮาร์ดแวร์ระบบ และค้นหาบูทเซกเตอร์ ซึ่งมีซอฟต์แวร์ที่จำเป็นสำหรับกระบวนการที่เหลือ หาก POST สำเร็จ BIOS จะโหลดขั้นตอนถัดไป คือ Stage One Boot Loader ลงใน RAM ของระบบ
หาก POST ไม่สำเร็จ BIOS จะส่งรหัสที่คุณสามารถใช้สำหรับ troubleshooting
Stage One Boot Loader
ขั้นตอนแรกของบูทโหลดเดอร์ – เรียกว่า Master Boot Record (MBR) หรือ Guided Partition Table (GPT) – ออกแบบมาเพื่อให้โปรแกรมออนไลน์
MBR เป็นซอฟต์แวร์ง่ายๆ ที่ไม่มีการเข้าใจระบบไฟล์ในตัว ดังนั้นคุณจะต้องจัดเก็บ stage two boot loader ระหว่าง MBR และพาร์ติชันแรกบนฮาร์ดดิสก์เสมอ
เมื่อ MBR ตรวจพบ stage two boot loader มันจะส่งมอบการควบคุม
Stage Two Boot Loader
หน้าที่ของ stage two boot loader คือค้นหา kernel และโหลดมันลงในหน่วยความจำ
การกระจาย Linux ส่วนใหญ่จะใช้บูทโหลดเดอร์หนึ่งในสามตัว – GRUB, GRUB2 หรือ LIL คุณน่าจะเห็น GRUB2 ที่แสดงด้านล่าง มันเป็นตัวใหม่ที่สุด

เมื่อบูทโหลดเดอร์พบ kernel และโหลดลง RAM แล้ว มันจะส่งมอบการควบคุม มันยังส่งภาพของระบบไฟล์อุปกรณ์ของคุณที่ kernel สามารถใช้เพื่อหาโมดูล
Kernel
เพราะ kernel ทั้งหมดมีอยู่ในรูปแบบบีบอัดเพื่อประหยัดพื้นที่ฮาร์ดดิสก์ สิ่งแรกที่มันจะทำเมื่อได้รับการควบคุมคือ self-extract (แยกตัวเอง) จากนั้นมันจะ mount รูปแบบ image ของระบบไฟล์ที่ได้รับจากบูทโหลดเดอร์
Kernel จะตรวจจับฮาร์ดแวร์ของระบบ และสลับ image ไปเป็น root file บนดิสก์
init (systemd)
ต่อไป Kernel จะเริ่มระบบ initialization (init) – กระบวนการแรกที่ spawn กระบวนการทั้งหมดที่จำเป็นสำหรับกระบวนการบูท ในระบบส่วนใหญ่ จะเป็น systemd
หน้าที่หลักของ systemd คือการเปิดใช้งาน daemons ทั้งหมด – กระบวนการเบื้องหลังและบริการ – ที่จำเป็นสำหรับการรันระบบ บริการเหล่านี้จะยังคงรันหลัง initialization และจัดการกระบวนการระบบที่สำคัญ เช่น การบันทึกข้อความระบบต่างๆ การติดตามอุปกรณ์ และการรับรองว่าระบบไฟล์ซิงค์กับหน่วยความจำของระบบ
หากคุณสงสัยว่า systemd กำลังรันบริการอะไร การรันคำสั่ง systemctl เพียงลำพังจะคืนรายการเต็ม
คุณยังสามารถใช้ systemd เริ่มบริการอื่นๆ เมื่อบูท โดยใช้การผสมผสานของคำสั่ง systemctl และบริการที่คุณต้องการเริ่ม ตัวอย่างเช่น หากคุณต้องการให้ระบบตรวจสอบสถานะของ NFS คุณสามารถพิมพ์ systemctl status nfs-server.service คุณยังสามารถ start, stop, enable หรือ disable บริการด้วยการผสมผสาน systemctl และหนึ่งในคำสั่งเหล่านั้น
Runlevel
Run level เป็นสถานะของ INIT และระบบของคุณกำหนดว่าบริการไหนกำลังรัน Kernel มาตรฐานของ Linux รองรับ runlevel 7 แบบต่างกัน:
- 0: ระบบหยุด พร้อมปิดเครื่อง
- 1: โหมดผู้ใช้เดี่ยว
- 2: โหมดหลายผู้ใช้ ไม่มีระบบไฟล์เครือข่าย
- 3: โหมดหลายผู้ใช้ ใช้ command line interface แทน graphical user interface
- 4: ผู้ใช้กำหนดเอง
- 5: โหมดหลายผู้ใช้ ใช้ graphical user interface ที่ระบบ Linux ส่วนใหญ่จะบูทเข้าไปโดยค่าเริ่มต้น
- 6: Reboot

หากคุณต้องการเปลี่ยน runlevel ด้วยเหตุผลใด INIT จะรับผิดชอบเปลี่ยนมันโดยใช้คำสั่ง telinit ที่แสดงด้านบน
การแยกส่วนกระบวนการบูท
การแยกส่วนนี้เป็นเพียงภาพรวมของกระบวนการบูท Linux และทิ้งรายละเอียดบางอย่างไว้ อย่างไรก็ตาม ควรให้ข้อมูลที่คุณต้องการเพื่อ troubleshoot ปัญหาที่คุณอาจเผชิญ