之前看过 @pika02 在公社的帖子【Gaussian 16 在虚拟机和WSL中的相对效率】[1],测试发现 g16 在 WSL 下的效率超过了配置很麻烦的 VBox 和 VMWare,与原生 Linux 相比只损失了 ~10%。这对于笔者这种经常在本地运行一些懒得提交超算的小任务的人来说简直是福音。另外,在开发方面,随着 VS Code 的 Remote 功能的完善,使用 VS Code + WSL 可以带来十分丝滑的开发体验。完善的 GNU 工具链也可以让人脱离各种闭源商业软件的魔爪。

笔者之前一直使用 VBox,这次借着换电脑的机会,决定将工作迁移到 WSL 上。关于 WSL 的安装,网上教程很多了,这里对于普通的步骤就只粗略讲一下,重点强调一些踩过的坑,以及个人使用比较顺手的工具/配置。

  • 本文基于 Windows 10 v1909 + WSL1 Ubuntu 20.04 LTS
  • 笔者秉持 GNU 精神,在主要功能相似时,优先选择开源免费的软件
  • 笔者主要使用计算化学程序,但本文的基本配置应也适用于其他科学计算领域

安装 WSL

首先管理员身份开终端,启用 WSL:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

重启之后在 Microsoft Store 搜索下载 Ubuntu,笔者安装的是 20.04 LTS 版本。

下完之后在开始菜单的程序列表里找到 Ubuntu,运行,完成安装和用户设置。

安装和配置终端 - cmder

虽然 Windows Terminal 非常惊艳,但是其自定义的空间还是不够大,而且透明效果做得不好,所以笔者还是选择了一直使用的 cmder。直接去官网[2]下载即可。

下载之后,进入设置,在 Startup--Tasks 下选择WSL:bash即可运行 WSL 终端。但是使用过程中发现 vim 出现各种问题,具体来说包括方向键失灵、保存退出后直接刷掉整个缓存区等等。。搜了半天发现是 conemu 的兼容性问题导致的。解决方法是用 WSL 的 bash.exe代替 cmder 自带的启动命令。如图,在 Command 框里输入如下命令即可。

%windir%system32bash.exe ~ -cur_console:p5

在 Task parameters 里面可以替换 .ico 图标,这样子在任务栏里就可以显示出 Ubuntu 的 logo 了(如果你也看腻了 cmder 自带的 λ 图标)。

最后,按照自己的喜好配置透明度、配色方案、字体、背景等等即可。笔者的配置是:

  • Font: Consolas bold
  • Color scheme: Babun
  • Active window transparency: 75
  • Inactive window transparency: 50

效果如图,可以直接叠在浏览器或者 Zoom 上面:

为了方便使用,可以将 cmder.exe 的路径添加到环境变量PATH,这样就可以 win+R 输入 cmder 直接打开终端。

安装 X Server - VcXsrv

由于 WSL 不自带图形界面,所以要通过 X forwarding 转发到 Win10 内来查看图形界面。笔者使用的是开源免费的 VcXsrv[3]。 安装好后运行 Xlaunch,前两步配置直接回车使用默认配置,第三步把 Native opengl 关掉(以免影响 vtk、qt 等图形库的使用),即可开始运行 X Server。

在 WSL 这边:打开终端,修改DISPLAY 环境变量。可以把放到你的~/.bashrc里:

export DISPLAY=localhost:0

然后就可以快乐地使用图形界面辽~ 这样配置好之后感觉 XManager 全家桶完全是抢劫。

安装桌面环境

由于可以 X forwarding,所以 WSL 也可以用桌面了。这里笔者因为主要的工作环境还是 Win10,觉得没必要费力 tweak WSL 桌面,而且不想占太多硬盘,所以选择了以前树莓派上用过的 xfce4 组件。执行如下命令即可安装:

sudo apt update
sudo apt install -y xfce4

由于桌面的图形界面是默认全屏,如果采用 VcXsrv 的默认配置就会直接叠在 Win10 桌面上,把任务栏都覆盖掉,影响使用。如果工作时要频繁切回 win10,推荐另开启第二个 Xlaunch,第一步里选择 One large window,然后在准备开启桌面的终端里运行export DISPLAY=localhost:1,把桌面转发到开启的第二个 X Server。

然后即可运行startxfce4开启 WSL 桌面了。需注意,在 WSL 桌面里开启的终端也要设置export DISPLAY=localhost:1,才能将 GUI 的应用开启在 WSL 桌面这个窗口内,否则会另开一个 Win10 下的 VcXsrv 窗口。最终效果如下:

完美满足看文档、连服务器跑计算的需求

如果在 WSL 桌面里工作更多的话,可以把主要用的跨平台软件(尤其是 Linux 下体验更好的,比如 VESTA、POV-Ray)都装到 WSL 下,不在 Win 下再装一遍了。

如果想要沉浸式体验,就 VcXsrv 开全屏,实测延迟比微软的远程桌面低很多,系统占用也低。缺点是似乎长期挂机有几率 session 挂掉,要手动重启。另外,快捷键会和 Win10 冲突,需要自定义一下常用的快捷键。

屏摄 使用体验接近原生

如果觉得极简桌面不过瘾,想要更加原汁原味的体验,可以选择原生 Ubuntu 桌面 或者 Gnome,安装方法是相似的。

浏览器设置

需要注意,WSL1 不支持目前的几个主流浏览器联网(firefox、chromium)。笔者找到的能使的只有比较非主流的 basilisk、palemoon、seamonkey。这里笔者选择 seamonkey:

cat <<EOF | sudo tee /etc/apt/sources.list.d/mozilla.list
deb http://downloads.sourceforge.net/project/ubuntuzilla/mozilla/apt all main
EOFsudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 2667CA5C
sudo apt-get update
sudo apt-get install seamonkey-mozilla-build

安装好后运行seamonkey即可。界面很简陋,用起来有点儿卡顿,但总算能上网了:

不顺手的话可以干脆放弃在 WSL 下看网页,把浏览器的默认命令修改成 Win10 里的浏览器路径,类似下图:

这样的话,WSL 桌面里点开浏览器会直接跳回你设置的 Win10 下的浏览器。

文件路径

WSL 安装在你的系统盘里,其根目录路径是:

C:Users用户名AppDataLocalPackagesCanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgscLocalStaterootfs

可以把它登记到书签栏,方便跳转。在 windows explorer 里打开,窗口间直接拖动文件即可完成 WSL 与 Win10 间的传输。

在 WSL 下访问 Win10 的文件需要通过 /mnt/,为了方便访问,可以通过ln -s命令创建一个软链接。File Manager 里也可以开两个窗口(一个Win,一个WSL)拖拽传文件。可惜是不能像虚拟机一样从Win Explorer 直接往 Linux 桌面里拖了。

连接服务器

主要的计算任务当然还是交到服务器上的。WSL 自带 SSH,就不需要像以前一样再配置 PuTTY 之类的了。为了不用每次输密码,首先生成本机的 key:

ssh-keygen -t rsa

然后把公钥登录到服务器上:

ssh-copy-id [username]@[server.ip]

还想继续省力气,可以在 ~/.ssh/config 里设置服务器的信息,这样就不用每次输一遍用户名和地址了。设置完之后,可以直接ssh -X [Host]进行连接(X 表示开启 X forwarding)。 scp 传输文件也会更方便。

如果更习惯图形界面管理文件的话,推荐开源免费的 WinSCP[4]或 FileZilla[5]

VS Code - Remote WSL

装过 WSL 之后开 VS Code 应该会提示安装这个插件,没有提示的话就手动搜索安装

把 VS Code 加进环境变量之后,在 WSL 终端下直接code xxx即可开启 VS Code 以 Remote 模式编辑该文件。此外 VS Code 里也可以选择 WSL 终端了(虽然没有 cmder 好用,但有时候挺方便的)。

在 Win10 下可以点击左下角开启 Remote,类似 Remote SSH,左下角变绿表示成功连接。

安装 Open MPI

首先,如果程序没有特殊要求,强烈建议安装最新版本,充分利用你的硬件(尤其当你用的是较新款的 CPU):

sudo apt-get install openmpi-bin openmpi-common libopenmpi-dev 

如果有特殊要求,那就去 OpenMPI 官网[6]下载特定版本,解压后进去运行以下命令安装。注意要提供 prefix 路径否则会覆盖系统里的 OpenMPI。

./configure --prefix=/xxx/ --disable-builtin-atomics
make all install

由于安全原因,WSL ubuntu 的/proc/sys/kernel/yama/ptrace_scope默认值为 1,这导致并行时进程之间共享内存出现问题,运行 OpenMPI 程序会出现类似如下报错:

3 more processes have sent help message help-btl-vader.txt / cma-permission-deniedWARNING: Linux kernel CMA support was requested via the
btl_vader_single_copy_mechanism MCA variable, but CMA support is
not available due to restrictive ptrace settings. 

对于小任务影响不大,但是对于内存需求大的任务,内存共享不通畅会导致总占用爆炸。此问题的解决方法是把 ptrace_scope 的值改为 0:

echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope 

(持续更新,未完待续)

参考

  1. ^Gaussian 16 在虚拟机和WSL中的相对效率 http://bbs.keinsci.com/thread-16405-1-1.html
  2. ^cmder https://cmder.net/
  3. ^VcXsrc https://sourceforge.net/projects/vcxsrv/
  4. ^WinSCP https://winscp.net/eng/docs/introduction
  5. ^FileZilla https://filezilla-project.org/download.php
  6. ^OpenMPI https://www.open-mpi.org/software/ompi/v4.0/

wsl使用可视化界面_WSL 科学计算〇 | 适合计算化学的环境配置相关推荐

  1. wsl使用可视化界面_通过 VcXsrv 在 WSL2 上使用图形化界面(xfce4)

    当然网络上已经有很多相关教程了,但是对于我的情况那些方法都不完全正确以至于我不能使用图形化界面.所以如果你查了很多方法也不能使用的话可以看看这篇. 这是我的系统参数. 开门见山 启动 VcXsrv 在 ...

  2. wsl使用可视化界面_启用Windows10的Linux子系统并安装图形界面

    前言 目前市面上的PC电脑主要运行着四大类系统,它们分别是微软的Windows.苹果的MacOS.Linux的发行版以及Unix类系统.其中Linux和Unix都是开源的,因此市面出现的众多基于Lin ...

  3. wsl使用可视化界面_win10安装子系统ubuntu附带图形化界面

    Win10 应用商店中可以下载安装到可以在 Windows 10 里运行的 Ubuntu.Fedora.SUSE Linux.Arch 等 Linux 子系统. 也就是说,我们可以像安装 APP 那样 ...

  4. 基于 yolov5n6 和tkinker实现的检测模型的可视化界面

    项目介绍 本项目基于 yolov5n6 和tkinker实现的检测模型的可视化界面 项目连接: https://github.com/MaoliRUNsen/yolov5gui 环境: 硬件: 本人电 ...

  5. numpy 创建加一行_数据科学|可视化图解Python科学计算包Numpy

    文章申明 文章作者:梁斌伟 责任编辑:郭德真 微信编辑:玖蓁 本文转载自公众号 实战统计学 (ID:statrcn) 原文链接:可视化图解Python科学计算包NumPy 作者:梁斌伟 编者按: 你真 ...

  6. 实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型

    翻译 | AI科技大本营 参与 | 王赫 上个月,我有幸结识了 DeepCognition.ai 的创始人. Deep Cognition (深度认知) 建立的深度学习工作室,为很多准备部署深度学习框 ...

  7. 实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型 转载 2017年12月27日 00:00:00 109 翻译 | AI科技大本营 参与 | 王赫 上个月,我有幸结识了 DeepCogn

    实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型 转载 2017年12月27日 00:00:00 标签: 109 编辑 删除 翻译 | AI科技大本营 参与 | 王赫 上个月,我有幸结识了 ...

  8. matlab可视化界面怎么修改,matlab可视化界面

    第16章 GUIDE工具建立GUI界面 MATLAB可视化界面的设计,一般有两种... 创建 Matlab GUI 界面通常有两种方式: 1,使用 .m 文件直接动态添加控件 2. 使用 GUIDE ...

  9. 第四次作业---四则运算升级版(带可视化界面)

    本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213 同伴的github远程仓库的地址:https://githu ...

  10. Dlib模型之驾驶员疲劳检测总结(可视化界面)

    目录 序 目的 技术背景 正文 (1)环境搭建 (1.1)opencv3.4.1图像处理 (1.2)dlib人脸识别库 (1.3)wxFromBuilder可视化界面 (2)检测原理 (3)wxpyt ...

最新文章

  1. lstm timestep一般是多少_请问rnn和lstm中batchsize和timestep的区别是什么?
  2. leetcode算法题--骑士在棋盘上的概率★
  3. 浙大团队研发铜基沸石纱布口罩,1分钟杀灭新冠病毒逾99%
  4. Python3-join()和split()的用法
  5. 创智播客 大数据_中国电信启动嘉创智谷——新仓远景产业园5G部署
  6. CodeForces - 1364C Ehab and Prefix MEX(贪心+构造)
  7. C语言学习笔记---结构体指针
  8. Qt4.7中 默认的构造函数
  9. asp.net常见数据类型
  10. gis导出栅格数据为什么不能tif_GIS基础操作教程(3)--点数据操作【附带练习数据】...
  11. paip.python错误解决15
  12. 如何在Word里打出带圈的数字?
  13. 收集的一些discuz插件常用插件。
  14. Android Apk编译的apk安装失败解决
  15. chrome去广告插件 去掉百度热搜
  16. 安卓 类微信开发(二)
  17. opencv安装过程出现opencv_world300d.dll加载失败
  18. 功放与喇叭的匹配原则
  19. java-php-python-ssm商超销售系统计算机毕业设计
  20. 小心肝队-冲刺日志(第八天)

热门文章

  1. git tag — 标签相关操作
  2. 谷歌眼镜设计规范之度量和网格
  3. Java 零注解文档生成工具—smart-doc,看完有替换swagger的冲动
  4. Pandas简单写入数据到csv文件
  5. Do not use built-in or reserved HTML elements as component id: animate
  6. php汉字组合算法,php数字转汉字的函数算法
  7. php和html怎么链接,PHP(6)只记录我的学习历程 html(链接和框架标志)
  8. 在linux里安装python3.6环境,Python基础—环境准备之Python3.6 在Linux/Windows上安装
  9. objdump: ‘1443.14.0)‘: No such file or directory
  10. LINUX右键新建,增加项目