注:本文参考BashOnWindows-issues-637和部分BashOnWindows资料翻译编写而成,水平有限,难免会有错漏之处,如发现,欢迎指出,谢谢!

关于BashOnWindows

随着Microsoft和Canonical的合作,在今年(2016)4月份,推送了Windows 10 Build 14316,这一版本开始,集成了bash on win这一功能。
BashOnWindows不是虚拟机,也不是容器,也不是Cygwin类似的工具,是win以前的遗弃项目Astoria(一个为了在Windows上运行Android App的项目)的基础上改造而成,官方叫它做Windows Subsystem for Linux,(⊙v⊙)嗯,就叫它Windows子系统吧。上次偶然在一则社区新闻中看到有人借助bash on win跑起了linux桌面,甚是好奇,便研究之。

这一玩法应该是源自github上的这一个issues,BashOnWindows issues 637,原理很简单,随着bash on win的一些bug修复,已经支持部分的网络功能。支持了网络功能,就可以通过网络通信,将bash on win子系统链接到外部的X Server,从而启动linux桌面(此处提一下,bash on win是和宿主机共享网络,同docker中将net设置为host一样的效果)。win下的虚拟X Server可以使用xmingvcxsrv启动。

下面简单讲下大致步骤吧:

step 1: 准备一个Build 14316(或以上)的win10

我是用虚拟机安装的,如果你想获得更好的体验或者你内存不足的话可以使用物理安装,因为我当时没找到build 14316以上的ISO,所以我是直接安装了一个比较旧的版本更新上去的。

先讲讲怎么开启更新,让你的win变成inside版本的系统吧

注意:接受了inside更新,你的系统可能会变成很不稳定,有bug导致的系统崩溃的风险,建议不要使用你的日常工作系统做尝试。

在设置面板(不是控制面板)开启接受更新:

Update & security > Advanced options > Get Insider builds 选择 Get started (过程需要你先在你的系统登录你的个人账户)

step 2: 安装bash on win组件

先开启developer模式,setting panel > Update & Security > For Developers,选择Developer mode

在Control Panel > Programs面板中点击 Turn Windows Features On or Off,将Windows Subsystem for Linux (Beta)勾上,然后点击ok

安装完成后会提示需要重启系统,重启之后,Bash便在你的系统中安装了,你可以在开始菜单输入Bash,或者在CMD程序中输入Bash也可以启动Bash on ubuntu on windows。

启动X-Server

这里我们使用Xming为例子,下载安装Xming,启动Xming

Display num填0,其他使用默认值

这个时候就可以在Bash中启动一个小程序xeyes测试一下

echo "export DISPLAY=localhost:0.0" >> ~/.bashrc
source ~/.bashrc
xeyes

可以看到Xming启动的X-Server的窗口显示了一个对眼睛

启动DBus

当想启动ubuntu桌面或者firefox之类的就需要DBus了
因为Bash on win本身对网络的实现还不是很完善,unix socket还不支持,DBus直接拉不起来,修改一下DBus的配置文件,让其使用tcp启动

sudo sed -i 's$<listen>.*</listen>$<listen>tcp:host=localhost,port=0</listen>$' /etc/dbus-1/session.conf

(详细可以参考:[Bash on Windows] Getting dbus and X server working

这个时候可以安装和启动firefox试试

启动Ubuntu Unity Desktop

先安装桌面相关组件,在Bash中执行:

sudo apt-get install ubuntu-desktop unity compizconfig-settings-manager

安装完桌面组件,先对compiz做一些配置

ccsm

各项配置设置成如下两图:

启动compiz窗管,拉起unity桌面

compiz

参考

(end)

发表评论

电子邮件地址不会被公开。 必填项已用*标注