0%

Windows-Linux子系统:快速入门

Ubuntu是一个以桌面应用为主的Linux操作系统,很久以前我就听说过它的大名。但当我询问如何在Windows系统里面安装一个时,我才得知要使用VM Ware等虚拟机软件,我也就没有去折腾了。不过买新电脑之后发现Win10自带一个Windows Subsystem for Linux的虚拟机功能,就来尝试一下。期间我也遇到了占用空间过大,apt速度慢等问题,这里也顺带说一下解决方案。

但其实到最后我发现装了这个Ubuntu,除了对Shell Script的原生支持以外,对我也没有多少用处(

1. 安装WSLUbuntu

要安装WSL,我们首先需要用管理员权限在powershell中打开两个功能,分别是WSL本身和虚拟化:

1
2
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

这个时候我们用wsl这个命令来检查一下是否可用。如果一切正常,使用wsl --install命令就可以安装最新版本的Ubuntu。如果你不想安装Ubuntu而是别的系统的话,可以使用如下语法:

1
wsl --install -d <Version>

等安装完毕,之后的话就是设置用户名和密码,这里就不细说了。


2. 转移Ubuntu文件位置

之后你就可以用apt来安装你需要的包了,不过安装几个较大的包比如nodejspython之后,你会发现C盘突然被Ubuntu占用了很多,像我一下子就60%~70%。这个时候我就打算把Ubuntu移到D盘去,幸运的是,这只需要几个步骤。

首先,wsl -l获取自己的Ubuntu版本号,像我是Ubuntu-20.04。然后我们停止系统的运行,导出整个系统,并反注册。wsl会生成一个打包的tar文件,我们再导入即可:

1
2
3
wsl --export Ubuntu-20.04 d://ProgramFiles//Ubuntu//ubuntu-20.04.tar
wsl --unregister Ubuntu-20.04
wsl --import Ubuntu-20.04 d://wslubuntu//Ubuntu d://ProgramFiles//Ubuntu//ubuntu-20.04.tar

然后我们用wsl命令来看一下是否注册成功。但这个时候有个问题:你的用户名变成了root。这个时候我们在Ubuntu里面执行:

1
2
myUsername=<username>
echo -e "[user]\ndefault=$myUsername" >> /etc/wsl.conf

就可以把名字改回来。之前生成的系统tar文件也就可以删除了。最后我们用管理员权限打开powershell重启Ubuntu系统,来应用所有更改:

1
2
net stop LxssManager
net start LxssManager

wsl的运行依靠LxssManager,具体也不用太管)


3. 修改Ubuntu镜像源

首先进入apt的文件夹:

1
cd /etc/apt/

然后对原先的配置文件做一个镜像,

1
sudo cp -a sources.list sources.backup.list

到清华镜像官方获取到ubuntu的链接,比如20.04是这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

然后用vimnano编辑sources.list,清空后全部粘贴,保存退出。重启wsl,并使用

1
sudo apt update

来确认是否切换到清华的镜像源了。


4. 安装xfce4图形界面

既然有了命令行的Ubuntu,我们能不能拥有它的GUI呢?我们可以借助xfce4搭配远程桌面来搭建一个图形界面。

这里不建议使用xfce4,容易黑屏、报错,建议直接参考第5步,安装gnome桌面。

4.1 安装依赖

安装xrdpxfce4xfce4-goodies。中间一路回车即可(会有一个粉色的界面)。

1
sudo apt install xrdp xfce4 xfce4-goodies

4.2 修改xrdp配置

先对原配置做一个备份:

1
sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak

然后,执行

1
2
3
sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/max_bpp=32/#max_bbp=32\nmax_bpp=128/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/xservervpp=24/#xservervpp=24\nxserverbpp=128/g' /etc/xrdp/xrdp.ini

就会自动修改。然后执行

1
2
echo xfce4-session > ~/.xsession
sudo nano /etc/xrdp/startwm.sh

把光标移到文件的最后两行,用#号注释掉,然后新增两行,最后效果如下:

1
2
3
4
5
# test -x /etc/X11/Xsession && exec /etc/X11/Xsession
# exec /binsh /etc/X11/Xsession

# xfce
startxfce4

保存并退出(Ctrl+X,按y并回车,退出)。

4.3 启动远程桌面

首先复制如下代码:

1
sudo /etc/init.d/xrdp start

然后vimnano打开bash.bashrc添加一个别名:

1
alias remote="sudo /etc/init.d/xrdp start"

重启wsl。然后输入remote,就会启动服务器。用Win10自带的远程桌面连接localhost:3390,会跳出来一个蓝色框,输入自己Ubuntu的用户名和密码,就可以进入Ubuntu的远程桌面了。


5. gnome图形界面

这个gnome图形界面是要求WSL2的,如果你是Win10则默认是WSL1。先确认一下:

1
wsl -l -v

如果是WSL1的话则需要安装升级包:微软官网,下载下来安装即可。然后管理员执行:

1
wsl --set-version Ubuntu-20.04 2 

它就会自动升级为WSL2。然后进入wsl,执行

1
2
3
4
5
sudo apt update
sudo apt install git
git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh

来安装依赖systemd。安装好之后重启:

1
2
wsl --shutdown
wsl

输入

1
systemctl

如果它不回复你

System has not been booted with systemd as init system (PID 1). Can’t operate.

那就说明你做对了,随后我们来安装gnome桌面(确保你已经把Ubuntu切换到了D盘或其他,因为会占用3个G左右):

1
2
sudo apt update
sudo apt install -y ubuntu-desktop

然后安装xrdp

1
2
3
sudo apt install -y xrdp
sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp

配置防火墙:

1
sudo ufw allow 3389

这个时候远程连接localhost:3389即可。会要求你输入账号密码,进入图形界面后还是要你输入密码。如果一切正常的话,你的gnome图形界面就安装成功了!

注:如果你在升级WSL2后发现sudo apt update卡死了,别怕重装一次Ubuntu,重新执行1~3步即可。


至此,你已经拥有了WSL中的Ubuntu,并且更改了镜像源,成功地开启了远程桌面。听说Linux系统中有意思的命令还挺多的,那下一篇文章就来讲讲这个。


致谢

这里写一下我参考到的文章:

  1. Win10 安装wsl并将文件位置从C盘迁移至D盘_快乐啊啊啊啊啊的博客-CSDN博客_wsl迁移到d盘

  2. windows下重启wsl_天已青色等烟雨来的博客-CSDN博客_wsl reboot

  3. 更改手动导入的wsl的默认登录用户_skyandcloud-pal的博客-CSDN博客_wsl修改默认用户

  4. WSL GUI图形界面(xfce4)的安装 - 简书

  5. wsl安装ubuntu并设置gnome图形界面详细步骤(win11+ubuntu18)_heusjh的博客-CSDN博客_wsl安装gnome桌面

THE END感谢您的阅读~

赏作者一杯作业......