243 lines
5.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 设置错误时立即退出
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查Windows版本
check_windows_version() {
log_info "检查Windows版本..."
# 获取Windows版本
windows_version=$(wsl --version 2>/dev/null || echo "WSL未安装")
if [[ $windows_version == "WSL未安装" ]]; then
log_error "未检测到WSL请先安装WSL"
return 1
fi
# 检查Windows版本号
if [[ $(uname -r) =~ Microsoft ]]; then
log_info "当前运行在WSL环境中"
else
log_error "当前不在WSL环境中"
return 1
fi
log_info "Windows版本信息"
echo "$windows_version"
}
# 检查WSL版本
check_wsl_version() {
log_info "检查WSL版本..."
# 获取WSL版本
wsl_version=$(wsl -l -v)
# 检查是否使用WSL2
if echo "$wsl_version" | grep -q "VERSION.*2"; then
log_info "WSL2已安装并启用"
else
log_error "未检测到WSL2请升级到WSL2"
return 1
fi
log_info "WSL版本信息"
echo "$wsl_version"
}
# 检查系统要求
check_system_requirements() {
log_info "检查系统要求..."
# 检查内存
total_mem=$(free -h | grep Mem | awk '{print $2}')
log_info "系统内存:$total_mem"
# 检查磁盘空间
disk_space=$(df -h / | tail -1 | awk '{print $4}')
log_info "可用磁盘空间:$disk_space"
# 检查CPU
cpu_info=$(lscpu | grep "Model name" | cut -f 2 -d ":" | sed 's/^[ \t]*//')
log_info "CPU信息$cpu_info"
# 检查虚拟化支持
if grep -q "vmx\|svm" /proc/cpuinfo; then
log_info "CPU支持虚拟化"
else
log_warn "CPU可能不支持虚拟化"
fi
}
# 检查Debian版本
check_debian_version() {
log_info "检查Debian版本..."
# 获取Debian版本信息
debian_version=$(cat /etc/os-release | grep VERSION_CODENAME | cut -d= -f2)
debian_id=$(cat /etc/os-release | grep ^ID= | cut -d= -f2)
if [[ $debian_id == "debian" ]]; then
log_info "当前系统Debian $debian_version"
else
log_error "当前系统不是Debian"
return 1
fi
}
# 检查系统更新
check_system_updates() {
log_info "检查系统更新..."
# 更新包列表
sudo apt-get update
# 检查可更新的包
updates=$(apt list --upgradable 2>/dev/null | grep -v "Listing...")
if [[ -n $updates ]]; then
log_warn "发现可更新的包:"
echo "$updates"
else
log_info "系统已是最新"
fi
}
# 检查必要的系统组件
check_system_components() {
log_info "检查系统组件..."
# 检查必要的包
required_packages=(
"curl"
"wget"
"git"
"vim"
"build-essential"
"zsh"
"python3"
"python3-pip"
"nodejs"
"npm"
"docker.io"
"docker-compose"
)
missing_packages=()
for package in "${required_packages[@]}"; do
if ! dpkg -l | grep -q "^ii $package "; then
missing_packages+=("$package")
fi
done
if [[ ${#missing_packages[@]} -gt 0 ]]; then
log_warn "以下包未安装:"
printf '%s\n' "${missing_packages[@]}"
else
log_info "所有必要的包已安装"
fi
}
# 检查网络连接
check_network() {
log_info "检查网络连接..."
# 检查网络连接
if ping -c 1 8.8.8.8 &> /dev/null; then
log_info "网络连接正常"
else
log_error "网络连接异常"
return 1
fi
# 检查DNS解析
if ping -c 1 google.com &> /dev/null; then
log_info "DNS解析正常"
else
log_error "DNS解析异常"
return 1
fi
}
# 检查WSL配置
check_wsl_config() {
log_info "检查WSL配置..."
# 检查WSL配置文件
if [ -f /etc/wsl.conf ]; then
log_info "WSL配置文件存在"
cat /etc/wsl.conf
else
log_warn "WSL配置文件不存在"
fi
# 检查内存限制
if grep -q "memory" /etc/wsl.conf 2>/dev/null; then
log_info "WSL内存限制已配置"
else
log_warn "WSL内存限制未配置"
fi
# 检查处理器限制
if grep -q "processors" /etc/wsl.conf 2>/dev/null; then
log_info "WSL处理器限制已配置"
else
log_warn "WSL处理器限制未配置"
fi
}
# 主函数
main() {
log_info "开始检查WSL2环境..."
# 检查Windows版本
check_windows_version
# 检查WSL版本
check_wsl_version
# 检查系统要求
check_system_requirements
# 检查Debian版本
check_debian_version
# 检查系统更新
check_system_updates
# 检查必要的系统组件
check_system_components
# 检查网络连接
check_network
# 检查WSL配置
check_wsl_config
log_info "WSL2环境检查完成"
log_info "如果发现任何问题,请按照提示进行修复。"
}
# 执行主函数
main