Добавить скрипты первичной инициализации, очистки и автозапуска (BBox)
This commit is contained in:
89
install_scripts.sh
Executable file
89
install_scripts.sh
Executable 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 "$@"
|
||||
Reference in New Issue
Block a user