标签 WSL 下的文章

WSL 可以让你访问 Windows 上的 Linux Bash shell。

上一篇文章 中,我们讨论过关于 Windows 的子系统 Linux Windows Subsystem for Linux (WSL)的目标用户。本文,我们将在 Windows 10 的设备上,开启 WSL 的旅程。

为 WSL 做准备

您必须使用最新版本的 Windows 10 Fall Creator Update。之后,通过在开始菜单栏搜索 “About”,检查 Windows 10 的版本。为了使用 WSL,您的版本应当为 1709 或者最新版。

这里有一张关于我的操作系统的截图。

如果您安装了之前的版本,您需要在 这里 下载并且安装 Windows 10 Fall Creator Update (FCU)。安装完毕后,安装可用的更新(在开始菜单的搜索框中搜索 “updates”)。

前往 “启用或关闭 Windows 功能” ,然后滚动至底部,如截图所示,勾选 “适用于 Linux 的 Windows 子系统”,点击确定。它将会下载安装需要的包。

安装完成之后,系统将会询问是否重启。是的,重启设备吧。WSL 在系统重启之前不会启动,如下所示:

一旦您的系统重启,返回 “启用或关闭 Windows 功能” 页面,确认 “适用于 Linux 的 Windows 子系统” 已经被勾选。

在 Windows 中安装 Linux

在 Windows 中安装 Linux,有很多方式,这里我们选择一种最简单的方式。打开 Microsoft Store,搜索 Linux。您将看到下面的选项:

点击 “获取”,之后 Windows 商店将会提供三个选项:Ubuntu、openSUSE Leap 42 和 SUSE Linux Enterprise Server。您可以一并安装上述三个发行版,并且它们可以同时运行。为了能使用 SLE,您需要一份订阅。

在此,我将安装 openSUSE Leap 42 和 Ubuntu。选中您想要的发行版,点击“获得”按钮并安装。一旦安装完毕,您就可以在 Windows 中启动 openSUSE。为了方便访问,可以将其固定到开始菜单中。

在 Windwods 中使用 Linux

当您启动该发行版,它将会打开一个 Bash Shell 并且安装此发行版。安装完毕之后,您就可以开始使用了。您需要留意,openSUSE 中并没有(普通)用户,它直接运行在 root 用户下,但是 Ubuntu 会询问您是否创建用户。在 Ubuntu,您可以以 sudo 用户执行管理任务。

在 openSUSE 上,您可以很轻松的创建一个用户:

# useradd [username]
# passwd [username]

为此用户创建一个新的密码。例如:

# useradd swapnil
# passwd swapnil

您可以通过 su 命令从 root 用户切换过来。

su swapnil

您需要非根用户来执行许多任务,比如使用 rsync 移动文件到本地设备。

而首要任务是更新发行版。对于 openSUSE 来说,您应该:

zypper up

而对于 Ubuntu:

sudo apt-get update
sudo apt-get dist-upgrade

现在,您就在 Windows 上拥有了原生的 Linux Bash shell。想在 Windows 10 上通过 ssh 连接您的服务器?不需要安装 puTTY 或是 Cygwin。打开 Bash 之后,就可以通过 ssh 进入您的服务器。简单之至。

想通过 rsync 同步文件到您的服务器?直接使用 rsync。它切实的将我们的 Windows 设备转变得更为实用,帮助那些需要使用原生 Linux 命令和 Linux 工具的用户避开虚拟机,大开方便之门。

Fedora 在哪里?

您可能奇怪为什么没有 Fedora。可惜,商城里并没有 Fedora。Fedora 项目发布负责人在 Twitter 上表示,“我们正在解决一些非技术性问题。现在可能提供不了更多了。”

我们并不确定这些非技术性问题是什么。当一些用户询问 WSL 团队为何不发布 Fedora,毕竟它也是一个开源项目。项目负责人 Rich Turner 在 Microsoft 回应,“我们有一个不发布其他知识产权到应用商店的政策。我们相信,相较于被微软或是其他非权威人士,社区更希望看到发行版由发行版所有者发布。”

因此,微软不方便在 Windows 商店中直接发布 Debian 或是 Arch 系统。这些任务应该落在他们的官方团队中,应该由他们将发行版带给 Windows 10 的用户。

欲知后事,下回分解

下一篇文章,我们会讨论关于将 Windows 10 作为 Linux 设备,并且向您展示,您可能会在 Linux 系统上使用的命令行工具。


via: https://www.linux.com/blog/learn/2018/2/how-get-started-using-wsl-windows-10

作者:SWAPNIL BHARTIYA 译者:CYLeft 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在本系列早先的文章中,我们讨论了关于如何在 Windows 10 上开启 WSL 之旅 的内容。作为本系列的最后一篇文章,我们准备探讨一些能在 Windows 10 上广泛使用的 Linux 命令。

话题深入之前,请先让我们明确本教程所适用的人群。本文适用于使用 Windows 10 系统,但是又想在 Azure、AWS 或是私有云平台上学习 Linux 的初级开发者。换句话说,就是为了帮助初次接触 Linux 系统的 Windows 10 用户。

您的工作任务决定了您所需要的命令,而我的需求可能和您的不一样。本文旨在帮助您在 Windwos 10 上舒服的使用 Linux。不过请牢记,WSL 并不提供硬件访问的功能,比如声卡、GPU,至少官方是这么描述的。但是这可能并不能阻止 Linux 用户的折腾精神。很多用户不仅完成了硬件访问,甚至已经在 Windows 10 上安装上了 Linux 桌面程序。但是本文并不会涉及这些内容,我们可能会讨论这些,但不是现在。

下面是我们需要着手的任务。

如何让您的 Linux 系统保持到最新的版本

因为 Linux 运行在了 Windows 系统中,所以您将被剥夺 Linux 系统所提供的所有安全特性。另外,如果不及时给 Linux 系统打补丁,你的 Windows 设备将被迫暴露在外界威胁中,所以还请保持您的 Linux 为最新版本。

WSL 官方支持 openSUSE/SUSE Linux Enterprise 和 Ubuntu。您也可以安装其他发行版,但是我只需要它们当中的二者之一就可以完成我的所有工作,毕竟,我只需要访问一些 Linux 基础程序。

更新 openSUSE Leap:

sudo zypper up

如果您想升级系统,您可以运行下面的命令:

sudo zypper dup

更新 Ubuntu:

sudo apt-get update
sudo apt-get dist-upgrade

这样你就安全了,由于 Linux 系统的更新是渐进式的,所以更新系统成为了我的日常。不像 Windows 10 的更新通常需要重启系统,而 Linux 不同,一般只有 KB 或是 MB 级的更新,无需重启。

管理文件目录

系统更新之后,我们来看看一些或普通或不太普通的任务。

系统更新之外的第二重要的任务是使用 Linux 管理本地和远程文件。我承认我更青睐图形界面程序,但是终端能提供更可靠、更有价值的服务。要不你使用资源管理器移动 1 TB 的文件试试?我通常使用 rsync 命令来移动大量文件。如果中断任务,rsync 可以在上次停止的位置继续工作。

虽然您可能更习惯使用 cp 或是 mv 命令复制、移动文件,但是我还是喜欢灵活的 rsync 命令,了解 rsync 对远程文件传输也有帮助。使用 rsync 大半为了完成下面三个任务:

使用 rsync 复制整个目录:

rsync -avzP /source-directory /destination directory

使用 rsync 移动文件:

rsync --remove-source-files -avzP /source-directory /destination-directory

在成功复制目标目录之后,此命令将删除源文件。

使用 rsync 同步文件:

我的文件可能在多处存储。但是,我只会在主要位置中增加或是删除。如果不使用专业的软件,同步文件可能会给用户带来挑战,而 rsync 刚好可以简化这个过程。这个命令可以让两个目录文件内容同步。不过要注意,这是一个单向同步,即从源位置同步到目标位置。

rsync --delete -avzP /source-directory /destination-directory

如果源目录中没有找到文件,上述命令将删除目标目录中的文件。换言之,它创建了源目录的一个镜像。

文件自动备份

保持文件备份是一项乏味的工作。为了保持我的设备的完全同步,我运行了一个 cron 作业在夜间保持我的所有目录同步。不过我会留一个外部驱动器,基本上每周我都会手动同步一次。由于可能删掉我不想删除的文件,所以我并没有使用 --delete 选项。我会根据情况手动决定是否使用这个选项。

创建 cron 作业,打开 crontab:

crontab -e

移动大文件时,我会选择在系统空闲的深夜执行该命令。此命令将在每天早上 1 点运行,您大概可以这样修改它:

# 0 1 * * * rsync -avzP /source-directory /destination-directory

这是使用 crontab 的定时作业的命令结构:

# m h dom mon dow command

在此,m = 分钟,h = 小时,dom = 本月的某天,mon = 月,dow = 本周的某天。

我们将在每天早上 1 点运行这条命令。您可以选择 dow 或是 dom(比如,每月 5 号)等。您可以在 这里 阅读更多相关内容。

管理远程服务器

在 Windows 系统上使用 WSL 的优势之一就是能方便管理云上的 Linux 服务器,WSL 能提供原生的 Linux 工具给您。首先,您需要使用 ssh 命令登录远程 Linux 服务器。

比如,我的服务器 ip 是 192.168.0.112;端口为 2018(不是默认的 22 端口);Linux 用户名是 swapnil,密码是 “就不告诉你”。

ssh -p2018 [email protected]

它会向您询问用户密码,然后您就可以登录到 Linux 服务器了。现在您可以在 Linux 服务器上执行任意您想执行的所有操作了。不需使用 PuTTY 程序了。

使用 rsync ,您可以很轻易的在本地机器和远程机器之间传输文件。源目录还是目标目录取决于您是上传文件到服务器,还是下载文件到本地目录,您可以使用 username@IP-address-of-server:/path-of-directory 来指定目录。

如果我想复制一些文本内容到服务器的 home 目录,命令如下:

rsync -avzP /source-directory-on-local-machine ‘ssh -p2018’ [email protected]:/home/swapnil/Documents/

这将会复制这些文件到远程服务器中 Documents 目录。

总结

本教程主要是为了证明您可以在 Windows 10 系统上通过 WSL 完成 Linux 方面的很大一部分的任务。通常来说,它提高了生产效率。现在,Linux 的世界已经向 Windwos 10 系统张开怀抱了,尽情探索吧。如果您有任何疑问,或是想了解 WSL 涉及到的其他层面,欢迎在下方的评论区分享您的想法。

Administering Linux on Azure (LFS205) 课程中了解更多,可以在 这里 注册。


via: https://www.linux.com/blog/learn/2018/3/most-useful-linux-commands-you-can-run-windows-10

作者:SAPNIL BHARTIYA 译者:CYLeft 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Canonical 前几天正式发布公告称,“Windows 10 Loves Ubuntu”,其 Ubuntu 16.04 LTS 在 Windows 10 商店中以应用的方式出现,这是继 openSUSE 及 SLES 之后,又一款可以从 Windows 10 商店中下载的 Linux 操作系统。

一些用户已经注意到了,Ubuntu Linux 是以 WSL(Windows Subsystem for Linux)的方式出现在 Windows 10 商店中,如我们之前多次的报道,其目的主要是可以让跨平台开发者们无须重启或运行虚拟机即可在两个平台测试其开发的应用。

不过,这次 Canonical 正式发布的公告是以 “Windows 10 Loves Ubuntu” 为题,显然是呼应了之前微软 CEO 萨提亚的口号“Microsoft Love Linux”。在该公告中,正式宣布了其 Ubuntu 16.04 LTS 以应用的方式出现在 Windows 10 商店中,不过只有使用最新的 Windows Insider 构建版本才能使用。

“这个最新改进的应用是由 Canonical 在微软 WSL 团队的协助下创建,并在微软 Build 2017 大会上宣布。” Canonical 工程师 Dimitri John Ledkov 说,“其安装体验得到了极大改进,使用 Ubuntu on Windows 将从所未有的容易。”

用户需要加入到 Windows Insiders 计划中,并升级到 Windows 10 的最新预览版才能使用它,因为“Windows Subsystem for Linux(WSL)”只在 Windows Insider 构建版本中可用。

要激活它,搜索“打开或关闭 Windows 功能”,启用“Windows Subsystem for Linux” 选项,并像安装其它应用一样从 Windows 10 商店中安装 Ubuntu 即可。安装后第一次启动需要初始化配置。

此外, 除了 SUSE 和 Ubuntu 之外,Fedora 也在计划进入 Windows 10 商店中。

via: softpediaubuntu

虽然并非微软官方出品,不过你现在可以在 Windows 10 的 Linux 子系统(WSL)中使用 openSUSE Leap 或 SUSE Linux 企业版(SLES)了。

正如你所知道的,最新的 Windows 10 版本中含有一个完整的、基于 Ubuntu 的 Bash,开发者们可以在 Windows 桌面中直接运行 Linux 软件或命令。这被称为“Bash on Ubuntu on Windows”——一个啰嗦的名字——现在可以从 Windows 的开始菜单直接访问到了。

不过,SUSE 的资深产品经理 Hannes Kühnemund 却表示,以他自己的观点来看,微软在选择 Linux 发行版时选“错”了——明显应该选 openSUSE 嘛。

“在 Windows 上原生地运行 Linux 二进制程序……这听起来真棒!然而,十分不幸是,微软在 WSL 里面选用了一个错误的 Linux(当然,这是我个人的看法),而现在是我们让它回到轨道上的时候了。” Hannes Kühnemund 说到,“为啥选 SUSE?因为 SUSE 从 1992 年开始就在做 Linux 发行版了。想找一个资格更老的 Linux 厂商(也可以叫发行版),对不起,你找不到,根本就木有!”

好吧,不管怎么说,如果你也对此感兴趣的话,他还写了篇文章教给你如何在 Windows 10 的 WSL 中安装 SUSE。

在 Windows 10 中安装 openSUSE Leap 42.2

如果你是 SUSE 粉,而你又想在 Windows 10 中使用你喜爱的 SUSE,但是又厌倦了使用虚拟机或配置双引导,那么就跟着 Kühnemund 先生一起来吧,他会教给你如何在 WSL 中安装最新的 openSUSE Leap 42.2。

首先,你需要按照微软的说明启用 WSL,也可以参考我们之前的介绍。确保在安装过程中创建了一个普通用户(带口令)。

这些步骤也同样适用于 SUSE Linux 企业版(SLES) 12 SP2,不过你需要下载另外一个文件。

运行如下命令下载 openSUSE Leap 42.2 的 docker 用户空间:

wget -O openSUSE-42.2.tar.xz https://github.com/openSUSE/docker-containers-build/blob/openSUSE-42.2/docker/openSUSE-42.2.tar.xz?raw=true

然后从开始菜单中打开 Linux bash shell,并执行如下命令来解压,然后退出 shell:

sudo mkdir rootfs
sudo tar -C rootfs -Jxf openSUSE-42.2.tar.xz
exit

如果在运行这些命令时出现一些警告,可以忽略。

完成之后,备份当前的“Bash on Ubuntu on Window” 安装:

cd %localappdata%\lxss\
rename rootfs rootfs.ubuntu

然后复制新的 openSUSE Leap 42.2 的根文件系统 rootfs:

move .\home\rootfs .\

最后,设置 root 为默认用户:

lxrun /setdefaultuser root

这样,下次你再访问 bash 时,你就用的是运行在 WSL 中的 openSUSE 或 SLES 啦。

当然,你还可以再做的完美些。用这个绿绿的 SUSE 图标替换 “Bash on Ubuntu on Window” 默认的橘红 Ubuntu 图标:

cd %localappdata%\lxss\
rename bash.ico Ubuntu.ico
rename Saki-NuoveXT-Apps-suse.ico bash.ico

在 Windows 10 中运行 SUSE Linux shell

哦,除了图标,启动菜单中的名字 “Bash on Ubuntu on Window” 显然你也想换过来,进到 %AppData%\Microsoft\Windows\Start Menu\Programs,把默认项改成“Bash on SUSE on Windows” 或其它你想要的什么名字。

其它发行版呢?

如果你喜欢其它 Linux 发行版,比如 Arch Linux,那么你可以看看这篇文章

还能支持别的 Linux 发行版吗?你别说,还真有人做出了一个工具,可以在 WSL 中支持大多数的 Linux 发行版,并可以在这些发行版之间切换自如。

这个工具是由 RoliSoft 贡献到 GitHub 上的,名为 WSL-Distribution-Switcher 。其思路类似于上面 openSUSE 的思路,都是采用容器作为 WSL 中的根文件系统。

你可以通过该工具中的 get-prebuilt.pyget-source.py 从 Docker Hub 上下载各个发行版的官方镜像或 tar 包,然后用 install.py 安装即可。最后,你还可以通过 switch.py 在你下载安装的 WSL 中进行切换。具体的操作,请参考其说明

由于它使用的是 Docker Hub 官方镜像,因此,它可以支持大多数 Linux 发行版,比如:

怎么样,你有试过在 Windows 10 中的 WSL 里面运行 Linux 吗?

via:softpediasusegithubmicrosoft

微软终于承认了开源世界的潜力,尤其是对 Linux 而言,所以,微软正在尝试以各种方式来在开源领域开疆辟土。

最近,在微软的 Channel 9 上的一则名为“改进 Bash on Windows 和 Windows 控制台”的视频节目中,其高级程序经理 Rich Turner 呼吁 Linux 开发人员放弃 Linux ,转到 Windows 10 上来。

他解释说,“(Linux 开发者)可以启动 Windows 10 Insiders 实例,并在其中运行其代码和工具,把网站托管到 Apache 上,并用 Java 代码来访问其 MySQL 数据库。”

他继续补充说,Windows 中的 Linux 子系统将给开发者们提供所有他们在 Linux 开发中必要的工具,而不用丧失 Windows 10 的优势。

“就像在 Linux 中一样构建应用,无论它是用 Go 写的,还是用 Erlang、C,你可以在 Bash on Windows 中试试你要用的任何东西,有 bug 就丢给我们来解决。我们的目标就是构建一个大家都能用的、更高效的产品给大家。”

微软正在致力于改善 Windows 10 上 Linux 子系统,最终目标是让当前 Linux 上的所有开发工具都能兼容地运行在 Windows 10 之中,让所有切换到他们的操作系统的开发者都能够用上。

最近,微软作为白金会员加入了 Linux 基金会,许诺为开源世界的开发做出贡献。这个事情令很多人都很吃惊,特别是其前 CEO 巴尔默还曾经称 Linux 为“癌症”,但是随着新 CEO 萨提亚上任之后,微软的画风大变,这个软件巨人正在逐渐深入到开源生态之中。

今年初,当 Microsoft 和 Canonical 发布 Windows 10 Bash 和 Ubuntu 用户空间,我尝试做了一些初步性能测试 Ubuntu on Windows 10 对比 原生 Ubuntu,这次我发布更多的,关于原生纯净的 Ubuntu 和基于 Windows 10 的基准对比。

Windows 的 Linux 子系统

Windows 的 Linux 子系统测试完成了所有测试,并随着 Windows 10周年更新放出。 默认的 Ubuntu 用户空间还是 Ubuntu 14.04,但是已经可以升级到 16.04。所以测试首先在 14.04 测试,完成后将系统升级升级到 16.04 版本并重复所有测试。完成所有基于 Windows 的 Ubuntu 子系统测试后,我在同样的系统上干净地安装了 Ubuntu 14.04.5 和 Ubuntu 16.04 LTS 来做性能对比。

Ubuntu

配置为 Intel i5 6600K Skylake,16G 内存和 256G 东芝 ssd,测试过程中每个操作系统都采用其原生默认配置和软件包。

http://openbenchmarking.org/embed.php?i=1608096-LO-BASHWINDO87&sha=09989b3&p=2

这次 Ubuntu/Bash on Windows 和原生 Ubuntu 对比测试,采用开源软件 Phoronix 测试套件,完全自动化并可重复测试。

SQLite 嵌入式数据库基准测试

首先是 SQLite 嵌入式数据库基准测试。这方面开箱即用的 Ubuntu/Bash on Windows 性能是相当的慢,但是如果将环境从 14.04 升级到 16.04 LTS,性能会快很多。然而,对于繁重磁盘操作的任务,原生 Ubuntu Linux 几乎比 Windows 的子系统 Linux 快了近 2 倍。

编译测试:编译

编译测试:初始创建

编译测试作为额外的繁重磁盘操作测试显示,定制的 Windows 子系统真的成倍的限制了 Ubuntu 性能。

接下来,是一些使用 Stream 的基本的系统内存速度测试:

Stream:复制

Stream:缩放

Stream:添加

奇怪的是,这些 Stream 内存的基准测试显示 Ubuntu on Windows 的性能比原生的 Ubuntu 好!这个现象同时发生在基于同样的 Windows 却环境不同的 14.04 和 16.04 LTS 上。

接下来,是一些繁重 CPU 操作测试。

Dolfyn 科学测试

通过 Dolfyn 科学测试,Ubuntu On Windows 和原生 Ubuntu 之间的性能其实是相当接近的。 对于 Ubuntu 16.04,由于较新的 GCC 编译器性能衰减,两个平台上的性能都较慢。

Fhourstones 测试

John The Ripper 测试

透过 Fhourstones 测试和 John The Ripper 测试表明,通过在 Windows 的 Linux 子系统运行的 Ubuntu 的性能可以非常接近裸机 Ubuntu Linux 性能!

x264 测试:H264视频编码

类似于 Stream 测试,x264 结果是另一个奇怪的情况,其中最好的性能实际上是使用 Linux 子系统的 Ubuntu On Windows!

Linux 内核编译时间

PHP 编译时间

计时编译基准测试非常利于裸机 Ubuntu Linux。这是应该是由于大型程序编译需要大量读写磁盘,在先前测试已经发现了,这是基于 Windows 的 Linux 子系统缓慢的一大领域。

Crafty

FLAC 音频编码

OpenSSL

许多其他的通用开源基准测试表明,严格的针对 CPU 的测试,Windows 子系统的 Ubuntu 的性能是很接近的,甚至是与原生安装在实际硬件中的 Ubuntu Linux 相等。

最新的 Windows 的 Linux 子系统,测试结果实际上相当令人印象深刻。让人沮丧的仅仅只是持续缓慢的磁盘/文件系统性能,但是对于受 CPU 限制的工作负载,结果是非常引人注目的。还有很罕见的情况, x264 和 Stream 测试,Ubuntu On Windows 上的性能看起来明显优于运行在实际硬件上 的Ubuntu Linux。

总的来说,体验是十分愉快的,并且在 Ubuntu/Bash on Windows 也没有遇到任何其他的 bug。如果你有还兴趣了解更多关于 Windows 和 Linux 的基准测试,欢迎留言讨论。


via: https://www.phoronix.com/scan.php?page=article&item=windows10-anv-wsl&num=1

作者:Michael Larabel 译者:VicYu/Vic020 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出