Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
查看: 2250|回复: 10

[讨论] WIN10下直接运行linux的黑科技 [复制链接]

Rank: 2Rank: 2

UID
4847883
帖子
180
PB币
586
贡献
0
技术
0
活跃
287
发表于 2019-2-15 22:38:03 |显示全部楼层

来自泠王大神教程。偷过来以后方便自查

-------------------------------

这段时间一直在搞个unity webplayer的项目。尝试了各种组合方案,包括Windows+Linux虚拟机,Linux+unity测试版,Windows+Linux双机器。但无论怎么倒腾,都感觉难受。

正好前几天过十一,就顺便倒腾了一下传说中的WSL(Windows Subsystem for Linux),没想要甚是惊艳,就顺便写下来,分享分享,当个笔记。

如果实在无法避免双系统开发的话,那么WSL可能是目前最舒服的方案了。

WSL优点/缺点

要说WSL最大的优点的话,那么就是无缝了。Linux程序直接在Windows上,可以直接访问Windows的磁盘,和Windows共享端口池。要说用户体验,的确是秒杀虚拟机几条街。

要说缺点,如果作为一个开发系统,那么真的可以称得上完美了。如果非要找缺点,那么最大的缺点就是WSL继承了Windows的所有缺点:慢。但是我们毕竟不是只是拿来做开发么?

安装/设置

WSL的安装不多说,微软自己的文档说的很详细,传送门在此。不过鉴于Windows的安装说明实在太过与罗嗦。其实就只有两步:

1:管理员方式打开PowerShell,然后运行

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

命令跑完了会提示要重启,跟着重启搞定了。

2:点击这里下载Ubuntu包,然后双击安装,根据提示设置账户,然后,一切搞定。

这才是极致的用户体验啊,给微软的同学们点10086个赞。。。。

修正默认文件夹创建权限问题

安装完了后,正常就会进入bash。但是这个时候,WSL默认的文件夹权限和原生的Linux不太一样(Linux默认创建文件夹为755权限,但是WSL默认创建文件夹为777)。这个会导致一系列的应用出问题,在进行下一步设置之前,必须要先处理这个问题。

解决这个问题不难,在~/.bashrc中加入:

umask 022

修改完~/.bashrc后,使用. ~/.bashrc启用设置,或者直接关掉再重新打开ubuntu

清理PATH变量,避免干扰Linux程序运行

WSL默认情况下,会自动把Windows的环境变量也转换到Linux的PATH变量中。这是一个很酷的特征,例如你在bash中运行$ notepad.exe,然后记事本就会在Windows中被启用。但是如果你在Windows中装了cygwin、mingw或者nodejs之类的,就会产生各种互相干扰,导致脚本挂的莫名奇妙的。因此清理掉这些变量也是必要的。

这个问题也不难解决,在~/.bashrc中加入:

export PATH=`echo $PATH | sed 's/:/mnt/c/[^:]*//g'`

修改完~/.bashrc后,使用. ~/.bashrc启用设置,或者直接关掉再重新打开ubuntu

启用X11

然后就是跑个图形界面了,处理这个的时候,让我真的感受到了WSL的强大。因为实在是很简单。

本来刚开始是想在WSL上跑KDE的,搞了好久始终有问题,最后还是暂时不自虐了,弄个xfce4吧:

$ sudo apt-get install xfce4 xfce4-terminal

然后安装Windows下的X11 Server,有几个不同的选择,试来试去还是VcXsrv最好用,一是开源免费,二是多顶层窗口的情况下可以正确的显示程序的图标。点击这里下载安装。

安装后启动VcXsrv时有一些选项,一路下一步就可以了。有个页面是问你四种启动方式:

如果想启动整个Linux桌面的话,可以选右下角那个,这样的话所有的Linux程序就像是运行在一个虚拟机里一样,可以把整个Linux桌面都启动起来。但是个人更喜欢默认的选项。这样的话,Linux的程序看起来更像是原生的Windows程序。

然后再在~/.bashrc中加入两个环境变量

export DISPLAY=:0export LIBGL_ALWAYS_INDIRECT=1

修改完~/.bashrc后,使用. ~/.bashrc启用设置。

然后运行xfce4-terminal就可以启动xfce4的控制台了。如果想启动整个桌面玩的话,需要把上面截图中的选项设置为One Window模式,然后运行startxfce4。

修正中文显示问题

然后接下来会发现中午没法显示。这个简单,随便装个中文字体就可以。

sudo apt-get install fonts-wqy-*

修正中文输入法问题

接下里一个比较麻烦的问题是输入法。WSL下的程序是无法用Windows的输入法的。但是好消息是,可以装个Linux输入法。

sudo apt-get install fcitx fcitx-googlepinyin

安装完后,把需要的环境变量先丢入~/.bashrc

export XMODIFIERS=@im=fcitxexport GTK_IM_MODULE=fcitxexport QT_IM_MODULE=fcitx

然后是再一次的应用配置,囧,. ~/.bashrc。接着启动输入法。

$ export $(dbus-launch)     # 启动fcitx前必须先启动一个用户级的dbus$ fcitx &

这个时候输入法应该还是不能用,因为没有加入中文语言。打开输入法配置

$ fcitx-config-gtk3

并把googlepinyin设置进来。

如果你Win10系统有英文语言的话,按Win+Space切换到英语语言,然后按Ctrl+Space应该就能切出fcitx了。如果Win10只有中文的话,Ctrl+Space应该是会互相冲突的(我没试过),去系统里添加语言就可以了。

最后贴个图:

隐藏不想要的原始命令行窗口

写完整个文章后,总觉得好像缺了点啥,哈哈哈。原来是我太习惯RBTray了。都不觉得是个事了。

WSL会默认启动一个bash的窗口,这个窗口”明显的不好用“啊。否则折腾这么久,装个xfce4-terminal干啥呢?对吧。

干掉这个窗口有两个办法,方案1,换用setsid启动xfce4-terminal:

setsid xfce4-terminal^D                     # 按下Ctrl-d,退掉这个不想要的bash,这个时候xfce4-terminal就不会跟着退掉了

另一个方案,就是装一个RBTray,这伙真是个神器啊,只要几十k,所有不想要的窗口统统隐藏掉,最典型的就是vmware,免费版不允许headless,无所谓,直接隐藏掉。哈哈哈。

自动X11,输入法,系统服务

搞到这里,基本上的东西都可以使用了,只不过还是稍微有点繁琐,每次都需要先启动X11,再启动输入法,再启动一系列的服务。有的同学可能有洁癖,下面的可以直接忽略。

自动启动X11

启动XLauncher,选择喜好的配置后,一路走到最后一步。点击保存配置,保存到任意一个位置即可。

复制一下XLauncher的快捷方式,右键属性,打开设置,在目标后面追加:“ -run xluancher配置保存路径config.xlaunch”。

退出现在的XLauncher,双击一下快捷方式,验证一下是不是和预期一致。

将快捷方式移入:C:ProgramDataMicrosoftWindowsStart MenuProgramsStartUp

打开任务管理器的startup面板可以再确认一下,That’s All。

自动启动输入法

自启动输入法稍微有点蛋疼,因为WSL不遵循标准的系统启动流程。网上有很多关于这方面的讨论,很多人建议用vb script解决这个问题。vbs这明显不是我的菜啊。而且即使是vbs方案,本身也算不上多漂亮。

本着实用主义至上原则,咱还是直接瞎搞吧:

打开~/.bashrc并加入:

if ! pgrep fcitx > /dev/null; then   # 如果没有找到fcitx的话,就启动个新的    export $(dbus-launch)    fcitx &fi

自启动服务

然后作为开发,就是要启动各种稀奇古怪的东西了,例如mysql啥的。我个人觉得这个手工启动一下还是能接受的。毕竟也不是每次打开wsl都是想干后端的,对吧。但是如果这个都懒得动手的话,继续改造咱的bashrc即可。(反正都这么脏了,哈哈哈)

和输入法问题相比,有点区别的地方在于,启动服务需要su权限,这个也好说,直接google一下sudo nopassword自然一大把的解。

没了

搞完这几个步骤之后,基本上WSL就能像一个正常的Linux一样使用了。剩下的么,喜欢vim的装vim,喜欢emacs的装emacs。纯bash党装上tmuxinator。

WSL特性IP地址共享

这个应该是WSL最让我吃惊的地方了,在WSL里的程序可以和Windows共享IP。因此如果在WSL下安装并启动了nginx的话,完全可以在Windows的浏览器里访问127.0.0.1。相当的爽。

磁盘访问

在Linux下访问Windows的磁盘非常的容易,全部挂载在/mnt下,例如/mnt/c就是c盘,/mnt/d就是d盘。

但是在Linux下访问Windows的磁盘有个问题,就是文件权限不太对,复制到Linux下全有可执行权限,这倒是一个相当烦的问题。

在Windows下访问Linux的磁盘也非常的容易,全部在C:Users<UserName>AppDataLocalPackagesCanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgscLocalStaterootfs下(取决于装的系统,这里是Ubuntu)。但是WSL官方强烈建议不要直接访问这个目录,因此还是别自找麻烦了。

磁盘权限

在WSL中,除了/mnt挂载的Windows磁盘,全部拥有Linux标准的权限,因此和Linux的兼容性很好。但是selinux之类的也是不要想太多了。

/mnt目录下挂载的Windows磁盘全部是Windows的权限。例如创建的文件的权限全是777。这个地方需要特别的小心,例如:不要混用Windows和Linux的git仓库,因为git在入库时会追溯文件的可执行权限。

colinux

用起WSL感觉真是棒的不行,但又不得不提起一个曾经叫colinux的项目。但只可惜colinux最终在32/64位系统交替中挂掉了。这些年一直是缅怀的不行啊。

没想到过了几年微软竟然自己投人,搞了这么个神器。真是峰回路转,哈哈哈。转载自:https://mechanical-consciousness.com/2018/10/19/wsl-quick-setup-zh.html


Rank: 7Rank: 7Rank: 7

UID
3572066
帖子
2721
PB币
3224
贡献
0
技术
9
活跃
1081
发表于 2019-2-15 22:52:20 |显示全部楼层
想好好用Linux?还是老老实实的装双系统吧。

deepin15.9+win10/.

Rank: 5Rank: 5Rank: 5

UID
3489912
帖子
982
PB币
896
贡献
0
技术
0
活跃
583
发表于 2019-2-15 23:12:21 |显示全部楼层
WSL和虚拟机ubuntu都在用,还有一台x220装了黑苹果备用
至于deepin么,个人感觉还不如用macOS {1602829B-86B7-49A2-AA6D-1FB5FEE8C4F1}.bmp.jpg

穿了反灭霸装甲的珈百璃

UID
943140
帖子
7385
PB币
3718
贡献
0
技术
138
活跃
6789

优秀版主 十一周年

发表于 2019-2-16 10:44:45 |显示全部楼层
蓝牙童梦 发表于 2019-2-15 23:12
WSL和虚拟机ubuntu都在用,还有一台x220装了黑苹果备用
至于deepin么,个人感觉还不如用macOS

支持你的观点,deepin在本土化支持上绝对是很值得称赞,但是作为linux完全没必要去迎合win用户使用习惯,更没必要在美化上下过多的模仿功夫。
个人更喜欢Fedora,拔刀吧,哈哈哈

只高一格

Rank: 11Rank: 11Rank: 11

UID
335540
帖子
9124
PB币
14047
贡献
0
技术
1300
活跃
5100

远景技术达人

发表于 2019-2-16 10:59:32 |显示全部楼层
登顶泰山看日出,绚丽的不知道是啥了

扫黄打非。

Rank: 9

UID
624463
帖子
4190
PB币
10405
贡献
0
技术
1
活跃
473
发表于 2019-2-16 11:13:38 |显示全部楼层
不错,很详细的说!!

Rank: 5Rank: 5Rank: 5

UID
661246
帖子
1139
PB币
2223
贡献
0
技术
7
活跃
758

7周年庆典勋章

发表于 2019-2-16 13:00:04 |显示全部楼层
支持个



Rank: 5Rank: 5Rank: 5

UID
241849
帖子
933
PB币
1704
贡献
0
技术
6
活跃
1760
发表于 2019-2-16 13:15:42 |显示全部楼层
感觉这也很麻烦,还不如再弄台机器,只用linux。

Rank: 5Rank: 5Rank: 5

UID
3489912
帖子
982
PB币
896
贡献
0
技术
0
活跃
583
发表于 2019-2-16 14:10:39 |显示全部楼层
cyxlcyxl 发表于 2019-2-16 10:44
支持你的观点,deepin在本土化支持上绝对是很值得称赞,但是作为linux完全没必要去迎合win用户使用习惯, ...

哈哈哈主要是ubuntu用惯了,最近同学说mac也不错,才开始上手黑苹果了

Rank: 7Rank: 7Rank: 7

UID
4720714
帖子
2937
PB币
3581
贡献
0
技术
5
活跃
898
发表于 2019-2-19 08:39:34 |显示全部楼层
cyxlcyxl 发表于 2019-2-16 10:44
支持你的观点,deepin在本土化支持上绝对是很值得称赞,但是作为linux完全没必要去迎合win用户使用习惯, ...

deepin最大的缺点就是耗费资源高, 软件更新慢, 有时运行大型软件比如AS容易崩溃, 我12G内存, 应该不是内存不够.

Rank: 2Rank: 2

UID
1264761
帖子
141
PB币
195
贡献
0
技术
0
活跃
37
发表于 2019-2-19 09:02:27 |显示全部楼层
个人感觉乌班图更顺手一点
回顶部
Copyright (C) 2005-2019 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件