bootai
摘要
bootai 是一个开源 UEFI 应用,可直接启动进入 AI 聊天/代码 REPL,在无操作系统的裸机上运行 Qwen2.5 和 SmolLM 模型推理,并配有手写网络驱动和 TCP/IP 协议栈。
查看缓存全文
缓存时间: 2026/08/05 22:28
dcherrera/bootai
来源:https://github.com/dcherrera/bootai
BootAI
直接启动进入 AI。一个在裸机上运行语言模型推理的 UEFI 应用——没有内核,没有操作系统。
插入 U 盘,开机,你就能得到一个 REPL,语言模型直接在 UEFI 启动服务上运行。网络、WiFi 和 TCP/IP 都是基于固件协议和原始 Intel NIC 驱动手写的。
功能
-
聊天 / 代码生成 — Qwen2/Qwen3 系列 transformer 推理(RoPE、GQA、RMSNorm、SwiGLU),INT8 权重,在启动服务模式下运行
-
REPL —
chat、ls、cat、fetch、wifi、serve、install、models、load、meminfo等命令 -
WiFi — 从零编写的 Intel 无线驱动(
iwn/):PCI 探测、固件加载、扫描、关联、EAPOL/CCMP 加密 -
以太网 — 从零编写的 Intel
e1000e驱动 -
TCP/IP 协议栈 — 基于原始 NIC 驱动手写的 ARP、IP、UDP、TCP 和 DHCP,适用于没有 UEFI 网络栈的固件
-
HTTP 服务器 — 通过局域网提供管理和聊天 API(
serve),使用 bearer token 认证 -
网络发现 — 通过真正的 mDNS 响应器(由
serve启动)广播bootai.local -
安装到磁盘 — 独立的可启动安装,支持 DUET 传统 BIOS
尚未实现
树中已有框架但尚未可用——列出这些是为了保持上述功能列表的真实性:
-
工具使用 / 代理层 —
tools/*.c是桩代码;模型无法调用工具 -
网络搜索 — 未实现
-
RWKV-X —
model/rwkvx.c和model/wkv7.c是 TODO 桩;所有推理都分发到 Qwen 路径 -
Q4 量化 — 只有 Q8(INT8)完整实现
-
对话历史 — 不持久化;
bootai.log是控制台转录,不是对话存储
模型
权重导出为扁平的 .btw 格式,并配有对应的 .btv 词表。
| 模型 | 大小 | 量化 | 备注 |
|---|---|---|---|
| Qwen2.5-Coder-0.5B-Instruct | 0.5B | Q8 (INT8) | 默认构建目标 |
| Qwen2.5-Coder-3B-Instruct | 3B | Q8 (INT8) | 测试过的最大模型 |
| SmolLM2-135M-Instruct | 135M | Q8 (INT8) | 最小的回退模型 |
加载顺序:扁平路径 \rwkvos\model.btw,然后是 qwen25-coder-05b、qwen25-coder-3b、smollm-135m,最后是硬盘安装上的原始 BTAI 分区。
权重不包含在此仓库中——请自行导出:
python3 tools/export_weights.py --model Qwen/Qwen2.5-Coder-0.5B-Instruct --quant q8 --output model.btw
内存需要容纳权重以及 KV 缓存和激活值。代码中没有强制的最低限制。
工作原理
没有内核。没有操作系统。.efi 二进制文件从不调用 ExitBootServices,因此固件服务始终保持可用:
-
文件系统 — 简单文件系统协议(FAT32)
-
网络 — TCP4 和 UDP4 协议;在固件提供 DHCP 时使用
Ip4Config2,否则使用efi/ns_*.c中基于iwn/e1000e的手写协议栈 -
HTTP — 基于 TCP4 手写的 HTTP/1.0,仅支持明文 HTTP,无 TLS。不使用
EFI_HTTP_PROTOCOL -
控制台 — 通过
ConOut/ConIn使用文本模式(简单文本输入,DUET 环境下有直接的 PS/2 回退) -
NVRAM — 安装期间写入
Boot0001/BootOrder启动管理器条目。应用设置存储在 FAT 分区上的\wifi.conf中,而不是 NVRAM -
事件 — 通过
CreateEvent/WaitForEvent实现异步 I/O 完成令牌
技术栈
推理 REPL(提示 → token → 生成 → 显示) ↓ 模型前向传播(Qwen2/Qwen3,Q8 — 手写浮点数学) ↓ uefi_libc(efi/uefi_libc.c — malloc、数学、字符串) ↓ UEFI 启动服务 + iwn / e1000e / ns_* 网络栈 ↓ x86_64 硬件
构建
``
前置要求(macOS)
brew install x86_64-elf-gcc qemu mtools
构建
make efi # all_bootai.efi make PROD=1 efi # 直接启动进入聊天,不经过 REPL make release # PROD + 可刷写的 GPT 磁盘镜像 make clean
在 QEMU 中运行
make run
创建可启动 U 盘(macOS)
make usb DISK=/dev/diskN ``
QEMU 网络需要启用 NETWORK_IP4_ENABLE=TRUE 的 EDK2 构建版 OVMF。qemu 软件包附带的 OVMF 可以正常启动,但没有网络栈——参见 docs/architecture/networking.md。
项目结构
bootai/ ├── efi/ # UEFI 入口点、控制台、输入、文件系统、安装、HTTP 服务器 │ └── ns_*.c # 手写的 ARP/IP/UDP/TCP/DHCP 协议栈 ├── iwn/ # Intel 无线驱动(PCI、固件、扫描、加密、EAPOL) ├── e1000e/ # Intel 以太网驱动 ├── model/ # 前向传播、加载器、KV 缓存、采样 ├── tools/ # 工具使用脚手架(桩)+ export_weights.py ├── tokenizer/ # BPE 分词器 ├── duet/ # DUET 传统 BIOS 启动链 ├── drivers/ # 运行时加载的可选 UEFI 驱动 └── docs/ # 架构文档、构建笔记
启动
默认构建启动进入 REPL;PROD=1 则直接启动进入聊天。输入 chat 开始推理,或输入 serve 8080 在局域网上暴露 HTTP API 和 bootai.local。
安装到磁盘
install 命令将一个独立的可启动系统写入内部磁盘。
这会抹除整个目标磁盘。 它会选择最大的内部块设备,销毁任何现有的分区表(包括 MBR 和 GPT),并写入全新的 ESP 和数据分区。这不是双系统安装器,也不会保留现有操作系统。请先备份。
社区
-
X — @TeamIDElab (https://x.com/TeamIDElab)
-
Discord — discord.gg/pRpR52A2tk (https://discord.gg/pRpR52A2tk)
许可证
AGPL-3.0 — 参见 LICENSE。
对于本项目的目标用户,有一条免费、自动的例外条款:个人、学术和非商业研究、非营利组织,以及员工少于 100 人 / 收入低于 100 万美元的组织,可以改用 Apache-2.0 条款使用 BootAI——无需文书、无需付费、无需签署。超过该界限的组织——任何以硬件形式搭载 BootAI 出货,或将其作为产品提供服务的一方——需要商业许可证:参见 COMMERCIAL-LICENSE.md。
贡献以 Apache-2.0 条款入站并带有 DCO 签署——参见 CONTRIBUTING.md。你保留自己的版权。
JACLibc/ 和 foundry/ 是已注册的子模块(分别为 MIT 和 AGPL-3.0),当前构建未使用它们。
相似文章
Bootimus — 一个自包含的PXE和HTTP启动服务器
Bootimus是一个自包含的PXE和HTTP启动服务器,使用Go语言编写,提供零配置、嵌入式iPXE,并支持超过50种发行版。它完全开源,基于Apache 2.0许可,无遥测功能。
@morganlinton: 好吧,我简直不敢相信我在说这个,但它启动了,我自己的完全定制操作系统启动了!!!你可以看到更多…
Morgan Linton 成功启动了一个完全由他自己使用 OpenAI 的 Codex 和 GPT 5.5 从头构建的自定义操作系统,该项目始于5月4日。
展示HN:我编写了一个能在UEFI机器上启动的BASIC解释器
Thoreau BASIC是一个兼容GW-BASIC的解释器,能在裸机UEFI系统和Windows上运行,具有现代增强功能,如图形功能、文本窗口和改进的性能。
@rohanpaul_ai: atomic[.]chat(一款本地运行大语言模型的桌面应用)在 MacBook 上进行了一场极具揭示性的本地 AI 智能体对比测试……
Liquid 的 LFM2.5-8B-A1B 在 MacBook Pro 上本地运行工具调用基准测试时,击败了 OpenAI 的 gpt-oss-20b,不仅完成了所有工具调用,耗时还缩短了一半以上,且内存占用更少。
@karpathy:我正在录制我的 nanochat 视频时意识到,“先从我喜欢的提供商那里启动一台 8XH100!”会立即让所有人卡在视频的第一步…
Andrej Karpathy 指出,他的 nanochat 教程中常见的第一个步骤(启动一台 8XH100 GPU)会让初学者无从下手,凸显了 AI 开发的进入门槛。