Upgrading a Cloud Server to the New Network Model

This post documents the full process of upgrading a Cloud server from the legacy network model to the modern one, including resolving boot issues, configuring IPv4/IPv6, and using rescue mode for recovery. The troubleshooting steps are formatted like SQL transaction logs and statistical event tracking.


🔍 Initial Problem

The user needed to upgrade their server’s network model documentation. To do this, manual configuration of network settings was required.

-- Step: Upgrade Preparation
BEGIN;
  REQUIRE server reboot in rescue mode;
  REQUIRE manual IPv4/IPv6 network configuration;
COMMIT;

⚙️ Rescue Mode and Mounting the Filesystem

After booting into rescue mode, the main disk had to be identified and mounted:

# lsblk output:
sda      190.7G
└─sda1   190.7G

# Commands used:
mkdir /mnt/root
mount /dev/sda1 /mnt/root

Filesystem contents confirmed the mount was successful:

/mnt/root contains:
bin, boot, etc, home, lib, media, proc, sys, usr, var ...

📡 Network Configuration

To configure the network, the /etc/network/interfaces file was updated:

# IPv4 and IPv6 Static Configuration
auto eth0
iface eth0 inet static
    address 78.46.150.XXX
    netmask 255.255.255.255
    gateway 172.31.1.1
    pointopoint 172.31.1.1

iface eth0 inet6 static
    address 2a01:4f8:c17:XXXX::1
    netmask 64
    gateway fe80::1

Interface renaming was handled by updating GRUB:

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

Missing update-grub support due to unmounted filesystems was resolved using chroot:

mount --bind /dev /mnt/root/dev
mount --bind /proc /mnt/root/proc
mount --bind /sys /mnt/root/sys
chroot /mnt/root
update-grub
exit

🚨 Errors and Their Resolutions

Error Cause Resolution
grub-probe: cannot find a device for / Missing /dev, /proc, /sys in chroot Used bind mounts before chrooting
udev rule file not found File did not exist in system Ignored, no impact on upgrade

📊 Summary of System Configuration Steps

-- System Configuration Transaction Log
BEGIN;
  MOUNT /dev/sda1 TO /mnt/root;
  CONFIGURE /etc/network/interfaces;
  SET IPv4 address TO '78.46.150.145';
  SET IPv6 address TO '2a01:4f8:c17:3280::1';
  REMOVE udev persistent rules;
  EDIT GRUB to enforce eth0 naming;
  CHROOT and run update-grub;
  REBOOT;
COMMIT;

✅ Final Checks After Reboot

# Test IPv4
ping -c 3 78.46.150.XXX

# Test IPv6
ping6 -c 3 google.com

# Interface status
ip a

If all tests pass, proceed to Console » Server » Networking tab » "Upgrade Network Model".


🧠 Tip: Keep a Rescue Script Handy

It’s helpful to create a small bash script for repeating these steps if something goes wrong. Automating the mount/chroot/update-grub steps can save time.

Comments