Penanganan VPS Gagal Boot Setelah Upgrade HDD pada Ubuntu

Penanganan VPS Gagal Boot Setelah Upgrade HDD pada Ubuntu

Pengantar

Artikel ini dibuat sebagai catatan internal untuk penanganan VPS Ubuntu yang mengalami gagal boot setelah proses upgrade atau resize HDD pada Virtualizor. Kasus yang ditemukan adalah VPS mengalami stuck pada tampilan “Booting from Hard Disk...” setelah upgrade disk dari 30GB menjadi 40GB. VPS tersebut menggunakan GPT partition dengan SeaBIOS (legacy BIOS), dan masalah terjadi karena GRUB gagal melakukan boot setelah proses resize disk.

Gejala

  • Tampilan console/VNC:
    SeaBIOS
    Booting from Hard Disk...

    Output:

  • Ping VPS:
    Destination host unreachable
     

Tahap Recovery

Untuk melakukan proses recovery atau maintenance VPS, kita dapat menggunakan ISO bootable seperti SystemRescue.

  1. Download ISO SystemRescue

    Gunakan file ISO berikut:

    Fungsi:

    • Digunakan untuk recovery filesystem
    • Memperbaiki boot loader
    • Melakukan mount disk secara manual
    • Troubleshooting kernel atau partition
  2. Mount ISO

    Masuk ke panel VPS kemudian buka menu:

    Settings → ISO

    Kemudian mount file ISO SystemRescue ke VPS.

    Keterangan:
    Mount ISO memungkinkan VPS boot menggunakan media rescue sementara tanpa masuk ke sistem utama.
  3. Atur Boot Order

    Set urutan boot sebagai berikut:

    CDROM2
    DISK1

    Penjelasan:

    • CDROM2
      Digunakan agar VPS boot terlebih dahulu dari ISO rescue.
    • DISK1
      Digunakan sebagai boot disk utama setelah recovery selesai.
    Keterangan:
    Jika boot order tidak diubah, VPS kemungkinan tetap boot ke disk utama dan tidak masuk ke mode rescue ISO.

Boot ke SystemRescue

Setelah ISO SystemRescue berhasil di-mount dan boot order diatur, langkah berikutnya adalah masuk ke console VPS untuk memulai proses boot rescue.

  1. Masuk ke VNC atau Console VPS

    Buka akses console melalui panel VPS menggunakan:

    VNC / Console

    Fungsi:

    • Digunakan untuk melihat proses boot VPS
    • Digunakan untuk interaksi langsung dengan sistem rescue
    • Memungkinkan troubleshooting saat VPS gagal boot normal
  2. Boot SystemRescue

    Saat menu boot SystemRescue muncul, pilih:

    Boot SystemRescue using default options

    Output :

    Kemudian tekan:

    Enter

    Fungsi:

    • Menjalankan SystemRescue dengan konfigurasi default
    • Memuat kernel rescue dan tools recovery
    • Masuk ke environment Linux live untuk proses troubleshooting
    Keterangan:
    Mode default SystemRescue sudah cukup untuk sebagian besar kebutuhan recovery seperti repair filesystem, reinstall GRUB, dan mount disk VPS.

Cek Disk dan Filesystem

Setelah berhasil masuk ke SystemRescue, langkah berikutnya adalah melakukan pengecekan disk dan filesystem VPS.

  1. Cek Block Device

    Gunakan perintah berikut:

    lsblk

    Fungsi:

    • Menampilkan seluruh disk dan partition
    • Memastikan disk VPS berhasil terbaca
    • Mengetahui nama device dan ukuran partition

    Contoh hasil:

    sda   40G
    └─sda1 40G

    Penjelasan:

    • sda merupakan disk utama VPS
    • sda1 merupakan partition utama yang digunakan sistem
    • 40G menunjukkan ukuran disk setelah resize
  2. Cek Filesystem

    Gunakan perintah berikut:

    fsck -fy /dev/sda1

    Fungsi:

    • Melakukan pengecekan dan repair filesystem
    • Memperbaiki filesystem corruption secara otomatis
    • Memastikan partition dapat di-mount dengan normal

    Penjelasan parameter:

    • -f = memaksa pengecekan filesystem
    • -y = otomatis menjawab yes saat repair

    Filesystem berhasil terbaca normal.

    Keterangan:
    Jika fsck selesai tanpa error besar, berarti filesystem masih dalam kondisi baik dan dapat digunakan kembali.

Mount Root Filesystem

Setelah filesystem berhasil diperiksa, langkah berikutnya adalah melakukan mount partition agar isi filesystem dapat diakses.

  1. Membuat Directory Mount Point

    Gunakan perintah berikut:

    mkdir -p /mnt/root

    Fungsi:

    • Membuat directory temporary untuk mount filesystem
    • Digunakan sebagai lokasi akses root filesystem VPS
    • Parameter -p akan otomatis membuat parent directory jika belum ada
  2. Mount Filesystem

    Gunakan perintah berikut:

    mount /dev/sda1 /mnt/root

    Fungsi:

    • Melakukan mount partition VPS ke directory temporary
    • Membuat isi filesystem dapat diakses dari environment rescue
    • Digunakan untuk proses recovery dan troubleshooting
    Keterangan:
    Jika proses mount berhasil tanpa error, berarti filesystem dapat dibaca dengan normal.
  3. Cek Isi Filesystem

    Gunakan perintah berikut:

    ls /mnt/root

    Fungsi:

    • Menampilkan isi root filesystem VPS
    • Memastikan filesystem berhasil di-mount
    • Memastikan data sistem masih tersedia

    Biasanya akan muncul directory seperti:

    bin   boot  dev   etc
    home  root  usr   var
    Keterangan:
    Jika directory sistem berhasil muncul, berarti root filesystem VPS masih utuh dan dapat diakses.

Verifikasi Boot dan GRUB

Setelah filesystem berhasil di-mount, langkah berikutnya adalah melakukan pengecekan kernel dan konfigurasi GRUB.

  1. Cek Isi Directory Boot

    Gunakan perintah berikut:

    ls /mnt/root/boot

    Fungsi:

    • Menampilkan file kernel Linux
    • Memastikan initramfs dan file boot tersedia
    • Digunakan untuk verifikasi sistem boot VPS

    Biasanya akan muncul file seperti:

    vmlinuz
    initramfs
    grub
    Keterangan:
    Jika file kernel tersedia, berarti sistem operasi masih memiliki file boot utama.
  2. Cek Konfigurasi GRUB

    Gunakan perintah berikut:

    ls /mnt/root/boot/grub*

    Fungsi:

    • Memastikan folder GRUB tersedia
    • Memastikan file konfigurasi boot loader masih ada
    • Digunakan untuk troubleshooting gagal boot

    Hasil pengecekan:

    Kernel tersedia
    grub.cfg tersedia
    Folder GRUB tersedia
    Keterangan:
    Jika kernel dan grub.cfg masih tersedia, maka kemungkinan besar boot failure bukan disebabkan hilangnya file kernel atau konfigurasi GRUB.

Bind Mount dan Chroot

Setelah filesystem berhasil di-mount, langkah berikutnya adalah melakukan bind mount system directory sebelum masuk ke environment chroot.

  1. Bind Mount Directory System

    Gunakan perintah berikut:

    mount --bind /dev /mnt/root/dev
    mount --bind /proc /mnt/root/proc
    mount --bind /sys /mnt/root/sys

    Fungsi:

    • /dev
      Digunakan agar device system tetap dapat diakses dari chroot environment.
    • /proc
      Digunakan agar informasi process dan kernel tetap tersedia.
    • /sys
      Digunakan agar informasi hardware dan kernel interface tetap dapat diakses.
    Keterangan:
    Bind mount diperlukan agar environment chroot dapat bekerja seperti sistem Linux normal.
  2. Masuk ke Chroot Environment

    Gunakan perintah berikut:

    chroot /mnt/root

    Fungsi:

    • Masuk ke root filesystem VPS yang sedang direcovery
    • Menjalankan shell langsung dari sistem VPS
    • Memungkinkan perbaikan GRUB, kernel, dan konfigurasi sistem

    Setelah berhasil masuk chroot, shell biasanya berubah menjadi:

    root@hostname:/#
    Keterangan:
    Chroot memungkinkan kita melakukan recovery seolah-olah sedang login langsung ke sistem VPS utama.

Reinstall GRUB

Saat melakukan reinstall GRUB pada sistem dengan partition GPT dan mode boot BIOS (SeaBIOS), terkadang muncul error terkait BIOS Boot Partition.

  1. Install Ulang GRUB

    Gunakan perintah berikut:

    grub-install /dev/sda

    Fungsi:

    • Menginstall ulang bootloader GRUB ke disk utama
    • Memperbaiki bootloader yang rusak atau hilang
    • Digunakan untuk recovery VPS gagal boot
  2. Error yang Muncul

    Saat menjalankan perintah di atas muncul error:

    GPT partition label contains no BIOS Boot Partition

    Analisa:

    • Sistem menggunakan partition table GPT
    • Mode boot VPS menggunakan SeaBIOS atau Legacy BIOS
    • GRUB membutuhkan BIOS Boot Partition kecil bertipe bios_grub
    • Partition tersebut belum tersedia pada disk

    Penjelasan:

    • Pada sistem GPT + UEFI, GRUB biasanya menggunakan EFI System Partition (ESP)
    • Pada sistem GPT + BIOS/SeaBIOS, GRUB membutuhkan BIOS Boot Partition khusus
    • BIOS Boot Partition biasanya berukuran kecil sekitar 1MB hingga 2MB
    • Partition ini digunakan GRUB untuk menyimpan core image bootloader
    Keterangan:
    Tanpa BIOS Boot Partition, GRUB tidak dapat diinstall dengan normal pada sistem GPT yang menggunakan mode boot BIOS.

Cek Free Space GPT

Setelah proses analisa GRUB selesai, langkah berikutnya adalah keluar dari chroot dan memeriksa layout partition disk.

  1. Keluar dari Chroot

    Gunakan perintah berikut:

    exit

    Fungsi:

    • Keluar dari environment chroot
    • Kembali ke shell SystemRescue
    • Digunakan sebelum melakukan modifikasi partition disk
    Keterangan:
    Perubahan partition sebaiknya dilakukan di luar chroot agar device disk dapat dikelola dengan normal.
  2. Cek Layout Disk

    Gunakan perintah berikut:

    parted /dev/sda print free

    Fungsi:

    • Menampilkan struktur partition disk
    • Menampilkan free space yang belum digunakan
    • Digunakan untuk analisa kebutuhan BIOS Boot Partition

    Hasil pengecekan ditemukan free space kecil di awal disk:

    17.4kB → 2097kB

    Analisa:

    • Tersedia ruang kosong sekitar 2MB di awal disk
    • Ukuran tersebut cukup untuk membuat BIOS Boot Partition
    • Free space berada sebelum partition utama
    • Dapat digunakan untuk kebutuhan GRUB pada GPT + BIOS mode
    Keterangan:
    BIOS Boot Partition umumnya hanya membutuhkan ruang kecil sekitar 1MB hingga 2MB sehingga free space ini dapat dimanfaatkan tanpa mengubah partition utama.

Membuat BIOS Boot Partition

Setelah ditemukan free space pada awal disk, langkah berikutnya adalah membuat BIOS Boot Partition untuk kebutuhan GRUB pada GPT + BIOS mode.

  1. Masuk ke Parted

    Gunakan perintah berikut:

    parted /dev/sda

    Fungsi:

    • Membuka utility partition management
    • Digunakan untuk membuat dan mengelola partition disk
    • Mendukung partition GPT dan MBR
  2. Membuat BIOS Boot Partition

    Gunakan perintah berikut:

    mkpart primary 1MiB 2MiB

    Fungsi:

    • Membuat partition kecil sekitar 1MB
    • Digunakan khusus untuk BIOS Boot Partition
    • Memanfaatkan free space di awal disk

    Penjelasan:

    • 1MiB = awal partition
    • 2MiB = akhir partition
    • Ukuran sekitar 1MB sudah cukup untuk GRUB core image
  3. Aktifkan Flag BIOS GRUB

    Gunakan perintah berikut:

    set 2 bios_grub on

    Fungsi:

    • Menandai partition sebagai BIOS Boot Partition
    • Digunakan oleh GRUB pada mode BIOS + GPT
    • Membuat GRUB dapat diinstall dengan normal
    Keterangan:
    Nomor partition dapat berbeda tergantung layout disk. Pada contoh ini BIOS Boot Partition berada pada partition nomor 2.
  4. Verifikasi Partition

    Gunakan perintah berikut:

    print

    Hasil:

    2  1049kB  2097kB  bios_grub

    Penjelasan:

    • Partition berhasil dibuat
    • Flag bios_grub berhasil aktif
    • GRUB sekarang memiliki area khusus untuk boot loader
  5. Keluar dari Parted

    Gunakan perintah berikut:

    quit

    Fungsi:

    • Keluar dari utility parted
    • Menyimpan perubahan partition table
    Keterangan:
    Setelah BIOS Boot Partition dibuat, proses install ulang GRUB dapat dilakukan kembali tanpa error GPT BIOS Boot Partition.

Reinstall GRUB

Setelah BIOS Boot Partition berhasil dibuat, langkah berikutnya adalah melakukan reinstall GRUB kembali.

  1. Bind Mount Ulang Directory System

    Gunakan perintah berikut:

    mount --bind /dev /mnt/root/dev
    mount --bind /proc /mnt/root/proc
    mount --bind /sys /mnt/root/sys

    Fungsi:

    • Menghubungkan kembali directory system ke environment chroot
    • Memastikan device dan informasi kernel dapat diakses
    • Dibutuhkan untuk proses install GRUB
  2. Masuk ke Chroot

    Gunakan perintah berikut:

    chroot /mnt/root

    Fungsi:

    • Masuk ke environment sistem VPS utama
    • Menjalankan recovery langsung dari root filesystem VPS
    • Digunakan untuk reinstall bootloader
  3. Install Ulang GRUB

    Gunakan perintah berikut:

    grub-install /dev/sda

    Fungsi:

    • Menginstall ulang bootloader GRUB ke disk utama
    • Memperbaiki boot loader yang sebelumnya gagal terinstall
    • Menggunakan BIOS Boot Partition yang baru dibuat

    Hasil:

    Installation finished. No error reported.

    Analisa:

    • GRUB berhasil terinstall dengan normal
    • BIOS Boot Partition berhasil digunakan
    • Error GPT BIOS Boot Partition sudah teratasi
    Keterangan:
    Pesan “No error reported” menandakan bootloader berhasil dipasang tanpa masalah.
  4. Generate Ulang Konfigurasi GRUB

    Gunakan perintah berikut:

    update-grub

    Fungsi:

    • Membuat ulang file konfigurasi GRUB
    • Mendeteksi kernel yang tersedia
    • Memastikan menu boot sesuai dengan sistem saat ini

    Biasanya akan muncul proses seperti:

    Found linux image
    Found initrd image
    done
    Keterangan:
    update-grub penting dilakukan agar GRUB dapat mendeteksi kernel dan filesystem secara benar saat boot VPS.

Finalisasi

Setelah proses reinstall GRUB selesai dan konfigurasi berhasil dibuat, langkah terakhir adalah keluar dari environment rescue dan reboot VPS.

  1. Keluar dari Chroot

    Gunakan perintah berikut:

    exit

    Fungsi:

    • Keluar dari environment chroot
    • Kembali ke shell SystemRescue
    • Mengakhiri proses recovery sistem
  2. Reboot VPS

    Gunakan perintah berikut:

    reboot

    Fungsi:

    • Melakukan restart VPS
    • Menguji apakah bootloader GRUB sudah berjalan normal
    • Memastikan sistem dapat boot kembali dari disk utama
    Keterangan:
    Pastikan proses reboot dilakukan setelah GRUB berhasil diinstall dan update-grub selesai tanpa error.
  3. Lepas ISO Rescue

    Setelah VPS mati atau reboot, lepaskan ISO SystemRescue dari panel VPS.

    Kemudian kembalikan boot order menjadi:

    DISK1

    Fungsi:

    • Memastikan VPS boot dari disk utama
    • Mencegah VPS kembali masuk ke mode rescue
    • Mengembalikan proses boot normal sistem operasi
    Keterangan:
    Jika ISO tidak dilepas atau boot order masih mengarah ke CDROM, VPS akan kembali masuk ke SystemRescue saat reboot.

Catatan Penting

Penyebab utama:

  • VPS menggunakan GPT partition table
  • Boot mode masih legacy BIOS (SeaBIOS)
  • Tidak tersedia BIOS Boot Partition setelah resize disk
  • GRUB gagal melakukan embedding bootloader ke disk GPT

Kesimpulan

Permasalahan VPS gagal boot setelah upgrade HDD pada Ubuntu disebabkan oleh ketidaksesuaian antara penggunaan GPT partition table dengan mode boot legacy BIOS (SeaBIOS) tanpa adanya BIOS Boot Partition (bios grub). Meskipun filesystem dan data VPS masih dalam kondisi normal, GRUB tidak dapat melakukan proses booting dengan benar setelah resize disk dilakukan. Recovery berhasil dilakukan menggunakan SystemRescue dengan metode pengecekan filesystem (fsck), pembuatan BIOS Boot Partition kecil pada disk GPT, dan reinstall GRUB hingga VPS dapat kembali boot normal tanpa kehilangan data.


Artikel Lain

WhatsApp Kami

Support : +6282138153600

Finance : +6285191239466