我在Arduino UNO(2KB内存)上写了个微型类Unix“操作系统”,带Shell和文件系统

Hacker News Top 工具

摘要

Arc1011发布KernelUNO,为Arduino UNO打造的类Unix Shell与文件系统,仅占用2KB RAM,提供22条命令用于硬件控制与文件操作。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/04/21 18:41

Arc1011/KernelUNO 源码:https://github.com/Arc1011/KernelUNO # KernelUNO v1.0 为 Arduino UNO 设计的轻量级基于 RAM 的 Shell,支持文件系统模拟、硬件控制与交互式命令行。 ## 特性 - 虚拟文件系统 —— 在 RAM 中创建文件与目录(/dev、/home) - 硬件控制 —— 支持 GPIO 管理与引脚模式配置 - 系统监控 —— 内存占用、运行时间、内核日志(dmesg) - 22 条内置命令 —— 从基础文件操作到硬件控制一应俱全 - 交互式 Shell —— 实时命令执行,带输入缓冲 - LED 蹦迪模式 —— 彩蛋功能,用于 GPIO 测试 ## 硬件需求 - Arduino UNO(或兼容 ATmega328P 的开发板) - USB 线(烧录用) - LED 与电阻(可选,用于 GPIO 测试) ## 安装 1. 克隆或下载本仓库 2. 打开KernelUNO.ino(Arduino IDE) 3. 选择开发板:工具 → 开发板 → Arduino UNO 4. 选择端口:工具 → 端口 → /dev/ttyUSB0(或实际端口) 5. 编译并上传:项目 → 上传 6. 打开串口监视器:工具 → 串口监视器(115200 波特) 使用 arduino-cli: bash arduino-cli compile --fqbn arduino:avr:uno . arduino-cli upload --fqbn arduino:avr:uno -p /dev/ttyUSB0 . ## 命令 ### 文件系统命令 - ls - 列出当前目录文件 - cd [目录] - 切换目录 - pwd - 显示当前路径 - mkdir [名称] - 创建目录 - touch [名称] - 创建文件 - cat [文件] - 查看文件内容 - echo [文本] > [文件] - 写入文件 - rm [名称] - 删除文件/目录 - info [名称] - 显示文件信息 ### 硬件命令 - pinmode [引脚] [in/out] - 设置引脚模式 - write [引脚] [high/low] - 写引脚电平 - read [引脚] - 读引脚电平 - gpio [引脚] [on/off/toggle] - GPIO 控制 - gpio vixa [次数] - LED 蹦迪彩蛋 ### 系统命令 - uptime - 系统运行时间 - uname - 系统信息 - dmesg - 内核日志 - df / free - 剩余内存 - whoami - 当前用户(固定 root) - clear - 清屏 - reboot - 重启系统 - help - 显示所有命令 ## 使用示例 bash # 文件系统操作 cd home mkdir myproject cd myproject touch notes.txt echo Hello World > notes.txt cat notes.txt # 硬件控制 pinmode 13 out gpio 13 on gpio 13 toggle read 2 # 系统信息 uname uptime dmesg df # 彩蛋 gpio vixa 10 ## 内存占用 - 程序:约 38% 的 32 KB Flash - RAM:约 85% 的 2 KB SRAM(已优化) - 文件系统:最多 10 个文件/目录 - DMESG 缓存:6 条消息 ## 规格 - 开发板:Arduino UNO(ATmega328P) - 主频:16 MHz - 串口波特率:115200 - 文件系统:基于 RAM(无 EEPROM) - 存储:易失性,断电即失 ## 技术细节 - 字符数组输入缓冲(最大 32 字节) - 安全路径拼接,防止缓冲区溢出 - 带时间戳的内核日志 - 实时 GPIO 操作 - 高效内存管理 ## 限制 - 无持久化存储(未用 EEPROM/SD) - 单文件内容上限 32 字节 - 最多 10 个文件/目录 - 路径长度上限 16 字符 - 单用户(root) ## TODO / 未来计划 - [ ] EEPROM 持久化 - [ ] PWM/模拟控制 - [ ] SD 卡支持 - [ ] 显示文件大小 - [ ] 更多 GPIO 功能 ## 许可证 BSD 3-Clause 许可证 —— 详见 LICENSE 文件 ## 作者 Arc1011(Arc1011 (https://github.com/Arc1011))2026 年创作。 ## 贡献 欢迎 Fork、修改与完善!可提交 PR 的内容: - 修复 Bug - 性能优化 - 新增命令 - 代码精简 // 说明文档(README 与 QUICKSTART)由 Claude AI 撰写(略作润色)。为啥?因为若让我自己写,只会得到几行不知所云的鬼画符,毫无信息量。//

相似文章

用 x86_64 汇编写成的 Linux 桌面

Lobsters Hottest

一位开发者借助 Claude Code,用纯 x86_64 汇编重建了完整的 Linux 桌面栈——从 shell、终端、窗口管理器到各种工具,实现微秒级启动,并延长数小时续航。