sysmig: migration runner + initial 4 migrations (swap, daemon trims)

- up/down/status interface, history in /var/lib/sysmig/applied
- 001 swap 2GB + swappiness=10, 002-004 trim unneeded daemons (~56MB)
- google-osconfig-agent intentionally kept
- all messages/comments in ASCII English (console font safety)
This commit is contained in:
wan
2026-08-31 15:49:01 +09:00
commit f69cb99b3f
6 changed files with 224 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
#!/usr/bin/env bash
# 001-create-swap - Create 2GB swap + fstab entry + vm.swappiness=10
# up: enable swap (skipped if swap already active)
# down: disable swap and remove file/fstab/sysctl entries
set -euo pipefail
case "${1:-}" in
up)
if swapon --show --noheadings | grep -q .; then
echo " swap already active - skipping"
exit 0
fi
if [[ ! -f /swapfile ]]; then
fallocate -l 2G /swapfile || {
dd if=/dev/zero of=/swapfile bs=1M count=2048 status=none
}
chmod 600 /swapfile
mkswap /swapfile >/dev/null
fi
swapon /swapfile
grep -q '^/swapfile' /etc/fstab || echo '/swapfile none swap sw 0 0' >> /etc/fstab
if ! grep -rqs 'vm.swappiness' /etc/sysctl.d/ /etc/sysctl.conf; then
echo 'vm.swappiness=10' > /etc/sysctl.d/99-swap.conf
sysctl -p /etc/sysctl.d/99-swap.conf >/dev/null
fi
echo " swap 2GB enabled + fstab entry + vm.swappiness=10"
;;
down)
swapoff /swapfile
rm -f /swapfile
sed -i '\|^/swapfile|d' /etc/fstab
grep -q '^vm.swappiness=10$' /etc/sysctl.d/99-swap.conf 2>/dev/null \
&& rm -f /etc/sysctl.d/99-swap.conf || true
echo " swap removed"
;;
esac
@@ -0,0 +1,11 @@
#!/usr/bin/env bash
# 002-disable-networkd-dispatcher - Stop network event hook daemon (~27MB)
# Unnecessary on a simple server with static network config. Package kept.
set -euo pipefail
case "${1:-}" in
up) systemctl disable --now networkd-dispatcher.service
echo " networkd-dispatcher stopped and disabled" ;;
down) systemctl enable --now networkd-dispatcher.service
echo " networkd-dispatcher re-enabled" ;;
esac
+18
View File
@@ -0,0 +1,18 @@
#!/usr/bin/env bash
# 003-purge-exim4 - Remove default local mail server (~21MB)
# Unnecessary if local mail (e.g. cron output) is not used.
# Down reinstalls with Debian defaults (local delivery only).
set -euo pipefail
export DEBIAN_FRONTEND=noninteractive
case "${1:-}" in
up) systemctl disable --now exim4.service 2>/dev/null || true
apt-get purge -y exim4-daemon-light >/dev/null
apt-get autoremove --purge -y >/dev/null
echo " exim4 stopped + package purged + deps cleaned" ;;
down) apt-get update -qq
apt-get install -y exim4-daemon-light >/dev/null
systemctl enable --now exim4.service
echo " exim4 reinstalled + restarted (default config)" ;;
esac
+17
View File
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
# 004-purge-haveged - Remove entropy daemon (~8MB)
# Kernel 6.12 collects enough entropy on its own; haveged is redundant.
set -euo pipefail
export DEBIAN_FRONTEND=noninteractive
case "${1:-}" in
up) systemctl disable --now haveged.service 2>/dev/null || true
apt-get purge -y haveged >/dev/null
apt-get autoremove --purge -y >/dev/null
echo " haveged stopped + package purged" ;;
down) apt-get update -qq
apt-get install -y haveged >/dev/null
systemctl enable --now haveged.service
echo " haveged reinstalled + restarted" ;;
esac