Fix Zorin OS Network Error
Zorin OS 18.1 Core: After a system upgrade, the network suddenly stopped working on the next boot. Here is my resolution process.
Symptoms
- After boot, the wired connection could not access the internet. Inspection showed that the driver loaded normally, but DHCP could not obtain an IP address.
- With a statically configured IP address, it still could not ping the gateway.
- Switching to a Type-C USB wired NIC allowed the system to access the internet normally.
- Using a PE environment, the onboard NIC could also ping the gateway normally.
Hardware details
- Motherboard: ASUS B150M-PLUS (2015)
- NIC: onboard Intel Corporation Ethernet Connection (2) I219-V
- GPU: NVIDIA GeForce GTX 1050 Ti
- Current kernel version:
uname -r => 6.14.0-37-generic
Diagnostic conclusion
- Because I had recently run
apt update && sudo apt upgrade, and based on the above troubleshooting, I could conclude that the hardware was fine and that this was a system issue. The onboard NIC model and driver are supported by the kernel and included by default, so it was a system issue. - Also, with Linux systems, you always run into hardware abnormalities after upgrades. The most common one is the NVIDIA graphics driver black screen issue I encountered.
- Moreover, I had previously held the kernel version with
apt-mark hold, but the system kernel was still forcibly upgraded.
Solution
Since the problem was caused by a kernel upgrade, let’s start dealing with it from the kernel. After searching and checking, I found that for my system and hardware, the most suitable kernel version is 6.8.0. The graphics driver was nvidia-driver-550, but in Ubuntu 24.04, 550 has become a transitional package; the official path is 580, and 580 also works, so I will use 580 for the graphics driver.
# Search kernel versions; the latest version at the current time is 6.8.0-146
apt-cache search linux-image-6.8.0 | grep generic
# Install the older kernel
export KERNEL_VERSION=6.8.0-146
sudo apt update
sudo apt install -y linux-image-${KERNEL_VERSION}-generic \
linux-headers-${KERNEL_VERSION}-generic \
linux-modules-extra-${KERNEL_VERSION}-generic
sudo apt purge -y "*nvidia"
sudo apt autoremove -y
# Install the graphics driver
sudo apt install -y nvidia-driver-580
# Hold the kernel and graphics driver versions
sudo apt-mark hold linux-image-${KERNEL_VERSION}-generic \
linux-headers-${KERNEL_VERSION}-generic \
nvidia-driver-580
# Modify GRUB to boot from the old kernel
sudo vi /etc/default/grub
# GRUB_DEFAULT=0
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
sudo update-grub
# sudo reboot
# Then after the motherboard splash screen, press Esc to enter Advanced options and select the old kernel to boot
# Check
uname -r
nvidia-smi
dpkg --get-selections | grep hold
# To avoid being upgraded again, make the system not check related packages at all
sudo tee /etc/apt/preferences.d/block-kernel-nvidia > /dev/null <<'EOF'
Package: linux-image-* linux-headers-* nvidia-*
Pin: release *
Pin-Priority: -1
EOF