WSL
安装
wsl --install
这会默认安装 Ubuntu
,可以参照官网介绍(https://learn.microsoft.com/zh-cn/windows/wsl/install#change-the-default-linux-distribution-installed)安装其他发行版
安装完成后重启电脑,在开始菜单中打开 Ubuntu
,打开后根据提示输入用户名和密码创建默认管理员用户。
第一次进入窗口可能会提示如下信息(如果没遇到这个信息可以跳过这一步):
The WSL optional component is not enabled. Please enable it and try again.
See https://aka.ms/wslinstall for details.
Error: 0x8007007e
Press any key to continue...
打开控制面板 ===> 程序 ===> 启用或关闭windows 功能,
系统为64位的 需要勾选 适用于 Linux
的 windows
子系统 、Hyper-v
系统为32位的 需要勾选 适用于 Linux
的 windows
子系统 、虚拟机平台
完成上面设置之后重启电脑即可
升级命令包
WSL
默认的软件源列表(/etc/apt/sources.list
)可能未更新,导致无法找到最新版本的软件包。
许多工具(如 mininet
、wireshark
)位于 Ubuntu
的 Universe
或 Multiverse
仓库中,但 WSL
默认可能未启用这些仓库。启用 Universe
/Multiverse
仓库:
sudo apt update && sudo apt upgrade
sudo add-apt-repository universe
sudo add-apt-repository multiverse
配置命令行 zsh
理想当中的命令行:
- 好看(配色、字体可以自由设定);
- 支持 UTF-8 字符的输入与显示;
- 支持常见的 *NIX 命令行工具(cat、grep、awk 等);
- 自动补全、语法高亮、历史记录;
- 完善的复制粘贴支持;
- 互操作性(共享文件系统、网络栈,可调用 Win32 程序);
- 支持常用的脚本语言(PHP、Python、Node.js 等);
- 包管理器,以及其他各种常用软件的支持;
- 快速呼出(快捷键、右键菜单入口)。
安装 zsh:
sudo apt install zsh
设置 zsh 为默认命令行:
chsh -s $(which zsh)
运行后需要输入密码,之后重启终端即可看到设置生效了,也可以通过 echo $SHELL
命令查看当前命令行是否是 /bin/zsh
zsh 配置 Proxy(不在国内可以跳过)
注意:它仅仅只用来配置 zsh,安装了 oh-my-zsh 后就会失效,因为
~/.zshrc
会被覆盖。
如果遇到:「wsl: 检测到 localhost
代理配置,但未镜像到 WSL。
NAT 模式下的 WSL 不支持 localhost
代理。」,
可以在 C:\Users\[username]
目录下创建 .wslconfig
文件,写入:
[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
然后在 PowerShell 中用 wsl --shutdown
命令关闭 WSL
,再重启终端。
WSL2
的网络是连接自 Windows
的一个单独网络,所以无法直接使用到 Windows
中开启的代理,但是可以通过设置代理为 Windows IP
+ 代理端口号实现
首先在代理软件中开启「允许来至局域网的连接」
「本机 sockets
端口」对应的端口号也就是 Windows
代理的端口号,而一般我们在 Clash
中使用的 http
端口号,则为 sockets
端口 + 1。
假设我们用到的是 9090
.
Windows IP
地址是可能变化的,可以利用上面提到的 WSL
网络连接自 Windows
这一点,从 /etc/resolv.conf
文件中自动获取
之后通过 code ~/.zshrc
或 vim ~/.zshrc
在 zsh 配置中添加:
host_ip=$(cat /etc/resolv.conf | grep "nameserver" | cut -f 2 -d " ")
proxy_port=10809
alias proxy="all_proxy=http://$host_ip:$proxy_port"
运行
source ~/.zshrc
让配置生效,之后运行:
curl www.google.com # 失败
proxy curl www.google.com # 成功
你可以看到,当我们在 curl
请求命令前增加 proxy
,这就意味着我们使用了 windows
代理进行了访问。随后的 oh-my-zsh
的安装就说明了这一点。
如果还是无法正常使用代理,可能是因为防火墙的原因,可以在 Windows 命令行中以管理员身份执行:
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
防火墙设置如果遇到:「New-NetFirewallRule : The specified interface was not found on the system.」,需要将命令中的 vEthernet (WSL)
替换为「Windows Defender 防火墙属性 -> 公用配置文件 -> 受保护的网络连接-自定义」中实际的 vEthernet-WSL
名称
配置 oh-my-zsh
运行命令安装 oh-my-zsh
proxy curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
随后安装:
- zsh-syntax-highlighting:提供语法高亮功能
- zsh-autosuggestions:根据历史命令提供建议
运行:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
随后在 ~/.zshrc
中,修改主题和插件:
plugins=(
git
sudo
z
zsh-autosuggestions
zsh-syntax-highlighting)
ZSH_THEME="agnoster"
配置 Git
注意,以下两种方法,二选一即可。
通过共享 Windows 的信息
通过在 Windows 命令提示符或 PowerShell 中运行以下命令,在 Windows 上配置凭据管理器:
git config --global credential.helper wincred
配置 WSL 以使用相同的凭据帮助程序,在 WSL 终端中运行以下命令(假设您有git>= v2.39.0):
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe"
(exe 路径可能需要修改)
要了解以前版本的路径 git,请参考 https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-git
通过设置 SSH
将 Git 更新至适合 WSL 的最新稳定版本。
sudo apt-get install git
设置用户名 (Github ID)
git config --global user.name "your_name"
设置邮箱 (Github email)
git config --global user.email "your_email"
在 WSL 下生成 SSH 公钥—私钥对(将邮箱替换为你的邮箱),此时生成的 SSH 密钥默认位于 ~/.ssh
路径下,公钥为 id_rsa.pub
,私钥为 id_rsa
执行完后只需一路回车即可
ssh-keygen -t rsa -b 4096 -C "your_email"
打开 ssh-agent
使之在后台运行
eval "$(ssh-agent -s)"
将私钥添加到 ssh-agent
之中
ssh-add ~/.ssh/id_rsa
查看并复制公钥
cat ~/.ssh/id_rsa.pub
将复制的公钥信息添加到 Github/Gitee
Clion 初始化
C++
一般是用在 linux
下,这里就用 Ubuntu
进行开发,考虑到 window
系统,这里准备用 wsl2
.
首先请必须先行完成上述配置后,再进行 Clion 和 WSL 的结合开发。
运行命令,安装必备的工具链(直接从 CS144 的课程里面扒下来的,反正迟早都得安装 0.0):
apt-get install g++ git clang-tidy clang-format libpcap-dev \
iptables mininet tcpdump telnet wireshark socat netcat-openbsd \
doxygen graphviz cmake gdb gcc clang
安装完毕后,我们打开 Clion,进入
Settings –> Build, Execution, Deployment –> Toolchains. 点击 add
之后,Clion 会识别到你刚刚安装好的各种工具,如图所示,就算是成功了。
这样相关的文件就是 Ubuntu 中,此时编译如果 cmake 版本过低, Clion 会有提示,可以根据提示修改 CMakeLists.txt 中最底的版本,一个建议为:
cmake_minimum_required(VERSION 3.22)
之后我们来到
Settings –> Tools –> Terminal
修改 Shell path:
替换默认的 PowerShell 路径为 WSL 的 Bash 路径为 C:\Windows\System32\wsl.exe
点击 Apply → OK。
这些步骤完成后,最好是新建一个 Clion 的 Hello, world! 项目,来验证自己的工具是否完成。
Windows
MacOS
关于 WSL 的介绍
WSL(Windows Subsystem for Linux) 是微软为 Windows 系统提供的一种兼容层技术,允许用户在 Windows 上直接运行原生 Linux 二进制文件(无需传统虚拟机或双系统)。以下是 WSL、虚拟机(如 VMware/VirtualBox)和原生双系统的核心区别:
1. WSL(Windows Subsystem for Linux)
核心特点
- 轻量级:
通过子系统(非虚拟化)直接调用 Linux 内核接口(WSL2 基于轻量级 Hyper-V 虚拟化),资源占用低。 - 无缝集成:
- 可直接访问 Windows 文件系统(如
/mnt/c
对应C:
盘)。 - 支持在 Windows 终端中运行 Linux 命令,甚至混合使用(如
ls | clip.exe
)。
- 可直接访问 Windows 文件系统(如
- 性能:
- 文件系统性能:WSL2 的 Linux 文件系统性能接近原生,但 Windows 文件系统的跨系统访问较慢。
- 计算密集型任务(如编译):性能接近原生 Linux。
- 适用场景:
- 开发者需要 Linux 工具链(如
gcc
、python
)。 - 轻量级 Linux 环境测试或学习 Shell 脚本。
- 开发者需要 Linux 工具链(如
2. 虚拟机(VMware/VirtualBox/Hyper-V)
核心特点
- 完全隔离:
通过 Hypervisor 虚拟化硬件,运行完整的独立操作系统(包括内核),与宿主机完全隔离。 - 资源占用高:
需要分配固定内存、CPU 和磁盘空间,运行时会占用较多资源。 - 灵活性:
- 可安装任意操作系统(如 macOS、BSD)和发行版。
- 支持快照、克隆等高级功能。
- 性能损失:
虚拟化层导致计算和 I/O 性能有约 10-20% 的损失(尤其是图形密集型任务)。 - 适用场景:
- 需要完整 Linux 桌面环境(如 GNOME/KDE)。
- 多系统兼容性测试或运行 Windows 不支持的软件(如旧版 macOS)。
3. 原生双系统(Windows + Linux)
核心特点
- 独立运行:
通过分区安装两个系统,每次启动需选择进入 Windows 或 Linux。 - 性能最优:
直接使用硬件资源,无虚拟化或兼容层开销,适合高性能需求(如游戏、科学计算)。 - 无互操作性:
- 无法同时运行两个系统,文件系统默认不互通(需手动挂载分区)。
- 硬件资源(如 GPU)独占使用。
- 适用场景:
- 需要最大化 Linux 性能(如深度学习、渲染)。
- 长期专注于 Linux 开发或生产环境。
三者的对比总结
维度 | WSL | 虚拟机 | 原生双系统 |
---|---|---|---|
性能 | 接近原生(计算任务) | 有虚拟化损失 | 原生性能 |
资源占用 | 低(仅需少量内存) | 高(需预分配资源) | 独占硬件 |
启动速度 | 秒级启动 | 分钟级启动 | 依赖硬件启动速度 |
系统隔离 | 部分隔离(共享内核或轻量虚拟化) | 完全隔离 | 完全独立 |
文件互操作 | 直接访问双方文件系统 | 需共享文件夹或网络传输 | 需手动挂载分区 |
适用场景 | 开发、轻量级 Linux 任务 | 多系统测试、完整 Linux 桌面 | 高性能需求、长期 Linux 工作 |
选择建议
- 日常开发/学习 Linux:优先选择 WSL(快速、轻便)。
- 多系统兼容性测试:使用 虚拟机(灵活、安全)。
- 高性能计算/游戏:安装 原生双系统(资源独占、无性能损失)。
- 图形化 Linux 需求:虚拟机或双系统(WSL 对 GUI 支持有限,需额外配置)。
通过理解这些差异,可以根据需求选择最适合的方案。