想做一个操作系统,问问大家意见 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
pikay
V2EX    程序员

想做一个操作系统,问问大家意见

  •  
  •   pikay 2021-11-09 18:33:34 +08:00 4935 次点击
    这是一个创建于 1434 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今年年初的时候想到的,基于浏览器制作一个操作系统界面,类似 Firefox OS 的 Gaia 层这样的产品;

    底层使用 indexDB 和 service Worker 做一个虚拟化的 File System ,基于这个 fs 就能在浏览器上做很多事情;例如之前有些页面要测试在 https 协议下的效果,但部署起来很麻烦放弃了,用这种方式就能很方便部署;

    然后基于 微应用 这个概念,这个在浏览器层的“系统”,就能使用 webapp 了;

    后期感觉还可以搭配 webRTC 做互联操作系统,把区块之类的概念引进来;

    这种想法怎么样?现在试了下感觉可以做,但是会花很多时间,而且感觉又赚不了钱,但是很好玩啊!!!

    现在好多事都没做,做这个会耽误其他进度,又导致陷入更穷的地步,想问问大家意见。

    第 1 条附言    2021-11-09 22:44:28 +08:00
    决定了,一定要搞出来,立帖为证。(其实是因为太想玩了)
    38 条回复    2025-06-14 09:07:20 +08:00
    jiayong2793
        1
    jiayong2793  
       2021-11-09 18:38:08 +08:00
    操作系统的定义是核心还是皮肤?
    GPLer
        2
    GPLer  
       2021-11-09 18:38:38 +08:00
    很好的想法,分享一个纯前端的 git 实现
    https://github.com/creationix/js-git.git
    pikay
        3
    pikay  
    OP
       2021-11-09 19:09:02 +08:00 via Android
    @jiayong2793 操作系统服务于应用,既然浏览器已经把应用所需的 api 做了,那么基于浏览器的系统只需把不足的 api 补充就行了;

    准确来说应该是做操作系统的交互和文件层,类似安卓的 Launcher ,可以查阅一下 Firefox OS 的 Gaia 。
    loading
        4
    loading  
       2021-11-09 19:22:50 +08:00
    挺好,先做个 demo 给大家看看。
    newmlp
        5
    newmlp  
       2021-11-09 20:38:26 +08:00
    挺好,先搞个线程出来玩玩
    Remember
        6
    Remember  
       2021-11-09 20:41:29 +08:00
    先做个 PPT 。
    mxT52CRuqR6o5
        7
    mxT52CRuqR6o5  
       2021-11-09 21:40:54 +08:00
    搞虚拟化的 File System 直接用 File and Directory Entries API ,并不需要用 indexDB 和 service Worker 搞那么麻烦
    https://developer.mozilla.org/en-US/docs/Web/API/File_and_Directory_Entries_API
    跑 webapp 的话,StackBlitz 已经研究出现成的技术了
    https://blog.stackblitz.com/posts/introducing-webcontainers/
    要搞更复杂的可以直接上 v86/qemu 等类似的技术
    wanguorui123
        8
    wanguorui123  
       2021-11-09 21:45:13 +08:00
    当年的 Q+
    pikay
        9
    pikay  
    OP
       2021-11-09 22:35:53 +08:00
    @mxT52CRuqR6o5 涨知识了;虚拟化就太复杂了;
    pikay
        10
    pikay  
    OP
       2021-11-09 22:40:09 +08:00
    @wanguorui123 是不是 webqq ?当年还没入行就下线了,当时浏览器 api 太少了,真的很难做好啊
    mxT52CRuqR6o5
        11
    mxT52CRuqR6o5  
       2021-11-09 22:45:13 +08:00 via Android
    @pikay 想办法编译到 wasm 就行,肯定是比自己去开发系统成本低,可以利用的现成东西更多
    pikay
        12
    pikay  
    OP
       2021-11-09 22:51:14 +08:00
    @mxT52CRuqR6o5 虽然可以,但是不是我说的那个东西;谢谢老哥科普的 api 和平台
    mxT52CRuqR6o5
        13
    mxT52CRuqR6o5  
       2021-11-09 22:51:53 +08:00 via Android
    @pikay 想想 wsl 就知道了,wsl1 微软就是在 nt 内核上直接重新做了一套 linux 出,有很多优势,但实现成本实在太高,wsl2 就改用了虚拟化的方案。
    虚拟化(模拟器)肯定是比重新搞个系统要简单的
    mxT52CRuqR6o5
        14
    mxT52CRuqR6o5  
       2021-11-09 22:57:12 +08:00 via Android
    @pikay 我只是是从工程实践的角度讲讲我自己的看法,你自己想做的项目就按照自己喜欢的方式来就行
    pikay
        15
    pikay  
    OP
       2021-11-09 23:10:31 +08:00
    @mxT52CRuqR6o5 [抱拳]
    KMpAn8Obw1QhPoEP
        16
    KMpAn8Obw1QhPoEP  
       2021-11-10 01:43:03 +08:00 via Android
    我就好奇下要想做出这么个东西出来需要多少基础知识…
    0Vincent0Zhang0
        17
    0Vincent0Zhang0  
       2021-11-10 08:16:46 +08:00 via Android
    希望不要在进程,线程,文件系统,网络等基础部分耗尽耐心
    wanguorui123
        18
    wanguorui123  
       2021-11-10 09:32:37 +08:00
    @pikay 不是 WebQQ ,是 Q+桌面
    wanguorui123
        19
    wanguorui123  
       2021-11-10 09:36:24 +08:00
    SmiteChow
        20
    SmiteChow  
       2021-11-10 10:48:31 +08:00
    就提一个点把,怎么在浏览器的操作系统里面运行浏览器?
    td width="auto" valign="top" align="left">
        21
    cszchen  
       2021-11-10 10:52:55 +08:00 via iPhone
    这不就是把网址导航,做个皮肤吗
    cszchen
    pikay
        22
    pikay  
    OP
       2021-11-10 10:55:49 +08:00
    @wanguorui123 查了一下,真的感叹 Q+生不逢时,那时候的 css 和 js 好用特性太少了,做起来肯定贼麻烦。
    pikay
        23
    pikay  
    OP
       2021-11-10 10:56:50 +08:00
    @SmiteChow 浏览器上的系统不需要浏览器,就直接打开就行了,拭目以待吧
    pikay
        24
    pikay  
    OP
       2021-11-10 11:00:09 +08:00
    @cszchen 听君一席话,让我把商业化的路子想通了。。。绝对不是换个皮肤,你可以在这个系统内开发、安装和使用 webapp ;给我一点时间到时让你试试。
    liuxu
        25
    liuxu  
       2021-11-10 12:19:50 +08:00
    弄一个出来玩玩儿,好玩我也帮你堆代码
    pikay
        26
    pikay  
    OP
       2021-11-10 13:14:35 +08:00 via Android
    @liuxu 好咧
    Mark24
        27
    Mark24  
       2021-11-10 13:45:51 +08:00
    还记得当年 FirefoxOS
    真是可惜了
    SmiteChow
        28
    SmiteChow  
       2021-11-10 14:12:11 +08:00
    @pikay 不行啊,你一个操作系统装不了浏览器怎么行?按你说的直接打开岂不是随便一个网站拥有的权限和操作系统一样了?那你的操作系统有何安全可言?
    Nich0la5
        29
    Nich0la5  
       2021-11-10 14:13:03 +08:00
    感觉没必要从内核开始弄一个真实的系统,做一个中间层让浏览器和本地系统通信就好(甚至可以是远程系统 这样就就相当于云系统了) webapp 其实就类似 chrome 插件或者小程序。。等等,怎么有点像 chrome os
    弄出来了给我们玩玩
    pikay
        30
    pikay  
    OP
       2021-11-10 14:33:03 +08:00
    @SmiteChow 对,所以有两个方案;

    一个是应用安装在新域名上,每个应用都有一个域名容器,但这样应用数量会有限制,还要弄好多这样的域名做容器;

    另一个是把 html 默认 Content-Type 改为文本,只有注册的页面才是 text/html ,这时候可预览的页面在 service worker 层植入脚本,把 indexdb 之类的涉及安全的 api 加钩子,限制住权限;
    SmiteChow
        31
    SmiteChow  
       2021-11-10 14:38:26 +08:00
    @pikay 额,你完全没 get 到我的点,算了,你加油吧。
    SmiteChow
        32
    SmiteChow  
       2021-11-10 14:40:47 +08:00
    @Nich0la5 chrome os 是正经的操作系统( linux 改的),能装浏览器的(自带 chrome 定制版)
    pikay
        33
    pikay  
    OP
       2021-11-10 15:00:18 +08:00
    @SmiteChow 我懂你意思了,真正底层系统不是我想造的;我想造像 Firefox OS 的 Gaia 层类似的东西,不关注下面的抽象层(硬件、驱动、核心[ linux 或 windows ]、排版引擎、Javascript runtime 之类的);然后通过抽象 File System 达到自成系统;

    https://wiki.mozilla.org/Gaia
    pikay
        34
    pikay  
    OP
       2021-11-10 15:02:35 +08:00
    @Nich0la5 哦对对,后期感觉还能搞个 webRTC 做文件传输,弄个跟群辉差不多的东西
    pikay
        35
    pikay  
    OP
       2021-11-10 17:49:15 +08:00
    @Mark24 老可惜了,这些概念都太超前了,还有当年的 Palm 的 WebOS ,乔布斯期望的 iPhone 通过 Safari 添加应用的 webapp 雏形。
    dawn4u
        36
    dawn4u  
       123 天前
    @pikay 楼主可以介绍下 NoneOs 的主要框架与实现方式吗?和 4 年前想法有出入没?
    pikay
        37
    pikay  
    OP
       121 天前
    @dawn4u 和 4 年前想法和实现方式基本一致,只不过是将虚拟 File System 改为了用了浏览器自带的 OPFS ,因为 4 年过去了,OPFS 支持度上来了,性能比虚拟 FS 性能更好。
    pikay
        38
    pikay  
    OP
       121 天前
    @dawn4u 我主要使用了以前开发的 [ofa.js]( https://github.com/kirakiray/ofa.js) 来进行开发。之所以选择它,是因为 ofa.js 能够实现前端应用的无打包化,正是这种无需打包的特性,使得应用可以快速地运行起来,并且我还用到了它的微前端功能 。具体的实现方式,可能需要查看源代码才能深入了解。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1403 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 16:59 PVG 00:59 LAX 09:59 JFK 12:59
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86