Modified the vm setup script so that it doesn't concern itself with the nic config, that should only be needed in very rare cases, and should more likely be needed on underlying hypervisor only. Keeping code for historical purposes commented out.

This commit is contained in:
crowetic 2025-04-28 11:30:01 -07:00
parent e6219792f0
commit 9784fc24d1

View File

@ -2,7 +2,8 @@
set -euo pipefail set -euo pipefail
echo "=== [1/5] Installing essentials ===" echo "=== [1/5] Installing essentials and disabling pro notifications==="
sudo pro config set apt_news=false
sudo apt update sudo apt update
sudo apt -y upgrade sudo apt -y upgrade
sudo apt install -y qemu-guest-agent util-linux haveged ethtool lshw dmidecode sudo apt install -y qemu-guest-agent util-linux haveged ethtool lshw dmidecode
@ -13,51 +14,51 @@ sudo systemctl enable --now qemu-guest-agent
echo "=== [3/5] Trimming filesystems ===" echo "=== [3/5] Trimming filesystems ==="
sudo fstrim -av || true sudo fstrim -av || true
echo "=== [4/5] Creating conditional NIC tuning script ===" # echo "=== [4/5] Creating conditional NIC tuning script ==="
TUNER_SCRIPT="/usr/local/sbin/conditional-nic-tuning.sh" # TUNER_SCRIPT="/usr/local/sbin/conditional-nic-tuning.sh"
sudo tee "$TUNER_SCRIPT" > /dev/null <<'EOSCRIPT' # sudo tee "$TUNER_SCRIPT" > /dev/null <<'EOSCRIPT'
#!/bin/bash # #!/bin/bash
set -euo pipefail # set -euo pipefail
HYPERVISOR=$(systemd-detect-virt) # HYPERVISOR=$(systemd-detect-virt)
BROADCOM_FOUND=$(lspci | grep -i "broadcom" || true) # BROADCOM_FOUND=$(lspci | grep -i "broadcom" || true)
if [[ "$HYPERVISOR" == "kvm" && -n "$BROADCOM_FOUND" ]]; then # if [[ "$HYPERVISOR" == "kvm" && -n "$BROADCOM_FOUND" ]]; then
echo "✅ Broadcom NIC on KVM detected — applying NIC tuning" # echo "✅ Broadcom NIC on KVM detected — applying NIC tuning"
for nic in /sys/class/net/*; do # for nic in /sys/class/net/*; do
name=$(basename "$nic") # name=$(basename "$nic")
[[ "$name" =~ ^(lo|vmbr|tap|veth|docker) ]] && continue # [[ "$name" =~ ^(lo|vmbr|tap|veth|docker) ]] && continue
echo "→ Tuning $name" # echo "→ Tuning $name"
/usr/sbin/ethtool -K "$name" tx off rx off tso off gso off gro off || true # /usr/sbin/ethtool -K "$name" tx off rx off tso off gso off gro off || true
/sbin/ip link set "$name" txqueuelen 10000 || true # /sbin/ip link set "$name" txqueuelen 10000 || true
done # done
else # else
echo "❌ Skipping NIC tuning — not KVM with Broadcom NIC" # echo "❌ Skipping NIC tuning — not KVM with Broadcom NIC"
fi # fi
EOSCRIPT # EOSCRIPT
sudo chmod +x "$TUNER_SCRIPT" # sudo chmod +x "$TUNER_SCRIPT"
echo "=== [5/5] Creating systemd service file ===" # echo "=== [5/5] Creating systemd service file ==="
SERVICE_FILE="/etc/systemd/system/conditional-nic-offload.service" # SERVICE_FILE="/etc/systemd/system/conditional-nic-offload.service"
sudo tee "$SERVICE_FILE" > /dev/null <<EOF # sudo tee "$SERVICE_FILE" > /dev/null <<EOF
[Unit] # [Unit]
Description=Disable NIC offloads only if KVM + Broadcom detected # Description=Disable NIC offloads only if KVM + Broadcom detected
After=network-online.target # After=network-online.target
Wants=network-online.target # Wants=network-online.target
[Service] # [Service]
Type=oneshot # Type=oneshot
ExecStart=$TUNER_SCRIPT # ExecStart=$TUNER_SCRIPT
RemainAfterExit=yes # RemainAfterExit=yes
[Install] # [Install]
WantedBy=multi-user.target # WantedBy=multi-user.target
EOF # EOF
echo "=== Reloading systemd and enabling service ===" echo "=== Reloading systemd and enabling service ==="
sudo systemctl daemon-reexec sudo systemctl daemon-reexec