0%

安装并配置 Windows 11 系统

2022.04.25 从 Macbook Pro 2018 的 macOS 平台换回了 Thinkbook 16p 的 Windows 平台,记录一下为 Thinkbook 16p 装系统的过程。

2023.03.09 准备在接下来的几个月内购置 i7-13700KF + RTX4090 的 PC,预先在虚拟机内配置安装能够进行大小核分配的 Windows 11。

2023.05.16 Thinkbook 16p 升级至 Windows 11。由于 AMD 的 R7-5800H 开启睿频时待机温度都会在 80°C 左右,所以干脆关闭睿频用性能换静音了。同时台式机的配置修改为 i7-13900K + Palit RTX4090 + Palit RTX4070,购买已经基本完成。

2023.10.03 由于键盘按键损坏、机器过重和续航糟糕等问题,在一周前将 Thinkbook 16p 卖了,换到了吾空凌云 x16。虽然是小厂出的机子,但是 7840HS + 32GB 5600MHz + 2.5K@240Hz 的配置确实是已经拉到顶了,而且 BIOS 也凑合,问题不大。不过这篇记录则变成了为 Thinkbook 16p 而记录的 Windows 安装教程结果连原本 Thinkbook 16p 都不存在了的情况。

写这份记录的原因起初单纯只是为了记录,但现在觉得确实有必要做一个无论在何时都能以最快速度恢复的指令列表。

系统与驱动安装

  • 开机进入 BIOS,启动 Ventoy 或者系统安装盘,选择合适的 Windows 版本在格式化之后的硬盘上安装。

  • 安装完重启进入配置界面,此时选择脱机账户而非微软账户。原因在于这里如果直接使用微软账号,系统内个人文件夹的名字会跟随微软账号的名称,相当容易出问题;同时,微软账户完全可以在进入系统之后再绑上,这时个人文件夹的名称已经确定,不会带来任何可能的负面影响。

  • 但 Windows 11 的安装中可见的只有使用在线的微软账户选项,而使 Windows 11 能够在断网的情况下安装的操作非常麻烦。针对这个问题有个小技巧:在登录个人微软账户的页面使用账户(邮箱:i@i.i,密码:i),此时安装会提醒该账号已有过多错误的登录尝试而被锁定,直接点击下一步就可以进入脱机账户的设置。

  • 个人文件夹的名字一般习惯直接取 i,不仅自指而且由于不包含中文和空格,以后安装其他程序(例如 nodejs)的时候不会报错,否则会很麻烦。

  • 进入系统,登录微软账号,激活 Windows 11:

    • 激活码:tb 或者正版购买的 Retail 激活码直接激活即可,注意和店家声明要 Retail 版而非 MAK 版或者 OEM 版的。如果电脑登录了微软账号,那会在微软账号内关联上一个基于硬件 ID(主板)的数字许可证。

    • 基于硬件 ID (HWID)的数字许可证:

      • 手动 HWID:先装 Windows 10,用便宜的 Windows 10 激活码激活后绑定微软账户,升级至 Windows 11。这样微软账户上就会有一个基于硬件 ID(主板型号)的数字许可证。之后重装系统既可。

      • 第三方程序 HWID:通过执行脚本 irm https://massgrave.dev/get | iex 生成欺骗文件使 Microsoft 以为本机的 Windows 11 是从 Windows 10 升级而来,从而授予微软账户一个基于硬件 ID(主板)的数字许可证。不需要重装系统。

    • 个人推荐:Retail 激活码 > 手动 HWID > 第三方程序 HWID。

    • 在 Powershell 中使用 slmgr /dlv 或者 slmgr /dli 检查 Windows 激活的具体信息。

  • 通过 Windows Update 安装基本驱动。

  • 笔记本在 Windows Update 的基本驱动安装完成之后需要安装官网上相应型号的特有驱动(不包括 AMD/NVIDIA 这类通用驱动),而台式机可以直接下一步。

  • 通过后面安装的 ccleaner 更新驱动程序集。

  • 上述三者的驱动安装顺序不推荐更改,否则驱动的控制面板程序容易出问题。

  • 重启后再次进行 Windows Update 的更新直到所有更新完成。

软件安装

先安装中文、西文、日文字体。

手动安装 v2ray 或者直接挂上局域网内的代理,之后的程序安装不少需要梯子进行。

软件安装一共由五部分构成:包管理器 scoop + 包管理器 winget + Windows 命令行 & Microsoft Store 应用商店 + 正常安装 + 破解版软件。

包管理器 scoop

Windows 下的包管理器。名称 scoop 的本意是指用来挖桶装冰淇淋的比较深的勺子。

优点:

  • 所有程序都不会安装在 C:\Program Files 或者 C:\Program Files (x86) 内而造成混乱。

  • 默认安装路径为 ~\scoop,即 C:\Users\your-user-name\scoop 并可随意修改。

  • scoop 安装的 CLI 程序在安装会将快捷方式置于 scoop 的 PATH 文件夹,从而可以最大程度避免污染系统 PATH

  • 基本上的安装包都无需 sudo 权限,安装的软件版本以便携版为主。

  • 包索引网页 Scoop - A command-line installer for Windows 做得很棒。

缺点:

  • scoop 无法检测到程序的自我更新,因此不适合用于安装程序自我更新频繁的软件。

本体安装

打开 PowerShell,检查系统内 PowerShell 的版本,要求大于等于 5 即可。Windows 10 和 Windows 11 自带的都是版本 5。

1
$psversiontable.psversion.major

允许 PowerShell 执行本地脚本。

1
set-executionpolicy remotesigned -scope currentuser

(可选)设置环境变量,即改变 scoop 安装路径。

1
2
$env:SCOOP='D:\scoop'
[environment]::setEnvironmentVariable('SCOOP',$env:SCOOP,'User')

安装脚本被设置为只在非管理员的 PowerShell 中才能运行,因此直接打开 PowerShell 执行安装脚本。

1
irm get.scoop.sh | iex

设置代理与程序安装

根据 v2ray 界面内的端口信息,为 scoop 设置 HTTP 代理。

1
scoop config proxy localhost:10809

先安装基本工具 git,之后添加 scoop(勺子)的官方 bucket(冰淇淋桶),即官方提供的各种软件包列表。个人推荐只添加 extra 和 versions 这两个列表并指安装这两个列表内的程序,因为这两个列表能保证所有通过 scoop 安装的软件的最高清洁度。

1
2
3
scoop install git
scoop bucket add extras
scoop bucket add versions

安装 CLI 程序。

1
scoop install git adb argyllcms cacert cmake cuda curl cwrsync cygwin dark exiftool ffmpeg frp go gpg gsudo innounp iperf3 lux mambaforge nodejs nssm pandoc phantomjs python311 r rhash rclone tdm-gcc telnet vim vivetool winget yt-dlp   
CLI 备注
git 确保已经装上,以及需要修改代理
——————
adb 安卓工具
argyllcms 注意笔记本上的 DisplayCAL 有时候无法适配最新版本的 argyllcms,使用其默认下载的即可
cacert
cmake
cuda 果然还是有必要装上
curl 查看当前 ip 地址:curl ipinfo.io / curl cip.cc / curl myip.ipip.net
cwrsync
cygwin 手动安装 procps-ng 以添加 watch、安装 chere 后参考手册页面管理员权限执行 chere -i -t cmd
dark
exiftool
ffmpeg
frp 作为客户端,修改 frpc.ini 并用 nssm 添加系统服务,参见后文部分
go
gpg
gsudo
innounp
iperf3
lux 支持各大在线视频网站的下载工具
mambaforge conda/mamba,必须安装在 python 之前,否则有可能会覆盖 python 的调用程序
nodejs 安装录制工具 npm install -g minyami 和博客工具 npm install -g hexo-cli
nssm 用于将特定程序安装为系统服务,详细命令会在最后部分叙述
pandoc 用 pip 安装时 pandoc 的可执行文件不在 PATH 里,不如用 scoop 装
phantomjs yt-dlp 的可选依赖
python311
r
rhash
rclone 自 2022.10 起使用 Google Drive 上传时需要加上参数 --drive-upload-cutoff 1000T
tdm-gcc Windows 适配,在 scoop 的 versions 列表而非 main 列表内
telnet
vim
vivetool 备用,用于打开某些 Windows 默认关闭的功能
winget 与其使用系统内自带的无法自我更新的 winget,不如直接交给 scoop 来安装
yt-dlp 原 youtube-dl 已停止更新,yt-dlp 为其派生(fork)

ssh git 的时候端口可能报错,虽然开 TUN 模式可以绕过,但一般还是推荐指定 443 端口连接。

1
2
3
4
5
vim ~\.ssh\config

Host github.com
Hostname ssh.github.com
Poert 443

git 修改代理、检查代理以及取消代理:

1
2
3
4
5
6
7
git config --global http.proxy http://127.0.0.1:2080
git config --global https.proxy https://127.0.0.1:2080

git config --global --get http.proxy

git config --global --unset http.proxy
git config --global --unset https.proxy

cwrynsc 调用系统 ssh 时会出现兼容问题,报错如下:

1
2
3
4
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(228) [Receiver=3.2.3]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(228) [sender=3.2.3]

需要手动指定 cwrynsc 文件夹内自带的 ssh 文件,即 -e 后面跟 ssh 文件的路径:

1
-e "C:\Users\i\scoop\apps\cwrsync\current\bin\ssh.exe"

Conda
环境管理:Conda 用于创建、管理和激活不同的环境。每个环境可以有不同的Python版本和一组包,这些都是相互隔离的。
基本包管理:虽然Conda也可以用于包的安装、更新和移除,但在处理大型环境或复杂的依赖关系时,它的速度可能不如Mamba。

Mamba
包管理:一旦进入了一个Conda环境(无论是用Conda还是MambaForge创建的),Mamba可以用来快速安装、更新和移除包。Mamba在这方面比Conda快,因为它使用了C++编写的更快的依赖解析器和包管理器。
环境兼容性:Mamba与Conda环境完全兼容,这意味着可以在任何Conda环境中使用Mamba来管理包。

mamba 相当于 conda 的执行速度上位,但并不是所有 conda 的命令都可以直接替换为 mamba。

1
Currently, only install, create, list, search, run, info, clean, activate and deactivate are supported through mamba.

同时,mamba 在处理环境时并不如 conda 顺手。这也可以在其执行 mamba init 时,在 Powershell 的启动配置文件 profile.ps1 内写入的内容和 conda init 写入的完全一样这个方面有所体现。

1
2
3
4
5
6
#region conda initialize
# !! Contents within this block are managed by 'conda init' !!
If (Test-Path "C:\Users\i\scoop\apps\mambaforge\current\Scripts\conda.exe") {
(& "C:\Users\i\scoop\apps\mambaforge\current\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | ?{$_} | Invoke-Expression
}
#endregion

mambaforge 安装后需要使用命令开启 conda activate 功能,同时需要关闭打开终端时自动进入 base 环境功能。

1
2
conda init powershell
conda config --set auto_activate_base false

也可以通过以下命令回改:

1
2
conda init --reverse powershell
conda config --set auto_activate_base true

由于所有 conda/mamba 包全都是直接属于 MambaForge 版本内的,因此为了不造成混乱,不推荐使用 conda update conda 来更新。只需要等 MambaForge 大版本更新即可。

MambaForge persist 的只有 env 文件夹,因此 base 环境是不会保存的。

安装 GUI 程序:

1
scoop install 7zip blender blender-launcher capture2text calibre cheat-engine eac hourglass locale-emulator makemkv megasync moonlight motrix mpc-hc-fork obs-studio screentogif sumatrapdf aida64extreme capframex crystaldiskinfo crystaldiskmark cpu-z ddu dismplusplus everything fancontrol fiddler furmark geekuninstaller gpu-z hwinfo nekoray ocat quickcpu rainmeter rufus spacesniffer twinkle-tray wingetui wox-beta github mobaxterm rstudio texstudio vscode

管理员模式下打开 PowerShell 安装 GUI 程序。

1
sudo scoop install madvr winaero-tweaker
GUI 备注
7zip 安装右键菜单
blender 安装 mmd-tools 插件
blender-launcher Blender 的多版本管理程序,特别适合于安装备用的旧版本
calibre 配合 DeDRM tools 使用,可以解除 pdf 的 ADE 加密
capture2text 本地 OCR
cheat-engine
eac
hourglass
locale-emulator 打开 Locale Emulator Installer 进行安装
madvr 管理员运行 install.bat,和播放器的安装先后无关
makemkv
megasync
moonlight 串流工具,配合 NVIDIA GeForce Expreience
motrix
mpc-hc-fork 管理员模式关联格式,需要启动两遍
obs-studio
screentogif
sumatrapdf
——————
aida64extreme 序列号可参考 bygalacos/Aida64_Key.txt
capframex 配合后文的 ocat 和 RTSS 使用
crystaldiskinfo
crystaldiskmark
cpu-z
ddu
dismplusplus
everything 设置开机自启,安装服务
fancontrol 对于笔记本不适用,笔记本的风扇策略基本是写死在主板里的
fiddler 点击 WinConfig,为 Windows Store、To Do 和动态主题配置直连
furmark
geekuninstaller
gpu-z
hwinfo 中文翻译略有纰漏,推荐修改语言为英文
nekoray 在使用 v2ray 安装结束后推荐更换为 nekoray,其有更好的 TUN 模式支持
ocat 记录 fps 用的工具
quickcpu 在 POWER 顶部栏选项中,可以调用“卓越性能”电源模式和调整各种电源模式细节,详见后文
rainmeter 设置开机自启,右键高分辨率屏幕适配,推荐添加皮肤:SA Weather Cast
rufus
spacesniffer
twinkle-tray 调整连接台式机显示器的亮度,安装在笔记本上时主要用于调整外接显示器
winaero-tweaker
wingetui 可以管理 winget scoop pip node 的安装包,不过主要备用
wox-beta 手动添加 python3 路径以启用拼音搜索,添加 有道词典插件
——————
github
mobaxterm
rstudio 如果出现报错,手动修改 C:\Users\i\AppData\Roaming\RStudio\config.json 的 R 路径 rExecutablePath
texstudio
vscode

包管理器 winget

Windows 下的包管理器。

优点:

  • 即使软件初始并非使用 winget 安装, winget 依旧能够对其检测并管理。

  • 软件的自我更新也会也可以被 winget 检测,因此完美弥补了 scoop 的缺陷。

  • 非常适合 Windows 内的必要组件 VCRedist、.Net Runtime 等的安装。

缺点:

  • winget 有可能出现程序安装的版本名和源内版本名不同的情况,从而即使更新后仍然显示需要更新。

  • 没有统一的安装路径,采用的均为软件自身的默认安装路径。

  • 安装 CLI 程序时很可能会污染系统 PATH,因此完全不推荐使用 winget 安装 CLI 程序。

  • 安装 GUI 程序时必须加上 -i 参数以调用交互式安装界面,否则完全无法调整安装程序的选项。

  • 无法像 scoop 以一条 winget install app1 app2 简易命令安装或卸载多个软件。

本体安装

在 Windows 11 已经内置,本无需特别安装,但由于其很少更新,所以通常还是推荐之前使用 scoop 安装的版本,可以保证 winget 不会缺少类似 winget pin 的固定包版本的功能。

设置代理与程序安装

winget 会自动调用系统的代理设置,在 v2ray 内配置即可。

由于 winget 一行命令只能安装一个程序,winget 的安装命令会较长。

安装无 GUI 的 Windows 内必要组件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
winget install Microsoft.WindowsAppRuntime.1.4
winget install Microsoft.DotNet.DesktopRuntime.6
winget install Microsoft.DotNet.DesktopRuntime.7
winget install Microsoft.DotNet.DesktopRuntime.8
winget install Microsoft.DotNet.Framework.DeveloperPack_4
winget install Microsoft.VCRedist.2005.x86
winget install Microsoft.VCRedist.2005.x64
winget install Microsoft.VCRedist.2008.x86
winget install Microsoft.VCRedist.2008.x64
winget install Microsoft.VCRedist.2010.x86
winget install Microsoft.VCRedist.2010.x64
winget install Microsoft.VCRedist.2012.x86
winget install Microsoft.VCRedist.2012.x64
winget install Microsoft.VCRedist.2013.x86
winget install Microsoft.VCRedist.2013.x64
winget install Microsoft.VCRedist.2015+.x86
winget install Microsoft.VCRedist.2015+.x64
winget install -i Microsoft.VisualStudio.2022.BuildTools
组件 备注
App Runtime 1.4,管理模组的 JASM 需要用
.NET DesktopRuntime 6+7+8
.Net Framework 4.8,旧版 3.5 需要去微软官网手动下载安装
VCRedist 不推荐只装 x64 的,否则无论更新还是使用的时候都会很麻烦。以及最新版本都整合在 2015+ 内
VisualStudio BuildTools 最好先安装 cuda 再安装 VS 2022,安装时需要指定 -i 参数调出可交互界面,只需选择 C++ 桌面开发

Windows 10/11 预装了 DirectX 12,不过其并未包含一些旧版本 DirectX 的库文件。如果需要安装旧版 DirectX 9 可以去微软官网手动下载安装。

安装 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
winget install -i Bandisoft.Bandizip
winget install -i ByteDance.JianyingPro
winget install -i ByteDance.CapCut
winget install -i Discord.Discord
winget install -i FlorianHoech.DisplayCAL
winget install -i PeterPawlowski.foobar2000
winget install -i PeterPawlowski.foobar2000.EncoderPack
winget install -i Google.Chrome
winget install -i Tonec.InternetDownloadManager
winget install -i Nevcairiel.LAVFilters
winget install -i TheDocumentFoundation.LibreOffice
winget install -i Logitech.OptionsPlus
winget install -i MacType.MacType
winget install -i Microsoft.EdgeWebView2Runtime
winget install -i Mozilla.Firefox
winget install -i Guru3D.Afterburner
winget install -i Notion.Notion
winget install -i Nvidia.GeForceExperience
winget install -i Daum.PotPlayer
winget install -i Microsoft.PowerShell
winget install -i Microsoft.PowerToys
winget install -i Sandboxie.Plus
winget install -i Guru3D.RTSS
winget install -i Spotify.Spotify
winget install -i StartIsBack.StartAllBack
winget install -i Valve.Steam
winget install -i tailscale.tailscale
winget install -i Telegram.TelegramDesktop
winget install -i Tencent.TencentMeeting
winget install -i Tencent.TIM
winget install -i Tencent.WeChat
winget install -i VirtualDesktop.Streamer
winget install -i VivaldiTechnologies.Vivaldi
winget install -i ZeroTier.ZeroTierOne
winget install -i Sogou.SogouInput
GUI 备注
Bandizip
Capcut/JianyingPro 大陆版的剪映专业版负责人声伴奏分离,海外版的剪映负责自动字幕
Discord scoop 上的 discord 已经不更新非常久了
DisplayCAL 手动指定 scoop 安装的 ArgyllCMS 可执行文件路径,配合 ColorChecker Display 进行校色
foobar2000 安装 歌词面板插件
foobar2000 Free Encoder Pack
Google Chrome
Internet Download Manager 执行 iex(irm is.gd/idm_reset),参考 lstprjct/IDM-Activation-Script
LAV Filters 配合 PotPlayer 使用
LibreOffice 备用
Logi Options+
MacType 使用 LCD 配置,使用服务模式即可
Microsoft Edge WebView2 Windows 11 已经内置
Mozilla Firefox Firefox 没问题,但是 Thunderbird 最新的 115 版本过于糟糕,需要手动安装 102 版本
MSI Afterburner scoop 安装的版本会因为 VC2008 的问题提示“并行配置不正确”
Notion
NVIDIA GeForce Experience 单纯需要 NVIDIA 驱动的话可以不装,但是 Moonlight 串流需要
RTSS CapFrameX 所需的监控软件
PotPlayer
PowerShell 安装时去除使用 Windows Update 更新的选项,按照 此说明 添加 Cygwin
PowerToys 若报错则去 GitHub 下载。根据 GitHub #20255 删除右键菜单内重复出现的“调整图片大小”
Sandboxie-Plus
Spotify
StartAllBack Windows 11 界面配置
Steam
Tailscale 由于 scoop 安装时每次均需要再命令行中指定管理员权限,不如直接用 winget 版本
Telegram 和 Chrome 等一样,由于自我更新频繁,用 winget 管理更合适
TencentMeeting
TIM 使用软链接修改个人聊天记录文件夹位置
Virtual Desktop Streamer 配合 Pico 4 使用
Vivaldi Google Pay 浏览器
WeChat 使用软链接修改个人聊天记录文件夹位置
ZeroTier 系统服务和 UI 独立生效
搜狗拼音 当心流氓修改,以及必须在安装中文、日文、西文字体之后进行

scoop 和 winget 的日常更新命令

1
scoop update * && winget upgrade -i -r -u --verbose

Windows 命令行 & Microsoft Store 应用商店

Windows 命令行

由于 WSL1 不依赖 Hyper-V,而 WSL2 依赖,因此在系统功能中打开 Hyper-V 后,再安装 wsl2 的 Ubuntu 更为合适。

1
wsl --install

注意事项:

  • Windows 10 和 11 使用 wsl --install 安装的其实就是 Microsoft Store 应用商店中 Windows Subsystem for Linux。

  • 此时 Windows 功能中的“适用于 Linux 的 Windows 子系统”始终是未勾选状态的,这完全没有问题也并不需要手动勾起这个选项。参考来源:A preview of WSL in the Microsoft Store is now available!

  • WSL 可以识别多块 GPU,但无法同时读取多块,每一次只能读取其中的单独一块。参考来源:Get started with GPU acceleration for ML in WSL

Microsoft Store 应用商店

应用 备注
Microsoft To-Do
MSI Center 安装,在关闭所有主板相连设备的灯光后即可卸载
QuickLook 可以在 GitHub 页面 下载安装必要的插件
Snipaste
Battery Percentage Icon 笔记本在 Windows 中无法直接在任务栏中显示电量百分比,故使用插件

正常安装

可执行文件部分

  • 确定安装部分
程序 备注
Corsair Link 4 监控 AX1600i 的插口电流情况,以最大程度避免 4090 烧接口
Daemon Tools Lite
Equalizer APO 配合 AutoEQ 使用,调整耳机的 EQ 曲线
FreeFileSync 捐赠版
honeyview winget 的版本为韩文版,无法更改语言,因此手动安装并需要加 winget pin
Microsoft Office 2019 正版的 Office 家庭与学生版
QTTabBar 使用保存的 xml 文件直接恢复
Sunlogin 向日葵远程控制,比 TeamViewer 好使多了
Synology Active Backup For Business 配合 NAS 备份,以及台式机有线网备份会报错
Synology Drive 多终端的数据同步工作就交给群晖了
Tencent Meeting 开始菜单程序栏内快捷方式多余,需要删除一个
Mozilla Thunderbird 手动安装 102 版本并阻止其进行更新,如果是从 115 版本降级则可参考本帖
texlive 管理员模式安装完整版 TeX 到 C:\Program Files\texlive,TeXworks 可以不装
VMware Workstation 密钥:MC60H-DWHD5-H80U9-6V85M-8280D
百度云管家 安装在 Sandboxie 内防止对主系统进行修改
夸克网盘 安装在 Sandboxie 内防止对主系统进行修改
火绒 虽然写在后面,这项最好要先装以防 Windows Defender 误删文件
原神 转移游戏本体的时候要注意本体文件内的 config.ini,启动器有时候是会删除这个文件导致无法读取的
铁道 同上,以及这种现象似乎主要发生在国服启动器内
  • 可选安装部分
程序 备注
Adobe Digital Editions
EarMaster Pro 7 以前购买的正版序列号:71009-40B97-TXMKA
renderBeamer 渲染农场试用
Ninja Ripper 3D 游戏的模型提取
WPS Office Microsoft Office 糟糕的 UI 绘制策略使得其运行速度缓慢,相较之下 WPS Office 的处理速度要快不少,但要注意其修改默认程序
ThunderMaster Palit 的显卡管理程序
FireStorm Zotac 的显卡管理程序

压缩包解压部分

  • 确定安装部分
程序 备注
Aegisub Daydream Cafe Edition 9215
AlphaROMdiE 绕过 Gal 的正版请求
Cheat Menu RPG 游戏的修改工具
DLsite 重命名工具
Edgeless Hub Win PE
kemono-dl
livedl
mpv-lazy 可以一键启用 RIFE 的插帧超分懒人播放器,GitHub 项目地址,下载 exe 本体安装包和 Mega 拓展包后合并使用
tsMuxeR
miflash unlock
v2rayN 和 nekoray 互换
Windows Update Blocker 简称 wub,备用
图吧工具箱 2023
鲁大师 5.21
小丸工具箱
日文乱码处理软件
  • 可选安装部分
程序 备注
baidupcs-go 设置系统 PATH 环境变量,修改下载路径 config set -savedir D:\Download
sd-webui-aki 百度网盘获取更新
sd-comfyui-aki 百度网盘或者夸克网盘获取更新,后者提取码 284q

破解版软件

程序 备注
3D LUT Creator v1.5.4,经测试在台式机上使用配置不相同的双显卡(4090+4070)的时候会报错,而双 4090 不会
Adobe 全家桶 Acrobat 在安装之后需要添加 winget pin 以阻止更新
ccleaner 解压版,同时用以安装和更新驱动
DiskGenius 单文件版
Duplicate Cleaner Pro v5.19.0
Internet Download Manager
Marvelous Designer 12 v7.2.209.43690 x64
RStudio 恢复文件的 RStudio
sublime text 用包内已经破解的 exe 替换原生 exe
Wolfram Mathematica

软件配置

包管理器 scoop 部分

exiftool

添加对图片右键后的 exiftool 菜单,单击既可直接在终端内显示图片的所有 exif 信息。

1
2
3
4
5
6
7
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\ExifTool]
"icon"="C:\\Users\\i\\scoop\\apps\\exiftool\\current\\exiftool(-k).exe"

[HKEY_CLASSES_ROOT\*\shell\ExifTool\command]
@="C:\\Users\\i\\scoop\\apps\\exiftool\\current\\exiftool(-k).exe "%1""

若报错则手动添加。

  1. HKEY_CLASSES_ROOT\*\shell\ 内新建项 ExifTool
  2. ExifTool 项内新建字符串 icon,值为 C:\Users\i\scoop\apps\exiftool\current\exiftool(-k).exe
  3. ExifTool 项内新建项 command
  4. 修改 command 项内的“默认”字符串值为 C:\Users\i\scoop\apps\exiftool\current\exiftool(-k).exe "%1"

frp-nssm

使用 nssm 添加并启用 frp 的客户端模式为系统服务。

1
2
3
4
5
6
7
8
9
10
nssm.exe install frpc "C:\Users\i\scoop\apps\frp\current\frpc.exe"

nssm.exe set frpc AppParameters "-c C:\Users\i\scoop\apps\frp\current\frpc.ini"
nssm.exe set frpc AppDirectory C:\Users\i\scoop\apps\frp\current
nssm.exe set frpc AppExit Default Restart
nssm.exe set frpc Description "A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet."
nssm.exe set frpc DisplayName frpc
nssm.exe set frpc ObjectName .\i "your-user-password"
nssm.exe set frpc Start SERVICE_AUTO_START
nssm.exe set frpc Type SERVICE_WIN32_OWN_PROCESS

python-nssm

使用 pip 安装 jupyter notebook。

1
pip install notebook

使用 nssm 添加并启用 jupyter notebook 为系统服务。

1
2
3
4
5
6
7
8
9
10
nssm.exe install notebook C:\Users\i\scoop\persist\python310\scripts\jupyter-notebook.exe

nssm.exe set notebook AppParameters "--ip 0.0.0.0 --no-browser --allow-root --notebook-dir=D:\\"
nssm.exe set notebook AppDirectory C:\Users\i\scoop\persist\python310\scripts
nssm.exe set notebook AppExit Default Restart
nssm.exe set notebook Description "The Jupyter Notebook is the original web application for creating and sharing computational documents. It offers a simple, streamlined, document-centric experience."
nssm.exe set notebook DisplayName "Jupyter Notebook"
nssm.exe set notebook ObjectName .\i "your-user-password"
nssm.exe set notebook Start SERVICE_AUTO_START
nssm.exe set notebook Type SERVICE_WIN32_OWN_PROCESS

之后 WSL-Ubuntu 的 PyTorch 中也会有 Jupyter Notebook,两者共存是没问题的:Windows 内的支持 Pandoc + TeX,而 WSL-Ubuntu 的就专心负责 PyTorch 的机器学习。

rclone

将备份的 rclone.conf 文件替换掉 C:\Users\i\scoop\apps\rclone\current 下的默认空 rclone.conf 文件。

blender-nssm

使用 nssm 添加并启用 blender 的命令行渲染为系统服务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
nssm.exe install render "C:\Users\i\scoop\apps\blender\current\blender.exe"

nssm.exe set render AppDirectory C:\Users\i\scoop\apps\blender\current
nssm.exe set render AppExit Default Exit
nssm.exe set render AppPriority REALTIME_PRIORITY_CLASS
nssm.exe set render AppStdout D:\blender-headless-rendering-output.log
nssm.exe set render AppStderr D:\blender-headless-rendering-output.log
nssm.exe set render AppRotateFiles 1
nssm.exe set render AppRotateOnline 1
nssm.exe set render AppRotateSeconds 86400
nssm.exe set render AppTimestampLog 1
nssm.exe set render Description "Set blender headless rendering as a service in Windows, which could also be used for remote rendering via SSH."
nssm.exe set render DisplayName "Blender Headless Rendering on Windows"
nssm.exe set render ObjectName .\i "your-user-password"
nssm.exe set render Start SERVICE_DEMAND_START
nssm.exe set render Type SERVICE_WIN32_OWN_PROCESS

设定渲染参数。

1
nssm.exe set render AppParameters '-b "D:\3DCG\test-project.blend" -o "D:\test-####" -E CYCLES -x 1 -F PNG -f 1230 -- --cycles-device OPTIX'

获取当前设定的渲染参数。

1
nssm.exe get render AppParameters

quickcpu-registry

对于台式机 + 13 代 CPU 的大小核架构,要调整到完全发挥性能是一件比较头疼的事情。

以下参考自二川二水的资料室的专栏文章《反驳关于英特尔大小核的一些传统看法&Windows大小核调度策略的注释》,提取了核心观点并进行了简单加工。

前提知识
  1. 微软自 Windows 10 起引入了大小核异构调度,Heterogeneous scheduling (big.LITTLE)。

  2. 大小核异构调度启用的前提条件:

    • CPU 本身拥有大小核。

    • CPU 本身全大核,但在注册表内手动指定一部分核心为小核。

  3. 大小核异构调度的启用状况:

    • 和大小核异构调度的变量 PpmHeteroPolicy 有关。

    • 电源策略中“生效的异类策略”(7f2f5cfa-f10c-4823-b5e1-e93ae85f46b5)与之完全等效。

    • 通常这个变量不会在注册表内编辑,而是直接在 QuickCPU 的电源计划内修改。

    • 这个变量的值决定了 Windows 系统是否会使用异构调度以及使用哪种异构调度。

      • 一共有五个值:

        • None (0):不使用异构调度。

        • Manual (1):手动指定使用核心的异构调度。

        • SmallOnly (2):只使用小核的异构调度。

        • LargeOnly (3):只使用大核的异构调度。

        • Dynamic (4):由系统决定使用哪种核心的异构调度。

  4. 启用由系统决定的异构调度 Dynamic (4) 时,可以调整的变量:

    1. KiDynamicHeteroCpuPolicyMask

      • 值代表了评判线程是否重要中有哪些考量标准。

      • 在电源策略中没有与之等效的修改项,因此只能添加注册表项。

      • 值为以下预备使用的若干个评判标准之和:

        • 前台状态:1

        • 优先度:2

        • 期望运行时间:4

    2. KiDefaultDynamicHeteroCpuPolicy

      • 值决定了异构调度中,非重要线程该使用哪种核心。

      • 在电源策略中没有与之等效的修改项,因此只能添加注册表项。

      • 一共有八个值:

        • All (0):所有核心可用。

        • Large (1):只有大核可用。

        • LargeOrIdle (2):大核或者闲置核心可用。

        • Small (3):小核可用。

        • SmallOrIdle (4):小核或者闲置核心可用。

        • Dynamic (5):根据优先级或者其他数据来决定。

        • BiasedSmall (6):根据优先级或者其他数据来决定,但是优先调用小核。

        • BiasedLarge (7):根据优先级或者其他数据来决定,但是优先调用大核。

    3. KiDynamicHeteroCpuPolicyImportant

      • 值决定了异构调度中,重要线程该使用哪种核心。

      • 电源策略中“异类线程调度策略”(93b8b6dc-0698-4d1c-9ee4-0644e900c85d)与之完全等效。

      • 和上个变量相同,一共有八个值。

    4. KiDynamicHeterCpuPolicyImportantShort

      • 值决定了异构调度中,重要线程但运行时间短该使用哪种核心。

      • 电源策略中“异类短运行线程调度策略”(bae08b81-2d5e-4688-ad6a-13243356654b)与之完全等效。

      • 和上个变量相同,一共有八个值。

    5. KiDynamicCpuPolicyExpectedRuntime

      • 值代表了评判运行线程短或长的标准。

      • 电源策略中“短与长时间运行线程阈值”(d92998c2-6a48-49ca-85d4-8cceec294570)与之完全等效。

      • 小于该值即为短运行线程,大于该值即为长运行线程。

      • 可以在十进制的 0-100000 之间随意指定,单位为微秒。

    6. KiDynamicHeteroCpuPolicyImportantPriority

    • 值代表了如果在变量 KiDynamicHeteroCpuPolicyMask 中有考虑优先度时,判断线程是否重要的标准。

    • 在电源策略中没有与之等效的修改项,因此只能添加注册表项。

    • 在考虑优先度的情况下,大于该值即立即判定为重要线程。

    • 可以在十进制的 1-31 之间随意指定。

变量 默认值
KiDynamicHeteroCpuPolicyMask 7
KiDefaultDynamicHeteroCpuPolicy Small (3)
KiDynamicHeteroCpuPolicyImportant LargeOrIdle (2)
KiDynamicHeterCpuPolicyImportantShort Small (3)
KiDynamicCpuPolicyExpectedRuntime 5,200 msec
KiDynamicHeteroCpuPolicyImportantPriority 8
正式修改

我们有两种选择:

  1. 直接弃用大小核异构调度。

  2. 全程手动修改异构调度的变量:将 KiDynamicHeteroCpuPolicyMask 修改为 6,从而不将前后台状态作为线程重要性的考量标准。

第一种选择对应的操作很简单:

  • 点击 QuickCPU 顶部的电源控制按钮,跳出单独的电源计划管理页面。

  • 进入左侧 Power Settings 的第二栏 Power plan management,启用末尾的电源计划“卓越性能”(e9a42b02-d5df-448d-aa00-03f14749eb61)。

  • 重命名为“卓越性能(无异构调度)”,此时 UUID 也会自动变化,可以防止电源计划的相互混淆。

  • 进入左侧 Power Settings 的第一栏 Power plan settings,修改“生效的异类策略”(7f2f5cfa-f10c-4823-b5e1-e93ae85f46b5)的外接供电和电池供电为使用异类策略 0 (0)

  • 关闭 QuickCPU 重启既可。

我们详细来叙述第二种对应的操作:

  1. 在 QuickCPU 中启用电源计划“卓越性能”(e9a42b02-d5df-448d-aa00-03f14749eb61),确保“生效的异类策略”(7f2f5cfa-f10c-4823-b5e1-e93ae85f46b5)的外接供电和电池供电为使用异类策略 4 (4)

  2. 在注册表 HKLM\System\CurrentControlSet\Control\Session Manager\Kernel 内新建项 KGroups,随后再在其内新建项 0000 代表的是使用的拥有大小核的单颗 CPU,若有多颗 CPU 则按顺序 01 等添加即可。

  3. 00 项下新建名为 SmallProcessorMask 的 DWORD 值。数值数据为十六进制下的 CPU 亲和掩码(Affinity mask)。这个掩码在二进制下为从左往后,以每个小核心的线程为 1,每个大核心的线程为 00 组成。之后将这个数字转为十六进制即可。比如:

    • i9-13900K,8 大核 16 小核 32 线程:

      • 二进制:11111111111111110000000000000000,16 位 1 + 16 位 0。

      • 十六进制:FFFF0000。

    • i7-12700K,8 大核 4 小核 20 线程:

      • 二进制:11110000000000000000,4 位 1 + 16 位 0。

      • 十六进制:F0000。

  4. 配置异构调度的六个变量:

    • 返回 KGroups 所在的 Kernel 添加变量与值,注意变量开头的 Ki 字母需要去除(以下示例中已去除 Ki)。

    • 添加 DynamicHeteroCpuPolicyMask 的 DWORD 值为 6。

    • 添加 DefaultDynamicHeteroCpuPolicy 的 DWORD 值为 3。

    • 添加 DynamicHeteroCpuPolicyImportant 的 DWORD 值为 2。

    • 添加 DynamicHeterCpuPolicyImportantShort 的 DWORD 值为 3。

    • 添加 DynamicCpuPolicyExpectedRuntime 的 DWORD 值为 5200(十进制)。

    • 添加 DynamicHeteroCpuPolicyImportantPriority 的 DWORD 值为 8。

因为有三个变量在电源策略类有完全等效的选项,保险起见,检查与之对应的三个电源策略使其保持一致。

  • 进入 QuickCPU 的电源计划。

  • 对应变量 KiDynamicHeteroCpuPolicyImportant,修改“异类线程调度策略”(93b8b6dc-0698-4d1c-9ee4-0644e900c85d)的外接供电和电池供电为“首选高性能处理器 (2)”。

  • 对应变量 KiDynamicHeterCpuPolicyImportantShort,修改“异类短运行线程调度策略”(bae08b81-2d5e-4688-ad6a-13243356654b)的外接供电和电池供电为“高效处理器 (3)”。

  • 对应变量 KiDynamicCpuPolicyExpectedRuntime,修改“短与长时间运行线程阈值”(d92998c2-6a48-49ca-85d4-8cceec294570)的外接供电和电池供电的值为“5200”。

注:

  • 以相同的方式,可以将 Intel 或 AMD 的非大小核 CPU 模拟为大小核 CPU 来使用。以笔记本的 AMD R7-5800H 为例,将 8 大核 16 线程模拟为 4 大核 4 小核 16 线程(注意因为是模拟小核,所以是双线程小核,而非 Intel 的单线程小核),CPU 的亲和掩码则为 1111111100000000,即 FF00。

  • 有兴趣的可以再核对一下微软的官方文档的 286-287 页,即第四章线程-线程调度-异构调度(大小核):Catlin, B., Hanrahan, J.E., Russinovich, M.E., Solomon, D.A. and Ionescu, A. (2017). Windows Internals, Part 1: System architecture, processes, threads, memory managment, and more. Redmond: Microsoft, pp. 286-287.

winaero-tweaker

这款程序能修改 Windows 的地方实在太多太多了,自己常用的几项如下:

  • Context Menu-File Hash Menu

  • Context Menu-Take Ownership

  • Context Menu-View Owner

  • File Explorer-Customize This PC Folders-Restore Windows 10 Folders

  • File Explorer-File Explorer Starting Folder-This PC

注:打开 Windows 11-Disable Bakcground Apps 会使更换锁屏壁纸的 Windows 聚焦无法正常使用。

包管理器 winget

winget pin

由于 winget 内的版本错误以及阻止 winget 对软件自动更新,为以下软件添加 winget pin。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
winget pin add Adobe.Acrobat.Reader.64-bit
winget pin add Mozilla.Firefox
winget pin add Google.Chrome
winget pin add Microsoft.Edge
winget pin add Mozilla.Thunderbird
winget pin add Telegram.TelegramDesktop
winget pin add Microsoft.PowerToys
winget pin add Discord.Discord
winget pin add Tonec.InternetDownloadManager
winget pin add Logitech.OptionsPlus
winget pin add Sogou.SogouInput
winget pin add Tencent.TencentMeeting
winget pin add Tencent.TIM
winget pin add Tencent.WeChat

DisplayCAL

由于 DisplayCAL 自 2019 年末的 v3.8.9.3 起已停止更新,其自动下载的 argyllcms 也一直是旧的 v2.3.1。

  • 如果先通过 scoop 安装 argyllcms,则在使用 winget 安装 DisplayCAL 时会自动调用 scoop 所安装的最新版的 argyllcms。

  • 如果 argyllcms 的安装在 DisplayCAL 之后,则需要为其手动指定 argyllcms 路径:点击文件-定位 ArgyllCMS 可执行文件,选择 C:\Users\i\scoop\apps\argyllcms\current\bin 路径即可。

不过在一些笔记本上最新版本的 argyllcms 会出现异常报错,此时将最新版本的 argyllcms 卸载后使用 DisplayCAL 自动下载的 v2.3.1 老版本即可正常运行校色。

Google Chrome

  • Chrome 的个人配置文件全部储存在 %LocalAppData%\Google\Chrome\User Data 文件夹内。新系统中恢复旧配置时,只需将新系统内的个人文件夹清空后,放入旧配置文件夹内的所有文件既可。

  • 账号是需要重新登陆的,不过扩展程序和其配置都会被保留。

Mozilla Firefox

  • Firefox 的个人配置文件全部储存在 %AppData%\Mozilla\Firefox\Profiles\arufwjt6.default-release 文件夹内,其中 arufwjt6 部分为每位用户特有的八位辨识码。新系统中恢复旧配置时,只需将新系统内的个人文件夹清空后,放入旧配置文件夹内的所有文件既可。注意别删除末尾不带 -release 的文件夹,以及最好清空放入而不是删除随后放入重命名后的文件夹,至少这样的一定不会报错的。

  • 颜色管理:

    • 打开 about:config,搜索框内搜索 color_management

    • gfx.color_management.mode 的值从 2 调整为 1,这样没有嵌入 tag 的图片也能按 sRGB 正常显示。

Mozilla Thunderbird

Thunderbird 和 Firefox 的逻辑完全一致,个人配置文件同样全部储存在 %AppData%\Thunderbird\Profiles\iriktu0w.default-release 文件夹内。恢复时的操作也都一致。

StartAllBack

修改如下:

  • “开始”菜单-启用

  • “开始”菜单-使用大图标-大

  • “开始”菜单-覆盖项目排序-无偏好

  • 资源管理器-使用 Win10 Ribbon UI

Windows 命令行

修改 Windows 默认动态端口

似乎安装的 Windows 还在使用旧版的动态端口 1025-20000,因此会造成开机时 nekoray 提示 2080 端口被占用。此时推荐根据新的 IANA 标准需要手动修改 Windows 内的动态端口为 49152-65535

1
2
3
4
5
6
7
8
9
PS C:\Users\i> sudo netsh int ipv4 set dynamicport tcp start=49152 num=16384
Ok.

PS C:\Users\i> netsh int ipv4 show dynamicport tcp

Protocol tcp Dynamic Port Range
---------------------------------
Start Port : 49152
Number of Ports : 16384

笔记本禁用 Modern Standby 睡眠模式

使用 powercfg /a 可以检查当前电脑的睡眠模式。

对于笔记本而言,存在一种由微软在 2018 年推出的名为 Modern Standby (S0ix) 的睡眠模式。这种睡眠模式在 powercfg /a 的名称为 “待机(S0 低电量待机)连接的网络”,原本是想模拟出类似手机锁屏但仍然可以接收消息的状态,但实际实现则非常非常糟糕,特别体现在合盖进入这种“睡眠”之后依旧有非常高的发热,耗电就不用说了,更要命的是很容易损伤屏幕等设备,从包里拿出机器都烫手得要命,要是更严重的情况下只能说后果不堪设想。

通常使用下面这行命令禁用 Modern Standby 睡眠模式。

1
sudo reg add HKLM\System\CurrentControlSet\Control\Power /v PlatformAoAcOverride /t REG_DWORD /d 0 

如果需要恢复,则使用以下命令。

1
sudo reg delete HKLM\System\CurrentControlSet\Control\Power /v PlatformAoAcOverride

WSL-Ubuntu 运行时报错

安装完成的 Ubuntu 运行时有可能出现类似以下的报错:

  • libcuda.so.1 is not a symbolic link

  • <3>WSL (11) ERROR: UtilTranslatePathList:2671: Failed to translate

第一个错误通常执行以下命令以排除报错。参考自 #5548

1
2
3
4
echo -e "[interop]\nappendWindowsPath = false" | sudo tee -a /etc/wsl.conf
sudo mkdir /usr/lib/wsl/lib2
sudo ln -s /usr/lib/wsl/lib/* /usr/lib/wsl/lib2
echo /usr/lib/wsl/lib2 | sudo tee /etc/ld.so.conf.d/ld.wsl.conf

第二个错误通常较少发生,以下命令为应急措施。参考自 #9360

1
echo -e "[interop]\nappendWindowsPath = false" | sudo tee -a /etc/wsl.conf

WSL-Ubuntu 在关闭终端后自动退出

可以在 Windows 主机上运行以下代码使 WSL-Ubuntu 持续在后台运行。

1
wsl screen

WSL-Ubuntu 无法连接 Windows 宿主机

  • 防火墙的问题。通常将当前网络从公有转为私有即可。

  • 以及要非常谨慎任何重置网络配置的操作。很有可能出现重置之后有些项目就非常再难以添加,从而无法回到重置之前,导致 WSL-Ubuntu 既连不上 Windows 宿主机也连不上外网。

安装与配置 PyTorch

由于在 Windows 内已经安装好 NVIDIA 的图形驱动的情况下,WSL2 的 Ubuntu 内无需另装驱动即可支持 nvidia-smi 命令显示 NVIDIA 界面,我们选择通过 NVIDIA Docker 的方式来安装 PyTorch。

安装 NVIDIA Docker

可以直接参考官网的安装步骤

NVIDIA Docker 实际上是通过安装原版 Docker + 添加 NVIDIA 配置部分实现的。

1
2
3
4
5
6
7
8
9
10
11
12
curl https://get.docker.com | sh 
&& sudo systemctl --now enable docker
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
安装并配置 PyTorch

NVIDIA 官方有提供 PyTorch 镜像目录,在 Tags 子页面中可以查看最新版本。

下载 PyTorch 的 Docker 镜像。

1
sudo docker pull nvcr.io/nvidia/pytorch:23.05-py3

为了方便使用 Jupyter Notebook,选择使用密码而非 token。首先在 Windows 内进入 Python 准备加密后的密码,以 test 四个字符作为密码为例,单引号引起的 argon2 开头的即是加密后的密码。

1
2
3
4
5
6
7
8
PS C:\Users\i> python.exe
Python 3.10.11 (tags/v3.10.11:7d4cc5a, Apr 5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from notebook.auth import passwd
>>> passwd()
Enter password:
Verify password:
'argon2:$argon2id$v=19$m=10240,t=10,p=8$hbTQHVdvX/CTnlXsEGhYWQ$fwr4JZrbRk7Iqz9bvkeooPiMVpQ9IYa0RYtkYOblgKw'

使用 Dockerfile 以修改原镜像。在 Dockerfile 内填入加密后的密码。

1
vi pytorch_dockerfile
1
2
3
4
5
6
7
8
9
10
11
# Start with the nvidia pytorch base image
FROM nvcr.io/nvidia/pytorch:23.05-py3

# Generate a jupyter notebook configuration file
RUN jupyter notebook --generate-config --allow-root

# Expose the port for jupyter notebook
EXPOSE 8888

# Set the command to start jupyter notebook
CMD ["jupyter", "notebook", "--notebook-dir=/workspace", "--ip", "0.0.0.0", "--no-browser", "--allow-root", "--NotebookApp.password='argon2:$argon2id$v=19$m=10240,t=10,p=8$hbTQHVdvX/CTnlXsEGhYWQ$fwr4JZrbRk7Iqz9bvkeooPiMVpQ9IYa0RYtkYOblgKw'"]

建立新镜像 my_pytorch:23.05-py3:

  • -t 为指定源 Docker 镜像,通常格式为 <name>:<version>

  • -f 为指定特定路径下的 Dockerfile 文件。

  • . 为指定建立该镜像所需要文件的目录。

1
sudo docker build -t my_pytorch:23.05-py3 -f pytorch_dockerfile .

通过新镜像建立带有指定密码的 PyTorch 容器:

  • --gpus all 使容器能访问所有的 GPU。

  • -ddetached,使容器运行在后台的分离模式。

  • --restart=unless-stopped 使 Docker 在 PyTorch 容器退出时自动重启容器,使其始终运行。

  • -p 8889:8888 将 Windows 主机的 8889 端口映射到容器的 8888 端口,这样可以通过直接通过 来访问 PyTorch 容器内的 Jupyter Notebook。不用主机的 8888 端口是因为其已经被主机的 Jupyter Notebook 使用了。

  • -v /mnt/d:/workspace 由于 Windows 的硬盘都被装载在 /mnt 目录下,此处将 Windows 的 D 盘映射为 PyTorch 容器内 Jupyter Notebook 的工作目录。

  • --ipc=host 设定容器的网络模式为 host,从而 PyTorch 容器内进程(如 Jupyter Notebook)可以和 Windows 主机内的所有进程进行通信。ipc 意为进程间通信。

  • --ulimit memlock=-1--ulimit stack=67108864 为 NVIDIA 官方推荐的 PyTorch 容器的资源限制量。

1
sudo docker run --gpus all -d --restart=unless-stopped -p 8889:8888 -v /mnt/d:/workspace --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 my_pytorch:23.05-py3

这样每次开机后,打开 WSL-Ubuntu 的终端,PyTorch 容器和其之内的 Jupyter Notebook 就会在后台运行,且不会受终端关闭的影响而关闭。

另附 Docker 常用命令少许:

1
2
3
4
5
6
7
8
9
10
11
12
13
sudo docker ps
sudo docker ps -a
sudo docker images

sudo docker rm 7036a89e0c13
sudo docker rmi e0064f8b7b5e
sudo docker system prune
sudo docker system prune -a

sudo docker stop 7036a89e0c13
sudo docker restart 7036a89e0c13

sudo docker exec -it 7036a89e0c13 sh

附录:scoop 常用命令介绍

对单个 bucket 的命令

列出所有 scoop 的官方 bucket。

1
2
3
4
5
6
7
8
9
10
11
scoop bucket known

main
extras
versions
nirsoft
php
nerd-fonts
nonportable
java
games

为 scoop 添加 bucket。这里的 main 为 scoop 的自带默认 bucket,个人不推荐添加维护和更新不一定稳定的非官方 bucket,在此就先略过。

1
scoop bucket add extra

删除该 bucket。

1
scoop bucket rm extra

对单个程序的命令

在 scoop 的官方 bucket 中搜索某个程序(例如 7zip),虽然通常更推荐使用 Scoop - A command-line installer for Windows

1
2
3
4
5
6
7
8
9
scoop search 7zip

'main' bucket:
7zip (21.07)
7zip19.00-helper (19.00)

'versions' bucket:
7zip-beta (21.07)
7zip-zstd (v21.03-v1.5.0-R2)

查看该程序在 scoop 上的各种信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
scoop info 7zip

Name : 7zip
Description : A multi-format file archiver with high compression ratios
Version : 21.07
Bucket : main
Website : https://www.7-zip.org
License : LGPL-2.1-or-later
Updated at : 2022/04/04 星期一 17:24:43
Updated by : Issac Lin
Installed : 21.07
Binaries : 7z.exe
Shortcuts : 7-Zip
Notes : Add 7-Zip as a context menu option by running: "<root>\install-context.reg"

安装该程序,偶尔有些程序会需要管理员权限才能完成安装,可以在用 scoop 安装 gsudo 之后使用 sudo 命令。

1
scoop install 7zip

可以通过强制更新这个操作来达到不卸载的情况下重装程序。

1
scoop update -f 7zip

卸载该程序,有时会出现程序安装出现报错的情况,最好先对不完全的安装进行卸载再重新安装。

1
scoop uninstall 7zip

不想升级该程序时,可以固定该程序的版本。

1
scoop hold 7zip

解除对该程序的版本固定。

1
scoop unhold 7zip

对 scoop 本体、bucket 和安装程序的命令

设置 scoop 的 HTTP 代理。

1
scoop config proxy 127.0.0.1:10809

解除 scoop 的 HTTP 代理。

1
scoop config rm proxy

列出所有使用 scoop 安装的程序。

1
scoop list

单独更新 scoop 自身和 bucket 信息。

1
2
3
4
5
6
7
scoop update

Updating Scoop...
Updating 'extras' bucket...
Updating 'main' bucket...
Updating 'versions' bucket...
Scoop was updated successfully!

通过和本地的 bucket 信息对比,检查当前使用 scoop 安装的程序是否需要更新并给出列表。

1
2
3
4
5
6
7
8
9
10
scoop status

Scoop is up to date.

Name Installed Version Latest Version Missing Dependencies Info
---- ----------------- -------------- -------------------- ----
nodejs 18.4.0 18.5.0
rstudio 2022.02.3-492 2022.07.0-548
vscode 1.68.1 1.69.0
windows-terminal 1.13.11431.0 1.14.1861.0

同时更新 scoop 自身、bucket 和所有程序。

1
scoop update *

清理 scoop 已更新程序的旧版本文件。

1
scoop cleanup *

清理 scoop 下载的程序安装包。

1
scoop cache rm *

检查 scoop 本体、bucket 和安装的程序是否有问题。

1
scoop checkup

如果是 Windows 11,通常此处会提示有两个潜在的问题,其中一个问题需要进入设置-系统-开发者选项并打开来解决;而另一个运行建议的命令就可以解决。

1
2
3
4
5
6
7
scoop checkup

WARN LongPaths support is not enabled.
You can enable it by running:
sudo Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1
(Requires 'sudo' command. Run 'scoop install sudo' if you don't have it.)
WARN Found 1 potential problem.

更详尽的说明

官方在 GitHub 的 Command 页面 里写得很不具体,对各项命令的使用方法都只是一笔带过。我个人比较推荐 @nimzo6689 在 Qiita 上写的这四篇文章,每个命令都附带有具体例子说明,很详尽。

全Scoopコマンド解説 その1 ~使用頻度(高)~

全Scoopコマンド解説 その2 ~使用頻度(中)~

全Scoopコマンド解説 その3 ~使用頻度(低)~

Scoop で利用できる Bucket の解説(scoop bucket known 限定)