คำแนะนำพื้นฐานเกี่ยวกับขั้นตอนต่างๆ ของกระบวนการบูต Linux
ทุกครั้งที่คุณเปิดเครื่อง Linux PC จะต้องผ่านขั้นตอนต่างๆ ก่อนที่จะแสดงหน้าจอเข้าสู่ระบบที่แจ้งชื่อผู้ใช้หรือรหัสผ่านของคุณในที่สุด มี 4 ขั้นตอนที่แตกต่างกันซึ่งทุกการแจกจ่าย Linux จะต้องผ่านในกระบวนการบูตเครื่องโดยทั่วไป
ในคู่มือนี้ เราจะเน้นขั้นตอนต่างๆ ที่ระบบปฏิบัติการ Linux ดำเนินการตั้งแต่เวลาเปิดเครื่องจนถึงเวลาที่คุณเข้าสู่ระบบ โปรดทราบว่าคู่มือนี้จะพิจารณาเฉพาะโปรแกรมโหลดบูต GRUB2 และ systemd init เนื่องจากปัจจุบันมีการใช้งานโดย Linux รุ่นใหม่ส่วนใหญ่
กระบวนการบูทใช้ 4 ขั้นตอนต่อไปนี้ซึ่งเราจะกล่าวถึงในรายละเอียดเพิ่มเติม:
- BIOS การตรวจสอบความสมบูรณ์ (POST)
- กำลังโหลด Boot Loader (GRUB2)
- การเริ่มต้นเคอร์เนล
- การเริ่มต้น systemd ซึ่งเป็นพาเรนต์ของกระบวนการทั้งหมด
1. การตรวจสอบความสมบูรณ์ของ BIOS (POST)
โดยปกติกระบวนการบูตจะเริ่มต้นเมื่อผู้ใช้กดปุ่ม เปิดเครื่อง หากพีซีปิดเครื่องไปแล้ว หรือรีบูตระบบโดยใช้ GUI หรือบนบรรทัดคำสั่ง
เมื่อระบบ Linux เปิดเครื่อง BIOS (Basic Input Output System) จะเริ่มทำงานและดำเนินการ การทดสอบตัวเองเมื่อเปิดเครื่อง (POST ) นี่คือการตรวจสอบความสมบูรณ์ที่ดำเนินการตรวจสอบการวินิจฉัยมากมาย
POST ตรวจสอบการทำงานของฮาร์ดแวร์ของส่วนประกอบต่างๆ เช่น HDD หรือ SSD, คีย์บอร์ด, RAM<, พอร์ต USB และฮาร์ดแวร์อื่นๆ หากตรวจไม่พบอุปกรณ์ฮาร์ดแวร์บางตัว หรือมีความผิดปกติในอุปกรณ์ใดๆ เช่น HDD หรือ SSD ที่เสียหาย ข้อความแสดงข้อผิดพลาดจะแสดงบนหน้าจอเพื่อแจ้งให้คุณดำเนินการแก้ไข
ในบางกรณี เสียงบี๊บจะหายไปโดยเฉพาะอย่างยิ่งในกรณีที่โมดูล RAM หายไป อย่างไรก็ตาม หากมีฮาร์ดแวร์ที่คาดหวังและทำงานตามที่คาดไว้ กระบวนการบูตจะดำเนินต่อไปในขั้นตอนถัดไป
2. ตัวโหลดบูต (GRUB2)
เมื่อ POST เสร็จสมบูรณ์และชายฝั่งชัดเจน BIOS จะตรวจสอบ MBR (Master Boot Record) สำหรับ ข้อมูล bootloader และการแบ่งพาร์ติชันดิสก์
MBR คือรหัสขนาด 512 ไบต์ที่อยู่ในเซกเตอร์แรกของฮาร์ดไดรฟ์ ซึ่งโดยปกติจะเป็น /dev/sda
หรือ /dev/hda
ขึ้นอยู่กับสถาปัตยกรรมฮาร์ดไดรฟ์ของคุณ อย่างไรก็ตาม โปรดทราบว่าบางครั้ง MBR อาจอยู่ในการติดตั้ง Live USB หรือ DVD ของ Linux
Bootloader มี 3 ประเภทหลักใน Linux: LILO, GRUB, และ GRUB2 บูตโหลดเดอร์ GRUB2 เป็นบูตโหลดเดอร์หลักและล่าสุดในลีนุกซ์รุ่นใหม่ และแจ้งการตัดสินใจของเราที่จะละทิ้งอีกสองตัวที่ล้าสมัยไปตามกาลเวลา
GRUB2 ย่อมาจาก GRand Unified Bootloader เวอร์ชัน 2 เมื่อ BIOS ค้นหาตำแหน่ง bootloader ของ grub2 แล้ว มันจะรันและโหลดลงในหน่วยความจำหลัก (แรม)
เมนู grub2 ช่วยให้คุณสามารถทำสองสิ่งได้ ช่วยให้คุณสามารถเลือกเวอร์ชันเคอร์เนล Linux ที่คุณต้องการใช้ หากคุณได้อัพเกรดระบบของคุณสองสามครั้ง คุณอาจเห็นเวอร์ชันเคอร์เนลที่แตกต่างกันแสดงอยู่ นอกจากนี้ยังช่วยให้คุณสามารถแก้ไขพารามิเตอร์เคอร์เนลบางตัวได้โดยการกดแป้นคีย์บอร์ดร่วมกัน
นอกจากนี้ ในการตั้งค่าดูอัลบูตที่คุณมีการติดตั้งระบบปฏิบัติการหลายตัว เมนูด้วงช่วยให้คุณสามารถเลือกระบบปฏิบัติการที่จะบูตได้ ไฟล์การกำหนดค่า grub2 คือไฟล์ /boot/grub2/grub2.cfg วัตถุประสงค์หลักของ GRUB คือการโหลดเคอร์เนล Linux ลงในหน่วยความจำหลัก
3. การเริ่มต้นเคอร์เนล
เคอร์เนลเป็นแกนหลักของระบบ Linux โดยจะเชื่อมต่อฮาร์ดแวร์ของพีซีกับกระบวนการพื้นฐาน เคอร์เนลควบคุมกระบวนการทั้งหมดบนระบบ Linux ของคุณ เมื่อเคอร์เนล Linux ที่เลือกถูกโหลดโดยโปรแกรมโหลดบูต มันจะต้องแตกไฟล์ออกจากเวอร์ชันบีบอัดด้วยตนเองก่อนที่จะดำเนินการใดๆ เมื่อขยายในตัว เคอร์เนลที่เลือกจะติดตั้งระบบไฟล์รูทและเริ่มต้นโปรแกรม /sbin/init ที่เรียกกันทั่วไปว่า init
Init เป็นโปรแกรมแรกที่จะถูกดำเนินการเสมอ และถูกกำหนด ID กระบวนการหรือ PID เป็น 1 เป็นกระบวนการเริ่มต้นที่สร้าง daemons ต่างๆ และเมาต์พาร์ติชันทั้งหมดที่ระบุไว้ใน /etc/ ไฟล์ fstab
จากนั้นเคอร์เนลจะเมาต์ดิสก์ RAM เริ่มต้น (initrd) ซึ่งเป็นระบบไฟล์รูทชั่วคราวจนกว่าจะเมานต์ระบบไฟล์รูทจริง เคอร์เนลทั้งหมดอยู่ในไดเร็กทอรี /boot
พร้อมด้วยอิมเมจดิสก์ RAM เริ่มต้น
4.ระบบสตาร์ทd
ในที่สุดเคอร์เนลก็โหลด Systemd ซึ่งมาแทนที่ SysV init เก่า Systemd เป็นแม่ของกระบวนการ Linux ทั้งหมด และจัดการเหนือสิ่งอื่นใดในการติดตั้งระบบไฟล์ การเริ่มและการหยุดบริการ และอื่นๆ อีกมากมาย
Systemd ใช้ไฟล์ /etc/systemd/system/default.target เพื่อกำหนดสถานะหรือเป้าหมายที่ระบบ Linux ควรบูตเข้าไป
- สำหรับเวิร์กสเตชันเดสก์ท็อป (ที่มี GUI) ค่าเป้าหมายดีฟอลต์คือ 5 ซึ่งเทียบเท่ากับรันระดับ 5 สำหรับ SystemV init เก่า
- สำหรับเซิร์ฟเวอร์ เป้าหมายเริ่มต้นคือ multi-user.target ซึ่งสอดคล้องกับการทำงานระดับ 3 ใน SysV init
นี่คือรายละเอียดของเป้าหมาย systemd:
- poweroff.target (ระดับรัน 0): ปิดเครื่องหรือปิดระบบ
- rescue.target (ระดับรัน 1): เปิดเซสชัน Rescue Shell
- multi-user.target (ระดับรัน 2,3,4): กำหนดค่าระบบให้เป็นระบบที่มีผู้ใช้หลายรายที่ไม่ใช่กราฟิก (คอนโซล)
- graphical.target (runlevel 5): ตั้งค่าระบบให้ใช้อินเทอร์เฟซผู้ใช้แบบกราฟิกหลายรายกับบริการเครือข่าย
- reboot.target (runlevel 6): รีบูตระบบ
หากต้องการตรวจสอบเป้าหมายปัจจุบันบนระบบของคุณ ให้รันคำสั่ง:
systemctl get-default
คุณสามารถสลับจากเป้าหมายหนึ่งไปยังอีกเป้าหมายหนึ่งได้โดยการรันคำสั่งต่อไปนี้บนเทอร์มินัล:
init runlevel-value
ตัวอย่างเช่น init 3 กำหนดค่าระบบให้เป็นสถานะที่ไม่ใช่กราฟิก
คำสั่ง init 6 จะรีบูตระบบของคุณและ init 0 จะปิดระบบ อย่าลืมเรียกใช้ คำสั่ง sudo เมื่อคุณต้องการสลับไปยังเป้าหมายทั้งสองนี้
กระบวนการบูตจะสิ้นสุดเมื่อ systemd โหลด daemons ทั้งหมดและตั้งค่าเป้าหมายหรือระดับการทำงาน เมื่อถึงจุดนี้คุณจะได้รับแจ้งให้ระบุชื่อผู้ใช้และรหัสผ่านเพื่อเข้าสู่ระบบ Linux ของคุณ