กระบวนการ Boot Linux: กระบวนการบูตเคอร์เนลและข้อผิดพลาด

เมื่อเราติดตั้ง ลินุกซ์ ระบบปฏิบัติการ (อูบุนตู, Debian, Mint และอื่น ๆ ) ในการใช้งานเราจะต้องกดปุ่มเปิด / ปิดของพีซีและรอให้ระบบปฏิบัติการโหลดเท่านั้น เช่นเดียวกับระบบปฏิบัติการอื่น ๆ เช่น Windows. อย่างไรก็ตามกระบวนการบูตเป็นกระบวนการที่ค่อนข้างซับซ้อนและยังแบ่งออกเป็นหลายขั้นตอนซึ่งแต่ละขั้นตอนจำเป็นสำหรับการเริ่มต้นของ distro ให้สำเร็จ ดังนั้นหากเรารู้ขั้นตอนการเริ่มต้นนี้ก็จะค่อนข้างง่ายในการระบุและแก้ไขปัญหาที่เป็นไปได้ที่เราอาจประสบ

มีบาง distros Linux ที่มีการกำหนดค่าเพื่อให้ กระบวนการบูท, บูท, อยู่ในโหมด verbose คือแสดงคำสั่งทั้งหมดที่กำลังดำเนินการบนหน้าจอ แม้ว่ามันจะเป็นจริงที่ส่วนใหญ่โดยเฉพาะอย่างยิ่ง distros "ง่าย" มีสาดบนหน้าจอที่ป้องกันไม่ให้เราเห็นมัน (แม้ว่าเราสามารถแสดงได้เสมอโดยกด Esc เพื่อควบคุมกระบวนการ)

กระบวนการ Boot Linux: กระบวนการบูตเคอร์เนลและข้อผิดพลาด

อย่างไรก็ตามทั้งในโหมดข้อความและกับภาพนิ่งบนหน้าจอกระบวนการเริ่มต้นจะเหมือนกัน และเนื่องจากเรากดปุ่มเปิดปิดจนกว่าเราจะเห็นเดสก์ท็อปเราผ่านหลายขั้นตอนที่เราจะให้รายละเอียดด้านล่าง

BIOS / UEFI เฟส

ระยะนี้เหมือนกันสำหรับระบบปฏิบัติการทั้งหมด ระบบขนาดเล็กหรือเฟิร์มแวร์นี้ถูกเก็บไว้ในชิปบน เมนบอร์ด และรับผิดชอบในการตรวจสอบว่าส่วนประกอบทั้งหมดของพีซีเชื่อมต่อและทำงานได้อย่างถูกต้อง โดยดำเนินการตามไฟล์ POST (การทดสอบตัวเองเมื่อเปิดเครื่อง) ตรวจสอบว่าอุปกรณ์ต่อพ่วงที่จำเป็นเชื่อมต่ออยู่เพื่อดำเนินการต่อ (โดยเฉพาะอย่างยิ่งแป้นพิมพ์) และค้นหาหน่วยที่เรากำหนดค่าเป็น "บูท" โดยที่ bootloader จะทำการโหลดระบบปฏิบัติการต่อไป

บางส่วนของ ข้อผิดพลาด ที่เราสามารถหาได้ ณ จุดนี้มีดังต่อไปนี้และส่วนใหญ่เกี่ยวข้องกับฮาร์ดแวร์โดยตรง (โดยเฉพาะกับฮาร์ดไดรฟ์) ดังนั้นพวกเขาจึงได้รับการแก้ไขโดยการตรวจสอบว่าอุปกรณ์ต่อพ่วงเชื่อมต่อกันดีหรือรีเซ็ต BIOS ไปยังโรงงาน การตั้งค่า:

  • ความเสียหาย MBR
  • ตารางพาร์ติชันที่เสียหาย
  • PBR เสียหาย
  • การทุจริตบู๊ทเตอร์
  • ดิสก์เสียหาย
  • ความเสียหาย Bootmgr

เฟส Boot Loader

ในขั้นตอนนี้คอมพิวเตอร์จะพยายามเข้าถึง มาสเตอร์บูตเรคคอร์ด (MBR) หรือ ตารางพาร์ติชันที่แนะนำ (GPT) ของฮาร์ดดิสก์ขึ้นอยู่กับการตั้งค่า BIOS หรือ UEFI หากไม่พบพาร์ติชันนี้เราจะเห็นข้อความบนคอมพิวเตอร์โดยตรงซึ่งระบุว่าไม่พบระบบปฏิบัติการ ในกรณีนั้นเราจะต้องตรวจสอบการตั้งค่าการบู๊ต BIOS หรือ UEFI และหากจำเป็นต้องติดตั้งระบบปฏิบัติการใหม่เพื่อให้การบู๊ตถูกสร้างใหม่

หากพบพาร์ติชันนี้สิ่งต่อไปที่เราจะเห็นคือเมนูบูตของ Linux หรือที่เรียกว่า "GRUB" (แม้ว่าอาจจะมี bootloaders อื่น ๆ เช่น LILO) ที่นี่เราจะเห็นระบบปฏิบัติการทั้งหมดที่ติดตั้งบนพีซีรวมถึงรายการบูตโหลดเดอร์อื่น ๆ (เคอร์เนลต่างตัวเลือกการกู้คืน แรม ตัววิเคราะห์หน่วยความจำ ฯลฯ )

GRUB กับ Ubuntu และ Windows 10

เราจะเลือกรายการที่เราต้องการบูท (เช่น Ubuntu, เพื่อดำเนินการต่อด้วยการบูท Linux) และในระยะต่อไปการโหลดเคอร์เนลจะเริ่มขึ้น

ข้อผิดพลาดที่เราสามารถหาได้ ณ จุดนี้คือ รายการที่เสียหายภายในด้วง . และวิธีการแก้ไขก็คือใช้แผ่นกู้คืน (หรือ Linux Live distro ที่เราสามารถโหลดจาก RAM) เพื่อซ่อมแซม GRUB และทำให้รายการนั้นชี้ไปที่ฮาร์ดไดรฟ์หรือพาร์ติชันที่เกี่ยวข้อง

เคอร์เนล Linux Kernel เฟส

ตอนนี้มาถึงขั้นตอนการบู๊ตที่สำคัญที่สุด: ลินุกซ์เคอร์เนล ระยะ โดยไม่คำนึงถึง distro ที่เราใช้พวกเขาทั้งหมดจะใช้เคอร์เนลดั้งเดิมของระบบปฏิบัติการนี้มากขึ้นหรือน้อยลง ด้วยเหตุผลของพื้นที่และการเพิ่มประสิทธิภาพเคอร์เนลจะถูกบีบอัดไว้ในดิสก์ดังนั้นสิ่งแรกที่ต้องทำคือคลายซิปในหน่วยความจำเพื่อดำเนินการต่อ

บูตลินุกซ์ 1

ขั้นตอนต่อไปคือการเริ่มต้นของส่วนประกอบทั้งหมด เมื่อต้องการทำสิ่งนี้ distros ส่วนใหญ่ใช้ตัวควบคุม daemon ชื่อ systemd (แม้ว่าบางคนใช้ทางเลือกเช่น init.d) สิ่งที่ทำในขั้นตอนนี้คือการ เปิดตัวกระบวนการและบริการทั้งหมด ที่เป็นส่วนหนึ่งของระบบและจำเป็นสำหรับการทำงานที่เหมาะสม กระบวนการทั้งหมดเหล่านี้อนุญาตให้ฮาร์ดแวร์ทำงานและส่วนประกอบทั้งหมดของระบบปฏิบัติการที่จะทำข้อมูลให้ตรงกันโดยเฉพาะอย่างยิ่งหน่วยความจำและดิสก์ บริการเหล่านี้จะทำงานต่อไปหลังจากกระบวนการบู๊ตและจะปิดในเวลาที่ระบบปิด

นอกเหนือจากกระบวนการและบริการ Linux ที่จำเป็นแล้วบริการส่วนบุคคลอื่น ๆ ยังสามารถโหลดได้ (ตัวอย่างเช่นเซิร์ฟเวอร์ที่เราติดตั้งและกำหนดค่าเช่น SSH หรือ FTP)

นอกจากว่าเราจะทำการแก้ไขระบบด้วยตัวเองมันก็ยากที่จะพบปัญหาในจุดนี้ การบูตระบบด้วย Systemd มักเป็นกระบวนการอัตโนมัติอย่างสมบูรณ์และไม่จำเป็นต้องมีการแทรกแซงในส่วนของเรา นอกจากนี้หาก daemon ใด ๆ ไม่สามารถโหลดได้มันจะทำเครื่องหมายว่าเป็นข้อผิดพลาดและย้ายไปยังที่ถัดไป สิ่งที่สามารถเกิดขึ้นได้ก็คือ daemons บางตัวใช้เวลาโหลดหลายวินาที . จากนั้นสิ่งที่เราควรทำคือตรวจสอบที่จุด Systemd ค้างและพยายามแก้ไขปัญหาด้วยการปิดใช้งานบริการกำหนดค่าอย่างถูกต้องหรืออัปเดตระบบ

เฟสสุดท้ายของการบูต Linux

ณ จุดนี้ distro ของเราจะพร้อม นี่คือเมื่อ “ระดับการทำงาน” เฟสจะเข้าสู่ซึ่งจะระบุด้วยจำนวนประเภทของการดำเนินงานของระบบปฏิบัติการตามบริการที่ได้รับการโหลดอย่างถูกต้อง:

  • 0 - หยุด ข้อผิดพลาดของระบบที่สำคัญ
  • 1 - โหมดผู้ใช้คนเดียว
  • 2 - โหมดผู้ใช้หลายคนโดยไม่ต้องเข้าถึงเครือข่าย
  • 3 - เทอร์มินัลโหมดผู้ใช้หลายคน
  • 4 - โหมดที่ผู้ใช้กำหนด
  • 5 - โหมดผู้ใช้หลายคนพร้อมสภาพแวดล้อมแบบกราฟิก มันเป็นโหมดที่ต้องการและมันจะพยายามเริ่มโดยค่าเริ่มต้นเสมอ
  • 6 - ต้องรีสตาร์ทคอมพิวเตอร์

สมมติว่าเราได้รับ“ 5” ใน runlevel จากนั้นเราจะเห็นหน้าจอการเข้าสู่ระบบของ distro Linux ของเราและเราสามารถเข้าสู่ระบบเมื่อเข้าสู่ระบบเราจะมีเดสก์ท็อปที่ปลายนิ้วของเราและเราสามารถเริ่มทำงานได้ กับคอมพิวเตอร์ได้อย่างอิสระ

escritorio ubuntu

เราสามารถเปลี่ยนค่าของ runlevel ได้โดยดำเนินการในเทอร์มินัล“ telinit” ตามด้วยค่าที่เราต้องการ ตัวอย่างเช่นค่า“ 0” จะบังคับให้ปิดเครื่องคอมพิวเตอร์ในขณะที่ค่า“ 1” จะอนุญาตให้เราใช้ Linux ในโหมดผู้ใช้คนเดียวเท่านั้น

นอกจากนี้เรายังสามารถดูเวลาที่ distro ใช้ในการโหลดด้วยคำสั่ง“ systemd-analyse”:

systemd-วิเคราะห์