什么是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. 一个ActionResult中定位到两个视图—<团委项目>

    在使用MVC做项目的时候一般的情况就是一个ActionResult一个视图,这样对应的Return View();就可以找到下面对应的视图,这是根据一个原则,“约定大于配置”,但是我们有的时候需要在一 ...

  2. [JAVA][Liferay] Duplicate key value violates unique constraint for resourcepermissionid in Liferay

    Unexpected exception thrown when create new site: 09:47:10,114 ERROR [ajp-bio-8009-exec-113][JDBCExc ...

  3. MarkDown 编辑器学习

    MarkDown 编辑器学习 是一种简单快键的文字排版工具,可以用于编写说明文档,鉴于其语法简洁明了,且其渲染生成的样式简单美观,很多开发者也用它来写博客,已被国内外很多流行博客平台所支持.生成的文件 ...

  4. table表格td内内容自动换行

    项目开发时,遇到问题:td内传入数据,全是字母,不会自动换行 一般字母数字/特殊符号的话,会被浏览器默认是一个字符串或者说一个单词,不会自动换行 所以需要设置一下,让表格内容自动换行. 1.给td标签 ...

  5. 菜鸟 学注册机编写之 Android app

    0x00前言 环境及工具: 手机    Nexus 4(己root) 系统版本    Android 5.01 工具    AndroidKiller_V1.2 关于Android平台app注册机的编 ...

  6. Struts2_模块包含

    <include file="login.xml"/> 包含其他的模块. 项目开发中,分模块协调开发有用. 链接: http://pan.baidu.com/s/1bo ...

  7. ownCloud-9.1.1 (Ubuntu 16.04)

    平台: Ubuntu 类型: 虚拟机镜像 软件包: owncloud-9.1.1 commercial content management open-source owncloud storage ...

  8. Vim插件推荐

    看下文时要知道我的<leader>键就是\. ctags C程序阅读辅助工具.在看C/C++代码的时候经常需要在文件之间跳来跳去,这是很麻烦的事,ctags就是解决这种问题的.ctags是 ...

  9. 关于使用Encoding转码的问题,以及StreamWriter的小应用

    StreamWriter write = new StreamWriter("../../test2.txt"); write.WriteLine("中国123巴西red ...

  10. Uva 11572 唯一的雪花

    题目链接:https://uva.onlinejudge.org/external/115/11572.pdf 题意:找到一个尽量长的连续子序列 Al ~ AR ,使得该序列没有相同的元素. 分析:枚 ...