diff --git a/init/README.md b/init/README.md new file mode 100644 index 0000000..c907ab0 --- /dev/null +++ b/init/README.md @@ -0,0 +1,13 @@ +# 初始化脚本 + +## Linux + +```bash +curl -sSL https://git.sugarscat.cn/me/script/-/raw/main/init/linux.sh | bash +``` + +进行的操作有: + +1. 更换软件源为 `清华大学源`; +2. 更换DNS为 `114.114.114.114`,`223.5.5.5`; +3. 设置时区 `Asia/Shanghai` 和时间同步 diff --git a/init/linux.sh b/init/linux.sh new file mode 100644 index 0000000..69c87ce --- /dev/null +++ b/init/linux.sh @@ -0,0 +1,117 @@ +#!/bin/bash + +set -euo pipefail + +echo "=== 通用 Linux 初始化脚本 ===" + +# 确保为 root +if [ "$EUID" -ne 0 ]; then + echo "请以 root 用户运行此脚本。" >&2 + exit 1 +fi + +# 检测系统信息 +get_os_info() { + if [ -f /etc/os-release ]; then + . /etc/os-release + DISTRO_ID=$ID + DISTRO_NAME=$NAME + DISTRO_VERSION=$VERSION_ID + else + echo "无法识别系统类型。" >&2 + exit 1 + fi +} + +# 设置 DNS +set_dns() { + echo "设置 DNS..." + rm -f /etc/resolv.conf + cat > /etc/resolv.conf </dev/null; then + chattr +i /etc/resolv.conf || echo "警告: 无法锁定 resolv.conf" + fi +} + +# 设置时区和时间同步 +set_timezone_and_time() { + echo "设置时区为 Asia/Shanghai..." + timedatectl set-timezone Asia/Shanghai 2>/dev/null || ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime + + echo "安装 ntpdate..." + $INSTALL_CMD ntpdate -y + echo "正在同步时间..." + ntpdate ntp.aliyun.com || echo "时间同步失败,请检查网络连接" +} + +# 设置清华源 +set_mirrors() { + echo "更换软件源为清华镜像..." + + case "$DISTRO_ID" in + debian|ubuntu|raspbian) + CODENAME=$(lsb_release -cs 2>/dev/null || echo "stable") + cat > /etc/apt/sources.list </dev/null; then + INSTALL_CMD="apt install -y" + apt update -y +elif command -v dnf &>/dev/null; then + INSTALL_CMD="dnf install -y" + dnf makecache +elif command -v yum &>/dev/null; then + INSTALL_CMD="yum install -y" + yum makecache +else + echo "不支持的包管理器。" >&2 + exit 1 +fi + +# 安装通用工具 +$INSTALL_CMD curl wget lsb-release || true + +# 执行配置步骤 +set_mirrors +set_dns +set_timezone_and_time + +echo "=== 初始化完成!系统已优化 ==="