Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

แก้ไขปัญหา Ubuntu/Mint/Kali บูทเข้าสู่ Initramfs Prompt ใน BusyBox

ในบทความนี้เราจะแสดงวิธีแก้ไขปัญหาที่เกิดเมื่อคอมพิวเตอร์ที่รัน Linux Ubuntu/Mint/Kali ไม่สามารถบูทได้ หรือหยุดที่พรอมต์ busybox ระหว่างการเริ่มต้น initramfs ผู้ใช้สามารถเข้าถึงและใช้ได้เฉพาะพรอมต์คำสั่ง initramfs เท่านั้น

Initramfs คือระบบไฟล์เริ่มต้นที่อิง tmpfs ใน RAM ไม่ได้ใช้บล็อกอุปกรณ์แยกต่างหาก คล้ายกับ initrd มันมีเครื่องมือและสคริปต์สำหรับ mount ระบบไฟล์ก่อนเรียก init ที่อยู่ในระบบไฟล์รูท

แก้ไขปัญหา Ubuntu/Mint/Kali บูทเข้าสู่ Initramfs Prompt ใน BusyBox

ซ่อมแซม Superblock Ext4 ที่เสียหายใน Linux

ถ้า Ubuntu ค้างที่ busybox ระหว่าง initramfs อาจเป็นเพราะ superblock บนดิสก์เสียหาย

Linux เก็บสำเนา superblock หลาย bản ในการกู้ระบบเมื่อเกิดปัญหานี้ ต้องบูทจากอิมจ์ช่วยเหลือ/ดิสก์/Live CD และรันเทอร์มินัล หลังบูทแล้ว ใส่คำสั่งต่อไปนี้ในเทอร์มินัล:

# sudo fdisk -l|grep Linux|grep -Ev 'swap'

คำสั่งจะคืนข้อมูลเกี่ยวกับโวล्यูมของคุณ:

/dev/vda2 4096 83884031 83879936 40G Linux filesystem

จดชื่อโวล्यูมและระบุในคำสั่งถัดไป:

# sudo dumpe2fs /dev/vda2 | grep superblock

คำสั่งจะแสดงรายการ superblock สำรอง:

แก้ไขปัญหา Ubuntu/Mint/Kali บูทเข้าสู่ Initramfs Prompt ใน BusyBox

เราจะใช้ superblock สำรองที่สองเพื่อแทนที่ superblock ที่เสียหาย (คุณสามารถใช้ superblock ใดๆ ได้ ยกเว้น Primary) ตรวจสอบดิสก์ด้วย superblock สำรอง:

# sudo fsck -b 98304 /dev/vda2 -y

หากได้ผลลัพธ์ดังนี้:

fsck from util-linux 2.31.1 e2fsck 1.44.1 (24-Mar-2018) /dev/vda2 is mounted. e2fsck: Cannot continue, aborting

ให้ unmount โวล्यูม:

# umount /dev/vda2

หลังจากแทนที่ superblock สำเร็จ จะได้ข้อความแบบนี้:

fsck from util-linux 2.31.1 e2fsck 1.44.1 (24-Mar-2018) /dev/vda2 was not cleanly unmounted, check forced. Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information Free blocks count wrong for group #231 (32254, counted=32253). Fix? yes Free blocks count wrong for group #352 (32254, counted=32248). Fix? yes Free blocks count wrong for group #358 (32254, counted=27774). Fix? yes .......... /dev/vda2: ***** FILE SYSTEM WAS MODIFIED ***** /dev/vda2: 85986/905464576 files (0.2% non-contiguous), 3904682/905464576 blocks

จากนั้น unmount สื่อบูทและรีสตาร์ทคอมพิวเตอร์ ทุกอย่างควรทำงานปกติ

ข้อผิดพลาด Fsck Boot: Unexpected Inconsistency

รูปแบบที่สองของปัญหา initramfs (BusyBox) รวมถึงข้อความต่อไปนี้ในหน้าต่างเทอร์มินัล:

/dev/sda1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY The root filesystem on /dev/sda1 requires a manual fsck.

แก้ไขปัญหา Ubuntu/Mint/Kali บูทเข้าสู่ Initramfs Prompt ใน BusyBox

หากไม่เห็น ให้ลองพิมพ์ (initramfs) exit ในเทอร์มินัล ข้อผิดพลาดอาจปรากฏหลังจากนั้น…

ข้อความจะแสดงโวล्यูมที่ต้องการรันการตรวจสอบดิสก์ด้วยตนเอง รันคำสั่งต่อไปนี้ในพรอมต์ initramfs:
# fsck /dev/sda1 -y
หลังตรวจสอบดิสก์เสร็จ ให้รีสตาร์ทคอมพิวเตอร์และตรวจสอบว่า Linux บูทได้ถูกต้อง

Alert! /dev/volume Does Not Exist

ปัญหา Fstab

คุณอาจเห็นข้อผิดพลาดต่อไปนี้เมื่อบูทโฮสต์ Linux:

ALERT! /dev/sda1 does not exist. Dropping to a shell.

แก้ไขปัญหา Ubuntu/Mint/Kali บูทเข้าสู่ Initramfs Prompt ใน BusyBox

คุณอาจเพิ่งติดตั้ง Linux หรือโฮสต์มีปัญหา fstab บ่อยครั้งเกิดเมื่อติดตั้งระบบจากดิสก์ USB ระบบอาจแสดงข้อผิดพลาดของโวล्यูมใดก็ได้ เหมือนกรณีแรก เราต้องบูทจากสื่อช่วยเหลือ/บูท Linux และทำบางอย่าง ตรวจสอบ UUID ของดิสก์ด้วยคำสั่ง:
# sudo blkid

ระบบจะคืนค่าประมาณนี้:

/dev/sda2: UUID="36cce3d5-cbdb-46f4-adbf-3f9aaa01d729" TYPE="ext4" PARTUUID="fea4dab1-4e12-4327-85c6-76ade18f64e1"

ที่นี่เราเห็นว่าระบบต้องบูทจาก sda2 แต่จริงๆ พยายามบูทจาก sda1

Mount โวล्यูมไปยังไดเรกทอรีใดๆ เช่น:

# sudo mount /dev/sda2 /mnt

เมื่อเห็น /dev/sda2 ในไดเรกทอรี /mnt ให้หาไฟล์ /etc/fstab ที่นั่นและแก้ไขบรรทัดที่มี /dev/sda1 ดังนี้:

UUID=36cce3d5-cbdb-46f4-adbf-3f9aaa01d729 / ext4 errors=remount-rw 0 1

บันทึกไฟล์ Unmount โวล्यูมจาก /mnt และรีบูท หากปัญหาเป็นชื่อโวล्यูมผิด เซิร์ฟเวอร์จะบูทได้

นอกจากนี้ยังแก้ไขได้โดยบูทในโหมดฉุกเฉิน Mount ไดเรกทอรีรูทเป็นอ่าน/เขียน:
# sudo mount -o remount,rw /
จากนั้นแก้ไข fstab และรีสตาร์ทเซิร์ฟเวอร์

ปัญหาฮาร์ดแวร์

บนบอร์ดบางรุ่น พอร์ต SATA อาจได้หมายเลขสุ่ม อาจก่อให้เกิดข้อผิดพลาดที่อธิบายในส่วนก่อนหน้า เพื่อแก้ไข ต้องแก้ไขโหลดบูต grub

บูทในโหมดฉุกเฉินหรือจาก Live CD และแก้ไขไฟล์ /boot/grub/grub.cfg

ในบรรทัดที่กำหนดโวล्यูมบูท เช่น:

Linux /boot/vmlinuz-4.15.0-70-generic root=/dev/sda1 rw quiet elevator=noop fsck.repair=yes

แทนที่พาธดิสก์ด้วย UUID:

Linux /boot/vmlinuz-4.15.0-70-generic root=UUID=36cce3d5-cbdb-46f4-adbf-3f9aaa01d729 ro quiet elevator=noop fsck.repair=yes

แก้ไขปัญหา Ubuntu/Mint/Kali บูทเข้าสู่ Initramfs Prompt ใน BusyBox