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

ซ่อมแซม 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 สำรอง:

เราจะใช้ 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.

หากไม่เห็น ให้ลองพิมพ์ (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.

คุณอาจเพิ่งติดตั้ง 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
