基于WSL搭建Ubnutu 20.04.6LTS 开发环境(一)

环境:Windows 10.0.19045.3208工作站版已测试通过。

一、Ubnutu环境安装

1、WSL安装及配置

WSL(Windows Subsystem for Linux),适用于 Linux 的 Windows 子系统,可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。

在WSL中可以:

  • 安装偏好的Linux分发版,Ubuntu/Red Hat/CentOS/Debian。
  • 运行常用的命令行工具(例如grep、sed、awk等)。
  • 运行Bash shell脚本和Linux命令行应用程序。
  • 使用Linux分发包管理器安装其他软件。
  • 使用类似于Unix的命令行shell调用Windows应用程序。
  • 在Windows上调用Linux应用程序。

简而言之,使用WSL相当于在Windows中内嵌了一个Linux系统,它与所属的Windows系统可以互相访问本地系统,可以使用Windows的网络访问互联网,继承Windows中配置的hosts等,除了Linux GUI操作以外的其他操作,都可以在wsl中使用。

WSL当前有两个版本,WSL 1和WSL 2,目前的最新版本是2,相对于版本1,WSL 2主要的区别是提高了文件系统的性能和系统调用的兼容性。推荐使用WSL 2。

WSL 2和1的区别和新增功能详情参考:比较 WSL 1 和 WSL 2 | Microsoft Docs

打开“控制面板”->“程序和功能”,在左侧栏选择“启用或关闭Windows功能”,在打开的对话框中找到“适用于Linux的Windows子系统”并打勾,点击【确定】关闭对话框,等待系统安装新功能完成,并按提示重启电脑。

也可以通过命令行来启用该功能:

  1. 按“Win+X”键,选择“Windows PowerShell(管理员)”。
  2. 在打开的Power Shell中运行以下命令:
dism /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
1.1 启用虚拟机功能

安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。 计算机需要虚拟化功能才能使用此功能。
有两种方式可以启用虚拟机功能:

同步骤1“启用WSL”功能一样,通过“启用或关闭Windows功能”对话框,勾选“虚拟机平台”,确定后等待安装或重启。
以管理员身份打开Power Shell并运行以下命令:

dism /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
1.2 更新WSL 2

自动方式:通过Windows更新,下载安装WSL更新。
手动方式:下载并安装 适用于 x64 计算机的 WSL2 Linux 内核更新包
安装完成后可能需要重启才能生效。

1.3 将WSL 2设置为默认版本

将WSL 2设置为WSL的默认版本,以便在安装或导入Linux分发版的时候使用WSL 2。
打开命令提示符或Power Shell,输入以下命令并运行:

wsl --set-default-version 2

2、 安装Linux分发版

打开“Microsoft Store”,在搜索框中输入“linux”,选择偏好的Linux分发版并下载安装。
目前商店内的Linux分发版还不太多,Ubuntu 20.04 LTS是一个不错的选择。
 

常用维护命令:

/* 通过wsl查看分发版是否可用 */
wsl -l -v

/* 导出分发版本到指定位置 */
wsl --export Ubuntu-20.04 E:\Ubuntu-20.04.LTS.tar

/* 注销分发系统 */
wsl --unregister Ubuntu-20.04

/* 导入分发版本安装到指定位置 */
wsl --import Ubuntu-20.04 D:\Ubuntu-20.04 E:\Ubuntu-20.04.LTS.tar --version 2
2.1 启动Linux

安装分发版后,在命令提示符或Power Shell中输入“wsl”命令可以直接启动默认的分发版,启动后即进入分发版的shell中,shell的当前工作目录为启动时的windows命令提示符或Power Shell的当前工作目录在Linux中的表示形式,如下图:

提示:

有时候进程管理器中会发现一个“Vmmem”的进程占用比较多的内存,且不能通过进程管理器结束。这个进程是wsl的一个内存管理进程,通常关闭了wsl的窗口后会自动终止,如果没有终止,可以通过wsl --shutdown指令来结束该进程。

 2.2 安装及配置UI图形界面
sudo apt-get update
su root #切换到root管理员身份
apt-get install ubuntu-desktop #安装桌面软件
reboot #重启

注意:

如果运行apt-get指令安装组件时,报错:

E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

则需要切换到root管理员身份,才能正常安装。

2.3 软件源及包更新
#创建或修改root密码
xxxxx@CNDGSNDD0194:~$ sudo passwd root
New password:
Retype new password:
passwd: password updated successfully

#切换到root管理员身份
xxxxx@CNDGSNDD0194:~$ su root
Password:
root@CNDGSNDD0194:

# Start
# 修改软件包数据源, sources.list内容替换
# 中科大源(可选)
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse

## Not recommended
# deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

# 阿里源(可选)
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse

# deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
# END


#修改数据源文件内容
vim /etc/apt/sources.list

#全选内容,直接输入(注意大小写)
ggVG
# 直接按Del键清空内容,将上面内容直接复制,右键粘进来
#Exit退出INSERT模式,按【:wq】回车进行保存退出

#更新和升级软件包
sudo apt update && sudo apt upgrade

3、WSL运维及问题集锦

(1)  运行wsl --install
报错: 无法解析服务器的名称或地址

通过浏览器打开https://site.ip138.com/raw.Githubusercontent.com
获取第1个能在本地ping通的IP,比如:185.199.110.133

然后打开c:\windows\system32\drivers\etc\hosts文件(记事本打开),在内容处检查:
是否存在raw.githubusercontent.com解析的内容,全部移除后添加:
185.199.110.133 raw.githubusercontent.com
保存退出。

(2)  重启wsl
# 打开CMD终端(以管理员身份),运行:
wsl --list --online  #可安装的os列表
wsl --install  #更新WSL内核
wsl --shutdown #WSL关机
(3) 迁移Linux子系统
# 打开CMD终端(以管理员身份),运行:
/* 通过wsl查看分发版是否可用 */
wsl -l -v

/* 导出分发版本到指定位置 */
wsl --export Ubuntu-20.04 E:\Ubuntu-20.04.LTS.tar
/* 注销分发系统 */
wsl --unregister Ubuntu-20.04
/* 导入分发版本安装到指定位置 */
wsl --import Ubuntu-20.04 D:\Ubuntu-20.04 E:\Ubuntu-20.04.LTS.tar --version 2

/* 修改默认登录用户 */
ubuntu2004 config --default-user xxxx
(4) 解决WSL2不支持Systemd(即:system daemon)
# CMD环境安装ubuntu-wsl2-systemd-script:
git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh
(5) 运行wsl系统找不到指定的文件

Error code: Wsl/CallMsi/ERROR_FILE_NOT_FOUND
找到并打开此位置:C:\Program Files\WindowsApps
MicrosoftCorporationII.WindowsSubsystemForLinux_2.1.5.0_x64__8wekyb3d8bbwe

它很有可能因权限受限无法访问。我们只需要将WindowsApps的属性【安全-高级】所有者改成管理员角色成员,同时赋予所有权限即可。
注意,WindowsSubsystemForLinux App包版本很有可能是不相同的,可以根据[修改时间]排序,找到x64最新的App包。
打开后直接双击运行wsl.mis,即可修复此问题。

注意修复完成后,确保Windows组件如下已安装:
a. Hyper-V
b. 适用于Linux的Windows 子系统
c. 虚拟机平台
d. 适用于x64 计算机的WSL2 Linux内核更新包
执行如下语句进行配置:

wsl --set-default-version 2
# 可尝试运行:
wsl -l -v
wsl --list --verbose

# 当正常的话,可直接打开Microsoft Store(应用商店)直接进行安装指定的Linux OS。
# 当然也可以仍使用wsl安装语句,如:
wsl --install -d Ubuntu20.04
(6) 指定的服务未安装

Error code: Wsl/ERROR_SERVICE_DOES_NOT_EXIST

目前暂时没有直接有效的修复办法,我是直接从github.com微软官方开源库下载的wsl.2.1.5.0.x64.msi包(Win11 专业工作站版基于WSL v2.1.5),直接右键修复的方式进行处理的。


二、xfce4 + xrdp配置远程桌面

1、安装xfce4 + xrdp包

sudo apt update && sudo apt install -y xfce4 xfce4-goodies xrdp

注意:必须确保已执行过sudo apt update

2、选择显示管理DM

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

sudo dpkg-reconfigure lightdm

# 如果出现
dpkg-query: package 'lightdm' is not installed and no information is available
Use dpkg --info (= dpkg-deb --info) to examine archive files.
/usr/sbin/dpkg-reconfigure: lightdm is not installed
# 则运行
sudo apt install lightdm
sudo dpkg-reconfigure lightdm #切换

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

echo "xfce4-session" > ~/.xsession

4、修改xrdp运行端口

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

# 免输用户密码登录(可选)
# 找到[Xorg]代码块,将username和password填充如下,其它不变
[Xorg]
name=Xorg
lib=libxup.so
username=[ubuntu username]
password=[pwd]

5、配置中文及字体

sudo dpkg-reconfigure locales
# 安装中文字体
sudo apt-get install -y ttf-wqy-zenhei xfonts-intl-chinese wqy*

6、启动xrdp服务

# 手动
sudo /etc/init.d/xrdp start

# 自动
sudo systemctl enable xrdp
# 检查服务状态
sudo systemctl status xrdp

7、WSL宿主机互通

# wsl-IP
ip a |grep "global eth0"

# win-IP
cat /etc/resolv.conf |grep nameserver

获取的IP信息结果

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值