ในบทความนี้ เราจะแสดงวิธีแก้ปัญหาที่เกิดขึ้นเมื่อคอมพิวเตอร์ที่ใช้ Linux Ubuntu/Mint/Kali ไม่บู๊ตหรือหยุดทำงานที่ busybox พรอมต์ระหว่าง initramfs การเริ่มต้น. ผู้ใช้สามารถเข้าถึงและใช้พรอมต์คำสั่ง initramfs เท่านั้น
Initramfs เป็น tmpfsเริ่มต้น -ตามระบบไฟล์ใน RAM ที่ไม่ใช้อุปกรณ์บล็อกแยกต่างหาก ชอบ initrd มันมีเครื่องมือและสคริปต์เพื่อเมานต์ระบบไฟล์ก่อนที่จะเรียก init ที่อยู่ในระบบไฟล์รูท
การซ่อมแซม Ext4 Superblock ที่เสียหายใน LInux
หาก Ubuntu ขัดข้องใน busybox ระหว่างการเริ่มต้น initramfs อาจมี superblock ที่เสียหายบนดิสก์
สำเนา superblock ทุกชุดจะถูกเก็บไว้ใน Linux ในการกู้คืนระบบในกรณีที่เกิดปัญหานี้ คุณต้องบูตเครื่องจาก Rescue Image/disk/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 สำรอง:
เราจะใช้ 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
เลิกเมานท์โวลุ่ม:
# 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
จากนั้นยกเลิกการต่อเชื่อมสื่อสำหรับบูตและรีสตาร์ทคอมพิวเตอร์ของคุณ ทุกอย่างควรทำงานอย่างถูกต้อง
ข้อผิดพลาดในการบูต Fsck:ความไม่สอดคล้องกันที่ไม่คาดคิด
ตัวแปรที่สองของปัญหา initramfs (BusyBox) มีข้อความต่อไปนี้ในหน้าต่างเทอร์มินัล:
/dev/sda1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY The root filesystem on /dev/sda1 requires a manual fsck.
หากไม่เห็น ให้ลองป้อน
(initramfs) exit
ในหน้าต่างเทอร์มินัล ข้อผิดพลาดอาจปรากฏขึ้นหลังจากที่คุณทำ...
ข้อความจะแสดงโวลุ่มที่ต้องใช้การตรวจสอบดิสก์ด้วยตนเอง เรียกใช้คำสั่งต่อไปนี้ในพร้อมต์ initramfs:# fsck /dev/sda1 -y
หลังจากการตรวจสอบดิสก์สิ้นสุดลง ให้รีสตาร์ทคอมพิวเตอร์และตรวจสอบว่า Linux บู๊ตอย่างถูกต้อง
เตือน! /dev/volume ไม่มีอยู่
ฉบับ Fstab
คุณจะเห็นข้อผิดพลาดต่อไปนี้เมื่อทำการบูทโฮสต์ Linux:
ALERT! /dev/sda1 does not exist. Dropping to a shell.
คุณอาจเพิ่งติดตั้ง Linux หรือโฮสต์ของคุณมี fstab ปัญหา. ปัญหามักเกิดขึ้นเมื่อติดตั้งระบบจาก USB ขับ. ระบบอาจแสดงข้อผิดพลาดของโวลุ่มใดๆ เช่นเดียวกับในกรณีแรก เราต้องบูตจากสื่อ Rescue/boor Linux และดำเนินการบางอย่าง ตรวจสอบดิสก์ UUID โดยใช้คำสั่งนี้:# sudo blkid
ระบบจะส่งคืนสิ่งนี้:
/dev/sda2: UUID="36cce3d5-cbdb-46f4-adbf-3f9aaa01d729" TYPE="ext4" PARTUUID="fea4dab1-4e12-4327-85c6-76ade18f64e1"
ในที่นี้เราจะเห็นว่าระบบต้องบูตจาก sda2 แต่จริงๆ แล้วระบบพยายามบูตจาก sda1
เมานต์โวลุ่มไปยังไดเร็กทอรีใด ๆ เช่น:
# sudo mount /dev/sda2 /mnt
เมื่อคุณเห็น /dev/sda2 ในไดเร็กทอรี /mnt ให้ค้นหาไฟล์ /etc/fstab ที่นั่นและแก้ไขบรรทัดที่มี /dev/sda1 ดังนี้:
UUID=36cce3d5-cbdb-46f4-adbf-3f9aaa01d729 / ext4 errors=remount-rw 0 1
บันทึกไฟล์. เลิกเมานท์โวลุ่มจาก /mnt และรีบูต หากปัญหาเกี่ยวข้องกับชื่อวอลุ่มที่ไม่ถูกต้อง เซิร์ฟเวอร์จะบู๊ต
นอกจากนี้ คุณสามารถแก้ปัญหานี้ได้ด้วยการบูทในโหมดฉุกเฉิน เมานต์ไดเร็กทอรีรากใหม่เป็นอ่าน/เขียน:# sudo mount -o remount,rw /
จากนั้นเปลี่ยน fstab และรีสตาร์ทเซิร์ฟเวอร์
ปัญหาฮาร์ดแวร์
ในเมนบอร์ดบางรุ่น SATA พอร์ตอาจได้รับตัวเลขสุ่ม นอกจากนี้ยังอาจทำให้เกิดข้อผิดพลาดที่อธิบายไว้ในส่วนก่อนหน้า หากต้องการแก้ไข คุณต้องแก้ไข grub bootloader
บูตในโหมดฉุกเฉินหรือจาก 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