From d17e375da420c0fc23927d63c9060b0bb4789c84 Mon Sep 17 00:00:00 2001 From: crowetic Date: Wed, 16 Apr 2025 21:21:25 +0000 Subject: [PATCH] added changes - detect if underlying hardware is broadcom and apply different fixes if so. --- vm-tool-setup.sh | 61 ++++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/vm-tool-setup.sh b/vm-tool-setup.sh index 0b3ef82..125b52a 100755 --- a/vm-tool-setup.sh +++ b/vm-tool-setup.sh @@ -5,7 +5,7 @@ set -euo pipefail echo "=== [1/5] Updating system and installing tools ===" sudo apt update sudo apt -y upgrade -sudo apt install -y qemu-guest-agent util-linux haveged ethtool +sudo apt install -y qemu-guest-agent util-linux haveged ethtool lshw dmidecode echo "=== [2/5] Enabling qemu-guest-agent ===" sudo systemctl enable --now qemu-guest-agent @@ -13,7 +13,7 @@ sudo systemctl enable --now qemu-guest-agent echo "=== [3/5] Trimming filesystems ===" sudo fstrim -av || true -echo "=== [4/5] Detecting VM network interfaces ===" +echo "=== [4/5] Detecting VM NICs ===" NIC_LIST=() for nic in /sys/class/net/*; do nicname=$(basename "$nic") @@ -29,33 +29,44 @@ fi echo "VM NICs detected: ${NIC_LIST[*]}" -echo "=== [5/5] Creating persistent systemd service to disable offloads ===" -SERVICE_FILE="/etc/systemd/system/disable-vm-nic-offloads.service" +echo "=== [5/5] Creating systemd service with conditional logic ===" +SERVICE_FILE="/etc/systemd/system/conditional-nic-offload.service" -{ - echo "[Unit]" - echo "Description=Disable all VM NIC offloads at boot" - echo "After=network.target" - echo "" - echo "[Service]" - echo "Type=oneshot" - for nic in "${NIC_LIST[@]}"; do - echo "ExecStart=/usr/sbin/ethtool -K $nic tx off rx off tso off gso off gro off" - echo "ExecStart=/sbin/ip link set $nic txqueuelen 10000" - done - echo "RemainAfterExit=yes" - echo "" - echo "[Install]" - echo "WantedBy=multi-user.target" -} | sudo tee "$SERVICE_FILE" > /dev/null +sudo tee "$SERVICE_FILE" > /dev/null <