coiai Logo

This article is an English translation of the original Japanese post. Read the Japanese original →

Installing Ubuntu on the GMKtec EVO-X2: The Case of the Missing Wired LAN

September 5, 2026

Categories: 未分類

I've started building an on-premises AI server (local LLM + internal document RAG). The hardware is a GMKtec EVO-X2, a mini PC powered by the AMD Ryzen AI Max+ 395. Since you can dedicate a large chunk of its 128GB of unified memory to the GPU, I think it's the most interesting machine out there right now for running local LLMs.

This post is my day-one work log. Long story short, I hit two traps — "the install USB won't boot" and "the wired LAN isn't recognized" — so I'm writing them down for anyone building the same setup.

Linux or Windows for the OS?

This is the first fork in the road, but for server use, Ubuntu Server was the only real choice.

All day-to-day interaction happens through the browser (Open WebUI), so the server OS doesn't need a GUI. If you want an admin dashboard, install Cockpit and you get metrics, service restarts, and even a terminal right in your web browser. In my view, "headless server + web admin console" is the modern standard.

BIOS Settings — On the EVO-X2, VRAM Allocation Matters Most

Mash Del right after power-on to enter the BIOS (AMI). I changed three settings.

  1. UMA Frame Buffer Size → 96GB (Advanced → GFX Configuration). The EVO-X2 carves out main memory as a dedicated GPU region, and the default is only a few gigabytes. Unless you raise this, large models won't fit on the GPU. If you're eyeing something in the gpt-oss-120b class, 96GB is the number. That leaves 32GB for the OS, which is plenty for the server stack
  2. Auto Power On → Power On (directly under Advanced). This makes the machine boot automatically after a power outage — essential for headless operation
  3. Secure Boot → Disabled. Ubuntu supports it just fine, but I'd rather eliminate a potential source of trouble

Trap #1: The Install USB Won't Boot

I wrote the Ubuntu Server 24.04 ISO to a USB stick from my Mac using dd, hit the power button, and... nothing. Even selecting "UEFI OS" from the Boot Override menu just booted straight into Windows.

The troubleshooting process itself was the real lesson.

The likely cause: I pulled the stick before dd had fully finished writing. dd keeps flushing buffers even after the progress output stops, so you have to wait until the completion statistics appear. And since the partition table lives at the very start of the disk, a truncated write can look perfectly normal at first glance — which is exactly what makes this so insidious.

Lesson: use balenaEtcher to create install USBs. It automatically verifies the write after flashing, so "I thought it was written" simply can't happen by design. After re-flashing with Etcher, it booted on the first try.

Installation Choices

Trap #2: The Wired LAN Isn't Recognized

Installation complete, login successful. But ip a showed no IP on the wired LAN. Worse, on closer inspection, the wired interface didn't exist at all.

The kernel log settled it.

$ sudo dmesg | grep r8169
r8169 0000:xx:00.0: unknown chip XID 689, contact r8169 maintainers

The EVO-X2's 2.5GbE chip (Realtek RTL8125D) is so new that the driver in Ubuntu 24.04's stock 6.8 kernel had never heard of it. This was also why I couldn't get online during installation — no amount of reseating the cable was ever going to help.

Lesson: when "it won't connect," read dmesg before you blame the cable. More often than not, the kernel log spells out the answer for you.

The Fix: The HWE Kernel

Supporting a newer chip just means installing a newer kernel. Ubuntu has a mechanism called **HWE (Hardware Enablement)** that lets you officially run a more recent kernel while keeping the stability of an LTS release.

sudo apt update
sudo apt install -y linux-generic-hwe-24.04
sudo reboot

There's a chicken-and-egg problem, though: installing it requires a network connection. As a stopgap, I configured Wi-Fi with netplan.

# /etc/netplan/50-wifi.yaml
network:
  version: 2
  wifis:
    wlp99s0:
      dhcp4: true
      access-points:
        "SSID":
          password: "********"

YAML lives and dies by its indentation, and here I went through the full tour of typo hell: typing true as trye, getting the interface name wrong (on my machine it was wlp99s0 — you can check with ls /sys/class/net), and inserting a stray O in nano when I meant to press Ctrl+O to save. The error messages tell you the exact line and column, so if you read them calmly, you can always fix it.

After rebooting into the HWE kernel (7.0 series):

$ ip -br a
eno1     UP   192.168.0.47/24   ← 出現!
wlp99s0  UP   192.168.0.83/24

The wired LAN was recognized as eno1, and we were finally online. The metric values are 100 for wired and 600 for Wi-Fi, and lower wins — so even with both connected, traffic automatically flows over the wired link.


coiai Inc. provides on-premises AI deployment, internal document RAG systems, and AI training programs.

Installing Ubuntu on the GMKtec EVO-X2: The Case of the Missing Wired LAN | coiai Inc.