#!/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" MOTD_HEADER="/etc/update-motd.d/10-armbian-header" MOTD_TPL_REPO="motd/10-armbian-header.tpl" MOTD_SHARE_DIR="/usr/local/share/bbox/motd" 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)" # Версия/URL — единый источник (должны совпадать с init_system.sh) BBOX_VERSION="${BBOX_VERSION:-1.2}" BBOX_URL="${BBOX_URL:-bbox.wtf}" install_script() { local src="$1" dst="$2" if [ ! -f "$src" ]; then warn "Не найден: $src" return 1 fi install -m 0755 "$src" "$dst" log "Установлен: $dst" } # --------------------------------------------------------------------------- # Баннер BBox: установка из шаблона репозитория (motd/10-armbian-header.tpl) # --------------------------------------------------------------------------- install_motd_template() { local tpl_src="" for candidate in \ "$SCRIPT_SRC_DIR/$MOTD_TPL_REPO" \ "$SCRIPT_SRC_DIR/../$MOTD_TPL_REPO" \ "$SCRIPT_SRC_DIR/motd/10-armbian-header.tpl" do if [ -f "$candidate" ]; then tpl_src="$candidate" break fi done if [ -z "$tpl_src" ]; then warn "Шаблон баннера не найден ($MOTD_TPL_REPO), баннер не изменён." return 1 fi # Бэкап дефолтного баннера Armbian (один раз) if [ -f "$MOTD_HEADER" ] && [ ! -f "${MOTD_HEADER}.bak" ]; then cp -f "$MOTD_HEADER" "${MOTD_HEADER}.bak" log "Бэкап дефолтного баннера: ${MOTD_HEADER}.bak" fi # Подстановка версии/URL и установка sed -e "s|__BBOX_VERSION__|${BBOX_VERSION}|g" \ -e "s|__BBOX_URL__|${BBOX_URL}|g" "$tpl_src" > "$MOTD_HEADER" chmod 755 "$MOTD_HEADER" log "Баннер BBox v${BBOX_VERSION} установлен из шаблона ($tpl_src)" # Копия шаблона для последующих запусков init-system из /usr/local/bin mkdir -p "$MOTD_SHARE_DIR" install -m 0644 "$tpl_src" "$MOTD_SHARE_DIR/$(basename "$tpl_src")" log "Шаблон баннера сохранён: $MOTD_SHARE_DIR/$(basename "$tpl_src")" } install_firstboot_service() { local unit="$SERVICE_DIR/bbox-firstboot.service" cat > "$unit" <