什么是WSL

Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,目标是使纯正的Ubuntu 14.04 "Trusty Tahr"映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行.

以上来自维基百科,简单的说WSL就是可以运行在Win10上的一个Linux子系统,有点类似于cygwin的那种。说白了,就是在win10装个小小Ubuntu。按照微软的说法,他可以给web开发者或者经常在开源项目上工作的人提供方便,同时提供Bash工具以及一些公共的Linux工具(如sed和awk)等。

对于使用ruby和Python这种Linux第一优先的语言也是不错的选择。

wsl相对于虚拟机的优势

相比于VMware等虚拟机,wsl占用内存和CPU资源更少,在wsl上运行软件的消耗和直接在Windows上差不多。

在wsl上可以直接操纵Windows上的文件资源,但是不推荐使用Windows工具反过来操作Linux文件。实际上在Windows磁盘里面是无法直接看到wsl的安装文件和根目录的。

wsl不能做什么

首先他不支持GUI桌面以及应用,如Gnome等。

同时,也不建议直接在上面部署Redis做稳定的服务器等。因为他有时会莫名的丢失文件之类的。

当然,自己平时练练手是没问题的。

安装

开启"Windows Subsystem for Linux" 可选特性

打开`PowerShell`,运行下面指令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

或者通过控制面板的"启动或关闭Windows功能"选项来开启该特性。最后,重启系统。

安装wsl

  • 首先,开启开发者模式。进入控制面板,设置-->更新和安全-->针对开发人员-->打开开发人员模式

  • 进入PowerShell,输入指令lxrun /install /y,网速不是很稳定。

注:如果你是16215之后的版本,直接进入APP Store,搜索Linux,就会显示Ubuntu、suse等几个发行版,点击进行安装即可,方便快捷。

进入wsl系统

打开PowerShell,输入指令bash即可进入wsl子系统。默认是root账户,无密码。可以使用passwd指令设置密码。

几个常见的小问题

如何卸载wsl

运行指令lxrun /uninstall /full

如何切换到Linux操作目录

当你运行bash进入wsl的时候,默认目录是/mnt/c/Users/<userName>对应Cc:/Users/<userName>目录。如果要切到wsl根目录,使用cd /即可。

如果想切到C盘目录,访问Windows资源,使用cd /mnt/c即可。当然也可以使用mount指令将Windows目录挂在到wsl上。

或者通过ln指令,创建连接到Windows资源的symbolic link

比如,创建一个连接到windows目录的symbolic link。

ln -s "/mnt/c/idea_project" /home/Projects

如何备份wsl

切到dos运行,

##xcopy是dos下的拷贝整个文件夹的命令,在bash下目前还不能用
xcopy lxss 目标目录 /E

这样备份了整个wsl子系统的文件,如果搞坏了可以直接覆盖回去,据说不会丢失权限。

消除shell中按键无效的滴滴嗡鸣声

## 创建配置文件,如果有则不需要
touch ~/.inputrc
vim ~/.inputrc
##在里面输入下面内容
set bell-style none

去掉vim状态下的嗡嗡声

##创建配置文件
touch ~/.vimrc
vim ~/.vimrc
##写入下面内容
noeb vb t_vb=

更换数据源

在Ubuntu中一般通过apt-get命令安装软件,系统配置的软件仓库默认在国外,网络环境较差。可以通过切到国内的镜像仓库比较好。

备份配置文件

cp /etc/apt/sources.list /etc/apt/sources.list_backup

更新数据源配置文件

vi /etc/apt/sources.list

添加清华的数据源仓库

##把原来的数据源都删了,添加下面的数据源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main multiverse restricted universe

更新配置

apt-get update

注意事项

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main multiverse

中的xenial是16.04 Ubuntu的版本代号,更新源的时候注意自己的版本代号,替换成自己的版本号即可,否则更新配置会报错。

更好的bash客户端软件cmder(参考)

我们的bash命令符界面是有Windows自带的cmd工具启动的,我们可以下载cmder作为替代启动工具。它的体验,包括颜色以及复制等较好。

下载安装

cmder官网可以下载到mini版。

设置

  • 启动cmder
  • 进入Setting-->StartUp-->Startup Options
  • 选择Command line,输入bash -cur_console:p
  • 进入Setting-->Startup-->Tasks
  • 选择bash::bash,将指令改为cmd /c "bash" -cur_console:p -new_console:d:%USERPROFILE%
  • 最后,将cmder的目录添加进环境变量Path中,这样通过Win+R,输入cmder就可以快速启动了。



运行图形界面

前面说过,wsl没有原生支持GUI的。这里通过一个叫Xserver,具体就是XMing这个工具实现可视化。

Xserver下载地址

之后的步骤:

  • 安装XMing,保持Xming开启
  • 安装firefox测试(apt-get install firefox
  • 配置运行参数(echo "export DISPLAY=127.0.0.1:0">>~/.bashrc
  • 也可以配置环境参数export DISPLAY=127.0.0.1:0
  • 最后直接在bash里面敲firefox,XMing即运行可视化浏览器,目前浏览器乱码有些问题等待解决

注:在配置.bashrc文件时,敲export DISPLAY=:0本机上也能运行,但是远程ssh -x就不行了。

装Ubuntu Desktop

sudo apt install ubuntu-desktop

这样Gnome-terminal,gedit,libre都能用了。

注意事项

这个并没有为我们添加模拟Ubuntu桌面的GUI环境,只是替我们安装了Ubuntu GUI默认安装的图形工具,比如gedit等

安装sublime Text 3

cd /home/<username>

# 下载
wget https://download.sublimetext.com/sublime-text_build-3126_amd64.deb
# 安装
dpkg -i sublime-text_build-3126_amd64.deb
# 运行
subl

pss:

使用gtk作为图形依赖包。

说实话,界面超级丑而且满满的xp系统既视感。如果在wsl上编辑文本的话,最好还是使用vim,如果不是在vim上开发项目的话,只需掌握简单的指令应该能满足平时改改配置文件之类的需求。大多时候,我们完全可以在win10上用IDE编辑项目,在wsl上给项目目录做一个sybbolic link,然后用wsl的环境对项目部署等。

另外,关于图形界面XMing的中文处理上暂时还没找到解决方法。所以,目前所有关于图形界面的软件和安装包只能说是玩具,并不实用。

安装配置jdk

下载

wget http://download.oracle.com/otn-pub/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/jdk-8u162-linux-x64.tar.gz?AuthParam=1519703559_88bc1814ec45189fb948c5db85cc8b50

也可以在windows上下载,再cp进安装目录

解压

mkdir /java
tar -xzvf jdk-8u162-linux-x64.tar.gz

配置环境

vim /etc/environment

## 添加下面路径配置
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA_HOME/bin"
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export JAVA_HOME=/java/jdk1.8.0_162 ##执行配置
source /etc/environment ##测试是否成功
java -version

解决重启java配置时效问题

通过配置,etc/profile文件,可以是配置对全局、所有用户有效

vim /etc/profile

## 添加下面信息
export JAVA_HOME=/java/jdk1.8.0_162
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH ## 启用配置
source /etc/profile

root用户还是没法解决问题

经过上面配置,我发现root用户仍然重启后无效。解决方法是,在root/.bashrc下添加配置。每个用户下都有个.bashrc文件,他是专门针对用户有效的配置,即作用域是当前用户。经过这么修改后,目前问题已经解决。

vim /root/.bashrc
## 下面的都一样

安装配置Python3

(to be continue)

设置bash为后台进程

(to be continue)

安装ssh-server

安装ssh之后,就可以使用xshell连接wsl进行操作了。而且xshell的界面非常的美观。

安装ssh-server

sudo apt-get install openssh-server openssh-client

为sshd生成ssh key

sudo /usr/bin/ssh-keygen -A

修改ssh-server配置

vim /etc/ssh/sshd_config

相关修改:

 ListenAddress 0.0.0.0  #去掉原配置的注释即可;监听本地回环
UsePrivilegeSeparation no # yes->no;不知道为什么,不改连接会理解关闭
PasswordAuthentication yes # no->yes;不改只能使用秘钥登陆
PermitRootLogin yes #这个改成yes后,就可以使用root账户远程登陆了,无不需要则不改

启动服务

service ssh start

重启

service ssh --full-restart

注:相关的修改以及服务启动基本上都需要在root权限在操作,如果不是root账户,请在每个指令前加一个sudo指令。

参考文章

Windows10内置Linux子系统初体验

Windows 10 Installation Guide

Windows Subsystem for Linux(WSL)的配置

Windows Subsystem for Linux 安裝及基本配置

Windows Subsystem for Linux(WSL)安装记录的更多相关文章

  1. 适用于windows10 Linux子系统的安装管理配置 How To Management Windows Subsystem for Linux WSL

    什么是WSL Windows Subsystem for Linux 简称WLS,适用于Linux的Windows子系统,可以直接在Windows上运行Linux环境(包括大部分命令行工具) Linu ...

  2. WSL(Windows Subsystem for Linux)的安装与使用

    有关WSL的介绍这里就不做解释了.另外,本文仅适用于win10 build 16215以及之后的版本,之前的版本可参考官方链接. (可使用“winver”命令查看windows版本号) 安装: 1.  ...

  3. WSL(Windows Subsystem for Linux)的安装与使用及 mongodb安装

    有关WSL的介绍这里就不做解释了.另外,本文仅适用于win10 build 16215以及之后的版本,之前的版本可参考官方链接. (可使用“winver”命令查看windows版本号) 安装:1.  ...

  4. 基于Windows Subsystem for Linux (WSL) 【Ubuntu】在WIN10 Home Edition安装Docker

    root@Andy-PC:~# uname -a Linux Andy-PC --Microsoft #-Microsoft Fri Apr :: PST x86_64 x86_64 x86_64 G ...

  5. Windows SubSystem for Linux(WSL)设置默认和设置默认登陆用户

    使用wslconfig命令进行管理 1.  设置默认运行的linux系统 wslconfig /setdefault <DistributionName> 正如上面所说,如果执行wslco ...

  6. Build SSH for Development on Windows Subsystem for Linux

    It seems that Windows Subsystem for Linux (WSL) is getting much more mature than the time when it fi ...

  7. WSL (Windows Subsystem for Linux) 的 VSLAM (Visual Simultaneous Localization and Mapping) 道路

    WSL 的 VSLAM 道路 以 Windows Subsystem for Linux 闯入 Visual Simultaneous Localization and Mapping 世界的艰难道路 ...

  8. VSCode - 使用 WSL(Windows Subsystem for Linux)

    一开始我是只将 VSCode 集成的终端改成 WSL 的 Bash,结果发现内置的 GIt 用的还是 Windows 的 Git,Git Hooks 用的 Windows 的环境,上网搜了一下发现有很 ...

  9. WSL (Windows Subsystem for Linux)

    WSL (Windows Subsystem for Linux) :适用于 Linux 的 Windows 子系统. References Install WSL with a single com ...

随机推荐

  1. pat1066. Root of AVL Tree (25)

    1066. Root of AVL Tree (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue An A ...

  2. Spring Boot实战(2) Spring常用配置

    1. Bean的Scope scope描述Spring容器如何新建Bean的实例.通过注解@Scope实现,取值有: a. Singleton:一个Spring容器中只有一个Bean的实例.此为Spr ...

  3. css 动画 和 响应式布局和兼容性

    14.动画 -moz-:火狐, -ms-:IE,-webkit-:谷歌,-o-:欧朋 transform旋转 rotate旋转 scale放大 translate偏移量 skew倾斜度 transfo ...

  4. intellijidea课程 intellijidea神器使用技巧2-2 精准搜索

    高效定位: 1 类: 类的跳转: Ctrl shift n ==> 查询类名 Ctrl shift n n ==> jar包中的类 2 文件: Ctrl shift shift n ==& ...

  5. Django auth组件拓展 关联外部信息---------------------------- Profile 模式

    https://docs.djangoproject.com/en/2.1/topics/auth/customizing/ 官方文档. 网上的get_profile 方法不好用太假了 可能我没用明白 ...

  6. jQ中css()和addClass的区别之优先级

    笔者在实现点击表格中某行添加高亮的效果时,发现一个css()和addClassd()的冲突,具体代码如下: <style> .se { background:#FF6500; color: ...

  7. Android实现异步的几种方法

    在Android项目中,有经验的开发人员都知道,一些耗时的IO操作等都必须在子线程中去操作,那么可以有哪些方法来开启子线程呢,一般可以使用Java中自带的几种方法,也可以使用Andorid特有的一些类 ...

  8. Python 爬虫实战(二):使用 requests-html

    Python 爬虫实战(一):使用 requests 和 BeautifulSoup,我们使用了 requests 做网络请求,拿到网页数据再用 BeautifulSoup 解析,就在前不久,requ ...

  9. gradle方式集成融云sdk dlopen failed: library "libsqlite.so" not found

    1.gradle implementation 'cn.rongcloud.android:IMLib:2.8.6' implementation 'cn.rongcloud.android:IMKi ...

  10. webstrom使用

    主题 主题下载:http://color-themes.com/?view=index&page=1&order=popular&search=&layout=HTML ...