Добавить скрипты первичной инициализации, очистки и автозапуска (BBox)

This commit is contained in:
NW
2026-08-07 14:58:14 +01:00
parent 79f6c425e5
commit 5606fb0563
5 changed files with 553 additions and 0 deletions

89
install_scripts.sh Executable file
View File

@@ -0,0 +1,89 @@
#!/bin/bash
# ============================================================================
# install_scripts.sh — установка первичных скриптов в систему
# ----------------------------------------------------------------------------
# Копирует скрипты этого репозитория в /usr/local/bin и настраивает
# автозапуск:
# * /usr/local/bin/init-system -> первичная инициализация (ручной запуск)
# * /usr/local/bin/cleanup-system -> очистка системы (ручной запуск)
# * /etc/systemd/system/bbox-firstboot.service -> автозапуск при первой загрузке
# * /root/firstboot.log -> журнал автозапуска
# ============================================================================
set -euo pipefail
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
BIN_DIR="/usr/local/bin"
SERVICE_DIR="/etc/systemd/system"
MARKER="/var/lib/bbox-firstboot-done"
log() { echo -e "${GREEN}[install-scripts]${NC} $*"; }
warn() { echo -e "${YELLOW}[install-scripts][warn]${NC} $*"; }
fail() { echo -e "${RED}[install-scripts][error]${NC} $*"; exit 1; }
SCRIPT_SRC_DIR="$(cd "$(dirname "$(readlink -f "$0")")" && pwd)"
install_script() {
local src="$1" dst="$2"
if [ ! -f "$src" ]; then
warn "Не найден: $src"
return 1
fi
install -m 0755 "$src" "$dst"
log "Установлен: $dst"
}
install_firstboot_service() {
local unit="$SERVICE_DIR/bbox-firstboot.service"
cat > "$unit" <<EOF
[Unit]
Description=BBox first boot initialization (bbox.wtf)
After=network-online.target docker.service
Wants=network-online.target
ConditionPathExists=!/var/lib/bbox-firstboot-done
[Service]
Type=oneshot
ExecStart=/usr/local/bin/init-system --firstboot
RemainAfterExit=no
StandardOutput=journal+console
StandardError=journal+console
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable bbox-firstboot.service
log "Сервис автозапуска включён: $unit"
}
main() {
if [ "$(id -u)" -ne 0 ]; then
fail "Запустите скрипт от root: sudo ./install_scripts.sh"
fi
log "Установка скриптов из: $SCRIPT_SRC_DIR"
install_script "$SCRIPT_SRC_DIR/init_system.sh" "$BIN_DIR/init-system" || true
install_script "$SCRIPT_SRC_DIR/cleanup_system.sh" "$BIN_DIR/cleanup-system" || true
install_script "$SCRIPT_SRC_DIR/install_scripts.sh" "$BIN_DIR/install-bbox-scripts" || true
# tmux-конфиг
if [ -f "$SCRIPT_SRC_DIR/tmux/.tmux.conf" ]; then
install -m 0644 "$SCRIPT_SRC_DIR/tmux/.tmux.conf" /root/.tmux.conf
log "tmux-конфиг установлен в /root/.tmux.conf"
fi
install_firstboot_service
log "Готово. Запуск вручную:"
log " init-system — первичная инициализация"
log " cleanup-system — очистка системы"
log " systemctl start bbox-firstboot.service — запустить автозапуск сейчас"
}
main "$@"