#Windows #重装恢复 #Ollama #CUDA #SSH #Docker
配套 《RTX 5080 新主机环境配置实录》。记录所有组件的安装目录与可持久化路径,以及重装系统后的最短路径恢复方案。目标:重装后 30 分钟内恢复 SSH + CUDA + Ollama,其余开发工具按需补装。
一、安装目录全览
1.1 C 盘(重装后丢失)
| 组件 |
安装路径 |
重装后 |
| NVIDIA Driver |
C:\Windows\System32\DriverStore\... |
丢失,重装 |
| CUDA Toolkit 12.8 |
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8 |
丢失,重装 |
| cuDNN 9.x |
同 CUDA 目录(复制进去) |
丢失,重装 |
| Ollama 应用 |
C:\Users\milin\AppData\Local\Programs\Ollama |
丢失,重装 |
| Git |
C:\Program Files\Git |
丢失,重装 |
| Node.js |
C:\Program Files\nodejs |
丢失,重装 |
| Claude Code CLI |
C:\Users\milin\AppData\Roaming\npm\node_modules\@anthropic-ai\claude-code |
丢失,npm install -g 即可 |
| VS Code |
C:\Users\milin\AppData\Local\Programs\Microsoft VS Code |
丢失,重装 |
| VS Code 扩展 |
C:\Users\milin\.vscode\extensions\ |
丢失,需备份扩展列表 |
| VS Code 设置 |
C:\Users\milin\AppData\Roaming\Code\User\settings.json |
丢失,需备份 |
| Windows Terminal |
C:\Users\milin\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\ |
丢失,重装 |
| Windows Terminal 配置 |
...\LocalState\settings.json |
丢失,需备份 |
| JetBrainsMono Nerd Font |
C:\Windows\Fonts\ |
丢失,需重新安装字体 |
| MSVC Build Tools |
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools |
丢失,重装 |
| Docker Desktop 应用 |
C:\Program Files\Docker\Docker |
丢失,重装 |
| OpenSSH Server |
Windows 可选功能(系统级) |
丢失,重新启用 |
| SSH 私钥 |
C:\Users\milin\.ssh\id_rsa |
丢失,必须提前备份 |
| SSH 公钥 |
C:\Users\milin\.ssh\id_rsa.pub |
丢失,随私钥备份 |
| 管理员 authorized_keys |
C:\ProgramData\ssh\administrators_authorized_keys |
丢失,必须提前备份 |
| portproxy 规则 |
注册表(自动持久化但随系统) |
丢失,需重新 netsh 设置 |
| 防火墙规则 |
注册表 |
丢失,需重新 New-NetFirewallRule |
| 系统环境变量 |
注册表 HKLM\...\Environment |
丢失,需备份 |
| Git 全局配置 |
C:\Users\milin\.gitconfig |
丢失,需备份 |
| v2rayA 应用 |
C:\Program Files\v2rayA\ |
丢失,重装 |
| v2rayA 配置/订阅 |
C:\Users\milin\AppData\Roaming\v2rayA\ |
丢失,需备份 |
| conda init 注入 |
PowerShell profile(%USERPROFILE%\Documents\WindowsPowerShell\) |
丢失,conda init 重新执行 |
1.2 D 盘(重装后保留)
| 组件 |
路径 |
重装后 |
| Ollama 模型 |
D:\ollama-models\ |
✅ 保留,无需重新下载 |
| Python / Miniconda |
D:\miniconda3\ |
✅ 保留,需重新 conda init powershell |
| PyTorch 环境 |
D:\miniconda3\envs\torch\ |
✅ 保留,activate 即可用 |
| Docker 数据(WSL VHD) |
D:\Docker\ |
✅ 保留,需重新关联 |
| 项目代码 |
D:\projects\(建议) |
✅ 保留 |
| 游戏 |
D:\Games\(Steam 等) |
✅ 保留 |
二、重装前备份清单
在重装系统前执行以下操作,备份全部到 D 盘或 Mac/N100。
备份脚本(PowerShell,管理员运行)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| $backup = "D:\reinstall-backup" New-Item -Force -Path $backup -ItemType Directory | Out-Null
Copy-Item "$env:USERPROFILE\.ssh" "$backup\ssh-keys" -Recurse -Force
Copy-Item "C:\ProgramData\ssh\administrators_authorized_keys" "$backup\administrators_authorized_keys" -Force
Copy-Item "$env:USERPROFILE\.gitconfig" "$backup\.gitconfig" -Force -ErrorAction SilentlyContinue
$vscodeUser = "$env:APPDATA\Code\User" Copy-Item "$vscodeUser\settings.json" "$backup\vscode-settings.json" -Force -ErrorAction SilentlyContinue Copy-Item "$vscodeUser\keybindings.json" "$backup\vscode-keybindings.json" -Force -ErrorAction SilentlyContinue
code --list-extensions | Out-File "$backup\vscode-extensions.txt"
[System.Environment]::GetEnvironmentVariables("Machine") | ` ConvertTo-Json | Out-File "$backup\system-env-vars.json"
$v2raya = "$env:APPDATA\v2rayA" if (Test-Path $v2raya) { Copy-Item $v2raya "$backup\v2rayA" -Recurse -Force }
$wtPkg = Get-ChildItem "$env:LOCALAPPDATA\Packages" -Filter "*WindowsTerminal*" | Select-Object -First 1 -ExpandProperty FullName if ($wtPkg) { Copy-Item "$wtPkg\LocalState\settings.json" "$backup\wt-settings.json" -Force }
if (Test-Path $PROFILE) { Copy-Item $PROFILE "$backup\ps_profile.ps1" -Force }
$condaEnvs = D:\miniconda3\Scripts\conda.exe env list --json | ConvertFrom-Json foreach ($env in $condaEnvs.envs) { $name = Split-Path $env -Leaf if ($name -ne "base") { D:\miniconda3\Scripts\conda.exe env export -n $name -f "$backup\conda-env-$name.yml" } }
netsh interface portproxy show all | Out-File "$backup\portproxy-rules.txt"
Write-Host "备份完成: $backup" Get-ChildItem $backup
|
同步到 Mac(可选)
1 2
| scp -r D:\reinstall-backup lin@192.168.2.13:~/Desktop/win11-backup/
|
三、重装后快速恢复
并行执行路径总览
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| 【物理操作,约 5 分钟】 ├─ 安装 OpenSSH Server → 还原 SSH 密钥 → 还原 authorized_keys └─ wsl --install(触发重启,建议与 OpenSSH 同步执行后再重启) ↓ 重启 【之后全程可从 Mac 远程 SSH,以下三条 Track 并行推进】
Track A — CUDA 推理栈(约 40 分钟,含下载) ├─ v2rayA 安装 + 还原订阅(其他下载依赖代理,优先完成) ├─ NVIDIA Driver ≥ 575.x(GUI 安装,后台下载期间跑 Track B) ├─ CUDA Toolkit 12.8(GUI 安装) ├─ cuDNN 9.x 复制(D 盘已有 zip,约 1 分钟) ├─ winget install Ollama → 设 OLLAMA_MODELS 环境变量 └─ portproxy + 防火墙规则 11434
Track B — 开发工具链(约 20 分钟,与 Track A 并行) ├─ winget install Git / Node.js / VS Code / Windows Terminal ├─ 还原 Windows Terminal settings.json + 安装 Nerd Font ├─ npm install -g @anthropic-ai/claude-code ├─ VS Code 扩展批量还原 └─ conda init powershell(D 盘已有 Miniconda)
Track C — Docker(WSL2 重启后,与 Track A/B 并行) └─ Docker Desktop 安装 → 关联 D:\Docker
【最后】验证 Ollama GPU 推理 → 验证 OpenClaw → N100 端切换 baseUrl
|
关键约束:
- Track A 内部串行(Driver → CUDA → cuDNN → Ollama 有依赖顺序)
- Track B 内各工具之间无依赖,可多开终端同时 winget
- Claude Code 需先装 Node.js
- WSL2 重启必须在 OpenSSH 配置完成后执行(否则重启后失去远程入口)
阶段一:SSH + 网络(优先恢复,可立即远程操作)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 Start-Service sshd Set-Service -Name sshd -StartupType Automatic
New-NetFirewallRule ` -DisplayName 'OpenSSH LAN' ` -Direction Inbound -Protocol TCP -LocalPort 22 ` -Action Allow -Profile Private,Domain
New-Item -Force -Path "$env:USERPROFILE\.ssh" -ItemType Directory | Out-Null Copy-Item "D:\reinstall-backup\ssh-keys\id_rsa" "$env:USERPROFILE\.ssh\id_rsa" Copy-Item "D:\reinstall-backup\ssh-keys\id_rsa.pub" "$env:USERPROFILE\.ssh\id_rsa.pub"
icacls "$env:USERPROFILE\.ssh\id_rsa" /inheritance:r /grant "${env:USERNAME}:F"
New-Item -Force -Path "C:\ProgramData\ssh" -ItemType Directory | Out-Null Copy-Item "D:\reinstall-backup\administrators_authorized_keys" ` "C:\ProgramData\ssh\administrators_authorized_keys" -Force icacls "C:\ProgramData\ssh\administrators_authorized_keys" ` /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
Write-Host "SSH 配置完成,现在可以从 Mac/N100 远程登入"
wsl --install
|
完成后从 Mac 验证:
1
| ssh milin_desktop "hostname && echo SSH OK"
|
阶段二(Track A):v2rayA 代理(优先,其他下载依赖代理)
v2rayA 需 GUI 安装,但速度极快,完成后所有后续下载自动走代理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
$v2rayaSrc = "D:\reinstall-backup\v2rayA" $v2rayaDst = "$env:APPDATA\v2rayA" if (Test-Path $v2rayaSrc) { Copy-Item $v2rayaSrc $v2rayaDst -Recurse -Force Write-Host "v2rayA 配置已还原,重启 v2rayA 服务后生效" }
$proxy = "http://127.0.0.1:20171"
git config --global http.proxy $proxy git config --global https.proxy $proxy
npm config set proxy $proxy npm config set https-proxy $proxy
pip config set global.proxy $proxy
@" proxy_servers: http: $proxy https: $proxy "@ | Out-File "$env:USERPROFILE\.condarc" -Append
$env:HTTP_PROXY = $proxy $env:HTTPS_PROXY = $proxy
|
WSL2 中的代理(Docker Desktop / WSL Ubuntu 里):
1 2 3 4
| echo 'export http_proxy=http://127.0.0.1:20171' >> ~/.bashrc echo 'export https_proxy=http://127.0.0.1:20171' >> ~/.bashrc source ~/.bashrc
|
开机自动启动 v2ray 核心 + 开启系统代理(Task Scheduler):
v2rayA --lite 模式下,服务启动后不会自动启动 v2ray 核心,也不会自动设置系统代理(WinINet)。通过任务计划程序在登录时运行一个脚本来解决。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
$scriptContent = @' $v2rayaTimeout = 30 $elapsed = 0 while ($elapsed -lt $v2rayaTimeout) { $svc = Get-Service -Name v2raya -ErrorAction SilentlyContinue if ($svc -and $svc.Status -eq 'Running') { break } Start-Sleep -Seconds 2 $elapsed += 2 }
$v2rayProc = Get-Process -Name 'v2ray' -ErrorAction SilentlyContinue if (-not $v2rayProc) { $v2rayExe = 'D:\Program Files (x86)\v2raya\v2ray.exe' $v2rayCfg = 'C:\Users\milin\AppData\Roaming\v2rayA\config.json' Start-Process -FilePath $v2rayExe -ArgumentList "run --config=$v2rayCfg" -WindowStyle Hidden }
$portTimeout = 30 $portElapsed = 0 $portReady = $false while ($portElapsed -lt $portTimeout) { $conn = netstat -an 2>$null | Select-String ':52345.*LISTENING' if ($conn) { $portReady = $true; break } Start-Sleep -Seconds 2 $portElapsed += 2 }
if ($portReady) { $reg = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' Set-ItemProperty -Path $reg -Name ProxyEnable -Value 1 Set-ItemProperty -Path $reg -Name ProxyServer -Value '127.0.0.1:52345' Set-ItemProperty -Path $reg -Name ProxyOverride -Value 'localhost;127.*;10.*;192.168.*;<local>' $sig = '[DllImport("wininet.dll")] public static extern bool InternetSetOption(IntPtr h, int opt, IntPtr buf, int len);' $type = Add-Type -MemberDefinition $sig -Name WinINet -Namespace WinAPI -PassThru -ErrorAction SilentlyContinue if ($type) { $type::InternetSetOption([IntPtr]::Zero, 39, [IntPtr]::Zero, 0) | Out-Null $type::InternetSetOption([IntPtr]::Zero, 37, [IntPtr]::Zero, 0) | Out-Null } } '@ $scriptPath = "$env:APPDATA\v2rayA\enable_proxy.ps1" [System.IO.File]::WriteAllText($scriptPath, "`xEF`xBB`xBF" + $scriptContent, [System.Text.Encoding]::UTF8)
$action = New-ScheduledTaskAction -Execute 'powershell.exe' ` -Argument "-NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File `"$scriptPath`"" $trigger = New-ScheduledTaskTrigger -AtLogOn -User ($env:COMPUTERNAME + '\' + $env:USERNAME) $trigger.Delay = 'PT10S' $settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Minutes 2) $principal = New-ScheduledTaskPrincipal -UserId ($env:COMPUTERNAME + '\' + $env:USERNAME) -RunLevel Highest Register-ScheduledTask -TaskName 'v2rayA-AutoProxy' -Action $action -Trigger $trigger ` -Settings $settings -Principal $principal -Force
|
注意事项:
- 端口 52345 是 v2rayA 的透明代理(HTTP)端口,也是 Windows 系统代理使用的端口
- 脚本等待 v2ray 核心真正监听 52345 后才设置注册表,避免代理设置了但核心还没起
- v2rayA 使用的 config.json 在
%APPDATA%\v2rayA\config.json,脚本直接以同样参数启动 v2ray.exe
- 如果用户在 web UI 点击 Stop 再 Start,v2rayA 会接管 v2ray 进程,不影响正常使用
阶段三(Track A 续):NVIDIA Driver + CUDA + cuDNN
此阶段需 GUI 操作(下载安装包),SSH 进来后用 PowerShell 辅助。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| nvidia-smi
nvcc --version
$cuda = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8" $cudnn = "D:\cudnn-9.x" if (Test-Path $cudnn) { Copy-Item "$cudnn\bin\*" "$cuda\bin\" -Recurse -Force Copy-Item "$cudnn\include\*" "$cuda\include\" -Recurse -Force Copy-Item "$cudnn\lib\x64\*" "$cuda\lib\x64\" -Recurse -Force Write-Host "cuDNN 还原完成" } else { Write-Host "需手动下载 cuDNN: https://developer.nvidia.com/cudnn" }
|
提示:将 cuDNN zip 包保存到 D:\cudnn-9.x\,重装后无需重新下载。
阶段四(Track A 续):Ollama + portproxy + 防火墙
Ollama 模型已在 D 盘,重装后只需重装 Ollama 应用并设环境变量:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| winget install Ollama.Ollama
[System.Environment]::SetEnvironmentVariable( "OLLAMA_MODELS", "D:\ollama-models", "Machine" ) Write-Host "OLLAMA_MODELS = D:\ollama-models(重启 Ollama 托盘 App 后生效)"
netsh interface portproxy add v4tov4 ` listenport=11434 listenaddress=0.0.0.0 ` connectport=11434 connectaddress=127.0.0.1
New-NetFirewallRule ` -DisplayName 'Ollama LAN' ` -Direction Inbound -Protocol TCP -LocalPort 11434 ` -Action Allow -Profile Private,Domain
|
模型已存在于 D:\ollama-models,Ollama 重启后自动识别,无需重新下载。
阶段五(Track B):开发工具链还原
此阶段与 Track A 完全并行,在单独的 PowerShell 窗口中执行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
winget install Git.Git Copy-Item "D:\reinstall-backup\.gitconfig" "$env:USERPROFILE\.gitconfig" -Force
winget install OpenJS.NodeJS.LTS
winget install Microsoft.VisualStudioCode
winget install Microsoft.WindowsTerminal
winget install Microsoft.VisualStudio.2022.BuildTools
|
重开 PowerShell 后(PATH 生效):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| npm install -g @anthropic-ai/claude-code
$dst = "$env:APPDATA\Code\User" New-Item -Force -Path $dst -ItemType Directory | Out-Null Copy-Item "D:\reinstall-backup\vscode-settings.json" "$dst\settings.json" -Force
Get-Content "D:\reinstall-backup\vscode-extensions.txt" | ForEach-Object { code --install-extension $_ --force }
D:\miniconda3\Scripts\conda.exe init powershell
|
Windows Terminal 配置还原
参考 milin_win11 机器的终端配置:字体 JetBrainsMono Nerd Font、半透明 PowerShell Profile。
第一步:安装字体
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $nfUrl = "https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip" $nfZip = "D:\installers\JetBrainsMono-NerdFont.zip" $nfDir = "D:\installers\JetBrainsMono-NF"
Invoke-WebRequest -Uri $nfUrl -OutFile $nfZip Expand-Archive $nfZip -DestinationPath $nfDir -Force
Get-ChildItem "$nfDir\*.ttf" | ForEach-Object { $shell = New-Object -ComObject Shell.Application $shell.Namespace(0x14).CopyHere($_.FullName, 0x10) } Write-Host "字体安装完成,重启 Windows Terminal 后生效"
|
第二步:还原 settings.json
1 2 3 4 5 6 7
| $wtPkg = Get-ChildItem "$env:LOCALAPPDATA\Packages" -Filter "*WindowsTerminal*" | Select-Object -First 1 -ExpandProperty FullName
Copy-Item "D:\reinstall-backup\wt-settings.json" "$wtPkg\LocalState\settings.json" -Force Write-Host "Windows Terminal 配置已还原"
|
或手动创建 settings.json(基于 milin_win11 配置调整):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| { "$schema": "https://aka.ms/terminal-profiles-schema", "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", "copyFormatting": "none", "copyOnSelect": false, "profiles": { "defaults": { "font": { "face": "JetBrainsMonoNL Nerd Font Mono", "weight": "bold" }, "opacity": 50, "useAcrylic": false }, "list": [ { "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", "name": "Windows PowerShell", "commandline": "%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", "hidden": false }, { "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}", "name": "命令提示符", "commandline": "%SystemRoot%\\System32\\cmd.exe", "hidden": false } ] }, "keybindings": [ { "command": { "action": "copy", "singleLine": false }, "keys": "ctrl+c" }, { "command": "paste", "keys": "ctrl+v" }, { "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "alt+shift+d" }, { "command": "find", "keys": "ctrl+shift+f" } ] }
|
说明:defaults 块中设置字体/透明度后,所有 Profile 自动继承,无需每个 Profile 单独设置。WSL2 Profile 会在安装 Ubuntu 后由 Windows Terminal 自动检测并添加。
第三步:配置 PowerShell 历史记录与命令行高亮(PSReadLine)
WT 本身只负责渲染,历史补全和语法高亮由 PowerShell 的 PSReadLine 模块实现,配置写入 $PROFILE。
1 2 3 4 5 6
| Install-Module PSReadLine -Force -SkipPublisherCheck -Scope CurrentUser
$PROFILE
|
将以下内容写入 profile(追加或新建均可):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
Import-Module PSReadLine
Set-PSReadLineOption -PredictionSource History
Set-PSReadLineOption -PredictionViewStyle InlineView Set-PSReadLineOption -HistorySearchCursorMovesToEnd
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete
Set-PSReadLineOption -Colors @{ Command = 'Cyan' Parameter = 'DarkCyan' String = '#98C379' Variable = '#E5C07B' Comment = 'DarkGray' Keyword = '#C678DD' Error = 'Red' InlinePrediction = 'DarkGray' }
|
重装后还原:
1 2 3 4 5 6 7
| Copy-Item $PROFILE "D:\reinstall-backup\ps_profile.ps1" -Force
$profileDir = Split-Path $PROFILE New-Item -Force -Path $profileDir -ItemType Directory | Out-Null Copy-Item "D:\reinstall-backup\ps_profile.ps1" $PROFILE -Force
|
效果:输入命令前缀 + 按 ↑ 键即可搜索历史;命令、参数、字符串、变量分色显示;Tab 弹出候选菜单。
阶段六(Track C):Docker Desktop 还原
WSL2 已在阶段一重启时完成,此阶段与 Track A/B 并行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| winget install Docker.DockerDesktop
wsl --import docker-desktop D:\Docker\desktop D:\wsl-docker-desktop.tar wsl --import docker-desktop-data D:\Docker\data D:\wsl-docker-desktop-data.tar
docker run hello-world docker run --gpus all nvidia/cuda:12.8.0-base-ubuntu22.04 nvidia-smi
|
阶段七:验证 OpenClaw(N100 侧)
Ollama baseUrl 对应的 IP 不变(192.168.0.111),重装后无需更改 OpenClaw 配置。
只需从 Mac 验证链路:
1 2 3 4 5
| curl --noproxy '*' -s http://192.168.0.111:11434/api/tags | python3 -m json.tool
ssh MyUbuntuLocal "curl -s --noproxy '*' http://192.168.0.111:11434/api/tags | python3 -c 'import json,sys; [print(m[\"name\"]) for m in json.load(sys.stdin)[\"models\"]]'"
|
四、cuDNN / 大文件持久化建议
| 文件 |
建议路径 |
说明 |
| cuDNN zip 原包 |
D:\installers\cudnn-windows-x86_64-9.x.zip |
重装后直接复制,无需重下 |
| CUDA Toolkit installer |
D:\installers\cuda_12.8_win.exe |
可选保留 |
| Docker WSL export |
D:\wsl-docker-desktop.tar / data.tar |
若用 wsl --export 迁移 |
| Ollama 模型 |
D:\ollama-models\ |
自动关联 |
| Miniconda |
D:\miniconda3\ |
自动关联,conda init 重新执行 |
五、恢复时间估计
| 阶段 |
Track |
耗时估计 |
能否远程 |
并行说明 |
| 阶段一:SSH + wsl --install |
— |
5 分钟 + 重启 |
需物理操作一次 |
串行,其余全部依赖此步 |
| 阶段二:v2rayA |
A |
5 分钟 |
✅ 需 GUI 安装 |
优先,其余下载依赖代理 |
| 阶段三:Driver + CUDA + cuDNN |
A |
20-30 分钟 |
✅ 需 GUI 安装 |
与 Track B/C 并行 |
| 阶段四:Ollama + portproxy |
A |
5 分钟 |
✅ 纯 PowerShell |
依赖阶段三完成 |
| 阶段五:开发工具链 + Windows Terminal |
B |
20-30 分钟 |
✅ 纯 PowerShell |
与 Track A/C 并行 |
| 阶段六:Docker Desktop |
C |
10 分钟 |
✅ 需 GUI 启动 |
与 Track A/B 并行,依赖 wsl --install |
| 实际墙钟时间(并行后) |
— |
约 40 分钟 |
— |
Track A 是关键路径 |
Ollama 模型 不需要重新下载(D 盘保留),节省约 27 GB 下载时间(qwen3.5-35b-a3b ~22 GB + qwen3:8b ~5 GB)。
六、快速核验命令(恢复后)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| nvidia-smi nvcc --version python -c "import torch; print('CUDA:', torch.cuda.is_available(), torch.cuda.get_device_name(0))"
ollama list
Get-Service sshd
netsh interface portproxy show all
docker run --rm --gpus all nvidia/cuda:12.8.0-base-ubuntu22.04 nvidia-smi
|
七、其他常用软件(自行下载安装)
以下软件与开发环境无硬性依赖,由用户在环境配置完成后按需自行安装。
| 软件 |
用途 |
获取方式 |
| Listary |
文件快速搜索 / 启动器,Ctrl+Ctrl 呼出 |
listary.com |
| PowerToys |
窗口管理、FancyZones 分屏、PowerRename 等 |
GitHub Releases 或 winget install Microsoft.PowerToys |
| 微信(WeChat) |
即时通讯 |
weixin.qq.com 或 winget install Tencent.WeChat |
| QQ |
即时通讯 |
im.qq.com 或 winget install Tencent.QQ |
| 7-Zip |
解压缩(比内置更快,支持更多格式) |
winget install 7zip.7zip |
| VLC |
本地视频播放 |
winget install VideoLAN.VLC |
| PotPlayer |
视频播放(支持 GPU 硬解) |
potplayer.daum.net |
winget 批量安装(可选):
1 2 3 4 5
| winget install Microsoft.PowerToys 7zip.7zip VideoLAN.VLC Tencent.WeChat Tencent.QQ
Start-Process "https://www.listary.com/download"
|
安装顺序建议:先完成环境配置(前六阶段),再统一安装此类软件,避免代理未就绪时下载缓慢。
延伸阅读