欢迎回来
登录你的知识库账户
忘记密码?
还没有账户?立即注册
创建账户
注册你的专属知识库
已有账户?去登录
找回密码
输入注册邮箱获取验证码
返回登录
请输入图片中的验证码以继续注册
加载中...
取消
新建收藏
手动添加你喜欢的内容
取消
编辑头像与昵称
上传新头像或修改你的显示昵称
支持 JPG/PNG,最大 2MB
取消

问题反馈

notebasewww.notebase.cn
控制台
内容库
动态
管理
账户
U
用户
--
在线
v0.8.7 · 知识库
笔记
KnowledgeBase
网络无边,知识有迹。
0笔记
0工具
30推荐

分类导航

按主题直达

编辑精选

站内用户贡献 · 真实笔记

最新收录

每日更新
继续浏览全部内容 →
>
笔记
0
加载中...
工具
0
此页用于记录用户反馈问题后的每一次改进
笔记用法

“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。

md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。

要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。

工具用法

在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。

要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。

工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。

隐藏笔记

写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。

适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。

数据安全

你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。

技术

全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。

理念

这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。

原则

不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。

更多

产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。

举报

如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。

趋势
// 点击导航加载发现
归档
// 归档为空
最近浏览
// 暂无浏览记录
发布
// 加载中...
用户发布
// 加载中...
用户管理
// 加载中...
访问统计
// 加载中...
内容审核
// 加载中...
个人信息
// 加载中...
返回首页

Ubuntu on Windows:当微软拥抱Linux用户空间

1970/1/1操作系统

微软与Canonical合作,在Windows 10中原生运行Ubuntu用户空间和bash,无需虚拟机或容器,通过实时系统调用翻译实现Linux ELF二进制直接执行。

2016年3月30日,微软Build开发者大会上,一个看似疯狂的演示震撼了开发者社区:Windows 10的cmd.exe控制台里,居然跑起了原生的Ubuntu bash shell。这个项目背后,是微软和Canonical(Ubuntu母公司)数月秘密合作的成果。作为受邀嘉宾,Canonical的Dustin Kirkland在博客中详细揭秘了这一技术,而此前他已近16年没用过Windows。

这不是虚拟机,也不是容器

当Kirkland第一次听到这个构想时,他也花了好几圈才完全理解。关键点在于:

  • 不是虚拟机:没有hypervisor,没有Linux内核在虚拟机中启动。整个Ubuntu用户空间直接跑在Windows上。
  • 不是容器:容器共享宿主机内核,而这里Windows内核和Linux用户空间之间,没有传统意义上的内核隔离层。
  • 不是Cygwin:Cygwin是把开源工具从源码重新编译成Windows原生可执行文件。而这里跑的是逐位相同、校验和一致的原生Ubuntu ELF二进制文件——就是Ubuntu仓库里那些编译好的Linux可执行文件,原封不动在Windows里运行。

核心机制:实时系统调用翻译

那么,没有Linux内核,Ubuntu的二进制怎么调用系统功能?微软一支精英开发团队,将微软研究院的技术改造为实时翻译层:把Linux系统调用(syscall)动态转换成Windows系统调用。技术上讲,这类似于Wine的逆向操作——Wine让Windows程序跑在Linux上,而这里让Linux程序跑在Windows上。微软官方称之为"Windows Subsystem for Linux"(WSL)。

需要强调的是,这个翻译层不是模拟器,不模拟整个CPU指令集,只是翻译操作系统接口。因此性能损失非常小。Kirkland用sysbench工具测试,CPU、内存和I/O性能几乎与原生Linux持平("totally shit hot"——他原话如此)。

用户空间:完整的Ubuntu生态

Windows 10用户只需在开始菜单输入bash回车,一个cmd.exe控制台就会出现,里面运行的是Ubuntu的/bin/bash。这意味着你可以直接使用:

  • 基础工具:apt、ssh、rsync、find、grep、awk、sed、sort、xargs、md5sum、gpg、curl、wget
  • 服务器软件:Apache、MySQL
  • 脚本语言:Python、Perl、Ruby、PHP
  • 编译工具:GCC
  • 编辑器:Vim、Emacs
  • 文件处理:tar、diff、patch

以及Ubuntu软件仓库中成千上万个二进制包——几乎全部可用。因为它们是原生Ubuntu ELF二进制,依赖关系、库文件、shell脚本都能按预期工作,无需重新编译。

文件系统互操作

Kirkland特别指出一个炫酷的细节:Windows的所有盘符(如C:)会直接挂载在Ubuntu的/mnt目录下,可读写。反过来,在Windows资源管理器中,也可以访问Ubuntu的文件系统,路径在C:\Users\<用户名>\AppData\Local\Lxss\rootfs\。这意味着两个世界的文件可以无缝交互,不需要SFTP或共享文件夹。

实际开发体验:一场自举的胜利

为了把Ubuntu根文件系统打包成Windows应用包(.appx)上传至Windows Store,Kirkland需要修改示例应用、编辑几十个XML文件、生成各种尺寸的PNG图标——这些本该用Visual Studio完成。作为一个非Windows开发者,他在Visual Studio里挣扎了几个小时,几乎要砸屏幕。

然后他灵机一动:按下Windows键,输入bash,回车。在Ubuntu shell里,他找到了位于/mnt/c/Users/Kirkland/Downloads的示例目录,用熟悉的命令完成了所有工作:

  • cp -a 复制目录
  • find | xargs | rename 批量改文件名
  • grep | xargs | sed 全局搜索替换 s/SampleApp/UbuntuOnWindows/
  • Ubuntu的convert工具快速调整图标大小

最后,让Visual Studio完成编译和上传。整个过程体现了WSL的实用价值:在Windows上开发Windows应用,却能使用最顺手的Linux工具链——这正是目标用户群的写照。

同时,Kirkland发现不再需要PuTTY来SSH到其他Ubuntu服务器,直接在shell里ssh即可。apt install和apt upgrade也完全符合预期。

尚存的不足

一切并非完美。Kirkland坦诚指出:

  • 终端兼容性:大部分Linux Test Project(LTP)测试通过,但TTY和VT100方面仍有瑕疵。
  • 终端复用器:他钟爱的byobu、screen、tmux还不能正常工作,但已经接近可用。
  • 版本:当时内置的是Ubuntu 14.04 LTS,但16.04 LTS很快会替换它上架Windows Store。

为什么?微软的战略逻辑

对于长期Windows和Ubuntu用户,Kirkland预测会有"为什么"的疑问。作为近二十年开源生涯的老兵,他感叹这是微软对开源重要性的一种超现实背书——让自由开源技术直接桥接到地球上的每一台Windows 10桌面。这也是引导用户在Azure等公共云中更多使用Ubuntu和Linux的绝佳入口。

从微软视角看,多项调查和用户研究都指出:开发者希望Windows上能有bash和Linux工具——尤其特指Ubuntu——而且不希望付出完整虚拟化的资源开销。WSL正好满足这两点:轻量、原生、无需重启或双系统。

历史回响与影响

今天的我们回看这个2016年的帖子,知道WSL最终发展成WSL2(后者引入了真正的轻量级虚拟机),但当初的"实时翻译"思路为微软打开了新方向。这篇博文公布的技术——/mnt挂载、ELF二进制直接执行、syscall翻译——构成了WSL1的基石。即使后来WSL2改为虚拟化方案,WSL1的遗产依然在于证明了:Linux的用户空间生态可以脱离内核,在完全不同的操作系统上以惊人性能运行。

Kirkland的工程方法论也值得纪念:当被困在陌生的Windows开发环境时,他用Ubuntu shell自举解决了打包Ubuntu自身的问题——这是对"吃自己的狗粮"最诗意的实践。

原文链接:http://blog.dustinkirkland.com/2016/03/ubuntu-on-windows.html?m=1

编写使用方法
Markdown 格式 · Ctrl+Enter 确定
新建笔记
预览
数据表格
点击单元格编辑 · Tab 移动
A1fx
Sheet1
BIH1H2≡🔗</>
隐私提醒

取消
编辑工具
取消