跳到主要内容

WSL2安装Ubuntu

·1600 字·4 分钟

前置条件: #

管理员权限启动 PowerShell 运行一下代码

# 启用适用于 Linux 的 Windows 子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 启用虚拟机功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

或在Windows搜索 启用或关闭Windows功能 开启 启用适用于 Linux 的 Windows 子系统启用虚拟机功能 后需要重启电脑

安装 #

启用 WSL 功能

wsl --install # 此时会默认安装最新的Ubuntu发行版
wsl --update

将WSL2设置为默认版本

wsl --set-default-version 2

查看所有 Linux 系统版本

wsl --list --online

安装指定版本

wsl --install -d <发行版名称>

通过如下指令,查看电脑装了哪些Linux系统,并进行卸载:

# 查看本机安装了哪些子系统:
wsl --list --all
wsl -l -v
# 卸载:
wsl --unregister <System_name>

转移到D盘

mkdir D:\WSL
# 导出已安装的Ubuntu
wsl --export Ubuntu-24.04 D:\WSL\Ubuntu-24.04-latest.tar
# 注销(删除)原来的分发版
wsl --unregister Ubuntu-24.04
# 重新导入到D盘
wsl --import Ubuntu-24.04 D:\WSL\Ubuntu D:\WSL\Ubuntu-24.04-latest.tar
# 删除临时文件
Remove-Item D:\WSL\Ubuntu-24.04-latest.tar

wsl --shutdown

解决“wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理”的问题

在 Windows 中的C:\Users\\<your_username>目录下创建一个**.wslconfig**文件,然后在文件中写入如下内容:

(以下配置设置:限制内存、自动清理内存、网络)

[wsl2]
memory=4GB
swap=4096MB
[experimental]
autoMemoryReclaim=gradual  
sparseVhd=true
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

然后用wsl --shutdown关闭WSL,之后再重启,提示就消失了。

Linux查看ip

ifconfig # 需要 sudo apt install net-tools
hostname -I
ip addr show eth0
ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'

配置

# 更新源
sudo apt update && sudo apt upgrade -y

Windows终端设置 #

一般来说安装好了之后Windows会自动设置好了,终端可以直接开一个新的Ubuntu-24.04的标签页。

如果没有的话,那就手动添加一个,本质还是命令行启动罢了。

C:\WINDOWS\system32\wsl.exe -d Ubuntu-24.04 -u root --cd ~

这个命令行的意思是启动wsl的Ubuntu-24.04发行版,以root身份登录,默认启动目录是~(即用户默认目录),Ubuntu-24.04可以改成自己对应的发行版;参数-u可选添加,后面填写登录的用户名;--cd参数可选,后面写启动目录。

添加新的终端配置填入以上的命令行即可食用,其他设置可根据个人喜好,这个Windows终端配置文件本身是一个JSON文件

参考:

			{
                "adjustIndistinguishableColors": "always",
                "bellStyle": "taskbar",
                "colorScheme": "One Half Dark",
                "commandline": "C:\\WINDOWS\\system32\\wsl.exe -d Ubuntu-24.04 -u root --cd ~",
                "cursorShape": "emptyBox",
                "font": 
                {
                    "face": "MesloLGS NF",
                    "size": 13.0
                },
                "guid": "{dcf338c3-49c9-4536-ae80-d621c8dd0813}",
                "hidden": false,
                "historySize": 32768,
                "icon": "D:\\WSL\\Ubuntu\\shortcut.ico",
                "name": "Ubuntu-24.04 (ROOT)",
                "suppressApplicationTitle": true
            }

备注:**MesloLGS NF**字体需要另外安装,这是一款适合zsh的p10k主题的字体。

gui配置(可选,但非常不推荐,毛病和坑多) #

sudo apt purge -y acpid acpi-support modemmanager
sudo apt-mark hold acpid acpi-support modemmanager

# 安装GNOME桌面
sudo apt install ubuntu-desktop  -y

# 安装xrdp服务
sudo apt install xrdp -y
# 启动xrdp服务:
sudo systemctl start xrdp
# 将xrdp用户添加到ssl-cert用户组
sudo adduser xrdp ssl-cert
# 重启xrdp服务
sudo systemctl restart xrdp

修改xrdp默认端口(可选)
由于xrdp安装好后默认配置使用的是和Windows远程桌面相同的3389 端口,为了防止和Windows系统远程桌面冲突,建议修改成其他的端口

$ sudo vim /etc/xrdp/xrdp.ini
# 修改下面这一行,将默认的3389改成其他端口即可
port=3390

在Windows上使用远程桌面连接(mstsc):

  • 按下Windows键+R,输入"mstsc"并回车
  • 在远程桌面连接中输入localhost:3389localhost:3390
  • 连接后输入您的Ubuntu用户名和密码

进一步:使用 Xfce4 桌面环境和轻量级桌面xubuntu

# 安装 Xfce4 桌面环境:
sudo apt install xfce4 xfce4-goodies -y

# 安装xfce4过程中会出现选择显示管理DM选择的提示,建议用lightdm
# 如果错过了安装过程中出现的这个向导,那么可以在安装完成后执行下面的命令重新设置DM
sudo dpkg-reconfigure lightdm

解决黑屏

sudo nano /etc/xrdp/startwm.sh

添加以下内容:

unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
. $HOME/.profile

创建或修改XRDP启动脚本:

sudo nano /etc/xrdp/startwm.sh

在文件末尾注释掉这两行(如果存在):

#test -x /etc/X11/Xsession && exec /etc/X11/Xsession
#exec /bin/sh /etc/X11/Xsession

添加以下行:

startxfce4

为当前用户指定登录session类型

vim ~/.xsession  #写入 xfce4-session
echo xfce4-session > ~/.xsession

参考链接和文档 #

如何使用 WSL 在 Windows 上安装 Linux – Microsoft

开始通过适用于 Linux 的 Windows 子系统使用 Visual Studio Code – Microsoft

超详细的WSL教程:Windows上的Linux子系统 - 技术爬爬虾 - BiliBili

写给工程师的 Ubuntu 20.04 最佳配置指南

【保姆级教程】Windows上安装Linux子系统,搞台虚拟机玩玩

ohmyzsh - GitHub

powerlevel10k - GitHub

ping www.google.com

sudo vi ~/.bashrc

source ~/.bashrc