Files
wompmacho ae769ca484
All checks were successful
deploy-docs / build-and-deploy (push) Successful in 48s
update proxmox notes, remove pros / cons and personalize a bit
2026-04-11 22:30:35 +00:00

4.9 KiB

title, description, showHero, author, date, lastmod, tags
title description showHero author date lastmod tags
Proxmox Bare-metal Hypervisor Virtualization Platform false wompmacho 2026-04-11 2026-04-11
virtualization
self-hosted
linux
kvm
lxc

What is Proxmox?

Proxmox Virtual Environment (VE) is a powerful, open-source Bare-metal Hypervisor / virtualization management platform. It integrates two virtualization technologies—Kernel-based Virtual Machine (KVM) for virtual machines and Linux Containers (LXC) for lightweight container-based virtualization—into a single, easy-to-manage solution with a web-based interface.

[!NOTE] I actually set this up a while ago, just now getting around to document things. I have run a few itterations of proxmox, the current is my main compute note in my setup hosting most of my docker containers, game-servers, dns resolver / sink etc.


When choosing CPU...

Currently I am running Proxmox > Ubuntu VM > code-server for a nice CitC (client in the cloud) like interface I can use to access my projects / documentation and code from anywhere. Had some issues when I wanted to integrate gemini code assistant extension into my code-server instance.

Turns out: in version v2.56 they switched over to a more moderen cpu instruction set / in order to optimize for moderen ai-assisted workflows. Older default cpu architextures (like the one used by my ubuntu vm at the time) are missing some newer instruction sets that are required for the extension to run.

[!NOTE] I struggled with this for a few weeks until I finally looked a bit deeper / aided by gemini xD

This is generally only a problem when you are creating a vm for the first time, so when making a vm; consider its uses and if it would make sense to not use the default options like I did. Luckily; they are interchangable on proxmox vms and do not require any sort of reinstalation like you would on a normal OS.

Code Assist on a VM

The "The Gemini Code Assist server crashed 5 times" error can occur when using code-server or VS Code. This crash, identified by the SIGILL (Illegal Instruction) signal, is usually due to a hardware mismatch.

The Problem

This is caused by a modern Instructions set on "Generic" Hardware. Starting with version 2.56, the Gemini Code Assist server binary needs the AVX (Advanced Vector Extensions) instruction set. Proxmox often sets a VM's CPU type to kvm64. This hides these instructions for compatibility. When the extension tries to run an AVX command on a CPU that doesn't "have" it, the process crashes.

The Solution

  • Step 1: Diagnosing the CPU:

    A command can check for the required instruction flags. In the Ubuntu terminal, run:

    lscpu | grep -i 'avx\|aes\|pclmul'
    

    The Result: If the output shows aes, but avx and pclmul are missing, the virtual processor is too "basic".

  • Step 2: The Immediate Fix (Downgrade)

    To fix this, roll back to a version before these requirements were enforced:

    1. Go to the Extensions tab in VS Code.
    2. Click the gear icon for Gemini Code Assist and select "Install Another Version...".
    3. Choose v2.55.x or earlier.
    4. Important: Uncheck "Auto Update" to prevent it from breaking again.
  • Step 3: The Long-Term Fix (Proxmox CPU Passthrough)

    The best fix is to expose the physical CPU's features to the VM. No reinstallation is required. How to change to "Host" Processor in Proxmox:

    1. Shut down the Ubuntu VM.
    2. Log into your Proxmox Web UI.
    3. Select the VM > Hardware > Processors.
    4. Double-click Type and change it from Default (kvm64) to host.
    5. Restart the VM.

Why use "Host"?

Setting the type to host passes the physical CPU's features—including AVX—directly to your Ubuntu instance. This fixes the Gemini crash and can improve performance.

  • In host mode, the VM executes code directly on the physical hardware.
  • This results in lower CPU latency and better performance in high-demand applications like databases, compilation (GCC/Clang), and web servers.
  • Modern software often needs specific "shortcuts" in modern CPUs.
    • AVX/AVX2/AVX-512: These are important for math-heavy tasks and AI.
    • AES-NI: Speeds up encryption, which makes SSH, VPNs, and HTTPS faster.
    • PCLMULQDQ: Speeds up data integrity checks and modern security protocols.
  • The Linux scheduler can more intelligently place tasks on the right cores.
  • The VM can sometimes access hardware-level performance counters, which is vital if you are doing any low-level debugging or performance profiling.
  • If you want to run Docker with specialized isolation or even run a VM inside a VM (Nested Virtualization), host mode is usually the most stable way to pass through the necessary "VMX" (Intel) or "SVM" (AMD) flags.
  • Modern CPUs have hardware-level protections (like Execute Disable Bit or SMEP/SMAP) that protect against memory injection attacks. Generic CPU models often disable these to ensure the VM can boot on any old server; host mode enables them fully.