Wsl2DebianEnv/scripts/system/install-debian.bat
Mars 6ddba3e722 Initial commit
feat: 完成 Zsh 插件配置脚本的优化和测试 - 修复 autojump 配置冲突 - 清理重复的插件安装 - 优化脚本结构和注释

feat: 优化shell脚本 - 1. 增强错误处理和恢复机制 2. 添加网络连接优化和镜像源支持 3. 改进进度显示和用户交互 4. 优化配置文件管理和备份 5. 改进插件管理机制 6. 增强依赖检查和安装 7. 添加完整的日志记录功能 8. 修复字体安装相关问题

docs: 完善shell、system和utils部分的README文档 - 1. 添加详细的脚本说明和使用方法 2. 补充依赖要求和注意事项 3. 添加常见问题解答 4. 更新版本日志

feat(editor): 优化 neovim 和 nvchad 安装脚本,添加性能优化配置和详细文档

feat: 优化Python开发环境安装脚本,分离基础包和机器学习包,修复virtualenvwrapper配置

feat: 优化开发工具安装脚本,统一使用common.sh中的函数,改进错误处理

fix: 修复DNMP安装脚本,跳过自动配置PHP开发环境

fix: 提交删除的 init.sh 和 mysql.sh 文件
2025-03-25 16:14:03 +08:00

181 lines
5.3 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
:: Set console colors
set "GREEN=[32m"
set "YELLOW=[33m"
set "RED=[31m"
set "RESET=[0m"
:: Function to print colored messages
call :define_print_functions
echo %GREEN%[INFO]%RESET% Starting WSL2 environment configuration...
echo.
:: Check for Administrator privileges
net session >nul 2>&1
if %errorLevel% neq 0 (
echo %YELLOW%[WARN]%RESET% Administrator privileges required
echo %GREEN%[INFO]%RESET% Please run this script as Administrator
pause
exit /b 1
)
echo %GREEN%[INFO]%RESET% Note: Please make sure you have manually updated WSL2 kernel before proceeding.
echo %GREEN%[INFO]%RESET% You can update WSL2 kernel by running "wsl --update" in an administrator PowerShell.
echo.
:: Check if Debian is installed
echo %GREEN%[INFO]%RESET% Checking Debian installation...
wsl -d Debian echo "Check Debian" >nul 2>&1
if %ERRORLEVEL% equ 0 (
echo %GREEN%[INFO]%RESET% Found existing Debian installation
:: Ask if user wants to remove existing installation
set /p "remove=Do you want to remove the existing Debian installation? [y/N] "
if /i "!remove!"=="y" (
echo %GREEN%[INFO]%RESET% Removing existing Debian installation...
wsl --unregister Debian
if !ERRORLEVEL! neq 0 (
echo %RED%[ERROR]%RESET% Failed to remove Debian
pause
exit /b 1
)
echo %GREEN%[INFO]%RESET% Existing Debian installation removed
set "NEED_INSTALL=1"
)
) else (
echo %GREEN%[INFO]%RESET% No existing Debian installation found
set "NEED_INSTALL=1"
)
:: Handle Debian installation if needed
if defined NEED_INSTALL (
:: Get custom installation path
set "DEFAULT_PATH=%USERPROFILE%\WSL\Debian"
echo.
echo Current WSL installation path: %DEFAULT_PATH%
set /p "CUSTOM_PATH=Enter new installation path or press Enter to keep current: "
if not "!CUSTOM_PATH!"=="" (
echo %GREEN%[INFO]%RESET% Setting up custom installation path: !CUSTOM_PATH!
:: Create directory if it doesn't exist
if not exist "!CUSTOM_PATH!" (
mkdir "!CUSTOM_PATH!" 2>nul
if !ERRORLEVEL! neq 0 (
echo %RED%[ERROR]%RESET% Failed to create directory: !CUSTOM_PATH!
pause
exit /b 1
)
echo %GREEN%[INFO]%RESET% Created directory: !CUSTOM_PATH!
)
:: Set WSL installation path
echo %GREEN%[INFO]%RESET% Setting WSL installation path...
setx WSLENV "WSLPATH/up:!CUSTOM_PATH!" >nul
if !ERRORLEVEL! neq 0 (
echo %RED%[ERROR]%RESET% Failed to set WSL installation path
pause
exit /b 1
)
echo %GREEN%[INFO]%RESET% WSL installation path set to: !CUSTOM_PATH!
)
:: Install Debian
echo %GREEN%[INFO]%RESET% Installing Debian...
wsl --install -d Debian
if !ERRORLEVEL! neq 0 (
echo %RED%[ERROR]%RESET% Failed to install Debian
pause
exit /b 1
)
echo %GREEN%[INFO]%RESET% Debian installation completed
:: Wait for Debian to be ready
echo %GREEN%[INFO]%RESET% Waiting for Debian to be ready...
timeout /t 10 /nobreak >nul
)
:: Shutdown WSL to ensure clean state
echo %GREEN%[INFO]%RESET% Shutting down WSL to ensure clean state...
wsl --shutdown
if %ERRORLEVEL% neq 0 (
echo %RED%[ERROR]%RESET% Failed to shutdown WSL
pause
exit /b 1
)
timeout /t 2 /nobreak >nul
echo %GREEN%[INFO]%RESET% WSL shutdown completed
:: Update Debian system
echo %GREEN%[INFO]%RESET% Updating Debian system packages...
echo %GREEN%[INFO]%RESET% Updating package lists...
wsl -d Debian -u root apt update
if %ERRORLEVEL% neq 0 (
echo %RED%[ERROR]%RESET% Failed to update package lists
pause
exit /b 1
)
echo %GREEN%[INFO]%RESET% Upgrading packages...
wsl -d Debian -u root apt upgrade -y
if %ERRORLEVEL% neq 0 (
echo %RED%[ERROR]%RESET% Failed to upgrade packages
pause
exit /b 1
)
echo %GREEN%[INFO]%RESET% Cleaning up...
wsl -d Debian -u root apt autoremove -y
wsl -d Debian -u root apt clean
echo %GREEN%[INFO]%RESET% Debian system update completed
:: Configure WSL memory limit
echo %GREEN%[INFO]%RESET% Configuring WSL memory limit...
set "CONFIG_FILE=%USERPROFILE%\.wslconfig"
:: Backup existing config if it exists
if exist "%CONFIG_FILE%" (
echo %GREEN%[INFO]%RESET% Backing up existing .wslconfig...
copy "%CONFIG_FILE%" "%CONFIG_FILE%.bak" >nul
)
:: Create new config file
(
echo [wsl2]
echo memory=8GB
echo processors=4
echo swap=2GB
) > "%CONFIG_FILE%"
if %ERRORLEVEL% neq 0 (
echo %RED%[ERROR]%RESET% Failed to create .wslconfig
pause
exit /b 1
)
echo %GREEN%[INFO]%RESET% WSL memory limit configured
echo.
echo ============================================
echo Configuration Complete!
echo ============================================
echo.
echo Your WSL2 environment has been configured:
echo.
echo %GREEN%[INFO]%RESET% 1. Debian system packages updated
echo %GREEN%[INFO]%RESET% 2. WSL memory limit configured (8GB RAM, 4 cores, 2GB swap)
if defined CUSTOM_PATH (
echo %GREEN%[INFO]%RESET% 3. WSL installation path set to: !CUSTOM_PATH!
)
echo %GREEN%[INFO]%RESET% Please restart your computer to apply all changes.
echo ============================================
pause
exit /b 0
:define_print_functions
exit /b 0