大家好,我是 pikay 。四年前我在 V2EX 上发过一个帖子(《想做一个操作系统,问问大家意见》),用了很多业余时间和非业余时间,终于把它搞出来了!它叫 NoneOS,现在已经有了一个初步可用的 Demo ,现在就分享出来给大家试试看。(记得挂梯子)
很简单,你只需要一个现代浏览器,打开它的域名,点几下“下一步”,就能在你的浏览器里完成安装。下次再访问这个网址,就能直接进入这个虚拟操作系统了。
而且,它完全不需要动态服务器。整个系统运行在纯静态环境下,也就是说,不怕服务器挂掉,它就是存在你本地的。安装完成后,你可以断开网络试试,也是可以正常使用的。
它依赖的是浏览器自带的 File System API 来存储数据,包括系统本身运行所需的文件也都是存在浏览器本地的。这意味着你可以直接在这个系统里运行 Web App ,以后开发应用再也不需要部署到服务器上,直接丢进这个系统就能跑。可以查看 packages/apps
目录,是系统自带的应用。
系统内置了一套应用间的数据交互 API。只要是在这个系统上开发的应用,都可以通过这套接口和其他设备上的应用进行通信。
举个例子,如果你有一台手机和一台电脑,就可以先在 NoneOS 里配对这两个设备。等系统启动后,它们之间会自动通过 WebRTC 技术 建立连接。这样一来,应用之间就不需要自己再去搭服务器了,直接调用这套 API 就能传输数据,不仅省掉了服务器成本,速度还特别快。
最大的优势就是——不用管服务器的事。没有服务器,也就意味着几乎没有维护成本。
因为我觉得现在开发一个联网应用的成本实在太高了。哪怕只是一个很简单的应用,你也得经历一堆繁琐流程:
这一整套流程下来,不仅麻烦,而且花销不小。
但如果你用的是 NoneOS ,这些步骤统统可以跳过。你只需要:
目前系统已经自带了一个非常实用的小工具 —— 网页收藏夹应用。你可以把平时喜欢的网站都收藏进去,支持跨设备同步。无论你在电脑、手机还是平板上,彼此访问设备间的数据。
你可以轻松地将设备中的文件导入到这个虚拟系统,借助系统内置的文件管理器,跨设备传输文件。
而且因为它不依赖服务器,所以这个收藏夹没有广告,也不会偷偷改你的数据或者泄露隐私,完全是属于你自己的小空间。
接下来我们会陆续加入更多功能,比如笔记与知识管理应用,让你可以在各个设备上快速同步和整理知识。
之后还会完善开发文档,让更多的开发者能够快速上手,在这个系统上开发自己的应用。
目标是让它成为前端界的 Docker ,让那些原本需要复杂部署的前端应用,也能被小白用户一键安装、轻松使用。
NoneOS 短期小目标是,把这个系统打造成一个私人设备联动平台,有点像 NAS 那样的私有云系统。让你的手机、电脑、平板之间可以自由地交换数据。比如电脑可以直接查看手机里的文件,手机也能远程播放电脑里的视频,真正实现多设备无缝协作。
如果你想体验一下,欢迎去试用这个 Demo ,有任何建议或反馈也欢迎留言告诉我!我们一起把这个系统做得更好!
![]() |
101
pikay OP @ygtq 是的,必须得设备开着,你可以在两个设备开启的时候,先按一下同步,同步完成就以缓存的形式保存,下次就算没开机也可以看到缓存的收藏夹。
我也有考虑一些长期挂起的方案,例如做成 apk ,让废旧手机作为主服务器,不过还在思考中,看有没有更好的方案。 |
![]() |
102
pikay OP @HTravel 🙏 感谢你的反馈,其实我只是想让用户更便捷使用 NAS ,那这样我后面用 Tauri 打包成各个端的运行程序,就不用考虑缓存和沙箱之类的问题。(相当于浏览器是普通版,客户端拥有更高级的权限)
也会设计一个 24 小时运行的角色,例如我有很多废手机,那就装个 apk ,放家里头,就是 24 小时开着。有条件的买 mini 主机,没条件的用废旧笔记本,装个 exe ,到时候也加上快照功能。 |
![]() |
103
pikay OP @Cereal 有没有开梯子?梯子会让 webrtc 信令传输失败。又或者其他情况?方便详细提个 issuse 吗? https://github.com/kirakiray/NoneOS/issues
|
![]() |
104
bomb77 86 天前
挺有意思的,界面也很好看,支持一下
|
![]() |
105
simo 86 天前
试用了下,真挺不错的
|
![]() |
106
Vipcw95 86 天前
怎么卸载?
|
![]() |
107
pikay OP @Vipcw95 通过 recovery 卸载: https://os.tutous.com/recovery
|
108
HENQIGUAI 86 天前
虽然暂时不用,但还是给楼主点赞!
|
![]() |
109
Vipcw95 85 天前
@pikay #107 感觉文档应该完善一点指引,比如这个恢复模式还能导出导入数据迁移到别的电脑上。然后这个数据交换只能 1 对 1 吗,可以 1 对多吗类似建立一个群组,比如 1 台设备修改了内容自动同步群组内其他设备可以一键自动同步
|
![]() |
110
blanu 85 天前
既然目的是为了解决不同设备之间应用的点对点通信,那你干嘛不抽象出一层网络通信层,非要做一个四不像的界面作为平台?
|
![]() |
111
pikay OP @Vipcw95 😂 是的,下一步我就是完善使用文档和开发文档了。
可以 1 对多,多对多组群这个功能还在 todo 里,到时候不需要按什么按键,直接打开就会自动多端同步。 |
![]() |
112
pikay OP @blanu 已经抽象出网络通信层了,但仅仅实现数据的传输几乎没有价值。如果没有像界面这样的数据展示支撑,数据传输本身几乎毫无价值,就像 IPFS 一样。真正赋予数据通信价值的,是将数据以直观、易用的方式呈现给用户。
|
![]() |
113
pikay OP @andyskaura 😂 是的,可惜 webrtc 的易用性太差了,不然现在前端还有很多活干。你这个是怎么交换信令的?
|
![]() |
114
winterbells 85 天前
快进到支持浏览器里启动浏览器
|
![]() |
115
andyskaura 85 天前
|
![]() |
116
andyskaura 85 天前
@pikay #113 易用性还行吧,我们公司有业务是通过 webrtc 传监控的,2K 的北京到广州也很稳定,延迟在 60ms 内,当然会有波动
|
![]() |
117
curlychen 85 天前
赞~~
|
118
KaiGer666 84 天前
念念不忘 必有回响
|
119
skvi 84 天前 via Android
支持
|
![]() |
120
sunxfancy 84 天前
用了很多业余时间和非业余时间。哈哈哈哈,希望你老板没上 v2ex
|
![]() |
122
zmt2023 PRO 酷炫,有想法
|
![]() |
123
zhaosong 82 天前
竟然不是 wasm 构建的,那么在运行高运算量的应用时岂不是直接跑满 cpu 了
|
![]() |
125
thinkdiff 82 天前
有趣,已 star !
|
![]() |
126
iminto 80 天前 via Android
我真的很想吐槽,你这东西,20 年前我还在玩无忧 js 论坛的时候就见过了,这就是个网页,和操作系统谈不上一文钱关系
|
![]() |
127
pikay OP @iminto 怎么说呢,如果你说要从控制计算机操作、运用和运行硬件开始的话,的确不算是真正的操作系统。但是这个是在浏览器上做的一个应用层 runtime ,你是可以在 NoneOS 上直接开发应用的。已经封装了像安卓的 Android Runtime 、Lib 和 Application 层,NoneOS 往下的层就是浏览器和宿主系统。
https://images2017.cnblogs.com/blog/1008788/201709/1008788-20170910193701397-440543753.png |