1. Win10自带Ubuntu子系统安装指南作为在Windows环境下进行Linux开发的程序员我发现Win10自带的WSLWindows Subsystem for Linux功能简直是开发者的福音。它完美解决了双系统切换的麻烦也避免了虚拟机性能损耗的问题。下面我将详细分享从安装到配置的完整流程以及我在实际使用中积累的经验技巧。WSL本质上是一个在Windows 10/11上运行原生Linux二进制可执行文件的兼容层。相比传统虚拟机它直接调用Windows内核资源占用更少启动速度更快。目前WSL有两个版本WSL1采用转换层实现系统调用兼容WSL2则基于轻量级虚拟机技术提供完整的Linux内核体验。提示对于大多数开发场景特别是需要完整Linux内核功能的项目如Docker容器建议直接使用WSL2。2. 安装准备与环境检查2.1 系统要求确认在开始安装前需要确认你的Windows版本满足以下条件Windows 10版本2004及更高内部版本19041及以上或Windows 11任何版本64位操作系统虚拟化功能已启用可以通过WinR运行winver命令查看系统版本。如果版本过低需要先通过Windows Update进行升级。2.2 启用WSL功能组件以管理员身份打开PowerShell右键开始菜单选择Windows终端(管理员)执行以下命令启用WSL功能dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart如果需要使用WSL2推荐继续执行dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart重启计算机使更改生效2.3 设置WSL2为默认版本重启后再次以管理员身份打开PowerShell执行wsl --set-default-version 2这将确保后续安装的Linux发行版默认使用WSL2。3. Ubuntu子系统安装与初始化3.1 从Microsoft Store安装Ubuntu打开Microsoft Store应用搜索Ubuntu选择官方发布的版本建议选择最新的LTS版本点击获取按钮下载安装安装完成后点击启动或从开始菜单打开Ubuntu3.2 首次运行配置首次启动Ubuntu会进行初始化安装需要等待解压完成可能需要几分钟设置新用户的用户名和密码注意这里的密码不会显示输入字符完成初始化后你将看到标准的Linux命令行界面重要这个用户名和密码仅用于WSL内的Ubuntu系统与Windows账户无关。但建议设置强密码因为后续sudo操作需要它。3.3 验证安装在Ubuntu终端中执行uname -a如果看到类似以下输出说明安装成功Linux DESKTOP-XXXXXX 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux4. 基础开发环境配置4.1 系统更新与基础工具安装首先更新软件包列表并升级现有软件sudo apt update sudo apt upgrade -y安装常用开发工具sudo apt install -y build-essential git curl wget zsh unzip4.2 配置SSH密钥生成SSH密钥对ssh-keygen -t ed25519 -C your_emailexample.com将公钥添加到GitHub等代码托管平台cat ~/.ssh/id_ed25519.pub复制输出内容到GitHub的SSH密钥设置页面。4.3 安装版本控制工具配置Git全局设置git config --global user.name Your Name git config --global user.email your_emailexample.com git config --global core.autocrlf input git config --global core.editor code --wait5. 开发环境高级配置5.1 安装Node.js开发环境使用nvm管理Node版本curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash source ~/.bashrc nvm install --lts5.2 Python环境配置Ubuntu通常预装Python3但建议使用pyenv管理多版本curl https://pyenv.run | bash echo export PYENV_ROOT$HOME/.pyenv ~/.bashrc echo command -v pyenv /dev/null || export PATH$PYENV_ROOT/bin:$PATH ~/.bashrc echo eval $(pyenv init -) ~/.bashrc source ~/.bashrc pyenv install 3.10.4 pyenv global 3.10.45.3 Docker集成WSL2专用在Windows端安装Docker Desktop安装时勾选使用WSL2引擎选项在Ubuntu中验证Dockerdocker --version配置Docker无需sudosudo usermod -aG docker $USER需要重启WSL生效在PowerShell中执行wsl --shutdown6. 开发工具与IDE配置6.1 Visual Studio Code集成在Windows端安装VS Code安装Remote - WSL扩展在Ubuntu终端中进入项目目录执行code .这将自动在Windows端的VS Code中打开项目但实际运行环境是WSL中的Ubuntu。6.2 数据库客户端配置对于MySQL/PostgreSQL开发sudo apt install -y mysql-client postgresql-client6.3 终端美化与效率工具安装oh-my-zshsudo apt install -y zsh sh -c $(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)推荐插件git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting编辑~/.zshrc配置plugins(git zsh-autosuggestions zsh-syntax-highlighting)7. 文件系统与性能优化7.1 文件系统交互注意事项WSL2使用虚拟硬盘存储Linux文件位于\\wsl$\Ubuntu\home\username但要注意避免在Windows资源管理器中直接修改Linux文件项目代码最好放在Windows文件系统中如/mnt/c/...以获得更好的性能对于git操作频繁的项目建议放在Linux文件系统中7.2 内存与CPU限制配置在Windows用户目录下创建或修改.wslconfig文件[wsl2] memory4GB # 限制最大内存使用 processors2 # 限制CPU核心数 swap2GB # 交换空间大小7.3 启动目录设置修改Ubuntu启动目录为Windows项目路径echo cd /mnt/c/Projects ~/.bashrc8. 常见问题与解决方案8.1 网络连接问题如果遇到网络连接问题尝试sudo sh -c echo [network]\ngenerateResolvConf false /etc/wsl.conf sudo unlink /etc/resolv.conf sudo sh -c echo nameserver 8.8.8.8 /etc/resolv.conf8.2 文件权限问题当在Windows和Linux间共享文件时可能会遇到权限问题。解决方法sudo umount /mnt/c sudo mount -t drvfs C: /mnt/c -o metadata可以将此命令添加到~/.bashrc中自动执行。8.3 性能优化技巧对于大型项目将项目放在Linux文件系统中如~/projects避免在/mnt下进行大量小文件操作定期清理apt缓存sudo apt clean9. 备份与迁移配置9.1 导出WSL系统在PowerShell中执行wsl --export Ubuntu ubuntu_backup.tar9.2 导入已有系统wsl --import Ubuntu_New C:\wsl\ubuntu_new ubuntu_backup.tar9.3 修改默认用户对于导入的系统需要修改默认用户在Ubuntu中执行echo [user]\ndefaultyourusername /etc/wsl.conf在PowerShell中重启WSLwsl --terminate Ubuntu wsl -d Ubuntu经过以上配置你的WSL Ubuntu开发环境应该已经准备就绪。我在实际使用中发现将常用开发工具容器化使用Docker可以进一步提高环境的一致性和可移植性。另外定期使用wsl --shutdown可以解决一些奇怪的性能问题。