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,乱码问题即可解决

相关推荐
Fluency-117 小时前
ubuntu中ssh连接root用户
linux·ubuntu·ssh
0wioiw07 小时前
Ubuntu(③vsftpd)
linux·服务器·ubuntu
vortex59 小时前
用 Scoop 快速部署 JeecgBoot 开发环境:从依赖安装到服务管理
java·windows·springboot·web·开发·jeecg-boot
cellurw10 小时前
Day75 RS-485 通信协议设计、串口编程与嵌入式系统部署实践
linux
十八旬11 小时前
RuoYi-Vue3项目定制修改全攻略
java·windows
海棠蚀omo11 小时前
Linux基础I/O-打开新世界的大门:文件描述符的“分身术”与高级重定向
linux·操作系统
带土112 小时前
33. 文件IO (4) 二进制文件操作与结构体存储 文件路径与目录操作
linux
无敌最俊朗@12 小时前
C++音视频就业路线
linux·windows
Fr2ed0m12 小时前
Linux 文本处理完整指南:grep、awk、sed、jq 命令详解与实战
linux·运维·服务器