Skip to content

About

FasterEdgeOS是一个基于Linux内核,使用FasterEdge生态做为系统支持的操作系统

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

 
 

Latest commit

 

History

817 Commits

Folders and files

Repository files navigation

FasterEdge logo

FasterEdgeOS

基于 Linux 内核与 FasterEdge 生态的轻量边缘计算操作系统

一、项目简介

FasterEdgeOS 是一个面向边缘节点和集群设备的轻量 Linux 发行版。系统基于 Linux 内核、GNU C Library 和 BusyBox 构建,通过 overlay 机制集成 FasterEdge 运行环境及系统服务。

当前仓库保留了从源码构建系统镜像的能力,已实现的系统初始工具与后续规划:

  • ✅ DontCrack-Manager 进程监管(系统初始工具,监管多个 DontCrack 实例,见第五节)
  • ✅ Any2UTF8 文本/文件转 UTF-8 工具(内置常见编码集,免系统 iconv,自动探测编码)
  • ✅ Any2PCD 文本/二进制点云转 PCD 工具(标准 PCD v0.7,零依赖,见第五节)
  • FasterEdge 节点运行时(规划中)
  • FasterEdge2Api 集群拓扑与系统管理 API(规划中)
  • 系统健康检查、日志和资源状态(规划中)
  • 带签名校验与回滚能力的远程更新(规划中)

当前版本处于基础系统改造阶段。已经具备 Linux Live ISO、BIOS/UEFI 和 x86/AArch64 构建基础;系统初始工具(DontCrack-Manager 多进程根管理器、Any2UTF8 转换工具、Any2PCD 点云转换工具)已通过 overlay bundle 接入。

二、系统组成

Linux Kernel
    ↓
GNU C Library
    ↓
BusyBox 用户空间
    ↓
FasterEdgeOS 基础 rootfs
    ↓
overlay bundles
    ↓
FasterEdgeOS ISO / rootfs 镜像

系统启动后提供最小化 Shell、网络基础能力和 overlay 软件。FasterEdgeOS 自有组件建议安装到以下位置:

/usr/bin/                         可执行程序
/etc/fasteredgeos/                系统配置
/etc/init.d/                      服务启动脚本
/var/lib/fasteredgeos/            运行数据、版本和更新状态
/var/log/fasteredgeos/            系统服务日志
/opt/fasteredgeos/releases/       A/B 版本目录

三、快速构建

构建主机建议使用 Debian/Ubuntu Linux。macOS、Windows 建议通过 Linux 虚拟机或 CI 构建。

使用 GitHub Actions 自动构建:仓库内置 .github/workflows/manual.yml, 可在 GitHub 页面手动触发(Actions → Run workflow),或在推送 v* 标签 (如 v0.1.0)时自动构建。构建完成后会以 artifact 形式交付 fasteredgeos.iso 与 fasteredgeos_image.tgz(Docker 镜像,docker import 即可使用),保留 14 天。

工具链要求:当前 glibc 2.44 需要 GCC 12.1+、binutils 2.39+、GNU make 4.0+。 推荐使用 Ubuntu 24.04+(gcc 13.2 / binutils 2.42 / make 4.3);Ubuntu 22.04 需 自行安装新版 gcc/binutils,否则 glibc 构建会失败。

1. 安装依赖

sudo apt update
sudo apt install -y \
  wget make gawk gcc bc bison flex xorriso rsync \
  libelf-dev libssl-dev file cpio gzip xz-utils

AArch64 构建和 QEMU 测试还需要:

sudo apt install -y qemu-system-aarch64 bzip2 dosfstools

2. 配置构建参数

编辑:

vi src/.config

常用参数:

FIRMWARE_TYPE=bios       # bios / uefi / both
OVERLAY_TYPE=folder      # folder / sparse
OVERLAY_LOCATION=iso     # iso / rootfs
BUILD_KERNEL_MODULES=false
JOB_FACTOR=1

3. 构建 FasterEdgeOS

cd src
make all

构建完成后生成:

src/fasteredgeos.iso
src/fasteredgeos_image.tgz

如果需要重新构建:

cd src
make clean
make all

四、启动与测试

BIOS 模式

cd src
./qemu-bios.sh

UEFI 模式

cd src
./qemu-uefi.sh

Docker rootfs 测试

cd src
docker import fasteredgeos_image.tgz fasteredgeos:latest
docker run --rm -it fasteredgeos:latest /bin/sh

写入 USB

写入设备会覆盖目标磁盘,请确认设备路径后再执行。

cd src
sudo ./write_to_media.sh /dev/sdX

五、系统初始工具与 FasterEdge 服务部署

FasterEdgeOS 使用 overlay bundle 把额外的软件打进最终 rootfs。FasterEdge 相关组件放在:

src/minimal_overlay/bundles/fasteredgeos/

该 bundle(系统初始工具)当前已实现:

  • 根进程管理器:编译并安装 DontCrack-Manager。单体的 DontCrack 一次只能管理一个 进程;DontCrack-Manager 同时监管多个 DontCrack 实例(各自管理一个子进程),作为 本无进程管理器 Live 环境的系统多进程根管理器。
  • DontCrack 单体:编译并安装 /usr/bin/dontcrack(被根管理器监管的实例; demo 服务依赖它,缺失时该服务永远无法启动——CI 端到端验证覆盖)。
  • 配置:安装 /etc/fasteredgeos/manager.yaml(服务级 DontCrack 参数、依赖编排、 健康探针、退避重启、优雅停机)。
  • 开机启动:安装 /etc/autorun/20_dontcrack-manager.sh,开机最先启动根管理器 (setsid 后台运行,日志 /var/log/fasteredgeos/manager.log)。
  • 演示子进程:安装 /usr/bin/fasteredgeos-demo(由 demo 服务监管)。
  • 目录初始化:/var/lib/fasteredgeos/ 与 /var/log/fasteredgeos/。

配置启用后,普通构建命令会自动把系统初始工具打入镜像:

OVERLAY_BUNDLES=dhcp,fasteredgeos

另附两个独立的系统初始工具 bundle(不属于 fasteredgeos bundle,按需追加到列表):

OVERLAY_BUNDLES=dhcp,fasteredgeos,any2pcd,any2utf8
  • any2pcd:bin / 文本 / CSV / PCD → 标准 PCD v0.7 点云转换工具(Go 标准库实现,零依赖)。
  • any2utf8:文本/文件编码转换工具(内置 GBK / GB18030 / Big5 / Shift_JIS / UTF-16 等常见编码,不依赖系统 iconv 与 locale)。

两者均支持 -version(当前 1.0.20260922);离线升级可设置 ANY2PCD_SOURCE_DIR / ANY2UTF8_SOURCE_DIR 指向本地新版源码目录,构建时优先使用指定源码。详见 src/minimal_overlay/bundles/any2pcd/README.md 与 src/minimal_overlay/bundles/any2utf8/README.md。

服务管理采用 BusyBox init 兼容方式,不依赖 systemd:

BusyBox init
    ↓
/etc/inittab → /etc/04_bootscript.sh
    ↓
/etc/autorun/20_dontcrack-manager.sh
    ↓
DontCrack-Manager(根管理器,/etc/fasteredgeos/manager.yaml)
    ↓
DontCrack 实例 × N(各自管理一个子进程)

聚合状态查询(默认监听 127.0.0.1:11884):

# FEOS 系统基于 BusyBox(用 wget;宿主有 curl 时亦可直接用 curl)。
wget -q -O - http://127.0.0.1:11884/healthz
wget -q -O - http://127.0.0.1:11884/status
wget -q -O - --post-data='' http://127.0.0.1:11884/shutdown

后续将在此基础上接入:FasterEdge2Api 集群拓扑与系统管理 API、FasterEdge 节点运行时、 带签名校验与回滚能力的远程更新(远程更新仍按“下载 → 校验 → 安装 → 健康检查 → 切换或回滚”流程,禁止覆盖当前运行版本)。

CI 构建(manual.yml)已启用 OVERLAY_BUNDLES=dhcp,fasteredgeos 并通过 actions/setup-go 提供 Go 工具链;本地构建需自行安装 Go 1.25+。any2pcd / any2utf8 的编译与 overlay 构建由 check.yml 独立门禁覆盖。

六、系统管理与远程更新

FasterEdge2Api 将作为系统管理入口,逐步提供:

  • 节点和网卡信息
  • 进程、服务和运行状态
  • CPU、内存、磁盘和系统健康状态
  • FasterEdge 集群拓扑与 peer 管理
  • Cloud/Edge 节点状态
  • 更新检查、下载、安装和回滚

远程更新采用版本目录切换方式:

/opt/fasteredgeos/releases/0.1.0/
/opt/fasteredgeos/releases/0.2.0/
/opt/fasteredgeos/current -> releases/0.2.0

更新必须经过:

下载 → SHA256/签名校验 → 空间检查 → 安装 → 健康检查 → 切换或回滚

所有远程管理操作应使用 HTTPS,并只允许经过授权的管理员令牌执行。

七、安全说明

1. 组件版本与已知 CVE 修复情况

组件 旧版本(含已知漏洞) 现版本 说明
Linux 内核 5.18.3(2022-11 EOL,无安全维护) 6.6.155(LTS,维护至 2026-12) 修复海量内核 CVE
GNU C Library 2.35(CVE-2023-4911 Looney Tunables、CVE-2024-2961 iconv 溢出、CVE-2025-4802 LD_LIBRARY_PATH 等) 2.44(最新稳定版) 修复上述所有已公开漏洞
BusyBox 1.34.1(CVE-2022-48174 ash 栈溢出(CRITICAL)、CVE-2022-28391 netstat RCE 等) 1.37.0(最新稳定版) 1.38.0 尚为 unstable,暂不采用
Syslinux 6.03(2014,上游已停止维护) 6.03(保持不变) 无更新版本;仅 BIOS 引导阶段使用,风险面小
Systemd-boot 2018 快照(上游 fork) 2018 快照(保持不变) 无更新版本;仅 UEFI 引导阶段使用

2. 安全加固措施(本仓库已实施)

  • 构建 CFLAGS 移除了 -fno-stack-protector 与 -U_FORTIFY_SOURCE,改为启用 -fstack-protector-strong(栈保护),BusyBox 构建时另行开启 -D_FORTIFY_SOURCE=2。
  • 内核构建(src/02_build_kernel.sh)显式启用 STACKPROTECTOR_STRONG、 FORTIFY_SOURCE 与 SECURITY_DMESG_RESTRICT(限制非特权用户读取内核日志)。
  • CI 构建环境补充 rsync(内核 6.6+ headers_install 所需)。

3. 已知设计取舍(Live 系统特性)

  • root 无密码:系统默认以无密码 root 直接进入 shell(传统 Live 系统设计)。 只建议在隔离环境或开发调试中使用。生产部署请至少执行:

    passwd root

    并将 /etc/passwd / /etc/shadow 写入持久化介质(见下文)。

  • 多虚拟终端 root 会话:init 默认在 tty1~4 各启动一个 root shell。 如需收紧,可编辑 /etc/inittab 删除多余的 tty2~tty4 respawn 行。

  • Dropbear(SSH)未默认启用:OVERLAY_BUNDLES 默认不含 dropbear, 无网络登录暴露面;启用时请务必设置 root 密码并改用密钥认证。

4. 持久化与更新

  • Live 模式(OVERLAY_TYPE=folder + OVERLAY_LOCATION=iso)下,除非提供可写 的 fasteredgeos/rootfs+work 分区或 fasteredgeos.img 镜像,否则所有修改在 重启后丢失。生产环境请使用可写持久化介质,或在升级流程中重建镜像。
  • 远程更新必须遵循“下载 → SHA256/签名校验 → 空间检查 → 安装 → 健康检查 → 切换或回滚”流程(详见“系统管理与远程更新”章节),禁止覆盖当前运行版本。

八、目录说明

FasterEdgeOS/
├── src/                         # 系统源码与构建入口
│   ├── .config                  # 主构建配置
│   ├── Makefile                 # make all/clean/qemu-bios/qemu-uefi/test
│   ├── 00_* ~ 16_*              # 分阶段构建脚本
│   ├── minimal_boot/             # BIOS/UEFI 启动文件
│   ├── minimal_config/           # 内核和 BusyBox 配置
│   ├── minimal_overlay/          # overlay bundle
│   ├── minimal_rootfs/           # 基础 rootfs
│   └── common.sh                 # 构建公共函数
├── LICENSE                       # 开源许可证
└── README.md                     # 中文项目说明

九、开发约定

  • 所有新增系统组件优先实现为 src/minimal_overlay/bundles/ 下的独立 bundle。
  • 服务必须兼容 BusyBox init,不默认依赖 systemd。
  • 构建脚本使用 POSIX Shell,并在失败时立即退出。
  • 网络更新必须校验下载内容,禁止直接覆盖当前运行版本。
  • 管理 API 默认只监听可信网络;生产环境必须启用 TLS。
  • 修改构建流程后至少执行 shell 语法检查和 QEMU/Docker 基础验证。

十、相关项目

License

本项目遵循仓库中的 LICENSE 文件。系统中使用的 Linux、GNU C Library、BusyBox 和其他第三方组件分别遵循其原始许可证。

About

FasterEdgeOS是一个基于Linux内核,使用FasterEdge生态做为系统支持的操作系统

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages