A VPS that refuses to boot is one of the more stressful situations you can encounter as a server administrator. The good news: with RamNode's VNC console access, you can observe exactly what is happening at boot time and diagnose the root cause without needing physical access to the hardware.
This guide walks through a systematic process for reading VNC output, identifying the most common boot failure scenarios, and recovering your server in each case. Work through the diagnostic section first before jumping to a specific recovery scenario — the console output will tell you which section applies.
Before You Begin: Access the VNC Console
All RamNode KVM VPS plans include VNC console access through the client portal. This gives you a view into the virtual screen output of your server, exactly as if you were sitting in front of a physical machine.
To open the VNC console:
- Log in to the RamNode Client Portal
- Navigate to Services and select your VPS
- Click VNC Console (or Launch Console depending on your panel view)
- A browser-based VNC session will open — wait a few seconds for the display to populate
Important: If your server is completely powered off, use the Boot button in the portal first, then open VNC immediately. VNC is a live view — if the server already booted and failed, use the portal's Reboot button to restart and watch the output from the beginning. Keyboard input in the VNC console is active — you can interact with rescue prompts, the GRUB menu, and recovery shells directly in the browser window.
Step 1: Read the VNC Output Systematically
When your VPS fails to boot, the VNC console is your primary diagnostic tool. Do not reboot repeatedly before reading what is on screen — the error message displayed at the point of failure tells you almost everything you need to know.
What you should see during a healthy boot
GRUB loading...
Welcome to GRUB!
[Linux kernel version line]
[ OK ] Started Journal Service.
[ OK ] Reached target Local File Systems.
[ OK ] Started OpenSSH server daemon.
...
Ubuntu 22.04.3 LTS hostname tty1
hostname login:Each stage either completes successfully or produces an error. Your goal is to identify exactly where the sequence stops.
Reading failure output
| What you see | Likely cause |
|---|---|
| Blank screen or cursor only, no GRUB menu | GRUB is missing or MBR/partition table is corrupted |
GRUB menu appears but selecting kernel produces error: file not found | Kernel files deleted or wrong partition referenced in GRUB config |
GRUB rescue prompt (grub rescue>) | GRUB cannot find its configuration or the boot partition |
| Kernel loads, then kernel panic | Corrupted initramfs or missing kernel module |
Kernel loads, then hangs on A start job is running... | Systemd unit hanging — often network or mount related |
ALERT! /dev/disk/by-uuid/... does not exist | Wrong UUID in fstab or partition cannot be found |
You are in emergency mode or Give root password for maintenance | fstab mount failure — system dropped to emergency shell |
error: out of disk space | Root or boot partition is full |
Take note of the exact error text before proceeding. Screenshot the VNC window if you need to reference it while working.
Step 2: Attempt a Soft Rescue Before Deeper Recovery
Before diving into manual recovery steps, try one quick option that resolves some issues automatically.
Check for an older kernel in the GRUB menu
If GRUB loads and shows a boot menu, look for Advanced options or a list of older kernel versions. A bad kernel update is a common cause of boot failures, and older kernels are often still installed alongside the new one.
- When the GRUB menu appears, do not let it auto-boot. Press any key to pause the countdown
- Select Advanced options for Ubuntu (or your distribution equivalent)
- Choose a kernel from before the failed update — typically the second or third entry in the list
- If the system boots successfully with the older kernel, the issue is a bad kernel update. See Scenario 2 below
If GRUB does not appear at all, or this does not work, continue to the scenario-specific recovery steps below.
Scenario 1: Corrupted or Incorrect /etc/fstab
Symptoms
- System drops to emergency mode:
You are in emergency mode. After logging in, type "journalctl -xb" to view system logs - Console shows:
ALERT! /dev/disk/by-uuid/... does not exist. Dropping to a shell - A mount-related failure appears in the boot sequence before the system goes interactive
- Boot hangs indefinitely on a
A start job is running for /etc/fstab...line
What happened
The /etc/fstab file tells the kernel which filesystems to mount and where. If an entry references a device or UUID that does not exist — or if you added a line with incorrect syntax — the boot process fails when it cannot satisfy that mount requirement. Common triggers include adding a network share, an additional block device, or a swap file entry that is no longer valid.
Recovery steps
If you are dropped to an emergency shell (you will see a # prompt), remount the filesystem as read-write:
mount -o remount,rw /nano /etc/fstabTo find the correct UUIDs for your actual block devices:
blkidThe safest fix for a problematic non-essential mount entry is to either comment it out or add the nofail option:
# Before (causes boot failure if device missing):
UUID=abc123 /mnt/data ext4 defaults 0 2
# After (boots normally even if device is absent):
UUID=abc123 /mnt/data ext4 defaults,nofail 0 2rebootIf you are NOT dropped to a shell automatically, use the RamNode portal to attach a rescue ISO or boot into single-user mode. See Using Rescue Mode below.
Scenario 2: Bad Kernel Update
Symptoms
- System was rebooted after running
apt upgrade,yum update, or similar, and now does not boot - Kernel loads but immediately produces a kernel panic
- System hangs shortly after the kernel version line prints, before systemd starts
- Older kernel entries in the GRUB menu boot successfully
What happened
A kernel update occasionally ships with a bug, an incompatible module, or a broken initramfs image. This is more common when using distribution-provided kernels on non-standard hardware configurations, or when a partial upgrade was interrupted.
Option A: Boot the previous kernel (no data risk)
- Reboot the VPS from the portal
- Watch the VNC console and press any key when the GRUB menu appears to pause it
- Select Advanced options and choose the previous kernel version
- If the system boots successfully, set the old kernel as default and remove the broken one:
# List installed kernels
dpkg --list | grep linux-image
# Set default kernel (Ubuntu/Debian - use exact kernel name from dpkg output)
sudo nano /etc/default/grub
# Change GRUB_DEFAULT=0 to the exact menuentry string, or use a saved entry:
# GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-91-generic"
sudo update-grub
# Optionally remove the broken kernel
sudo apt remove linux-image-6.x.x-xx-generic
sudo update-grubOption B: Rebuild the initramfs
Sometimes the kernel update succeeds but the initramfs image is corrupted or was not regenerated properly:
# Check which initramfs files exist
ls -lh /boot/initrd.img-*
# Regenerate for a specific kernel version
sudo update-initramfs -u -k 6.x.x-xx-generic
# Or regenerate all installed kernels
sudo update-initramfs -u -k all
sudo update-grub
rebootOption C: If GRUB menu is hidden or times out too fast
GRUB_TIMEOUT=10
GRUB_TIMEOUT_STYLE=menusudo update-grub
rebootScenario 3: Full Disk (No Space Left on Device)
Symptoms
- Boot log shows errors like
No space left on deviceorInput/output error - System enters emergency mode and the root filesystem is mounted read-only
- Journald or other early-boot services fail to start because they cannot write to disk
- Prior to the boot failure, you may have seen
df -hshowing/at 100% use
What happened
When a Linux filesystem reaches 100% capacity, the kernel cannot write temporary files, logs, or PID files that services require to start. Common causes include runaway log files, a filled /tmp directory, a large Docker image cache, or accumulated package files.
Recovery steps
mount -o remount,rw /
df -h
du -sh /* 2>/dev/null | sort -rh | head -20# Clear old package cache (Debian/Ubuntu)
apt-get clean
apt-get autoremove
# Clear journal logs older than 2 days
journalctl --vacuum-time=2d
# Find and remove large log files
find /var/log -name "*.log" -size +50M
find /var/log -name "*.gz" -delete
# Check for large files in /tmp
du -sh /tmp && rm -rf /tmp/*
# If Docker is installed - check image/container disk usage
docker system df
docker system prune -fIf the disk is critically full, even running commands can be difficult. Find the single largest file directly:
find / -xdev -type f -printf '%s %p\n' 2>/dev/null | sort -rn | head -5Preventing this in the future
- Set up disk usage monitoring through RamNode's provided metrics or a tool like Netdata or Prometheus node exporter
- Configure logrotate to cap log sizes:
/etc/logrotate.conf - Add a cron job to alert when disk usage exceeds 80%:
# Add to root's crontab (crontab -e)
0 * * * * df / | awk 'NR==2 {if ($5+0 > 80) print "Disk at "$5}' | mail -s "Disk Warning" you@example.comIf you cannot reach a shell at all, use rescue mode to mount the volume externally and clear space. See Using Rescue Mode below.
Scenario 4: Broken GRUB
Symptoms
- VNC shows a blank screen with a
grub>orgrub rescue>prompt and nothing else - Error message:
error: no such partitionorerror: unknown filesystem - Error message:
minimal BASH-like line editing is supported(GRUB emergency shell) - GRUB splash screen appears but all menu entries fail with file not found errors
What happened
GRUB is the bootloader responsible for loading the Linux kernel. It can fail when the MBR or EFI boot entry was overwritten, the GRUB configuration file was deleted or corrupted, the boot partition UUID changed, or a partial GRUB update left inconsistent files.
Recovery: From the GRUB rescue prompt
If you see grub rescue>, GRUB loaded minimally but cannot find its configuration. Identify the correct partition:
grub rescue> ls
(hd0) (hd0,msdos1) (hd0,msdos2)
grub rescue> ls (hd0,msdos1)/
# Try each partition until you see /boot/grub/ listedgrub rescue> set root=(hd0,msdos1)
grub rescue> set prefix=(hd0,msdos1)/boot/grub
grub rescue> insmod normal
grub rescue> normalAfter booting, reinstall GRUB properly
# Determine your root disk (not partition - usually /dev/vda)
lsblk
# Reinstall GRUB to the disk (Debian/Ubuntu, MBR/BIOS systems)
sudo grub-install /dev/vda
sudo update-grub
# For UEFI systems
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
sudo update-grubRecovery: Reinstall GRUB from rescue mode
If the GRUB rescue prompt approach does not work, boot into rescue mode (see below), then chroot:
# Mount necessary filesystems for chroot
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
# If UEFI, also mount the EFI partition
mount /dev/vda1 /mnt/boot/efi # adjust partition as needed
# Enter chroot
chroot /mnt
# Reinstall GRUB
grub-install /dev/vda
update-grub
# Exit and reboot
exit
rebootUsing Rescue Mode
When your system cannot boot far enough to give you a recovery shell, you need to access the disk from outside the broken OS. RamNode provides two paths for this.
Option A: Boot from a RamNode rescue image
- Log in to the RamNode Client Portal
- Select your VPS and look for Rescue Mode, Boot ISO, or Reinstall options
- Select a rescue or live Linux image (Debian or Ubuntu rescue images are recommended)
- Boot the server and connect via VNC — you will be in a minimal live environment
- Mount your root partition to access your files:
# Find your root partition
lsblk
fdisk -l
# Mount the root volume
mkdir -p /mnt/root
mount /dev/vda1 /mnt/root # adjust partition name as shown by lsblk
# If you have a separate /boot partition, mount it too
mount /dev/vda2 /mnt/root/bootMake your repairs (edit fstab, clear disk space, reinstall GRUB via chroot), then unmount and reboot:
umount /mnt/root
rebootOption B: Single-user / recovery mode via GRUB
If GRUB loads and you can access the boot menu:
- Highlight your default kernel entry and press
eto edit it - Find the line starting with
linuxand locatero quiet splashnear the end - Replace
ro quiet splashwithrw init=/bin/bashor addsingleat the end of the linux line - Press
Ctrl+XorF10to boot with these parameters - You will be dropped to a root shell with the filesystem mounted read-write
This gives you an immediate recovery shell without any network image required.
Quick Reference: VNC Output to Recovery Path
| VNC Output | Go To |
|---|---|
emergency mode / Give root password for maintenance | Scenario 1: Corrupted fstab |
ALERT! UUID=... does not exist | Scenario 1: Corrupted fstab |
System booted fine before an apt/yum upgrade | Scenario 2: Bad Kernel Update |
| Kernel panic immediately after kernel version line | Scenario 2: Bad Kernel Update |
No space left on device in boot log | Scenario 3: Full Disk |
| Services failing to start, filesystem read-only | Scenario 3: Full Disk |
grub> or grub rescue> prompt | Scenario 4: Broken GRUB |
| Blank screen, no GRUB menu | Scenario 4: Broken GRUB / contact support |
When to Contact RamNode Support
Most boot failures are recoverable using the steps above. However, contact RamNode Support if:
- The VNC console shows nothing at all and the server does not respond to power cycles from the portal
- You see hardware-level errors such as
I/O error on device vda— this may indicate an issue with the underlying storage that requires intervention on our end - The rescue image fails to load or VNC is unresponsive after multiple attempts
- You are not comfortable performing chroot operations and want assistance recovering the system
When submitting a ticket, include:
- Your VPS hostname or IP address
- A screenshot of the VNC output at the point of failure
- The approximate time the issue started
- Any recent changes you made before the failure (updates, disk operations, config edits)
