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
sync2. 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/boot3. chroot
arch-chroot /mnt4. ตรวจ kernel
ls /boot/vmlinuz* /boot/initramfs*ถ้าไม่มี → ลง kernel ใหม่:
# เช็ค internet
ping -c 2 archlinux.org
# ลง kernel
pacman -S linux linux-headers5. ตั้ง systemd-boot
bootctl install6. เช็ค 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
EOF7. ตั้ง loader config
cat > /boot/loader/loader.conf << 'EOF'
default arch.conf
timeout 5
console-mode max
editor no
EOF8. 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..0Links
- [[Snapper Backup Setup]]
- [[Arch btrfs Layout]]
- [[systemd-boot Config]]