目录
【整体介绍】
本项目基于UEFI的edk2代码开发,纯属个人兴趣爱好,从2021年7月中旬开始开发,当前开发代码量大概在4K左右,欢迎对操作系统有兴趣的伙伴加入,QQ群组:663726937,群里成员有来自国内的、国外的、有初中的、有大学的、有工作多年的成员,有水平比较高的,有水平比较不高的,但是我们都欢迎愿意加入的你。
【加入开发需要的技能要求】
只需要对C语言熟悉就可以,当然不熟悉也可以,当前开发只用到C语言,未使用汇编
当前开发流程:编码、编译、把二进制*.efi拷贝到U盘,把U盘插入笔记本USB接口,开机,运行*.efi,就显示成【运行效果展示】的效果。
【运行效果展示】
当前桌面是一个显示图层(每个图层都有一个唯一编号):图层最下边是一张珠峰图片,格式是BMP格式,然后在左上角显示了三张小的图片,我的电脑、系统设置、回收站,不过下边的汉字还未调整正确,
在桌面图层左下边第一行显示了鼠标当前的x轴、y轴坐标,以及x轴、y轴动态移动的变化量;在第二行显示了当前鼠标光标位置所对应的图层(Graphics Layer id),这个参数很重要,其他参数不太重要;在第三行和第四行显示了操作系统时间片计数,第五行显示了进程通信使用buffer的内容,第六行未显示的是键盘输入(这里还有点性能问题);第八行显示的屏幕水平、垂直分辨率;
在桌面左下边再下边是菜单按钮,如果点击的话会显示菜单,包含(我的电脑、内存使用信息、系统日志、系统设置、系统退出),分别点击这几个菜单可以进入相应 的功能,其中我的电脑、内存使用信息、系统日志点击会弹出窗口,系统设置当前只支持把桌面背景置灰或者还原成珠峰图片背景,系统退出则会有点点小动画,然后关机。左下边还有三个按钮图标,暂时未使用
在桌面的右下角显示当前的年、月、日、时、分、秒,还有星期几信息
以上是桌面图层。
接下来有启动菜单图层,不过未显示出来;
然后桌面中间有三个图层:
我的电脑窗口(桌面显示的左边):我的电脑里边显示了系统分区信息、分区名称(当前只支持FAT32名称读取,NTFS的暂不支持,开发已经完成还在调试中),每个分区的大小,在下边是显示一个FAT32文件系统分区,可以进入目录,可以进入子目录,也可以查看文件内容,不过当前只能显示成十六进制,注:我的电脑显示的内存信息并不准确。在我的电脑窗口右下角有个比较黑的块,实际上它是我们系统鼠标的光标。
内存信息窗口(桌面显示的中间):显示了通过我们自己定义内存分配接口分配使用的内存信息汇总,当前内存分配是基于4K为粒度分配,不过还不支持单进程使用不同内存信息,当前对EDK2代码了解还不是很深入,还需要进一步学习并完善代码。
系统日志窗口(桌面显示的右边):显示我们运行的日志,其实开始实现代码的时候日志都是直接打印在桌面的,后边使用单独的窗口显示出来的,最前面4位是所在的代码行,后边是一些字符信息。
下边这张图是两台电脑之间可以通过TCP进行数据收发测试成功,测试时间:2021年12月25日。
另外笔者基于Docker搭建 Ubuntu20.10下的编译环境,并且测试成功,下载地址:
Docker Ubuntu20.10 image下载地址
链接:https://pan.baidu.com/s/1Q_YjAoCQmXKGfF1Jzjt6lw
提取码:aawf
【代码配套信息】
基于UEFI的edk2代码,基于稳定标签:stable202105-base拉的开发分支,项目配套代码地址:
https://gitee.com/dream-os/edk22/tree/edk2-stable202105-base
【代码信息】
代码目录:
edk22: 类操作系统源码https://gitee.com/dream-os/edk22/tree/Split
【系统运行演示视频】
类操作系统实现-当前可以读取FAT32系统格式目录和文件内容_哔哩哔哩_bilibili
类操作系统-两台PC机之间TCP通信测试成功_哔哩哔哩_bilibili
注意:
1、只支持在笔记本或PC机运行,不支持在模拟器运行,当然可能还存在一些兼容性问题。
2、只支持基于UEFI的系统运行,不支持BIOS的系统运行。
【编译环境信息】
基于Ubuntu20.10编译,当前编译出来的efi文件大小:239K,当前增量编译大概需要20秒。
【当前开发状态】
已实现的功能列表:
1、当前支持对FAT32文件系统格式目录和文件读取;
2、支持桌面多图层、多窗口;
3、支持多窗口移动;
4、支持关机动画;
5、支持时间日期显示;
6、支持多任务;
7、支持任务的优先级;
8、支持中文/英文字符;
9、NTFS只能显示根目录文件列表;
10、基于TCP与另一台电脑进行数据传输;
当前正在开发:
1、基于本系统实现应用代替Linux内核的中断;
2、等等
当前问题列表:
1、【问题】支持鼠标、键盘输入;不过还有点性能问题;
2、【问题】图层处理也有点性能问题
3、【问题】鼠标移动,移动到窗口最左边会跑到窗口最右边
4、【问题】当前菜单部分,显示设置的时候有BUG
5、【问题】当前我的电脑窗口状态机还有点问题,只能访问一次我的电脑
6、等等
待开发:
1、桌面显示效果优化
2、
3、等等
【代码查看&代码编写工具】
SourceInsight4.0,SourceInsight3.5的BUG比较多,4.0版本修复了不少问题,是一个看代码的神器。