本文围绕计算机操作系统,概述了当下各种生信分析的工作环境。

一文掌握Conda软件安装:虚拟环境、软件通道、加速solving、跨服务器迁移

01

Linux子系统

Windows下的Linux子系统,即WSL(Windows Subsystem for Linux)。基于Win10的WSL技术目前可使用的是Ubuntu子系统,后者是一个完整的Ubuntu终端环境,可以使用Linux环境下的任何软件和文件而不用离开Windows。WSL是一个在Win10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层,它是由微软与Canonical公司合作开发。WSL基于Windows NT内核虚拟了Linux内核接口,其能够运行大部分的Linux软件,但图形化界面无法运行


WSL包含内核态驱动(lxss.sys和 lxcore.sys),以协调Linux系统调用的请求与Windows NT内核。驱动不包含Linux内核代码,但是是一个全新实现的Linux兼容的内核接口。在原生的Linux上,用户态程序请求一个系统调用,系统调用请求由Linux内核处理。在WSL,当一个系统调用由同一个可执行文件请求时,Windows NT内核把请求发送给lxcore.sys。当可能时,lxcore.sys将Linux系统调用翻译成等价的Windows NT的调用,由它来完成繁重的工作。当没有可能的等价转换时,Windows内核态驱动需要直接处理请求。比如说,Linux中的fork()系统调用没有直接的等价的Windows版本。当一个fork系统调用由Windows Subsystem for Linux产生时,lxcore.sys需要做一些复制进程的准备工作,然后调用Windows NT内核APIs来产生一个进程来正确实现fork操作,完成为新进程复制额外的数据。


  文件系统。WSL提供了两种文件系统,VolFs 和 DriveFs,VolFs提供了完整的Linux文件系统的特性,包括符号链接和权限管理等;DriveFs兼容Windows下的文件格式,所有的Windows磁盘使用DriveFs挂载在/mnt/目录下,即访问C、D、E盘的位置。在Ubuntu子系统终端中输入命令:

explorer.exe .

会弹出Windows的文件资源管理器,便可轻松访问Linux子系统中的文件。

02

比较:Linux子系统、双系统、虚拟机与Docker

  双系统的名字有一定的误导。实际上安装双系统的计算机在开机时可以进入Windows或Linux中的任何一个,但不能同时进入、同时存在。双系统的安装比较困难。尤其是Linux系统:下载系统镜像、以U盘或光驱来作为启动媒介、通过BIOS界面进入系统安装等等。安装流程十分复杂、耗时,但用户体验非常好。不管进入哪一个系统,都拥有完整的操作系统环境和硬件资源。然而在某些情况下需要联合两个系统一起使用时,两个系统之间的切换很麻烦,需要记住文件存放的位置、关机、启动,再进入另一个操作系统。

  虚拟机可以直接在宿主机上虚拟出新的操作系统。下载VM虚拟机(VMware Workstation)软件后按照操作说明即可安装虚拟的Linux系统。切换操作系统时像打开一款软件一样方便。安装起来简单,两个系统也能同时存在。但是虚拟出来的Linux系统使用体验很差,例如系统启动略耗时,使用时又卡顿,因为虚拟出来的硬件资源和操作系统由于内存和硬盘资源利用率低,即使在为它分配了较多CPU和内存资源的情况下也很难提升性能,而这对于常见的生信信息学大文本数据的分析来说无疑是难以忍受的

  Linux子系统的安装也像安装一个Windows软件一样简单,除了需要做一些必要的系统升级和权限设置。相关的安装教程网络上也已经非常多了。子系统几乎是原生的Linux系统,例如可以使用Anaconda管理各种生信类软件(已通过测试,这是一个很大的特性)、安装Linux版的RStudio并被远程访问(未测试)、作为云端搭建网站(未测试)。这与Windows下的Git bash完全不同,后者仅仅是模拟了一些Bash命令而不是操作系统。此外Windows下的RStudio也可以通过其Terminal直接访问Linux子系统。因此通过WSL,两个系统可以同时存在,缺点只是Linux子系统没有图形化界面(这可能在后续的版本中被解决)。然而生信分析的实践中很少用到Linux系统的图形化界面,主要是使用Linux服务器的运算能力、命令行脚本、生信软件、流程化分析和多用户管理等,这些在子系统中都可能实现,因此对于我们来说无法图形化也不算缺点了。笔者近期在Linux子系统中安装了全外显子分析的多个软件,均可以成功运行,如同在使用一个Linux服务器(借助这个特性,我们团队正在谋划一个更大的计划,随后会与大家分享!)。

  Docker作为一种容器虚拟技术是一种轻量级的虚拟机技术,不虚拟硬件和内核资源,在软件服务层面上完全可以替代虚拟机。它和Ubuntu子系统都具有轻量级的特性,都能从软件层面上解决操作系统环境的问题。有兴趣的读者可以探索一下相关的使用方法。

03

一些注意事项

1) Windows的版本以及对于Ubuntu子系统的支持

目前Win10的比较新的版本是支持Ubuntu子系统的,但是否在相当长的时间内一直支持下去,我们不得而知。微软最近不是说要停止对IE的支持吗?那么连IE都可以停止,别说其它很多软件了。但我们相信一个东西一旦被开发出来了,它就可能永远以某种形式存在下去。这一点还得使用它的人多多反馈和支持,不能光享受它带来的好处而不有所贡献。软件最好是收费的,因为免费的东西更加不会长久。

2) WSL的版本

以往使用的WSL建议升级到WSL2,而如果要使用WSL2,Win10需要更新至目前的最新版本。WLS版本的相关设置可以通过Win10的Powershell中wsl.exe指令进行。

3) 系统迁移

Ubuntu子系统默认安装在系统的C盘中,如果想要迁移的话可以参照:https://www.cnblogs.com/oboth-zl/p/12769220.html。但需要注意:最好给Ubuntu分配到固态硬盘上,可以明显提升其流畅性。

4) IP地址

WSL1中Ubuntu子系统的IP和Win10的IP是一样的,在网络适配器中更改Win10的IP地址也会改变Ubuntu子系统的地址。WSL2中已经为子系统和宿主机虚拟出了新的网卡端口。而宿主机中出现的交换机vEthernet(Default Switch)是开启Hyper-V才有的。WSL2的IP映射方式类似虚拟机网卡的NAT模式,也就是在宿主机中模拟出新的网卡和子系统相连,而并没有将子系统直接放在宿主机所在的网端上。同时Ubuntu子系统/etc/network/目录下已经没有了interfaces文件,该文件是用于Ubuntu系统的网络配置,转而是该位置的另外两个文件夹,它们的下面都有名叫ethtool的脚本文件。

5) 软件共享

两个系统的软件可以共享!例如Win10的VSCode软件可被Linux子系统访问。在安装子系统的同时,如果你装了VSCode文本编辑器,那么VSCode会提示我们安装一个名叫"Remote WSL"的插件。该插件可以让你通过子系统直接使用在Win10系统下的软件(VSCode)而无需重新安装,并且此时开启的VSCode使用的是Linux下的编译环境,比如C语言使用的是/usr/bin/gcc。很多软件,Win10中安装过后子系统就不需要再重复安装,我们只是习惯在不同的操作系统环境中使用这些软件。所以Ubuntu子系统极大的解决了我们在不同环境下使用同一软件应用的需求。这个情况也适用于Docker,即在Win10和Ubuntu子系统中均可被调用。借助这个功能,读者可以测试一些Win10中有发行版、而Linux中没有的软件,例如:vsearch(还是哪个来着?)、plink(好像也有Linux版的)等等,测试时看看是否需要安装"Remote WSL"插件。

6) 配合WSL-Terminal使用

由于WSL自带的终端模拟器存在一些问题(例如代码复制、不同类型文件名的颜色等),外观也不是很美观,所以推荐将WSL结合WSL-terminal一起使用。具体可以参考这篇博文:《WSL – 配合wsl-terminal使用效果更佳》(https://blog.csdn.net/A951860555/article/details/115536787)。

04

结束语

  从虚拟机到双系统,再到现在的子系统,虽然操作系统的理论研究没有大的突破,但技术层面一直在进步。期待相关应用的进一步发展,以惠及我们所处的某个小领域的大需求。

本文的相关指引详见:

《Windows10下使用Ubuntu子系统》(https://blog.csdn.net/A951860555/article/details/110038308);

《Windows10 Linux子系统安装/迁移到非系统盘》(https://www.cnblogs.com/oboth-zl/p/12769220.html);

《WSL – 配合wsl-terminal使用效果更佳》(https://blog.csdn.net/A951860555/article/details/115536787)。

往期精品(点击图片直达文字对应教程)

机器学习

后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集

一览生信分析的各种工作环境—Linux子系统、双系统、虚拟机和Docker相关推荐

  1. docker卸载命令_使用docker完成生信分析环境搭建

    生信开发人员最头疼的问题,可能就是平台搭建和软件安装了.部署和迁移上要费很大力气.本文讲述使用docker制作一个镜像,后续通过导入自己定制的镜像,复制文件完成分析流程的部署和迁移. 如何使用dock ...

  2. Galaxy 生信平台(二):生产环境部署

    在 上一篇文章中,我们介绍了适合单个用户进行使用和开发的 Galaxy 在线平台,今天我们来聊一下在为多用户生产环境设置 Galaxy 时,我们应采取的一些可以让 Galaxy 获得最佳性能的额外步骤 ...

  3. 这是入门生信,学习生信分析思路和数据可视化的首选?

    封面来源:https://www.zhihu.com/question/304747766 常规转录组是我们最常接触到的一种高通量测序数据类型,其实验方法成熟,花费较低,是大部分CNS必备的技术,以后 ...

  4. 生信分析和统计作图资源推荐

    宏基因组/微生物组是当今世界科研最热门的研究领域之一,中科院科研人员创立"宏基因组"公众号,入选科研圈评选"2019年度学术媒体优质公众号联合海内外同行共同打造本领域纯干 ...

  5. Docker,使生信分析更简单、可重复

    [摘要] 本文向生信领域的人推荐了Docker容器技术,它使得生物基因领域的生信处理流程跟简单,过程可以很容易的重复.有助于减轻负担,加速生命探索. 先抛一个主题:每一个跑生信分析的人都应该知道Doc ...

  6. r语言python0基础_万丈高楼平地起,从零开始学R语(生信分析向,R语言基础)...

    一.R语言的安装 我所做的R语言学习主要是为应对工作上的生信分析,如果你是往这个方向走,那么这篇文章很大可能会帮助你.如果你也是有python基础的话,那我写的可能会更対你口味. 不过现在看到这篇文章 ...

  7. 图形化开放式生信分析系统开发- 1基本需求分析及技术实现

    图形化开放式生信分析系统开发- 1基本需求分析及技术实现 起因/背景 软件获取:到官网sliverworkspace.com免费下载个人版,最新版本 2.0.277363 几张图片 下面进入正题,以具 ...

  8. iMeta | Sangerbox: 交互式整合临床生信分析平台

    点击蓝字 关注我们 Sangerbox:交互.友好的整合临床生信分析平台 https://doi.org/10.1002/imt2.36 ●2022年7月8日,哈尔滨医科大学宋湘团队联合杭州慕谷科技有 ...

  9. 面向生信分析的高性 RStudio 服务器

    因需要超大内存的拼接/比对/表达量计算发愁? 为了使用组里的服务器而被困在实验室? 浪费大量的时间龟速下载 NCBI 的数据? 快来看看云筏 HPC 吧! https://my.cloudraft.c ...

最新文章

  1. C++构造函数调用规则
  2. Grunt-cli的执行过程以及Grunt加载原理
  3. .net core 微服务下的手工签名实现,以及消除中文乱码
  4. HK-2000 数采仪系统说明之 5.H2000SService程序调用说明
  5. X战警大战复联要来了?迪士尼收购21世纪福克斯后开始狂秀IP...
  6. MySQLi学习笔记 :一 1. 数据库的基本概念 2. MySQL数据库软件 安装-- 卸载--. 配置 3. SQL
  7. Vue中mounted和created的区别
  8. 9550电机_三千瓦的单相电机和同三千瓦三相电机马力相等吗?
  9. 计算机会计技术特点,会计电算化的特点
  10. tamtam-nuget-imageserver
  11. 常见数通设备镜像制作模板
  12. pandas内置数据集_如何用pandas划分数据集实现训练集和测试集
  13. Few-shot transfer learning for intelligent fault diagnosis of machine(机器智能故障诊断中的小样本迁移学习)
  14. 20172307 / 20172311 结对编程项目-四则运算 第三周总结
  15. [Android 9][markw] 红米4高配版 刷入Lineage OS 16与OpenGApps
  16. c 执行oracle 函数,Oracle 下医嘱执行函数
  17. AlexNet -翻译
  18. 美通社企业新闻汇总 | 2019.3.4 | 万豪国际2019年新增30多家奢华酒店;迪士尼李宁合作推出复古运动装...
  19. 豆瓣电影评分分析(数据分析)
  20. 北大igem生物计算机,喜讯|北京大学iGEM团队在国际大赛中取得金牌

热门文章

  1. 连通块(信息学奥赛一本通 - T1335)
  2. C#实现QQ扫码登录
  3. NVME-MI 学习记录_1 框架
  4. 超详细Klipper 上位机与下位机配置
  5. 不填写内容用哪个斜杠代替_手写斜杠日期怎么写
  6. 【树莓派C语言开发】实验15:电位计传感器(关联PCF8951)
  7. mysql查询的金额保留两位小数_mysql查询结果单位换算后保留两位小数
  8. 删除的微信聊天记录怎么恢复?高手指导还原教程,99%的人用了都说好
  9. 【Matlab】一、解常微分方程ODE
  10. 洛谷 1282 多米诺骨牌#线性动态规划#