ZerOS Kernel - 内核架构详解

本文档详细说明 ZerOS Kernel 的系统架构、模块设计和实现细节。适合想要深入了解内核设计的开发者阅读。

目录


系统架构

ZerOS/
├── kernel/                 # 内核模块
│   ├── filesystem/        # 文件系统
│   │   ├── disk.js       # 虚拟磁盘管理
│   │   ├── nodeTree.js   # 文件树结构
│   │   ├── fileFramework.js # 文件对象模板
│   │   └── init.js       # 文件系统初始化
│   ├── logger/            # 日志系统
│   │   └── kernelLogger.js # 统一日志管理
│   ├── memory/            # 内存管理
│   │   ├── memoryManager.js # 统一内存管理器
│   │   ├── heap.js       # 堆内存管理
│   │   ├── shed.js       # 栈内存管理
│   │   ├── kernelMemory.js # 内核动态数据存储
│   │   └── memoryUtils.js # 内存工具函数
│   ├── process/           # 进程管理
│   │   ├── processManager.js # 进程生命周期管理
│   │   ├── permissionManager.js # 权限管理
│   │   ├── applicationAssetManager.js # 应用程序资源管理
│   │   ├── applicationAssets.js # 应用程序资源映射
│   │   └── programCategories.js # 程序分类
│   ├── core/              # 核心模块
│   │   ├── exceptionHM/   # 异常处理
│   │   │   └── exceptionHandler.js # 异常处理管理器(结构化异常处理SEH)
│   │   ├── safemode/      # 安全模式
│   │   │   └── safeModeManager.js # 安全模式管理器
│   │   └── usercontrol/  # 用户控制
│   │       ├── userControl.js # 用户控制系统
│   │       └── userGroup.js   # 用户组管理系统
│   ├── drive/             # 驱动层
│   │   ├── animateManager.js # 动画管理
│   │   ├── networkManager.js # 网络管理
│   │   ├── LStorage.js   # 本地存储
│   │   ├── speechDrive.js # 语音识别驱动
│   │   └── networkServiceWorker.js # 网络服务工作者
│   ├── signal/            # 信号系统
│   │   ├── dependencyConfig.js # 依赖管理和模块加载
│   │   └── pool.js        # 全局对象池
│   ├── dynamicModule/     # 动态模块
│   │   ├── dynamicManager.js # 动态模块管理
│   │   └── libs/          # 第三方库
│   │       ├── anime-4.2.2/ # anime.js 动画库
│   │       ├── animate.min.css # animate.css
│   │       ├── html2canvas.min.js # html2canvas
│   │       └── jquery-3.7.1.min.js # jQuery
│   ├── typePool/          # 类型池
│   │   ├── fileType.js   # 文件类型枚举
│   │   ├── logLevel.js   # 日志级别枚举
│   │   ├── addressType.js # 地址类型枚举
│   │   └── enumManager.js # 枚举管理器
│   └── SystemInformation.js # 系统信息(支持后端服务切换)
├── system/                # 系统目录
│   ├── service/           # 服务端(支持 PHP 和 SpringBoot 两种后端)
│   │   ├── FSDirve.php    # 文件系统驱动服务(PHP 后端)
│   │   ├── CompressionDirve.php # 压缩驱动服务(PHP 后端)
│   │   ├── ImageProxy.php # 图片代理服务(PHP 后端)
│   │   ├── BrowserProxy.php # 浏览器网页代理(PHP 后端)
│   │   ├── module-proxy.php # 模块代理服务(PHP 后端)
│   │   # 注意:SpringBoot 后端提供相同的服务接口,路径无 .php 后缀
│   │   └── DISK/          # 虚拟磁盘存储
│   │       ├── C/         # C: 盘
│   │       └── D/         # D: 盘
│   │           ├── application/ # 应用程序目录
│   │           ├── plugins/     # 语言包(D/plugins)
│   │           └── server/      # 服务模块(D/server,server-xxx.js)
│   ├── expansion/          # 系统扩展
│   │   ├── languagesExpansion.js # 语言包管理器
│   │   └── serverExpansion.js   # 服务扩展(D/server 服务管理)
│   ├── ui/                # UI 模块
│   │   ├── guiManager.js  # GUI 窗口管理
│   │   ├── themeManager.js # 主题管理
│   │   ├── taskbarManager.js # 任务栏管理
│   │   ├── notificationManager.js # 通知管理
│   │   ├── eventManager.js # 事件管理
│   │   ├── contextMenuManager.js # 上下文菜单管理
│   │   ├── desktop.js     # 桌面管理
│   │   └── lockscreen.js  # 锁屏界面
│   └── assets/            # 资源文件
│       └── assets/        # 资源子目录
│           ├── icons/     # 图标资源
│           │   ├── glass/ # Glass 风格图标
│           │   ├── gnome/ # GNOME 风格图标
│           │   ├── macos/ # macOS 风格图标
│           │   ├── material/ # Material 风格图标
│           │   ├── ubuntu/ # Ubuntu 风格图标
│           │   └── windows/ # Windows 风格图标
│           ├── desktopBG/ # 桌面背景
│           │   ├── default.svg
│           │   ├── cosmic.svg
│           │   ├── cyberpunk.svg
│           │   └── ...
│           └── start/     # 锁屏背景
│               ├── bg1.jpg
│               ├── bg2.jpg
│               └── bg3.jpg
├── bootloader/            # 启动引导
│   └── starter.js        # 启动器
├── test/                  # 测试和界面
│   ├── index.html        # 入口页面
│   ├── core.css          # 样式文件
│   └── assets/           # 测试资源
└── docs/                 # 文档
    ├── API/              # API 文档
    │   ├── README.md     # API 文档索引
    │   └── ...          # 各模块 API 文档
    ├── SERVER/           # 服务与服务模块说明
    │   ├── README.md     # 服务索引
    │   └── ServiceModule.md  # 服务模块编写指南
    ├── PLUGINS/          # 扩展与插件(语言包等)
    │   ├── README.md     # 扩展与插件索引
    │   └── LanguagePack.md   # 语言包格式说明
    ├── DEVELOPER_GUIDE.md # 开发者指南
    ├── SYSTEM_FLOW.md    # 系统流程说明
    └── ZEROS_KERNEL.md   # 本文档

启动流程

  1. 日志系统初始化:加载 KernelLogger,建立统一日志入口
  2. 依赖管理器初始化:创建 DependencyConfig 实例
  3. 模块依赖声明:注册所有内核模块的依赖关系
  4. 模块链接:按依赖顺序异步加载所有模块
  5. 对象池初始化:创建全局对象池 KERNEL_GLOBAL_POOL
  6. 进程管理器初始化:初始化 ProcessManager,注册 Exploit 程序(PID 10000)
  7. GUI管理器初始化:初始化 GUIManager,建立窗口管理系统
  8. 通知管理器初始化:初始化 NotificationManager,建立通知系统
  9. 任务栏管理器初始化:初始化 TaskbarManager,建立任务栏界面
  10. 文件系统初始化:初始化磁盘分区(C:、D:)
  11. 用户控制系统初始化:初始化 UserControl,加载用户数据并创建默认用户
  12. 锁屏界面初始化:初始化 LockScreen,显示锁屏界面
  13. 用户登录:用户在锁屏界面输入密码登录
  14. 桌面显示:登录成功后显示系统桌面,初始化任务栏和通知管理器
  15. 自动启动程序:启动标记为 autoStart: true 的程序(如终端程序)

核心模块详解

1. 日志系统 (KernelLogger)

统一的内核日志系统,提供结构化的日志输出。

⚠️ 重要:所有日志输出必须通过 KernelLogger 进行统一管理,禁止直接使用 console.logconsole.warnconsole.error

特性

  • 多级别日志:DEBUG (3)、INFO (2)、WARN (1)、ERROR (0)
  • 结构化输出:模块名、级别、时间戳、消息
  • 本地化支持:支持中英文切换
  • 日志过滤:可动态调整日志级别
  • 错误抑制机制:防止无限循环报错

使用示例

// ✅ 正确:使用 KernelLogger
KernelLogger.info('MYAPP', '程序启动');
KernelLogger.warn('MYAPP', '警告信息');
KernelLogger.error('MYAPP', '错误信息', error);

// ❌ 错误:直接使用 console(不推荐)
console.log('程序启动');

详细 API 文档请参考 KernelLogger API

2. 内存管理 (MemoryManager)

提供堆内存和栈内存的统一管理,支持多进程内存隔离。

堆内存 (Heap)

  • 动态内存分配和释放
  • 支持多进程独立堆空间
  • 地址管理和边界检查

栈内存 (Shed)

  • 代码区和资源链接区
  • 用于存储常量和静态数据
  • 支持字符串和数值存储

Exploit 程序(PID 10000)

  • 作为统一的数据存储中心,管理所有内核动态数据
  • 存储终端输出内容(用于 vim 等全屏程序的恢复)
  • 存储剪贴板数据(copy/paste 命令)
  • 存储每个终端实例的环境变量、命令历史、补全状态
  • 存储内核模块的动态数据(通过 KernelMemory 接口)
  • 自动分配和管理 Heap 和 Shed 内存(1MB Heap,1000 Shed)

详细 API 文档请参考 MemoryManager APIKernelMemory API

3. 文件系统 (FileSystem)

完整的虚拟文件系统实现,支持目录树和文件操作。

核心组件

  • Disk:虚拟磁盘管理

    • 支持多个磁盘分区(C:、D: 等)
    • 磁盘容量和空间管理
    • 自动计算已用/空闲空间
  • NodeTreeCollection:文件树集合

    • 目录节点管理(Node)
    • 文件对象管理(FileFormwork)
    • 路径解析和导航
  • FileFormwork:文件模板

    • 文件元信息(类型、大小、时间戳)
    • 文件内容管理
    • 读写操作

支持的操作

  • 创建/删除文件和目录
  • 重命名文件和目录
  • 移动文件和目录
  • 复制文件和目录(递归)
  • 文件读写
  • 路径解析

持久化存储

  • 自动保存到 localStorage
  • 启动时自动恢复
  • 每个磁盘分区独立存储
  • 多后端支持:支持 PHP 和 SpringBoot 两种后端服务
    • PHP 后端:所有文件操作通过 FSDirve.php 服务进行,文件实际存储在 system/service/DISK/C/system/service/DISK/D/ 目录下
    • SpringBoot 后端:提供与 PHP 后端相同的功能接口,路径无 .php 后缀,可通过 SystemInformation 切换

详细 API 文档请参考 Disk APINodeTree API

4. 进程管理 (ProcessManager)

完整的进程生命周期管理系统,负责程序的启动、运行和终止。

特性

  • PID 自动分配和管理
  • 程序资源管理(脚本、样式、元数据)
  • 程序类型识别(CLI/GUI)
  • CLI 程序自动启动终端环境
  • DOM 元素跟踪和清理
  • 程序行为记录和日志
  • 共享空间管理(APPLICATION_SHARED_POOL
  • 自动启动程序支持(autoStartpriority
  • 权限检查集成:所有内核 API 调用都经过权限验证

CLI 程序自动启动终端

  • 当 CLI 程序独立启动时,如果没有终端环境,ProcessManager 会自动启动终端程序
  • 终端程序作为系统内置程序,在系统启动时自动启动(autoStart: true
  • 确保 CLI 程序始终有可用的终端环境

详细 API 文档请参考 ProcessManager API

4.1 权限管理 (PermissionManager)

ZerOS 内核的安全核心组件,负责管理所有程序的内核操作权限。

特性

  • 权限级别系统:普通权限(自动授予)、特殊权限(需要用户确认)、危险权限(需要明确授权)
  • 权限声明:程序在 __info__ 中声明所需权限
  • 动态权限申请:特殊权限首次使用时弹出权限请求对话框
  • 权限持久化:已授予的权限会被保存,下次启动时自动恢复
  • 权限检查缓存:5秒 TTL 缓存,避免重复检查
  • 并发请求去重:避免同时弹出多个权限请求对话框
  • 强制权限验证:所有需要权限的内核 API 调用都必须经过验证

详细 API 文档请参考 PermissionManager API

4.2 异常处理 (ExceptionHandler)

结构化异常处理(SEH)机制,提供统一的异常报告和处理系统。

特性

  • 4种异常等级
    • 内核异常 (KERNEL):严重不可修复,进入BIOS安全模式,阻止正常启动
    • 系统异常 (SYSTEM):蓝屏界面,强制停止所有程序,系统自检后重启
    • 程序异常 (PROGRAM):强制终止异常程序,通知用户
    • 服务异常 (SERVICE):仅记录日志,不影响系统运行
  • 自动处理:根据异常等级自动执行相应的处理流程
  • BIOS集成:内核异常与BIOS管理器集成,支持清除异常标志
  • 启动检查:系统启动时自动检查内核异常标志,阻止正常启动

异常处理流程

  • 内核异常:设置持久化标志 → 进入BIOS安全模式 → 阻止正常启动
  • 系统异常:强制停止所有程序 → 显示蓝屏 → 系统自检 → 自动重启
  • 程序异常:强制终止程序 → 显示通知 → 记录日志
  • 服务异常:仅记录日志

详细 API 文档请参考 ExceptionHandler API

5. 应用程序资源管理 (ApplicationAssetManager)

管理所有应用程序的资源信息,包括脚本路径、样式表和元数据。

特性

  • 程序资源查询和验证
  • 自动启动程序列表
  • 程序元数据管理
  • 资源路径解析

详细 API 文档请参考 ApplicationAssetManager API

6. 通知管理 (NotificationManager)

统一的系统通知管理系统,负责通知的创建、显示、管理和交互。

特性

  • 支持两种通知类型:snapshot(快照)和 dependent(依赖)
  • 水滴展开动画效果(使用 AnimateManager)
  • 通知栏面板,支持点击任务栏图标打开
  • 蒙版层覆盖,自动检测鼠标离开并关闭
  • 任务栏通知数量徽章显示
  • 自动关闭支持(可设置时长)
  • 通知内容动态更新
  • 权限检查集成:创建和删除通知都需要 SYSTEM_NOTIFICATION 权限

通知类型

  • snapshot(快照):独立通知,显示标题和内容,有标题栏和关闭按钮
  • dependent(依赖):依赖通知,紧贴在快照通知下方,从圆形展开为矩形,用于程序持续显示的内容(如音乐播放器)

详细 API 文档请参考 NotificationManager API

7. 内核动态数据存储 (KernelMemory)

提供统一接口,管理所有内核模块的动态数据,存储在 Exploit 程序的内存中。

特性

  • 统一的数据存取接口
  • 自动内存分配和管理
  • 数据序列化和反序列化
  • 内存使用情况监控

存储的数据类型

  • APPLICATION_SOP - 应用程序分区管理表
  • PROGRAM_NAMES - 程序名称映射
  • PROCESS_TABLE - 进程表
  • NEXT_PID - 下一个PID
  • NEXT_HEAP_ID / NEXT_SHED_ID - 下一个堆/栈ID
  • DISK_SEPARATE_MAP / DISK_SEPARATE_SIZE - 磁盘分区信息
  • DISK_FREE_MAP / DISK_USED_MAP - 磁盘使用情况
  • DISK_CAN_USED - 磁盘可用状态

详细 API 文档请参考 KernelMemory API

8. 终端系统 (Terminal)

Bash 风格的命令行终端界面,提供完整的命令处理能力和窗口管理功能。

特性

  • 多标签页支持
  • 命令历史记录(存储在 Exploit 程序内存中)
  • Tab 自动补全(状态存储在 Exploit 程序内存中)
  • 富文本输出(HTML 渲染)
  • 事件驱动的命令处理
  • 环境变量持久化(存储在 Exploit 程序内存中)
  • 终端内容恢复(vim 退出时自动恢复)
  • 窗口管理功能
    • 关闭窗口(通过 ProcessManager)
    • 全屏/还原切换
    • 窗口拖拽移动
    • 窗口大小拉伸(响应式)
  • TerminalAPI:暴露到共享空间,供其他程序调用

内置命令

  • 文件操作:ls, cd, tree, cat, write, rm, mv, copy, paste, rename
  • 目录操作:markdir, markfile
  • 系统管理:ps, kill, diskmanger, power, check
  • 编辑器:vim
  • 工具:clear, help, pwd, whoami

9. GUI 管理系统

ZerOS 提供了完整的 GUI 管理系统,包括:

  • GUIManager:窗口管理,层叠、焦点、模态提示框

    • ⚠️ 必须使用:所有 GUI 程序必须使用 GUIManager.registerWindow() 进行窗口管理
    • 自动处理窗口拖动、拉伸、最小化、最大化、焦点管理
    • 自动保护窗口标题栏,防止被意外删除
    • 统一的窗口样式和主题支持
  • TaskbarManager:任务栏管理,程序启动、多任务切换

    • 程序固定/取消固定功能
    • 多任务切换器(Ctrl + 鼠标左键)
    • 天气组件显示
    • 通知徽章
  • NotificationManager:通知管理,系统通知的创建和显示

    • 支持快照和依赖类型通知
    • 通知栏面板
    • 自动关闭支持
  • ThemeManager:主题管理,主题和风格的独立管理

    • 支持 GIF 动图背景
    • 支持本地图片背景
    • 随机二次元背景功能
  • EventManager:事件管理,统一的事件处理系统

    • ⚠️ 必须使用:所有事件处理必须通过 EventManager 进行统一管理
    • 支持事件优先级和传播控制
    • 自动清理机制(进程退出时自动清理所有事件监听器)
    • 窗口拖动、拉伸事件管理
    • 菜单和弹出层事件管理
    • 多任务选择器事件管理
  • ContextMenuManager:上下文菜单管理,右键菜单系统

    • 支持程序注册自定义菜单
    • 动态菜单项生成
    • 自动关闭机制
  • DesktopManager:桌面管理,桌面图标和快捷方式

    • 桌面图标管理
    • 组件拖拽功能
    • 背景管理

详细 API 文档请参考:

10. 系统驱动层

ZerOS 提供了多个系统级驱动,扩展内核功能:

  • AnimateManager:动画管理,统一管理 CSS 动画和 JavaScript 动画
  • NetworkManager:网络管理,统一的网络请求接口
  • LStorage:本地存储管理,系统级和程序级数据持久化
  • DragDrive:拖拽驱动,统一的拖拽事件管理
  • GeographyDrive:地理位置驱动,高精度和低精度定位支持
  • SpeechDrive:语音识别驱动,基于 Web Speech API 的语音识别功能
  • CryptDrive:加密驱动,RSA 加密/解密、MD5 哈希、随机数生成

详细 API 文档请参考:

7. 用户控制系统 (UserControl)

统一的多用户管理系统,支持用户级别控制、密码管理和权限授权控制。

特性

  • 三种用户级别:普通用户(USER)、管理员(ADMIN)、默认管理员(DEFAULT_ADMIN)
  • 密码管理:MD5 加密存储,支持设置和移除密码
  • 头像管理:用户头像存储在 D:/cache/ 目录
  • 权限控制:普通用户无法授权高风险权限(如加密相关权限)
  • 数据持久化:用户数据存储在 LStorageuserControl.users 键中

默认用户

  • root:默认管理员,无密码
  • TestUser:测试用户,无密码

使用示例

// 登录用户
await UserControl.login('root');

// 检查用户级别
if (UserControl.isAdmin()) {
    console.log('当前用户是管理员');
}

// 设置用户密码
await UserControl.setPassword('TestUser', 'password123');

详细 API 文档请参考 UserControl API

7.1. 用户组管理系统 (UserGroup)

用户组管理系统,与 UserControl 兼容,支持创建和管理用户组。

特性

  • 两种组类型:普通用户组(USER_GROUP)和管理员组(ADMIN_GROUP)
  • 默认组:自动创建 admins(管理员组)和 users(普通用户组)
  • 成员管理:支持添加、移除、查询组成员
  • 权限管控:双重权限检查(进程权限 + 用户权限)
  • 数据持久化:组数据存储在 LStorageuserControl.groups 键中

权限要求

  • 写入操作:需要 SYSTEM_STORAGE_WRITE_USER_CONTROL 权限
  • 读取操作:需要 SYSTEM_STORAGE_READ_USER_CONTROL 权限
  • 用户级别:创建/删除组需要管理员权限,创建管理员组需要默认管理员权限

使用示例

// 创建组
await UserGroup.createGroup('developers', UserGroup.GROUP_TYPE.USER_GROUP, '开发人员组');

// 添加成员
await UserGroup.addMember('developers', 'User1');

// 获取组成员
const members = await UserGroup.getMembers('developers');

// 同步默认组
await UserGroup.syncDefaultGroups();

详细 API 文档请参考 UserGroup API

8. 锁屏界面 (LockScreen)

Windows 11 风格的登录界面,负责系统启动时的用户认证。

特性

  • 随机背景:从 system/assets/start/ 目录随机选择背景图片(可开关)
  • 自定义背景:支持用户选择固定锁屏背景,独立于桌面背景管理
  • 时间组件:左上角显示当前时间和日期,可开关控制
  • 每日一言组件:显示每日励志语句,智能缓存管理,可开关控制
  • 用户信息:中央显示用户头像和用户名
  • 密码验证:如果用户有密码,需要输入正确密码才能登录
  • 用户切换:点击用户头像可以切换显示的用户
  • 加载动画:在登录过程中显示加载蒙版

存储键

  • system.lockscreenRandomBg:是否启用随机锁屏壁纸(默认 true
  • system.lockscreenBackground:自定义锁屏背景路径
  • system.lockscreenTimeComponent:是否显示时间组件(默认 true
  • system.lockscreenDailyQuote:是否显示每日一言组件(默认 true

快捷键

  • Ctrl + L:手动锁定屏幕

使用示例

// 初始化锁屏界面
await LockScreen.init();

// 手动锁定屏幕(通过 TaskbarManager)
TaskbarManager._lockScreen();

// 加载每日一言
await LockScreen._loadDailyQuote();

详细 API 文档请参考 LockScreen API


数据存储架构

Exploit 程序架构

Exploit 程序(PID 10000)是 ZerOS Kernel 的统一数据存储中心,负责管理所有临时数据和终端状态。

设计目的

  • 集中管理所有数据存储需求
  • 统一使用内核内存管理系统
  • 简化数据交换和持久化逻辑
  • 提供统一的内存访问接口

存储的数据类型

  1. 终端输出内容

    • 用于全屏程序(如 vim)退出时恢复终端显示
    • 存储格式:JSON 序列化的 HTML 元素数组
  2. 剪贴板数据

    • copy/paste 命令使用
    • 存储文件或目录的路径和元信息
  3. 终端实例数据(按 tabId 区分)

    • 环境变量(user, host, cwd)
    • 命令历史(history 数组和 historyIndex)
    • 补全状态(visible, candidates, index, beforeText, dirPart)

内存分配

  • Heap ID: 1
  • Shed ID: 1
  • Heap Size: 200KB
  • 自动初始化和管理

数据存储键名规范

所有存储在 Exploit 程序中的数据使用统一的键名规范:

| 键名格式 | 说明 | 示例 | |---------|------|------| | TERMINAL_{tabId}_ENV | 终端环境变量 | TERMINAL_tab-1_ENV | | TERMINAL_{tabId}_HISTORY | 命令历史 | TERMINAL_tab-1_HISTORY | | TERMINAL_{tabId}_COMPLETION | 补全状态 | TERMINAL_tab-1_COMPLETION | | TERMINAL_CONTENT_ADDR | 终端输出内容地址 | TERMINAL_CONTENT_ADDR | | CLIPBOARD_ADDR | 剪贴板数据地址 | CLIPBOARD_ADDR |

每个键名都有对应的 _ADDR_SIZE 后缀,用于存储内存地址和大小信息。

数据存储实现细节

存储流程

  1. 数据序列化为 JSON 字符串
  2. 在 Heap 中分配足够的内存空间
  3. 将字符串逐字符写入 Heap
  4. 在 Shed 的 resourceLinkArea 中保存地址和大小信息
  5. 使用统一的键名规范管理

读取流程

  1. 从 Shed 的 resourceLinkArea 中读取地址信息
  2. 从 Heap 中按地址读取字符串数据
  3. 反序列化 JSON 字符串恢复数据
  4. 返回原始数据结构

内存管理优势

  • 统一的内存分配和释放机制
  • 自动内存回收(当数据被覆盖时)
  • 完整的错误处理和边界检查
  • NaN 值安全检查,防止计算错误

技术实现

依赖管理

系统使用 DependencyConfig 管理模块依赖关系:

Dependency.addDependency("../kernel/filesystem/nodeTree.js");
Dependency.waitLoaded("../kernel/filesystem/disk.js", {
    interval: 50,
    timeout: 1000
});

详细 API 文档请参考 DependencyConfig API

全局对象池

使用 POOL 系统管理全局对象:

POOL.__INIT__("KERNEL_GLOBAL_POOL");
POOL.__ADD__("KERNEL_GLOBAL_POOL", "WORK_SPACE", "C:");
POOL.__GET__("KERNEL_GLOBAL_POOL", "WORK_SPACE");

详细 API 文档请参考 Pool API

数据持久化

文件系统持久化

  • 文件系统数据自动保存到浏览器 localStorage
  • 存储键格式:filesystem_<盘符>(如 filesystem_C:
  • 自动序列化和反序列化
  • 启动时自动恢复
  • 多后端支持:支持 PHP 和 SpringBoot 两种后端服务
    • PHP 后端:所有文件操作通过 FSDirve.php 服务进行,文件实际存储在 system/service/DISK/C/system/service/DISK/D/ 目录下
    • SpringBoot 后端:提供与 PHP 后端相同的功能接口,路径无 .php 后缀,可通过 SystemInformation 切换

内存数据管理

  • 所有终端数据和临时数据存储在 Exploit 程序(PID 10000)的内存中
  • 包括:命令历史、补全状态、环境变量、剪贴板、终端输出内容
  • 数据按终端实例(tabId)区分,互不干扰
  • 使用 Heap 存储序列化的 JSON 数据
  • 使用 Shed 存储数据地址和元信息

日志系统

⚠️ 重要:所有日志输出必须通过 KernelLogger 进行统一管理。

统一的日志输出格式:

[内核][模块名] [级别] <时间戳> - <消息> [元数据]

使用示例

// ✅ 正确:使用 KernelLogger
KernelLogger.info('MYAPP', '程序启动');
KernelLogger.warn('MYAPP', '警告信息');
KernelLogger.error('MYAPP', '错误信息', error);

// ❌ 错误:直接使用 console(不推荐)
console.log('程序启动');

详细 API 文档请参考 KernelLogger API

架构设计原则

  1. 模块化:每个功能模块独立,通过依赖注入连接
  2. 日志一致性:所有内核模块和程序必须使用统一的日志系统(KernelLogger)
  3. 事件统一管理:所有事件处理必须通过 EventManager 进行统一管理
  4. 窗口统一管理:所有 GUI 程序必须使用 GUIManager 进行窗口管理
  5. 内存安全:完整的内存管理,支持多进程隔离,NaN 值安全检查
  6. 统一数据存储:所有内核动态数据统一使用 KernelMemory 存储在 Exploit 程序的内存中
  7. 持久化:文件系统自动保存到 localStorage,内核动态数据存储在内存中
  8. 可扩展性:支持添加新命令、新模块、新程序、新功能
  9. 程序名称管理:支持为进程注册和显示程序名称
  10. 进程管理:完整的进程生命周期管理,支持 CLI/GUI 程序
  11. 自动启动:支持程序自动启动和 CLI 程序自动启动终端环境
  12. 窗口管理:所有 GUI 程序支持窗口管理功能(关闭、全屏、拖拽、拉伸)
  13. 权限系统:所有内核 API 调用都需要相应权限,确保系统安全
  14. 主题系统:支持主题和风格的独立管理,支持 GIF 动图背景
  15. 资源自动清理:进程退出时自动清理所有资源(事件监听器、窗口、内存引用等)

更新日志

最新版本特性(v2.4 - 2025-12-22)

  • 锁屏界面增强

    • 锁屏背景管理
      • 随机锁屏壁纸开关:支持启用/禁用随机背景功能
      • 自定义锁屏背景:支持用户选择固定锁屏背景,独立于桌面背景管理
      • 发送到锁屏背景:从桌面背景页面可以发送背景到锁屏,自动去重
      • 锁屏背景删除:支持删除发送过来的锁屏背景(默认背景不可删除)
    • 锁屏组件
      • 时间组件:可开关的时间显示组件(默认启用)
      • 每日一言组件:可开关的每日励志语句组件(默认启用),智能缓存管理
    • 每日一言缓存
      • 系统启动时自动预加载下一句每日一言到缓存
      • 显示时优先使用缓存,使用后删除缓存
      • 自动预加载下一句,确保每次显示都有内容
      • API:https://v.api.aa1.cn/api/yiyan/index.php
  • 主题管理器程序增强

    • 锁屏页面
      • 随机锁屏壁纸开关
      • 锁屏背景选择(当随机壁纸关闭时)
      • 时间组件开关
      • 每日一言组件开关
    • 背景页面
      • 发送到锁屏背景功能(右键菜单)
      • 锁屏背景独立存储,删除桌面背景不影响锁屏背景
  • 音乐播放器程序增强

    • 沉浸式播放模式重构
      • 完全重构UI结构和样式,移除所有内联样式
      • 现代化设计,优化动画和过渡效果
      • 改进布局结构,使用更清晰的DOM层次
      • 优化响应式设计,支持各种屏幕尺寸
    • 分页功能
      • 所有列表和搜索结果支持分页
      • 使用 limitpage 参数进行API调用
      • 统一的分页UI组件和事件处理

版本特性(v2.3 - 2025-12-21)

  • 用户控制系统 (UserControl)

    • 完整的多用户管理系统,支持三种用户级别(USER、ADMIN、DEFAULT_ADMIN)
    • 密码管理:MD5 加密存储,支持设置和移除密码
    • 头像管理:用户头像存储在 D:/cache/ 目录,支持通过文件管理器选择
    • 用户重命名:管理员可以重命名用户
    • 权限控制:普通用户无法授权高风险权限(如加密相关权限)
    • 数据持久化:用户数据存储在 LStorage 中,支持跨会话保存
    • 默认用户:自动创建 root(默认管理员)和 TestUser(测试用户)
  • 锁屏界面 (LockScreen)

    • Windows 11 风格的登录界面,系统启动时自动显示
    • 随机背景:从 system/assets/start/ 目录随机选择背景图片
    • 时间显示:左上角显示当前时间和日期,每秒自动更新
    • 用户信息:中央显示用户头像和用户名
    • 密码验证:如果用户有密码,需要输入正确密码才能登录
    • 用户切换:点击用户头像可以切换显示的用户,支持显示所有可用用户列表
    • 加载动画:在登录过程中显示加载蒙版,提供流畅的用户体验
    • 快捷键支持:Ctrl + L 手动锁定屏幕
  • 设置程序 (Settings)

    • Windows 10 风格的设置界面,完全复刻 Windows 10 UI
    • 用户管理功能:更新用户头像、重命名用户、设置用户密码
    • 主题适配:自动适配主题切换,支持深色/亮色主题
    • 扩展性:支持动态注册设置分类和设置项
    • 单实例:不支持多开,已运行时会聚焦现有窗口
    • 快捷键:Ctrl + X 快速启动设置程序
  • 语音识别驱动 (SpeechDrive)

    • 基于 Web Speech API 的语音识别功能
    • 支持多语言识别(中文、英文、日文等)
    • 持续识别和实时结果反馈
    • 按需启用策略,只在有程序使用时才启用语音识别
    • 完整的会话管理和结果获取API
  • 全局快捷键增强

    • Ctrl + R:启动运行程序(如果已运行则聚焦)
    • Ctrl + X:启动设置程序(如果已运行则聚焦)
    • Ctrl + L:锁定屏幕,显示锁屏界面(新增)
    • Ctrl + E:关闭当前焦点窗口
    • Ctrl + Q:切换当前焦点窗口的最大化/最小化状态
    • Shift + E:启动文件管理器
    • 智能检测:在输入框中按下快捷键不会触发系统功能
  • 路径系统重构

    • 服务路径统一:所有 /service/ 路径更新为 /system/service/
    • 资源路径统一:图标资源路径更新为 system/assets/assets/icons/
    • 模块路径修正:fileSystem 统一为 filesystem
    • 文档同步更新:所有文档中的路径引用已同步更新
  • 头像管理系统

    • 头像存储:用户头像存储在 D:/cache/ 目录
    • 文件选择:使用文件管理器的选择模式选择头像
    • Base64 编码:图片文件自动进行 Base64 编码,支持多种图片格式
    • 动态加载:锁屏界面、设置程序、开始菜单自动更新用户头像
    • 缓存机制:使用时间戳和随机数参数防止浏览器缓存
  • LStorage 增强

    • 保存验证机制:保存后自动验证数据完整性
    • 重试机制:保存失败时自动重试,最多 3 次
    • 对象键数验证:智能检测对象键数变化,区分正常删除和异常添加
    • 详细日志:提供详细的调试日志,便于问题排查
  • 文档全面更新

    • 新增 UserControl API 文档
    • 新增 LockScreen API 文档
    • 更新 TaskbarManager API 文档(添加全局快捷键说明)
    • 更新开发者指南(添加用户控制、锁屏、设置程序相关内容)
    • 更新内核文档(添加用户控制和锁屏模块说明)

版本特性(v2.2 - 2025-12-17)

  • JSEncrypt 库支持

    • 集成 JSEncrypt 库,支持 RSA 加密/解密功能
    • 调整部分程序对 KernelLogger 的依赖
  • 窗口拉伸增强

    • 通过 GUIManager 创建的 GUI 容器现在支持全方向窗口拉伸
    • 修复窗口拉伸时的位置计算问题
    • 优化窗口拉伸逻辑,使用初始位置计算边界,避免累积误差
  • 压缩解压功能

    • 服务端支持 ZIP/RAR 压缩解压功能
    • 新增 Ziper 程序用于压缩包处理
    • 文件管理器现在可以正确识别 ZIP 文件
    • 已通过沙盒测试
  • 文件管理器增强

    • 更新了多文件多目录选择功能
    • 优化了服务端相关代码
    • 移除了删除文件的拟态弹窗
  • 背景图系统

    • 更新了随机二次元背景图
    • 服务端对图片代理做了支持
    • 优化了缓存处理
  • 扫雷游戏

    • 新增扫雷游戏程序
    • 优化了内核有关上下文菜单的处理
  • 天气组件优化

    • 更新了天气组件,修复了窗口拉伸 bug
    • 更新了对于地理位置驱动的支持
    • 调整了天气组件相关逻辑

历史版本特性(v2.1)

  • 天气组件

    • 任务栏右侧显示实时天气信息(温度、天气状况、图标)
    • 支持多主题适配,自动应用主题颜色
    • 智能缓存机制:30分钟缓存有效期,刷新操作时使用缓存数据,避免等待API响应
    • 支持点击查看详细天气信息面板
    • 自动适配任务栏位置(水平/垂直布局)
    • API失败时自动使用缓存数据作为降级方案
  • 任务栏程序固定功能

    • 支持将程序固定到任务栏,持久化存储
    • 右键菜单快速固定/取消固定程序
    • 开始菜单和任务栏图标都支持固定操作
    • 提供完整的API:pinProgramunpinProgramgetPinnedProgramsisPinnedsetPinnedPrograms
    • 固定程序列表自动保存到系统存储
  • 窗口管理优化

    • 修复右上角拉伸窗口时的位置计算问题
    • 优化窗口拉伸逻辑,使用初始位置计算边界,避免累积误差
    • 支持精确的窗口大小调整,确保窗口不会无限位移
    • 改进多实例程序的窗口关闭逻辑
  • 上下文菜单增强

    • 支持异步菜单项生成(动态检查程序固定状态)
    • 开始菜单程序右键菜单支持"固定到任务栏"/"取消任务栏固定"
    • 任务栏图标右键菜单支持"固定到任务栏"/"取消任务栏固定"
    • 修复多实例程序导致的菜单重复问题
  • GUI资源清理优化

    • 改进程序退出时的GUI资源清理逻辑
    • 确保所有DOM元素、事件监听器、对象引用正确清理
    • 修复文件管理器拖拽事件重复注册问题

历史版本特性

  • GIF 动图背景支持:支持使用 GIF 动图作为桌面背景,自动循环播放
  • 主题系统增强:支持本地图片(JPG、PNG、GIF、WebP 等)作为桌面背景,自动持久化保存
  • check 命令:全面的内核自检功能,检查核心模块、文件系统、内存管理、进程管理、GUI 管理、主题系统、驱动层(包括加密驱动)等
  • 多任务切换器:Ctrl + 鼠标左键打开全屏多任务选择器,支持鼠标滚轮选择
  • 上下文菜单系统:完整的右键菜单管理,支持程序注册自定义菜单
  • 事件管理系统:统一的事件处理系统,支持事件优先级、传播控制和自动清理
    • ⚠️ 必须使用:所有事件处理必须通过 EventManager 进行统一管理
    • 支持窗口拖动、拉伸事件管理
    • 支持菜单和弹出层事件管理
    • 支持多任务选择器事件管理
    • 自动拦截 addEventListener 调用并记录警告
  • 通知管理系统:完整的通知创建、显示、管理功能,支持快照和依赖类型通知
  • 通知栏面板:点击任务栏图标打开,支持水滴展开动画
  • 任务栏通知徽章:实时显示通知数量
  • 权限管理系统:完整的内核操作权限管理,确保系统安全
  • 多后端支持:支持 PHP 和 SpringBoot 两种后端服务,可通过 SystemInformation 动态切换
    • PHP 后端:所有文件操作通过 PHP 服务进行,文件实际存储在服务端
    • SpringBoot 后端:提供与 PHP 后端相同的功能接口
  • 加密驱动系统:完整的加密功能支持,包括 RSA 加密/解密、MD5 哈希、随机数生成,支持密钥生命周期管理和有效期跟踪

版本历史记录

v2.3 (2025-12-21)

  • 用户控制系统完整实现
  • 锁屏界面 Windows 11 风格
  • 设置程序用户管理功能
  • 全局快捷键增强(Ctrl+L 锁定屏幕)
  • 路径系统重构
  • 头像管理系统
  • LStorage 增强
  • 文档全面更新

v2.2 (2025-12-17)

  • JSEncrypt 库支持
  • 窗口拉伸全方向支持
  • 压缩解压功能
  • 文件管理器增强
  • 背景图系统优化
  • 扫雷游戏
  • 天气组件优化

v2.1 (2025-12-15)

  • 天气组件
  • 任务栏程序固定功能
  • 窗口管理优化
  • 上下文菜单增强
  • GUI 资源清理优化

v2.0 (早期版本)

  • 事件管理系统增强
  • 日志管理系统增强
  • 窗口标题栏保护
  • GIF 动图背景支持
  • 主题系统增强
  • check 命令
  • 多任务切换器
  • 上下文菜单系统
  • 通知管理系统
  • 权限管理系统
  • 多后端支持(PHP 和 SpringBoot)
  • 加密驱动系统

ZerOS Kernel - 一个强大的虚拟操作系统内核,在浏览器中体验完整的系统操作。

最后更新于: 2026-02-25 提出修改建议