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