Windows上使用WSL2创建Ubuntu系统,实现无缝高效开发的体验

前言

WSL2(Windows Subsystem for Linux 2)是 Windows 提供的一种轻量级 Linux 运行环境,具备完整的 Linux 内核,并支持更好的文件系统性能和兼容性。它允许用户在 Windows 系统中运行 Linux 命令行工具和应用程序,而无需安装虚拟机或双系统。相比于传统的虚拟机,具有更小的开销,而且可以实现显卡直通(子系统可以直接使用显卡),文件系统相互访问,两个系统的命令混用等等,更具体的优势可参考官方文档:Windows Subsystem for Linux 文档

网上的安装教程很多,但是博主自己也遇到了很多的问题,包括没有Hyper-V、网络代理如何设置、中文乱码等等,所以想写下这篇文档,来进行记录,也让在座的各位也省去因为大量查找资料的所花费的精力,确保各位能够一次性成功安装使用。

在此感谢几位博主所创作的教程,各位可通过看第二位博主的演示,来直观的体验WSL2的巨大优势:
CSDN博主:Natsuagin
B站博主: 技术爬爬虾

一、安装WSL2

  1. 按下 Win + R 组合键,输入appwiz.cpl,然后点击 确定 或直接按 Enter
  2. 进入程序和功能界面,点击 启用或关闭 Windows 功能
  3. 勾选以下四项:
    适用于 Linux 的 Windows 子系统、虚拟机平台(Virtual Machine Platform)、Windows 虚拟机监控程序平台、Hyper-V

    如果没有Hyper-V的话(例如Windows11家庭版),使用以下方式解决:
  • 在你的桌面新建一个hyper-v.txt,打开并粘贴以下内容:
bash 复制代码
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
pause
  • 把hyper-v.txt改为hyper-v.cmd,然后右键以管理员身份运行,等待执行完毕。执行完毕以后会出现:"是否重启计算机",根据提示,输入y,进行重启。如果中途出现错误、失败等,可在开机后再次运行,重复这个操作,直到没有错误。
  1. 点击确认后会让你重启电脑,我们选择重启即可,至此,WSL2安装完毕。

二、WSL2 安装 Ubuntu-22.04

安装有两种方法,一种是使用命令行,一种是使用微软商店(Microsoft Store)。

方法一、使用命令行

1.首先,查看可用的 WSL 发行版,在Windows Powershell中执行:

powershell 复制代码
wsl --list --online

接着会出现以下列表,列表中就是我们可以安装使用的

2.进行安装,博主根据需求这里选择安装Ubuntu-22.04,执行以下命令:

powershell 复制代码
wsl --install -d Ubuntu-22.04

3.安装完毕后会要求你创建一个新用户,按照提示输入用户名和密码即可。

方法一、使用微软商店(Microsoft Store)

1.直接打开微软的商店,搜索ubuntu,选择需要安装版本,进行安装

2.安装完毕以后,在搜索栏搜索ubuntu,即可打开:

或者是在Windows Powershell中打开:

3.安装完毕后会要求你创建一个新用户,按照提示输入用户名和密码即可。

三、更改Ubuntu安装位置

ubuntu默认的安装是安装在C盘下的,所以我们需要将其移动到其他位置。运行PowerShell。

  1. 输入wsl --shutdown关闭正在运行的ubuntu。再输入wsl -l -v查看Ubuntu-22.04的运行状态,STATE为Stopped即说明已关闭。
bash 复制代码
wsl --shutdown
wsl -l -v
  1. 创建目录。
    在合适的磁盘上创建一个目录,例如E盘的 E:\Ubuntu22.04。
  2. 导出镜像。
    在PowerShell中输入下列命令,将Ubuntu导出到指定目录,并等待操作完成。
bash 复制代码
wsl --export Ubuntu-22.04 E:\Ubuntu22.04\Ubuntu22.04.tar
  1. 注销原系统。
    在wsl中注销原有的Ubuntu系统,powershell中输入wsl --unregister Ubuntu-22.04。完成后输入wsl -l -v查看,提示适用于 Linux 的 Windows 子系统没有已安装的分发,即为卸载成功。
bash 复制代码
wsl --unregister Ubuntu-22.04
  1. 导入镜像。
    在powershell中输入wsl --import Ubuntu-22.04 E:\Ubuntu22.04 E:\Ubuntu22.04\Ubuntu22.04.tar,将之前导出的镜像导入到新的Ubuntu系统。在powershell中输入wsl -l -v查看,出现Ubuntu-22.04的NAME即为导入成功。
bash 复制代码
wsl --import Ubuntu-22.04 E:\Ubuntu22.04 E:\Ubuntu22.04\Ubuntu22.04.tar
wsl -l -v
  1. 更改默认用户,因为重新导出导入,ubuntu会默认启动root用户,所以需要这一步,注意用户名是你前面填写的那个用户名。在powershell中输入ubuntu2204.exe config --default-user [YourUesrName],将新的Ubuntu系统默认用户设置为[YourUesrName]
    如更改默认用户为nanwan,则输入下列命令:
bash 复制代码
ubuntu2204.exe config --default-user nanwan

Tips: 导出的这一步其实可以当做传统虚拟机的快照,用于备份系统。

Tips: 在Windows的资源管理器中,按住Shift键,右键空白处或者文件夹,即可选择在此处打开 Linux shell,从而实现快速启动Ubuntu子系统并切换终端目录。

Tips: 在Windows的资源管理器中,输入 \\wsl$ 即可访问Ubuntu的文件系统,该系统是通过网络接口访问的,可右键该文件夹并选择 映射网络驱动器 将其映射为带有盘符的目录,从而实现快速访问Ubuntu文件。

四、在ubuntu中设置代理

如果想要在ubuntu中设置代理使用的话,按照以下步骤进行:

  1. 打开WSL Settings

  2. 网络模式选择镜像,其他的跟我一样就行。

  3. 记得关闭wsl。此时,在你的windows中打开代理,然后再次启动ubuntu。

  4. 接着打开浏览器测试即可。没有安装浏览器可用以下命令安装Google浏览器,安装其他浏览器也可以。

bash 复制代码
cd /tmp
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install -f ./google-chrome-stable_current_amd64.deb
  1. 当然如果想在ubuntu对git配置使用代理,只需要在终端中使用:
bash 复制代码
git config --global http.proxy http://127.0.0.1:7897
git config --global https.proxy https://127.0.0.1:7897

实际地址和端口请根据本机实际的情况修改。

五、中文乱码的解决

这个是我在打开浏览器的时候发现,如果切换到中文的话,会出现大量乱码。解决的方案按照以下进行解决:

  1. 在ubuntu终端中依次输入执行:
bash 复制代码
sudo apt install fonts-noto-cjk -y
sudo apt install language-pack-zh-hans -y 
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8

2.退出所有ubuntu终端,关闭wsl

bash 复制代码
wsl --shutdown
wsl -l -v

3.重新启动ubuntu,乱码问题即可解决

相关推荐
虾..40 分钟前
Linux 软硬链接和动静态库
linux·运维·服务器
Evan芙1 小时前
Linux常见的日志服务管理的常见日志服务
linux·运维·服务器
꧁坚持很酷꧂2 小时前
解决虚拟机Ubuntu22.04连接了串口设备但终端没有显示
ubuntu
zdd567892 小时前
关于Windows 11 家庭中文版 25H2中ensp无法启动路由器,报40错的解决方法
windows
hkhkhkhkh1233 小时前
Linux设备节点基础知识
linux·服务器·驱动开发
HZero.chen4 小时前
Linux字符串处理
linux·string
张童瑶4 小时前
Linux SSH隧道代理转发及多层转发
linux·运维·ssh
汪汪队立大功1234 小时前
什么是SELinux
linux
石小千4 小时前
Linux安装OpenProject
linux·运维
柏木乃一4 小时前
进程(2)进程概念与基本操作
linux·服务器·开发语言·性能优化·shell·进程