在 Windows 11 下启用 BBR v2
BBR 是 Google 开发的 TCP 拥塞控制算法。它改善了传统拥塞控制算法(如 CUBIC)一丢包就降速的缺点,让带宽利用率在高丢包环境下大幅提升。
需要注意,拥塞控制算法控制的是发包速度。如 Google 服务器开启了 BBR,其上传速度将尽可能占满用户带宽;在用户的角度看来,则体验到了更快的下载速度。
如果是 Windows 11 22H2 以上版本,Microsoft 也添加了 BBRv2 的支持。
打开 PowerShell(管理员),先查看一下当前的拥塞控制算法:
NetTCPSetting | Select SettingName, CongestionProvider |
然后开启 BBRv2:
netsh int tcp set supplemental template=Internet congestionprovider=BBR2 |
无需重启系统,可再次查看一下当前的拥塞控制算法,确认是否开启成功。
更新:在新版 Windows 11 下,启用 BBR v2 可能会造成本地 TCP 连接无法使用(如导致 adb 卡住无法连接等),此时可以用以下命令还原拥塞控制算法
netsh int tcp set supplemental template=Internet congestionprovider=CUBIC |
还原后无需重启,故障应立即消失。可以在下次需要加速上传时再临时开启 BBR。
可能还会有以下问题:
- win11(22621.1778)下开启BBRv2会导致hyper-v不能连接。
- 开启BBRv2同样会导致使用frp/v2ray-core端口映射的rdp(远程桌面)无法连接。 具体为将内网主机3389映射到服务器,但是开启BBRv2后就一直卡在”加密连接”阶段。
- 使用 clash verge ,选择订阅后,无法加载代理节点。
以上问题需要将template=Internet的拥塞控制算法:恢复为CUBIC
netsh int tcp set supplemental template=Internet congestionprovider=CUBIC |
Windows 下使用 Nushell 替代 PowerShell
Nushell 是一个现代的命令行工具,它具有易用、高效、灵活和强大的功能。
sharship 是一个快速、现代的 shell 提示工具,它具有易用、高效、灵活和强大的功能。
以上二进制文件我都是下载的便携版,也可以用 winget进行包管理,例如安装 Nushell:
winget install Nushell |
Nushell 的默认配置文件目录为 %APPDATA%/nushell
,但可通过设置环境变量 XDG_CONFIG_HOME
来改变。 我偏好将配置文件集中到 ~/.config 并通过 Git 管理,所以将 XDG_CONFIG_HOME
设置为 %USERPROFILE%/.config
。 Nushell 的配置文件路径可通过 $nu.config-path
确定:
> $nu.config-path |
设置您的 shell 以使用 Starship:
starship init nu | save -f ~/.config/nushell/starship.nu |
然后在你的 Nushell 配置文件的最后(使用 $nu.config-path
来获取它的路径),添加以下内容:
use ~/.config/starship/starship.nu |
设置下 Starship 的默认配置路径,添加环境变量 STARSHIP_CONFIG
,设置为 %USERPROFILE%\.config\starship\starship.toml
。
如何关闭文件类型发现功能提高文件管理器加载速度
文件管理器加载缓慢的“罪魁祸首”是文件类型自动发现功能;
如果某个文件夹下包含大量文件,那么文件类型自动发现会试图分析该文件夹下的内容,判定该文件夹下文件内容类型,例如图片、音乐、文档,然后优化显示文件夹视图。虽然这对某些文件夹很有帮助,但对于文件数量较多的文件夹,它可能会大大降低加载速度。PowerShell
执行:
Set-ItemProperty 'HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell' -Name FolderType -Value NotSpecified -Force |
开启系统代理之后,Microsoft Store 等 UWP 应用无法联网
解决方法:
以管理员方式打开 Powershell,输入以下命令
foreach ($n in (get-appxpackage).packagefamilyname) {checknetisolation loopbackexempt -a -n="$n"} |
等待执行完毕,具体可参考这个 issues
WIN11系统下让所有程序都默认以管理员身份运行
win + r
运行secpol.msc
打开[本地安全策略]展开本地策略,选择[安全选项],在右边找到[用户帐户控制:以管理员批准模式运行所有管理员],双击它,将本地安全设置更改为已禁用
重启后生效
替换系统自带的记事本
使用系统管理员身份打开命令提示符执行命令
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v "Debugger" /t REG_SZ /d "\"C:\Program Files\APPS\Sublime Text\sublime_text.exe\" -notepadStyleCmdline -z" /f |
恢复更改
reg delete "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v "Debugger" /f |
WSL
不受上述更改影响,执行 notepad.exe 仍打开系统自带记事本
WSL
可添加 shell 脚本,用 sublime_text.exe
打开文本
|
然后再 .zshrc
新增一条 alias :
alias sub='~/.config/sublime-text.sh' |
WSL2 固定静态IP
基于该 issuecomment 的思路,实现静态IP的方案;
在 WSL2 Linux中创建一个脚本文件
vim $HOME/.config/static-ip.sh
static-ip.sh
/mnt/c/WINDOWS/system32/netsh.exe interface ip show addresses "vEthernet (WSL)" | /mnt/c/WINDOWS/system32/findstr.exe /C:"172.18.18.1" > /dev/null
if [ $? == 1 ]; then
/mnt/c/WINDOWS/system32/netsh.exe interface ip add address "vEthernet (WSL)" address=172.18.18.1/24
fi
ip addr show eth0 | grep -s "172.18.18.100/24" > /dev/null
if [ $? == 1 ]; then
ip addr add 172.18.18.100/24 broadcast 172.18.18.255 dev eth0 label eth0:1
fi注意这段脚本给 Windows 端的
vEthernet (WSL)
添加IPv4172.18.18.1
,给 Linux 端的eth0
添加IPv4172.18.18.1
;在使用前,请按需调整网络接口的名称和IP地址在 WSL2 启动的时候执行该脚本
vim /etc/profile
添加以下内容:使用静态IP
- Windows 端静态IP
172.18.18.1
- WSL2 Linux 端静态IP
172.18.18.100
- Windows 端静态IP
常见问题
win11 能够 ping 通 wsl2,但是 wsl2 无法 ping 通 win11;经分析主要是 win11 防火墙的原因;可在 win11 中 执行如下命令(管理员运行 powershell 或 cmd ):New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
释放 WSL 占用的硬盘空间
WSL
使用虚拟硬盘(VHD)存储 linux 下的文件,随着Linux下文件越来越多,占用空间也会不断增长,不过有个最大限制 256G。但是,在 Linux 中减少文件占用,WSL 却没有相应的减少硬盘空间的占用。所以为了避免碰到 256G 的限制,或者硬盘空间告警,在删除掉 linux 下的文件后,我们需要手动释放这部分空间;
- 要找到使用的的vhd文件路径
- 打开
PowerShell
, 执行以下命令:
wsl --shutdown |
WSL2 Input/output error
解决方案 1: 重启 wsl
wsl --shutdown |
解决方案 2: 重新挂载 C 盘
sudo umount /mnt/c |
禁止指定程序联网
使用命令行建立防火墙规则,以禁止 STC-ISP 联网为例:
netsh advfirewall firewall add rule name="stc-isp-15xx-v6.86_NewLogo" dir=out program="C:\Users\Administrator\Desktop\stc-isp-15xx-v6.86_NewLogo.exe" action=block |
恢复允许联网:
netsh advfirewall firewall set rule name="stc-isp-15xx-v6.86_NewLogo" new enable=no |
回车确定后立即生效;
在控制面板 -> windows 防火墙 -> 高级设置 -> 出站设置
里就出现了这条新增项目
Chrome(CentBrowser)平滑滚动设置
一直以来对 Microsoft EDGE 的平滑滚动的效果很羡慕,而 Chrome 的 Smooth Scrolling 太糟糕,研究了几天,经过摸索终于发现了其实 Chrome(CentBrowser)也有这个设置,只是默认没有开启罢了。在 chrome://flags
中将
- Impulse-style scroll animations
- Percent-based Scrolling
这两个设置成 Enable
就行了,比任何插件都要好用,原生支持!
Smooth Scrolling
还是 Default 就行,不需要修改
开启浏览器多线程下载选项
尽管没有 IDM
等专门的下载软件那么专业强大,但在开启多线程下载选项之后,只要服务器支持多线程,那么直接使用浏览器下载文件就能获得比原先更快的速度
地址栏输入并回车:
chrome://flags/#enable-parallel-downloading |
然后你就能看到如下图所示,只需将默认的 Default 改成 Enabled 即可!然后点击 Relaunch 重启浏览器,多线程下载的选项就生效了,这时就可以找个文件去试试速度了
地址栏输入并回车:
edge://flags/#enable-parallel-downloading |
然后你就能看到如下图所示,只需将默认的 Default 改成 Enabled 即可!然后点击 Relaunch 重启浏览器,多线程下载的选项就生效了,这时就可以找个文件去试试速度了
浏览器开启终极黑暗模式
- Dark Reader
- Midnight Lizard
- 浏览器地址栏输入
edge://flags
orchrome://flags
- 使用最上方的搜索关键字
dark
,将 Auto Dark Mode for Web Contents 选项设置为Enabled with selective inversion of non-image elements
,也可以尝试其他选项 - 重启浏览器,即可。
配置 WSL2 使用代理上网
将宿主机的代理共享给这个局域网下的其他设备,以 Clash 为例,打开 Allow LAN
选项
WSL2 下操作:
## 获取主机 IP |
简化上述设置,在 ~/.zshrc 中添加的以下配置
export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*') |
如果wsl连接不到主机(ping不通的话),直接放开 vEthernet (WSL)
这张网卡的防火墙,在 powershell 上执行:
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow |