Skip to content
Arch Boot Recovery

Arch Boot Recovery

เรียนรู้อะไร

Arch boot ไม่ขึ้น หน้าจอขึ้น “reboot into firmware interface” — boot entry หาย + kernel หาย กู้ได้ด้วย Arch USB + ลง kernel ใหม่ + สร้าง boot entry ใหม่

Context

เกิดขึ้น 25 ส.ค. 2569 บน archGI (B360M DS3H, NVMe, systemd-boot, btrfs) หลัง pacman update แล้ว boot entry และ kernel หายไปพร้อมกัน


ขั้นตอนกู้คืน

1. เตรียม Arch USB

# บนเครื่องอื่น (Pi หรือ Arch เครื่องอื่น)
wget https://geo.mirror.pkgbuild.com/iso/latest/archlinux-x86_64.iso
sudo dd if=archlinux-x86_64.iso of=/dev/sdX bs=4M status=progress
sync

2. Boot จาก USB → Mount filesystem

# mount root (btrfs subvol=@)
mount /dev/nvme0n1p2 /mnt -o subvol=@

# mount subvolume อื่น
mount /dev/nvme0n1p2 /mnt/home -o subvol=@home
mount /dev/nvme0n1p2 /mnt/var/log -o subvol=@log
mount /dev/nvme0n1p2 /mnt/var/cache/pacman/pkg -o subvol=@pkg
mount /dev/nvme0n1p2 /mnt/.snapshots -o subvol=@snapshots

# mount EFI
mount /dev/nvme0n1p1 /mnt/boot

3. chroot

arch-chroot /mnt

4. ตรวจ kernel

ls /boot/vmlinuz* /boot/initramfs*

ถ้าไม่มี → ลง kernel ใหม่:

# เช็ค internet
ping -c 2 archlinux.org

# ลง kernel
pacman -S linux linux-headers

5. ตั้ง systemd-boot

bootctl install

6. เช็ค boot entry

ls /boot/loader/entries/

ถ้าว่างเปล่า → สร้างใหม่:

# หา UUID
blkid /dev/nvme0n1p2
# จด UUID ที่ได้

# ถ้า mkinitcpio สร้าง unified kernel image
# จะได้ไฟล์ /boot/EFI/Linux/arch-linux.efi → ใช้ format นี้:
cat > /boot/loader/entries/arch.conf << 'EOF'
title   Arch Linux
efi     /EFI/Linux/arch-linux.efi
EOF

# ถ้าไม่มี unified image → ใช้ format นี้แทน:
cat > /boot/loader/entries/arch.conf << 'EOF'
title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=UUID=<UUID จากขั้นตอนก่อน> rootflags=subvol=@ rw
EOF

7. ตั้ง loader config

cat > /boot/loader/loader.conf << 'EOF'
default arch.conf
timeout 5
console-mode max
editor no
EOF

8. Exit + Reboot

exit
reboot
# ถอด USB ออกทันที

สัญญาณเตือน

"reboot into firmware interface"  → boot entry หาย
ใน BIOS ไม่เห็น Linux Boot Manager → bootloader หาย
/boot/vmlinuz* ไม่มี             → kernel หาย

ป้องกันครั้งหน้า

# สร้าง snapshot ก่อน update ทุกครั้ง
sudo snapper -c root create -d "before update $(date +%Y-%m-%d)"
sudo pacman -Syu

ถ้าพัง → rollback ด้วย snapper แทนการลง kernel ใหม่:

# boot จาก USB → mount → chroot → rollback
snapper -c root list
snapper -c root undochange XX..0

Links

  • [[Snapper Backup Setup]]
  • [[Arch btrfs Layout]]
  • [[systemd-boot Config]]