背景

  • 尝试全面转向win作为主力开发系统,但是很多东西需要在linux下执行,wsl经历了一次技术路线的全面更新在网络上的反响也还是不错的。随机决定进行一下尝试

几点说明

  • 本篇文章仅仅是小白从零开始进行wsl2配置,没有过wsl1的使用经验,里边的步骤也大多都是来自于万能的互联网
  • 本篇文章不涉及深度使用的感受,后续体验之后有时间的话会再进行记录

概念

  • wsl全名windows subsystem for linux

开始安装

安装WSL2功能模块

该步骤下所有命令执行都在windows powershell(管理员模式)下

  • 打开wsl功能模块 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  • 安装必要功能 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  • 重启电脑,完成安装(重要,我被卡在这里很久

设置内核安装默认为wsl2

  • powershell(管理员)执行wsl --set-default-version 2
  • 这里正常的话是可以正常执行的,如果提示类似于需要升级wsl内核之类的信息的话,就需要手动更新一下wsl内核:
    • 下载地址
    • 下载完成双击打开一路下一步即可,无其他可选项

安装linux子系统

  • 打开windows应用商店,搜索关键字linux
  • 下载安装想要使用的linux发行版,等待安装完成
  • 开始菜单启动一次刚刚安装的发行版,耐心等待安装完成

配置

以下配置以本人安装的Debain为例,步骤差不多,有一些命令可能会不一样

换源

  • 用预设源进行apt-get update切记不能先换源,否则会出现错误
  • 安装必要软件apt-get install ca-certificates
  • 备份原源列表cp /etc/apt/sources.list /etc/apt/sources.list.backup
  • 编辑源列表nano /etc/apt/sources.list
  • 将源列表内容替换为下列内容
deb [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
# deb-src [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
deb [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
#deb-src [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
deb [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
# deb-src [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
deb [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
# deb-src [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
  • 更新源列表apt-get update

代理上网

wsl2采用了虚拟化技术,对于宿主机来说wsl是一个单独的虚拟网卡,等同于一张“公共网卡”,所以对于wsl2来讲,win宿主机的ip地址是网卡内部的ip,需要通过命令cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'进行查看,为了后文叙述方便,这里假设输出结果192.168.1.2

方案一:临时性全局科学,仅对当前shell窗口生效

  • shell窗口直接执行export ALL_PROXY=protocol://192.168.1.2:port

方案二:软件解决,每次需要科学的命令需要加上命令前缀

  • 安装apt-get install proxychains
  • 配置nano /etc/proxychains.conf
  • 在文件末尾根据示例添加科学地址

美化shell窗口

  • 安装zsh: apt-get install zsh
  • 安装oh-my-zsh: sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
  • 配置oh-my-zsh:
    • 下载最新版本对shell窗口进行优化
    • 下载字体并安装
    • 安装zsh神级插件:
      git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
      git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
    
    • 编辑nano ~/.zshrc
      • 找到ZSH_THEME修改为agnoster
      • 找到plugins并在后边添加想启用的插件,以空格为分隔符git zsh-syntax-highlighting zsh-autosuggestions

Python环境

  • 为了后期方便,这里采用conda对python环境进行统一管理
  • 由于wsl完全占用C盘空间,所以尽量选择最小安装,节省空间。Anaconda官方预算3G空间,Miniconda完全安装完大概1G左右,故选择miniconda进行安装
  • 步骤
    • 定位到用户目录cd ~
    • 下载Miniconda(python3.8)安装脚本
    • 执行脚本,并根据脚本提示进行安装bash Miniconda3-latest-Linux-x86_64.sh
    • 安装完成,关闭当前shell窗口并重新开启
    • 执行python -V验证安装结果

写在最后

  • zsh的其他美化以及插件功能还有很多,读者可以自行进行调研使用
  • 至此wsl2内核的debian系统已经达到能用的状态
  • 在这之前作者也是一个坚定的win/linux双系统使用者,只是近来由于一些原因必须要迁移到win平台,才发现其实在微软这么多年的深耕之下,全球有太多的软件公司都为win做了太多的优化,无论从美观程度、易用程度、更新速度方面都远超linux平台下的软件。而现在win也在深耕wsl,更是给了win一个很大的机会,“在不重启的情况下使用两个系统”,听起来就很不错。在搜索资料的过程中偶然瞥到wsl2现在已经支持了GPU,这对深度学习工作者来讲更是一个天大的好消息,同时也发现wsl对于ntfs的io慢到令人发指,作者目前还没有感受到,只能是进行深度体验后再说。无论如何,系统融合对于开发者来讲都是一个天大的好事。