ค้นหาเว็บไซต์

คำแนะนำพื้นฐานเกี่ยวกับขั้นตอนต่างๆ ของกระบวนการบูต 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 ของคุณ