JTermOS

基于优化 Linux 内核 + Java 的轻量级可引导终端系统。
裁剪内核 · jlink 精简 JRE · squashfs 只读根 · BIOS/EFI 双引导。

ISO ~28 MB 启动 < 5s OpenJDK 17 GRUB 2.06 BIOS + EFI

概览

JTermOS 将裁剪后的 Linux 内核、BusyBox 根文件系统、jlink 精简 JRE 与 squashfs 只读根文件系统 打包为单个 ISO 镜像。系统启动后 Java 应用自动运行,崩溃后在 5 秒内自动重启, 无需完整桌面发行版,也无需 X11 / Wayland。

整个构建流程由编号脚本编排,从内核编译、BusyBox 组装、rootfs 覆盖、JRE 裁剪、 库依赖扫描、服务安装到镜像打包,全部可复现、可审计。

核心亮点

📦

极小镜像

ISO 约 28 MB,rootfs.squashfs 约 30–60 MB。squashfs 压缩只读根,体积与一致性兼得。

⚡

快速启动

从 GRUB 到可用 shell 不足 5 秒。内核裁剪 + 精简 init + 静态 BusyBox 共同压缩启动路径。

☕

Java 一等公民

预置 Eclipse Temurin OpenJDK 17,通过 jlink 定制 JRE,仅保留应用实际依赖的模块,约 40 MB。

🧩

运行库完整

预置 libc、libm、libpthread、libdl、libjli、libjava、libnio、libzip、libnss 等,避免运行期缺库。

🔁

自启动与自恢复

Java 应用开机自动拉起,异常退出后 5 秒内自动重启,适合无人值守终端设备。

🛡️

只读根文件系统

squashfs 提升安全性与一致性,运行时数据可放 tmpfs 或 overlay,重启即恢复出厂状态。

🧭

双引导支持

GRUB 2.06 同时支持 BIOS 与传统 UEFI 设备,U 盘启动开箱即用。

🖥️

内置信息工具

预装 fastfetch 与 neofetch,进入 shell 即可快速查看系统与硬件状态。

组件版本

组件版本 / 选型说明
引导加载器GRUB 2.06BIOS + EFI 双引导
Linux 内核5.15 LTS / 6.6增量配置裁剪
根文件系统BusyBox 静态约 250 KB
Java 运行时Temurin OpenJDK 17jlink 定制 JRE
根文件系统镜像squashfs只读压缩
镜像格式ISOQEMU 直接启动

快速开始

① QEMU 直接运行

bash
# 从 Release 页面下载 jtermos.iso 后执行
qemu-system-x86_64 -m 512M -cdrom jtermos.iso -nographic

# 启动后按回车进入 shell,输入 fastfetch 查看系统信息

② 从源码构建

bash
git clone https://github.com/lishaoyang459353850/jtermos.git
cd jtermos
./build.sh all

③ 写入 U 盘并在物理机启动

bash
# 将 /dev/sdX 替换为你的 U 盘设备,注意不要写错盘符
sudo dd if=jtermos.iso of=/dev/sdX bs=4M status=progress oflag=sync

提示:Secure Boot 需关闭或自行签名;BIOS 与传统 UEFI 均可引导。

性能指标

~28 MB
ISO 大小
< 5 s
启动到 shell
90–120 MB
JVM RSS
≤ 5 s
崩溃恢复
512 MB
建议运行内存

适用场景

🏭

嵌入式 Java 终端

在资源受限硬件上运行 Java 应用,无需引入完整桌面发行版的重量。

🎬

快速演示环境

把自定义 Java 应用打进 ISO,插上 U 盘或通过 QEMU 即可现场演示。

📚

构建学习与教学

内核裁剪、BusyBox、jlink、squashfs、GRUB 全流程脚本化,是完整的实战案例。

🔬

CI/CD Java 沙箱

用最小 JRE 构建隔离的 Java 执行环境,启动快、依赖少、易清理。

已知限制

项目结构

tree
jtermos/
├── build.sh                  # 一键构建总入口
├── configs/
│   ├── jterm-kernel.fragment # 内核增量配置
│   ├── genimage.cfg          # 分区/镜像定义
│   ├── grub.cfg              # GRUB 启动菜单
│   └── boot.cmd              # U-Boot 备选启动脚本
├── scripts/
│   ├── 00-env.sh             # 环境变量
│   ├── 10-kernel.sh          # 编译内核
│   ├── 20-busybox.sh         # 编译 BusyBox
│   ├── 30-rootfs.sh          # 组装 rootfs
│   ├── 40-jlink.sh           # jlink 裁剪 JRE
│   ├── 50-copy-libs.sh       # ldd/readelf 扫库拷贝
│   ├── 60-services.sh        # 安装 init/服务脚本
│   ├── 70-image.sh           # 打 squashfs + ISO
│   └── grub-install.sh       # 生成 EFI GRUB
├── rootfs-overlay/           # 直接覆盖到 rootfs
└── app/
    └── app.jar               # 放你的 Java 应用