热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

windowslinux双系统_还在安装双系统?试试Windows和Linux合体

作为一个长期使用Linux作为主力系统的开发人员,我经常向周围的朋友安利Linux(Ubuntu)系统。但非常尴尬的是,大部分人都是浅尝辄止࿰

作为一个长期使用 Linux 作为主力系统的开发人员,我经常向周围的朋友安利 Linux ( Ubuntu )系统。但非常尴尬的是,大部分人都是浅尝辄止,最后还是会回到 Windows 系统,布道成功的并不多。毕竟习惯的力量非常强大,要从一个熟悉的系统转向陌生的系统,需要有足够的动力才行。一句“ Linux 系统上能够玩游戏吗?”就能让我哑口无言,还有诸如网课、办公、图像处理软件之类的问题。的确,Linux 系统在应用程序支持方面(特别是娱乐休闲类)一直是软肋。虽然经过这么多年的努力,但具有全平台支持(Windows、Linux、Mac OS等)的软件还是相当少,特别是国内的一些办公软件、网课客户端,通常只开发了 Windows 版本。

在科技领域,向来是强者恒强, Linux 系统的生态要赶超 Windows,还有很长的路要走。这个时候,我们通常会选择一些折中的方案,兼收两系统之长处。这其中最常用的方法就是在电脑上安装双系统。娱乐办公的时候进 Windows 系统,开发的时候进 Linux 系统。然而,电脑上的双系统,并没有做到像手机那样“双卡双待”,在一个时间点,我们只能在其中一个系统中。比如如果要在写代码之余,玩两把游戏,就需要退出 Linux 系统,然后进入 Windows系统。反之依然,要进入 Linux 系统,就需要退出当前的系统。这样在两个系统之间切换,甚是不便。

WSL

59cc5ee86262c1190b0df65345137173.png

因为战略转型,微软开始积极拥抱 Linux 系统,目前已经是 Linux 社区最大的贡献者。他们也意识到这一问题,所以在 Windows 10 中增加了 WSL(Windows Subsystem for Linux)。顾名思义, WSL 就是 Windows 系统的 Linux 子系统,但并非固化在 Windows 10中,而是作为 Windows 组件, 出现在 Windows 10 系统中(1607 版本之后)。

重点:要体验 WSL,需要将 Windows 10 更新到 1607 之后的版本。

关于 WSL,有几点需要澄清:

  1. WSL 并不是 Linux发行版, 它本质上是系统层面对 Linux 内核的支持,为了在 Windows 中使用,还需要在 Win10 的应用商店内搜索下载我们喜欢的 Linux 发行版。目前, WSL 支持Ubuntu, Kali Linux,OpenSUSE 等,后续会有更多 Linux 发行版支持 WSL 。
  2. WSL 作为系统层的一部分,相较于应用层(虚拟机)会消耗更少的资源,并且与系统锲合度更高。事实上,我们只需要打开一个类似 CMD 的Bash命令行窗口,就可以开始使用 WSL(相当于建立了一个 Session ,因为 WSL 会一直伴随 Win10 的运行而运行),相对于从虚拟机启动既省时又省力。
  3. 由于 WSL 子系统依附于“系统”,所以“子系统”会有一些限制。不过也不用担心,虽然 WSL 不是完整的 Linux 系统,绝大多数在完整 Linux 系统能做的事,在 WSL 中也可以做到。

WSL2

在试水了 WSL 之后,微软迅速推出了 WSL2,这是一个全新的 WSL 版本。技术演进从来都不是一蹴而就的,所以目前 WSL 和 WSL2 是并存的。秉承着旧不如新的原则,建议大家选择 WSL2 这个版本。为什么呢?

WSL2 使用了全新的体系结构,该体系结构可运行真正的 Linux 内核,可在 Windows 上运行 ELF64 Linux 二进制文件。它提高了文件系统性能,增加了完整的系统调用兼容性。

当然,你也可以选择将 Linux 发行版作为 WSL 或 WSL2 运行。而且,你可以随时在这些版本之间切换。

安装

Microsoft承诺在不久的将来为 WSL2 提供流畅的安装体验,并能够通过 Windows 更新来更新 Linux 内核。就目前而言,安装过程稍显复杂,但也不要畏惧,按照步骤操作即可。

本文介绍在 Windows 10 上安装 Ubuntu 20.04,但这个过程对于微软应用商店中的任何发行版都适用。

首先,你应该启用 Windows Subsystem for Linux 可选功能。请以管理员身份打开 PowerShell 并运行以下命令:

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

接下来,将系统更新为 WSL2 。为此,Windows 10 必须更新为 2004 版或这之后的版本,并且必须在BIOS 设置中启用英特尔的虚拟化技术。然后,以管理员身份启动 PowerShell 并运行以下命令:

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

重新启动计算机以完成 WSL 安装并更新到 WSL2 。然后,在安装新发行版时,需要将 WSL2 设置为默认版本。为此,以管理员身份打开 PowerShell 并运行以下命令:

wsl --set-default-version 2

运行该命令后,你可能会看到此消息:WSL2 需要对其内核组件进行更新。有关信息,请访问https://aka.ms/wsl2kernel。一旦安装了内核,请再次运行该命令,它应该成功完成而不显示消息。

4dd2955b48008b6f563e50df7254a2ec.png

最后一步也很重要,我们应该安装 Linux 发行版。打开微软应用商店,然后搜索 Ubuntu 20.04 LTS 。安装后你应该可以在 Windows 的开始菜单中找到一个新添加的 Ubuntu应用程序 。启动它并按照说明(主要是创建一个新的 Linux 用户)完成安装。

要检查 WSL2 上是否安装了 Linux 发行版,请运行:

wsl --list --verbose

如果结果表明它使用WSL 1,则可以通过运行:

wsl --set-version

对其进行更改。

这样,你已经在 Windows 10 中安装了完整的 Ubuntu 发行版!

安装之后

准备好 Ubuntu 之后,我们可以安装所需的任何东西。例如,如果你从事数据分析,则可以安装最新的 Anaconda 发行版;如果你是前端工程师,则可以安装 angular 和 npm 等。

然而,到目前为止,WSL 还没有对 Linux GUI 应用程序的支持,这意味这你只能在 WSL Linux 中使用命令行,关于 Linux 命令行,可以参考我前面的一篇文章:

掌握基本的命令行,迈向 Linux 第一步

没法在 WSL Linux 中使用图形应用程序,那编写 Linux 应用程序怎么办?总不至于使用编程神器 vi 或 emacs 吧,这可不是普通程序员能 hold 得住的两大神器。

在这里,向大家隆重介绍 Visual Studio Code。VSC 是许多开发人员首选的 IDE 。借助于远程开发插件,我们可以使用在 Windows 下安装的 VSC,通过 SSH 协议编辑位于 WSL2 上的源码。VSC 有各种语言的智能提示,内置 git 支持,还有众多的插件,你所能想到的需求,几乎都可以通过插件来完成。所以编写 Linux 应用程序,同样和编写 Windows 应用程序一样简单方便。

缺憾

WSL2 在不停的演化中,也许过不了多久,又会出现 WSL3、WSL4,对 Linux 系统的全面支持也越来越好。就目前而言,最大的缺憾之一就是前面提到的不支持 Linux GUI。另一个缺憾是对 GPU 的支持。在过去的几年中,WSL、虚拟化、DirectX,Windows 驱动等团队和其他合作伙伴一直在努力开发此项功能,相信要不了多久,就可以得到全面支持。那个时候,我们就可以在 WSL 中进行机器学习相关的开发。

虽然有着这些缺憾,但 WSL 作为 Linux 入门的系统,还是非常推荐。经常有朋友向我抱怨,说在公司就做一些修改 BUG、CURD 操作之类的开发,一点技术含量没有。与其抱怨,不如行动起来。目前几乎所有的服务器后端都采用了 Linux 系统,其它的诸如 Android 系统开发、内核开发、机器学习、大数据,都是以 Linux 作为首选系统。迈出转变的第一步,也许前面的路就开阔了。

参考

  1. What is the Windows Subsystem for Linux?
  2. WSL 使用指南——01 WSL入门
  3. Dual Boot is Dead: Windows and Linux are now One

0e79590c371d0ab30519118d32a2a868.png



推荐阅读
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • 系统管理员可以通过多种方法实时监控Linux系统中的用户活动,包括当前已登录的用户及其正在进行的操作。利用特定的命令和工具,管理员可以轻松获取这些信息,确保系统的安全性和稳定性。例如,使用`who`、`w`或`last`等命令可以快速查看当前登录的用户及其活动详情。 ... [详细]
  • 如何选择并安装合适的Python环境和工具以解决常见的下载问题
    选择并安装合适的Python环境和工具对于解决常见的下载问题至关重要。用户可以直接访问Python官方网站进行下载,无需额外安装其他软件。Python作为一种跨平台的编程语言,支持多种操作系统,并具备面向对象和动态类型的特性,能够有效提升开发效率和代码可维护性。此外,推荐使用虚拟环境管理工具如venv或conda,以便更好地隔离项目依赖,确保开发环境的稳定性和安全性。 ... [详细]
  • 在生产环境中进行高效部署与优化 ... [详细]
  • linux用通配符排除指定字符结尾文件的一种方法,Go语言社区,Golang程序员人脉社 ... [详细]
  • 深入解析:Android开发进阶之Vim编辑器基础操作与应用
    本文深入探讨了Android开发中使用Vim编辑器的基础操作与应用。通过详细解析Vim的基本命令、配置文件和常用插件,帮助开发者提高代码编写效率。文章还介绍了如何在Android开发环境中高效利用Vim,包括集成开发环境(IDE)的配置和常见问题的解决方法。适合初学者和有经验的开发者参考。 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
  • 本文详细介绍了在Ubuntu操作系统中使用GDB调试工具深入分析和调试标准库函数`printf`的源代码过程。通过具体步骤和实例,展示了如何设置断点、查看变量值及跟踪函数调用栈,帮助开发者更好地理解`printf`函数的工作原理及其内部实现细节。 ... [详细]
  • 在 Python 中,魔法方法 `__dict__` 和 `__getattr__` 具有重要的作用和灵活的应用。`__dict__` 是一个用于存储对象属性的字典,其中键为属性名,值为对应的属性值。通过 `__dict__`,可以动态地访问和修改对象的属性。而 `__getattr__` 方法则在尝试访问对象中不存在的属性时被调用,提供了一种优雅的处理方式,避免了属性访问错误。这两个魔法方法在实现复杂的数据结构和动态行为时尤为有用。 ... [详细]
  • 本文探讨了将PEBuilder转换为DIBooter.sh的方法,重点介绍了如何将DI工具集成到启动层,实现离线镜像引导安装。通过使用DD命令替代传统的grub-install工具,实现了GRUB的离线安装。此外,还详细解析了bootice工具的工作原理及其在该过程中的应用,确保系统在无网络环境下也能顺利引导和安装。 ... [详细]
  • Linux学习精华:程序管理、终端种类与命令帮助获取方法综述 ... [详细]
  • Docker网络基础探讨了如何通过高效的技术手段实现跨主机容器间的顺畅通信与访问。本文深入分析了Docker网络架构,特别是其在多主机环境下的应用,为Go语言开发者提供了宝贵的实践指导和理论支持。 ... [详细]
  • 本文介绍了在Windows 10系统下使用VirtualBox虚拟机环境部署CentOS 7.2,并在其上安装Docker的具体步骤。针对宝塔面板在Docker容器中磁盘空间限制为8GB的问题,提供了详细的解决方案和优化建议,确保用户能够高效利用有限的存储资源。 ... [详细]
  • 在Linux环境中,通过编写Shell脚本来实现自定义命令的创建与激活,能够极大地简化服务器上多个子系统的管理操作。例如,通过简单的命令如“tt”,即可快速查看各个应用程序的名称及其运行状态,从而提高系统维护的效率和便捷性。 ... [详细]
author-avatar
1021365712_3a478e
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有