wsl安装与开发环境搭建

本文最后更新于:2022年10月25日 凌晨

wsl2,vscode,windows terminal,zsh,docker····

Windows Subsystem for Linux

首先贴一个官方文档

什么是适用于 Linux 的 Windows 子系统

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

  • 在 Microsoft Store 中选择你偏好的 GNU/Linux 分发版。
  • 运行常用的命令行软件工具(例如 grepsedawk)或其他 ELF-64 二进制文件。
  • 运行 Bash shell 脚本和 GNU/Linux 命令行应用程序,包括:
    • 工具:vim、emacs、tmux
    • 语言:NodeJS、Javascript、Python、Ruby、C/ C++、C# 与 F#、Rust、Go 等。
    • 服务:SSHD、MySQL、Apache、lighttpd、MongoDBPostgreSQL
  • 使用自己的 GNU/Linux 分发包管理器安装其他软件。
  • 使用类似于 Unix 的命令行 shell 调用 Windows 应用程序。
  • 在 Windows 上调用 GNU/Linux 应用程序。

什么是 WSL 2?

WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是 提高文件系统性能,以及添加 完全的系统调用兼容性

这一新的体系结构改变了这些 Linux 二进制文件与Windows 和计算机硬件进行交互的方式,但仍然提供与 WSL 1(当前广泛可用的版本)中相同的用户体验。

单个 Linux 分发版可以在 WSL 1 或 WSL 2 体系结构中运行。 每个分发版可随时升级或降级,并且你可以并行运行 WSL 1 和 WSL 2 分发版。 WSL 2 使用全新的体系结构,该体系结构受益于运行真正的 Linux 内核。

WSL 2安装

需要CPU开启VT(Virtualization Technology),这一步根据CPU不同操作方式不同就不细说了。

需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。

以管理员身份打开 PowerShell 并运行:

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

若要更新到 WSL 2,需要运行 Windows 10。

  • 对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
  • 对于 ARM64 系统:版本 2004 或更高版本,采用 内部版本 19041 或更高版本。
  • 低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新 Windows 版本。

若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。 更新到“设置”菜单中的最新 Windows 版本

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

以管理员身份打开 PowerShell 并运行:

1
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重新启动 计算机,以完成 WSL 安装并更新到 WSL 2。

重启之后下载安装 Linux 内核更新包并将 WSL 2 设置为默认版本。

1
wsl --set-default-version 2

最后,打开 Microsoft Store,并选择你偏好的 Linux 分发版。

单击以下链接会打开每个分发版的 Microsoft Store 页面:

首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。

然后,需要为新的 Linux 分发版创建用户帐户和密码。

另外,以上内容貌似(?)可以使用以下一行命令解决

1
wsl --install -d Ubuntu-20.04

另外我发现用户名不能用大写,并且密码是不会显示出来的。

换源

如果遇到下载速度较慢,或者下载失败等问题,我们还可以把官方源换成国内源。

备份list文件

1
2
cd /etc/apt/
sudo cp sources.list sources.list.bak

备份了,如果下面的哪一步出错了好恢复。

修改list文件

管理员权限,使用 vim 进行修改:

1
sudo vim sources.list

把想要更换的源复制在剪切板,这里以阿里源为例:

1
2
3
4
5
6
7
8
9
10
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

我们先通过按ggdG这几个字母将里面的内容全部删除,

1
通过按下gg后发现光标移动到文件首行了。其中,gg为跳转到文件首行;dG为删除光标所在行以及其下所有行的内容。d为删除,G为跳转到文件末尾行。

按鼠标右键会进行粘贴,然后输入 :wq! 进行退出与保存。

最后复制这两条命令进行更新镜像源列表。

1
2
sudo apt-get update
sudo apt-get upgrade

WSL 迁移

开发用久了c盘爆满,所以建议大家安装好之后立即进行迁移

  1. 查看Ubuntu 版本号
1
wsl -l
  1. 在D盘新建一个文件夹,我的路径是D:

  2. 一步一步执行以下命令行。其中,Ubuntu-18.04是我的Ubuntu版本,大家可以根据wsl-l的版本号自行修改

Step1: 导出

Step2: 注销原来的

Step3: 导入

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

不过在系统设置里有更简洁的移动方法,这两种我都试过且都失败/成功过,一次不行就再来一遍

Windows terminal+vscode

Windows Terminal https://docs.microsoft.com/en-us/windows/terminal/get-started

VS Code https://code.visualstudio.com

这两样软件可以大幅提高效率(还很装逼很好看)

windows terminal各项设置可以实现许多使用功能,比如我设置了默认启动Ubuntu,添加了git bash,透明亚克力效果等(本次不介绍,感兴趣自行研究)

可以在工作区文件夹内右键然后在windows终端打开

也可以直接打开window终端,cd到对应文件夹,然后输入

1
code .

至此就可以实现在windows环境下编程,在linux环境下测试。

Docker

使用以下脚本可以实现自动安装。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# install docker
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh

if [ ! $(getent group docker) ];
then
sudo groupadd docker;
else
echo "docker user group already exists"
fi

sudo gpasswd -a $USER docker
sudo service docker restart

rm -rf get-docker.sh

可以直接复制到txt中,然后修改文件类型跟文件名为install-docker.sh(后缀是sh,名字任意)

例如我在桌面放置了该脚本,右键打开终端之后输入以下命令即可完成安装。

1
sh install-docker.sh

接下来输入:

1
2
sudo service docker start
docker version

就可以启动服务,查看版本,证明我们已经安装成功。

如果不希望每次都特地启动docker的服务可以使用以下命令设置自启动:

1
sudo systemctl enable docker

关于docker的使用就大家自己研究啦。

On-my-zsh

一个美观且功能强大的终端

用windows terminal启动Ubuntu,输入以下命令安装:

1
sudo apt-get install -y zsh

oh-my-zsh中整理了常用的zsh扩展主题,所以先安装oh-my-zsh

使用curl安装 :

1
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

使用wget安装:

1
sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

虽然我列出了上面两条命令,但最好还是看看官网的安装页面,确保命令的最新版本。

接下来输入:

1
2
cd
code .zshrc

就可以cd到根目录文件夹,用vscode的可视化界面编辑配置文件,添加需要的扩展与主题了。

扩展与主题根据个人需求添加,本文不再赘述。

Python开发

花里胡哨那么多东西了,讲一点实战(假的)。

默认Ubuntu已经安装了python,我们只需要安装pip,就可以进行一些简单的编程。

1
sudo apt-get install python3-pip

当然我们不能局限于简单的编程,我们需要创建虚拟环境,确保各个环境互相隔离,互不影响。

1
sudo apt-get install python3-venv

创建虚拟环境:

1
sudo python3 -m venv env

激活与退出:

1
2
3
source env/bin/activate

deactivate

接下来就可以尽情地pip install了,在工作环境下新建文件夹,再用vscode打开,即可开始编程。

WSL-Ubuntu安装中文语言

  1. 安装中文语言包
1
sudo apt install language-pack-zh-hans
  1. 运行 dpkg-reconfigure locales
1
sudo dpkg-reconfigure locales
  1. 选择en_US.UTF-8zh_CN.UTF-8 , 选择zh_CN.UTF-8为默认语言
  2. 安装字体管理工具fontconfig
1
sudo apt install fontconfig

5.安装Windows字体

复制windows的字体到 /usr/share/fonts/

1
sudo cp -r /mnt/c/Windows/Fonts /usr/share/fonts/windows
  1. 刷新字体缓存
1
fc-cache -f -v
  1. 退出重进wsl

    安装ROS系统(记得版本对应!例如我的Ubuntu18.04 对应melodic)

使用鱼香ros大佬的一键安装脚本

1
wget http://fishros.com/install -O fishros && . fishros

上面那行是官方的,我运行不了,我根据内容用下面这种方式可以运行

1
wget http://fishros.com/install -O fishros.sh && sh fishros.sh

如果上面那个打开失败,可以用下面这种方式

1
2
3
4
5
6
7
8
9
10
11
12
mkdir -p /tmp/fishinstall/tools
wget http://fishros.com/install/install1s/install.py -O /tmp/fishinstall/install.py 2>>/dev/null
source /etc/profile
sudo apt install python3-distro python3-yaml -y
if [ $UID -eq 0 ];then
apt-get install sudo
fi
sudo python3 /tmp/fishinstall/install.py
sudo rm -rf /tmp/fishinstall/
sudo rm fishros
. ~/.bashrc

自己对照着官方文档的顺序安装

我使用的顺序是5(换源)→1(ROS)→3(rosdep)→4(环境配置)

出现了一些小bug都是因为zsh

如果你跟我一样用的zsh 补上一个

1
2
echo "source /opt/ros/melodic/setup.zsh" >> ~/.zshrc
source ~/.zshrc

安装图形界面

1.安装 VcXsrv

2.安装好后运行 “XLaunch”,在界面里选择 “one large window” ,“Display number” 设置为 0 ,然后其它选项默认,点击下一步,等出现这个界面,将Disable access control打上勾,之后点击下一页。

点击 “Save Configuration” 保存设置,会让你保存一个 “config.xlaunch” 的配置文件快捷方式,下次运行这个快捷方式就不用重新设置了。点击完成会出现一个纯黑的窗口,把它挂在后台先不管。

3.安装xfce4

1
sudo apt install -y xfce4
  1. 配置变量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 首先需要查看Windows系统和WSL2通信使用的虚拟网卡地址
    $ sudo vim /etc/resolv.conf
    # nameserver后面的地址就是Windows系统虚拟网卡的地址,记一下
    # 同时需要取消下面两行内容的注释,禁用自动重新生成配置文件,否则重启后这个地址会变
    [network]
    generateResolvConf = false


    $ vim ~/.bashrc #如果你跟我一样用的zsh就是zshrc
    # 在文件最后追加下面内容,地址使用上面查看到的
    export DISPLAY=192.168.112.1:0 #改ip 端口不动

    $source ~/.bashrc
    #执行刚修改的初始化文件,使之立即生效

    5.启动xfce4

    1
    startxfce4
大功告成!

wsl安装与开发环境搭建
http://enderfga.cn/2021/11/26/wsl/
作者
Enderfga
发布于
2021年11月26日
许可协议