Brandon's Blog

Brandon's Blog

Win11 + WSL2 安装美化与开发配置

246
2025-01-14
Win11 + WSL2 安装美化与开发配置

最近换了台新主机, 原本打算只是将 CPU 换成 AMD 9950X, 奈何主板太旧不支持, 那就顺便整机换了=.=

以前一段时间用的是双系统, 工作学习用Ubuntu Desktop, 娱乐休闲用 Win10, 但重启切换系统还是有成本的, 这次装了 Win11 并且 WSL2(Windows Subsystem for Linux) 也比较成熟了(底层使用的是真正的 Linux 内核, 而不是像 WSL1 那样使用翻译层将 Linux 系统调用转化成 Windows 系统调用), 所以日常学习开发直接可以直接在 WSL2 上进行.

每次重装完系统, 避免不了一大堆的个人偏好配置以及开发环境的搭建, 这里记录下我个人配置的一些东西.

系统安装篇

镜像下载

使用 AMD CPU 建议选择 Win11 24H2 版本, 该版本对 AMD CPU 有性能优化.

镜像安装

安装工具我是用 微PE工具箱 制作 U 盘启动盘, 通过 U 盘启动直接使用里面的安装工具即可.

安装过程中需要注意的点是, 有一步是需要输入微软账号才能继续往下走, 这时候可以拔掉网线, 退回上一步再点下一步就能跳过了.

激活

激活方法有很多种, 比如在某宝购买激活码, 但会有突然失效的风险; 也可以使用 KMS 工具激活, 但时效性只有半年, 每隔半年需要重置一次.

这里有两个 Github 上开源的工具:

驱动安装

建议是装完系统后, 根据主板以及 CPU 厂商, 到对应的官网下载驱动程序安装或更新驱动, 避免出现莫名奇妙的问题, 比如 AMD Zen3及之后的CPU核心切换和资源调度依赖AMD芯片组驱动, 因此必须安装.

具体教程我就不记录了, 挺简单的, 就是找到对应的驱动下载页面然后安装即可.

以微星主板以及 AMD CPU 为例:

其他

BIOS 更新

一般来说, 没什么大问题建议是不要动 BIOS, 最好就是装机时选择最新的稳定版安装后面就不要动了, 但有些特殊情况, 以 AMD 为例, AMD的新 CPU 依赖新的 AGSA 底层代码, 这些代码可以提升 AMD CPU 的性能和易用性, 比如内存性能和开机速度, 核心延迟等:

注意: 更新 BIOS 时, 需要先将 BIOS 还原到出厂设置, 否则容易变砖头.

内存以及 CPU 超频

现在的内存条一般都是高频的, 比如我使用的芝奇 DDR5 6400MHz, 但是主板的初始配置可能并不会按照这个频率给到这么高, 因为并不是所有的内存条都是高频的, 所以会给到一个保守的配置, 所以这时候需要手动到主板启用 XMP 或者 EXPO, 前者是针对 Intel 的, 后者是 AMD 的, 所以在选购内存条的时候, 注意搭配, 但是有些体质好的内存条, 在 AMD 平台下使用 XMP 依然能够稳定运行.

查看内存超频是否成功可以通过任务管理器, 选择性能 -> 内存查看, 在速度那一栏, 如果看到是配置 XMP 或者 EXPO 的频率, 那就是成功了:

至于 CPU 超频, 个人调研下来还是不推荐, 复杂度大且不稳定, 提升也并不是很高, 出厂预置的睿频就已经够用了, 有兴趣的可以去了解下 PBO 或者 PBO2.

系统设置

个性化与美化

展示一下最终效果:

俗话说, 美化的尽头是默认. 这玩意比较主观, 所以喜欢就好, 不必纠结太多.

一些零碎的设置(比如开始菜单广告/小组件)网上有很多教程了, 大部分设置集中在个性化隐私和安全性.

网上也有很多教程, 大部分都是需要额外安装工具的, 比如 Dock, 主题改 Mac 等.

  • 任务栏透明: TranslucentTB, 在 Mirosoft Store 搜索就有

    • 改成透明后, 如果是深色的壁纸, 任务栏右下角的字体是黑色会导致看不清楚, 这时候可以修改成白色, 修建一个 txt 文本文档, 写入如下内容保存然后修改文件后缀为 .reg 并运行:

      • Windows Registry Editor Version 5.00
        ​
        [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize]
        "ColorPrevalence"=dword:00000002
      • 如果需要改回黑色将 2 改成 0 即可

  • 壁纸:

  • Dock

VBS 与 HVCI

关于这两玩意是啥: 内存完整性和 VBS 启用

这两个设置用在安全性方面的, 有测评显示关闭这两个能提升游戏性能, 但个人不推荐进行更改, 网上的教程基本是很暴力地直接关闭 Hyper-V, 这会导致 wsl 用不了, 配置高的电脑完全可以忽略这两个设置.

其他

Windows11 轻松设置

这是一个小工具, 里面可以有一些常用的设置, 还能禁用 Windows Defender.

开发篇

WSL2 使用

安装: 如何使用 WSL 在 Windows 上安装 Linux

在 Win11 上使用最新的 WSL2, 不需要在控制面板 - 程序 - 启用或关闭 Windows 功能中进行手动设置了, 安装子系统时会自动检测并开启必要的配置.

常用命令

  • 进入子系统 wsl ~

    • 如果子系统处于 Stopped 状态, 则会启动子系统

    • --user 或者 -u 可指定登录用户

    • ~ 是为了登录进去后在用户目录下

  • 查看可安装的子系统: wsl -l -o

  • 安装指定版本的子系统: wsl --install -d <Distribution Name --web-download

    • --web-download 是为了从 Internet 而不是 Microsoft Store 下载分发版.

    • 在 2.4+ 版本后, 支持 --name 指定名字以及 --location 参数指定安装目录

  • 查看已安装的子系统: wsl -l -v

  • 停止运行某个子系统: wsl --terminate <Distro>

  • 指定默认子系统: wsl --set-default <Distro>

  • 卸载某个子系统: wsl --unregister <Distro>

  • 将子系统移动到其他盘: wsl --manage <Distro> --move <Location>

  • 更新 wsl: wsl --update

    • --pre-release 可更新到预览版

  • 更多命令通过 wsl --help 查看

管理工具

GUI 管理工具: wsl2-distro-manager

  • 通过该工具移动系统目录后, 默认的登录用户会变成 root, 如需更换, 执行 ubuntu2404 config --default-user Username

    • ubuntu2404 其实是对应了 ubuntu2404.exe, 在安装完子系统后会有对应的命令

其他设置与优化

设置默认登陆用户 ubuntu2404 config --default-user Username

ubuntu2404 对应 ubuntu2404.exe, 在安装完子系统后会有对应的命令.

WSL 高级配置

可以通过 .wslconfig (放在用户根目录下)进行一些全局配置, 但是在开始菜单中搜索 WSL, 可以直接打开 WSL Setting 界面进行设置.

  • networkingMode 可以设置为 mirrored, 启用镜像网络模式, 与主机共享 ip.

  • sparseVhd 设为 true 让 wsl 空闲时候整理回收磁盘空间, 默认 vhdx是不会自动回收的.

  • autoMemoryReclaim gradual 空闲时缓慢释放内存,机器物理内存不大的可以设置 dropcache 即可释放,你要是内存大可以不设置或者配合 memory 限制即可

这是我的 .wslconfig 配置:

[experimental]
autoMemoryReclaim=gradual
sparseVhd=true
networkingMode=mirrored
[wsl2]
swap=0

WSL Linux 开发环境配置

换源

/etc/apt/sources.list.d/ubuntu.sources 中的内如替换为如下:

Types: deb
URIs: http://mirrors.aliyun.com/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

通过 SDK Man 管理 JDK 以及其他工具

详细使用方法查看官网: Usage

安装:

curl -s https://get.sdkman.io | bash

安装完后需要新开一个 Shell 才能使用, 如需在当前 Shell 使用, 执行:

/root/.sdkman/bin/sdkman-init.sh

安装 JDK 以及 Maven:

sdk install java ${JAVA_VERSION}
sdk install maven ${MAVEN_VERSION}
  • 默认的安装目录是 /root/.sdkman/candidates/<candidate>/<version>

  • 如果是第一个安装的 candidate, 会被设置为 default.

  • 会自动设置 candidate home, 比如安装了 JDK, 会设置 JAVA_HOME(需要新起一个 Shell 生效)

常用命令:

# 查看可安装的 candidates 版本:
sdk list <candidates>
​
# 安装
sdk install <candidates> <version>
​
# 当前 shell 环境使用某个版本
sdk use <candidates> <version>
​
# 设置全局默认版本
sdk default <candidates> <version>
​
# 查看当前使用的版本
sdk current <candidates>
​
# 查看 candidates home 目录
sdk home <candidates> <version>

env 命令

另外 SDK Man 还提供了一个 env 命令, 用于识别项目根目录下的 .sdkmanrc 文件中定义的 candidates 版本从而切换到不同项目只需要执行 env 命令即可统一版本.

在项目根路径下执行 sdk env init, 生成 .sdkmanrc 文件, 内容大致如下:

# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=21.0.4-tem

使用:

# 使用 .sdkmanrc 定义的版本
sdk env
​
# 还原
sdk env clear
​
# 安装
sdk env install

WSL2 + Jetbrains IDEA 开发

探索下来, 结合 WSL2 开发有四种方法:

  • IDEA WSL 集成: IDEA 在打开或创建项目时能检测到 wsl, 会看到 \\wsl$ 开头的路径.

    • 注意 JDK 需要选中 wsl 中安装的.

    • 运行时也是在 wsl 中运行.

  • 基于 WSL 的远程开发: 在远程开发中也可以看到与 wsl 的集成, 下载 IDEA 到 wsl 中再通过本地 Jetbrains Client 连接过去.

  • 在 wsl 中安装 Jetbrains 全家桶(Toolbox): 需要开启 GUI(wslg) 的支持, win11 最新安装的 wsl2 默认开启了 GUI 的支持.

    • 如果打开 Toolbox 报了这个错: dlopen(): error loading libfuse.so.2, 执行一下: sudo apt install libfuse2 就可以了.

    • 用久了会卡

  • 在本地编辑代码, 但 run 在 wsl2 环境中: 原理是使用在 wsl 中挂载的本地目录.

    • 相对于上面三种方式, 这种方式的代码仓库是在宿主机上

Docker

Docker 这里我选择使用 Docker Desktop 并启用 WSL 集成, 当然另外一个选择是直接在 WSL 子系统中安装 Docker Engine, 但考虑到我可能会频繁安装卸载 WSL(问就是喜欢折腾...), Docker Desktop 带来的好处就是它是一个单独的 WSL, 不会因为我卸载了开发用的 Ubuntu WSL 而废掉, 同时在 Windows 以及 WSL 里面都能用.

如果安装了多了 WSL 并且都需要 Docker, 可以在 Docker 设置中的 Resources -> WSL integration 中启用, 这样 Docker 会以挂载的形式集成到 WSL 中.

终端美化

终端模拟器有很多, 比如比较受欢迎的 Tabby, 结合了现代 AI 技术的 Warp, 但 win11 自带了 Windows Terminal, 对我个人而言已经够用了. Shell: zsh (配置: oh-my-zsh, 美化: Starship)

安装 zsh 与 oh-my-zsh

zsh 是一个强大的 shell, 但配置较为繁琐, 而 oh-my-zsh 是一个已经调优好的 zsh 配置, 开箱即用.

apt install -y zsh
chsh -s /bin/zsh

需要起一个新的 shell 才能生效

一键安装 oh-my-zsh(下载失败则需要代理😜):

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

没有代理可以使用其他镜像安装, 比如清华大学镜像:

git clone https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git
cd ohmyzsh/tools
REMOTE=https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git sh install.sh

安装 Starship

虽然 oh-my-zsh 预设了一些主题, 而 Starship 是另外一种主题方案, 提供了了轻量、迅速、客制化的高颜值终端.

前置要求:

一键安装:

curl -sS https://starship.rs/install.sh | sh

~/.zshrc 的最后添加 eval "$(starship init zsh)" 或者在 plugin 中添加 starship 生效.

前往预设查看心仪的主题并启用, 比如:

starship preset gruvbox-rainbow -o ~/.config/starship.toml

oh-my-zsh 插件

更多官方插件: https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins

插件添加方式很简单, 将插件添加到 .zshrc 的 plugins 中, 例如下面是一些常规插件:

plugins=(
  git
  docker
  mvn
  history-substring-search
  extract
  ......
)

zsh-autosuggestions: 根据命令历史记录提示命令, 按右方向键 补全.

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

zsh-syntax-highlighting: 语法高亮

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

更多有趣插件:

终端字体颜色

颜色推荐: #00FF00

一般来说, 终端模拟器都会提供配色方案配置, 以 Windows Terminal, 将前景颜色改为 #00FF00:

效果图:

其他

修改 ls 输出颜色

可以通过修改 LS_COLORS 变量: changing the directory colour in a ls command

也可以通过替换 ls 命令, 比如使用 lsd 或者eza