as-himself/artyficial-linux
GitHub: as-himself/artyficial-linux
一个从源码构建的 Linux 发行版,将小型语言模型深度集成到系统层面,提供 shell 辅助、构建日志分析、eBPF 内核监控和 BPF LSM 安全协调等 AI 增强功能。
Stars: 3 | Forks: 0
# Artyficial Linux

**Artyficial Linux** 是一个集成了小型语言模型 (SLM) 的 Linux From Scratch (LFS) 发行版:提供 shell 辅助、构建日志分析、eBPF 内核监控以及可选的 BPF LSM 安全协调功能。
## 功能特性
- **LFS + BLFS 基础**:从源代码构建的自定义 Linux 系统 (LFS 12.x systemd)。
- **SLM 推理**:通过 llama.cpp 运行 **TinyLlama 1.1B Chat** (或 Granite-4.0-Micro),量化为 Q5_K_M。轻量级,可在 8–16 GB RAM 上流畅运行。
- **AI fabric**:用于推理服务器的 systemd 服务、C++ `ask` 网关、shell 集成(错误分析、MOTD)、`ai-make` 构建封装。
- **eBPF**:内核事件监控 (execve) 和由 SLM 守护脚本协调的 BPF LSM 守门人。
- **Live ISO**:第 10 阶段生成完整的可启动 live 镜像 (`artyficial-linux-1.0-live.iso`),包含 root 文件系统 (squashfs)、内核、initramfs 和 TinyLlama GGUF 模型,用户无需安装即可启动并运行 Artyficial Linux。
## 项目布局
- `config/` – QEMU、LFS 和内核配置。
- `scripts/` – 构建和设置脚本 (00–10, build-all.sh)。
- `convert/` – 模型转换 (HuggingFace → GGUF Q5_K_M);支持 TinyLlama 和 Granite。
- `src/` – ask 二进制文件、eBPF 程序、shell 配置文件、slm-guard。
- `systemd/` – SLM 服务器、guard、eBPF 监控的 Unit 文件。
- `branding/` – Logo、os-release、issue、lsb-release。
- `model/` – TinyLlama-1.1B-Chat-v1.0 (或其他 HF 模型;使用前需转换)。
- `docs/` – [INSTALL.md](docs/INSTALL.md),[ARCHITECTURE.md](docs/ARCHITECTURE.md)。
## 快速开始
1. **转换模型** (在 macOS/Linux 主机上):
`./convert/convert-model.sh`
使用 `model/` (例如 TinyLlama)。输出: `build/gguf/-Q5_K_M.gguf`。
如果转换失败 (numpy/torch),请删除 venv 并重试:
`rm -rf build/venv-convert && ./convert/convert-model.sh`(如果你没有模型需要转换,它可能会从 huggingface 安装一个已量化的 gguf)
2. **设置 VM** (macOS/QEMU):
`BOOT_FROM_ISO=1 ./scripts/00-setup-vm.sh`
将打开一个 QEMU 窗口显示 Debian 安装程序。
*(对于无头模式: `QEMU_NOGRAPHIC=1 BOOT_FROM_ISO=1 ./scripts/00-setup-vm.sh`)*
**在 Debian 安装过程中:**
- 选择 "Install" (推荐文本模式)
- 创建一个用户 (例如, `lfsuser`)
- **启用 SSH 服务器** (文件传输所需)
- 安装完成后,**关闭 VM** (暂不要重启)
**继续构建:**
# 正常启动 (无 ISO) - QEMU 窗口将再次打开
./scripts/00-setup-vm.sh
# 在另一个终端中,SSH 进入 VM
ssh -p 2222 lfsuser@localhost
# 将 GGUF 复制到 VM (从你的终端)
scp -P 2222 build/gguf/tinyllama-1.1b-chat-v1.0-Q5_K_M.gguf lfsuser@localhost:/tmp/
# 步骤 1: 从你的主机终端复制项目到 VM
# 确保 VM 正在运行
./scripts/00-setup-vm.sh
# 在另一个终端中,打包项目 (排除构建产物)
cd "/path/to/Documents/Artyficial Linux"
tar czf artyficial-linux.tar.gz \
--exclude='build/' \
--exclude='model/' \
--exclude='.git/' \
config/ scripts/ src/ systemd/ branding/ convert/ docs/ README.md BUILD_GUIDE.md
# 复制到 VM
scp -P 2222 artyficial-linux.tar.gz lfsuser@localhost:/home/lfsuser/
# 同时复制 GGUF 模型
scp -P 2222 build/gguf/tinyllama-1.1b-chat-v1.0-Q5_K_M.gguf lfsuser@localhost:/tmp/
# 步骤 2: SSH 进入 VM 并解压
ssh -p 2222 lfsuser@localhost
# 在 VM 内部:
cd ~
tar xzf artyficial-linux.tar.gz
cd Artyficial\ Linux # 或者它解压到的任何位置
# 从 Mac 复制脚本到 VM
scp -P 2222 scripts/10-create-iso.sh lfsuser@localhost:~/artyficial-linux/scripts/
# 现在运行构建 (必须是 ROOT - su)
ALFS_PROJECT_ROOT=$(pwd) ./scripts/build-all.sh
# 从 root
LFS=/ ALFS_FORCE=10 ALFS_PROJECT_ROOT=$(pwd) ALFS_FROM=10 ./scripts/build-all.sh
or
env -u LFS ALFS_FORCE=10 ALFS_PROJECT_ROOT=$(pwd) ALFS_FROM=10 ./scripts/build-all.sh
# 如果你需要重新开始 iso 构建
sed -i '/^phase10=/d' build/.alfs-state
sed -i '/^phase0[89]=/d; /^phase10=/d' build/.alfs-state
# 复制 ISO 到 HOST 系统
scp -P 2222 lfsuser@localhost:/home/lfsuser/artyficial-linux/build/iso/artyficial-linux-1.0-live.iso "/path/to/Documents/Artyficial Linux/build/iso/"
# 检查 ISO
xorriso -indev "build/iso/artyficial-linux-1.0-live.iso" -find / -type f
# 启动 Live ISO (从主机; QEMU 使用与 Debian 安装相同的窗口)
BOOT_LIVE_ISO=1 ./scripts/00-setup-vm.sh
# 在终端中查看启动日志 (串行控制台),直接使用 QEMU:
qemu-system-x86_64 -serial stdio -cdrom build/iso/artyficial-linux-1.0-live.iso -boot d -m 4G
# (使用 -cdrom 以便 ISO 作为 CD;如果没有它,ISO 将作为磁盘附加,live root 将无法挂载。)
# BOOT_LIVE_ISO=1 ./scripts/00-setup-vm.sh 是等效的 (使用相同的 -cdrom 和 -boot d);使用你喜欢的任何一种。
# 删除旧密钥
ssh-keygen -R "[localhost]:2222"
# 启用 slm-server
systemctl enable --now slm-server.service; systemctl enable --now ai-fabric.target
# 状态
sudo systemctl status slm-server.service --no-pager
**架构:** 内核是为 **x86_64** 构建的。ISO 同时使用 `grub-pc-bin` (BIOS) 和 `grub-efi-amd64-bin` (UEFI) 构建,因此 `grub-mkrescue` 会生成一个混合 ISO,可在 BIOS 和 UEFI 上启动。在构建 VM 上安装: `apt install grub-efi-amd64-bin` 如果 ISO 之前只有 i386-pc。
**注意:** `build/venv-convert/` 和其中的 PyTorch 仅用于主机上的**模型转换** (例如 HuggingFace → GGUF)。它们不被 live ISO 或 VM 使用;如果转换失败,请删除 venv 并重新运行 `./convert/convert-model.sh`。黑屏启动问题是独立的 (initramfs/内核控制台);无需为此从头开始。
安装详情请参阅 [docs/INSTALL.md](docs/INSTALL.md),架构详情请参阅 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。
## 故障排除
**`ask` 提示 "Could not connect to server" / slm-server 以信号 ILL (SIGILL) 失败**
live ISO 是使用 llama-server 二进制文件构建的,该文件使用了你运行的机器 (例如 QEMU) 上不可用的 CPU 指令 (例如 AVX2)。请在**构建 VM** (Debian,而非 live ISO) 上重新构建推理并重新打包 ISO:
1. 启动构建 VM (无 live ISO): `./scripts/00-setup-vm.sh`
2. 将项目同步到 VM 中 (例如 `rsync` 或按照快速开始中的 tar+scp),然后 SSH 进入。
3. 以 root 身份: `cd ~/-linux` (或你的项目路径),然后:
sed -i '/^phase08=/d; /^phase09=/d; /^phase10=/d' build/.alfs-state
ALFS_PROJECT_ROOT=$(pwd) ALFS_FROM=08 ./scripts/build-all.sh
4. 将新 ISO 复制回主机并启动该镜像。新的 squashfs 将包含一个可移植的 llama-server,`ask` 应该可以工作。
**Live ISO 感觉很慢**
为 QEMU 使用更多 RAM (例如 `-m 4G` 而不是 `-m 2G`)。默认目标是图形化的;在 2G 下系统资源紧张,许多服务可能会失败或重试。
**`ask` 超时 (Timeout was reached)**
在仅 CPU 或低内存系统上,SLM 可能需要 1–2+ 分钟才能回答。客户端默认值为 120s;配置位于 `/etc/ai-fabric/ask.conf` (`ASK_TIMEOUT=180`)。对于当前会话: `export ASK_TIMEOUT=180` 然后再次运行 `ask "your question"`。
## 参考
- [Linux From Scratch (LFS)](https://www.linuxfromscratch.org/lfs/)
- [Beyond LFS (BLFS)](https://www.linuxfromscratch.org/blfs/)
- [llama.cpp](https://github.com/ggerganov/llama.cpp)
- [TinyLlama](https://github.com/jzhang38/TinyLlama)
- [IBM Granite](https://github.com/ibm-granite/granite-models)
标签:AI OS, AI 赋能基础设施, BPF LSM, C++, DNS解析, Docker镜像, GGUF, LFS, Linux From Scratch, Linux 内核, Linux 发行版, Live ISO, llama.cpp, QEMU, Shell 助手, SLM, SQLite数据库, Squashfs, systemd, TinyLlama, 人工智能操作系统, 内核监控, 内联执行, 子域名枚举, 安全协调, 实时告警, 小型语言模型, 开源项目, 数据擦除, 本地推理, 构建日志分析, 系统安全, 自动化运维, 身份验证强制, 量化模型, 防御性安全