Skip to content

Dev Notes

津時テオ edited this page Jul 25, 2026 · 1 revision

📂 开发笔记 — Tsukine OS 技术记录

笔记说明

本页面记录 Tsukine OS 开发过程中的重要技术决策、问题排查和设计思路。每条笔记按时间倒序排列,方便追溯。


日期 版本 笔记内容 标签
2026-07-25 Infdev-0.2.3 网络层重构:支持配置文件
- 新增 /etc/network/interfaces 解析逻辑
- 支持 staticdhcp 两种模式
- 配置文件不存在时自动回退到硬编码 IP(10.0.2.15)
- 保留自动网关探测作为 fallback
网络 重构
2026-07-25 Infdev-0.2.2 文件系统规范化
- 将 tsukine_* 工具从 /bin/ 迁移到 /usr/bin/
- 在 /bin/ 保留软链接指向 /usr/bin/,保持兼容
- 修复 /dev/null 在镜像中不存在的问题(通过 devtmpfs 挂载解决)
FHS Bug修复
2026-07-25 Infdev-0.2.1 包管理工具:tknpkg + tknpkkj
- 设计 .tkn 包格式(tar.gz + metadata + rootfs)
- tknpkg:安装 / 卸载 / 列表功能
- tknpkkj:从源码目录生成 .tkn
- 包数据库存放在 /var/lib/tknpkg/db
- 命名来源:pkg(英)→ 安装 / pkkj(日)→ 打包
包管理 设计
2026-07-25 Infdev-0.2.0 持久化存储:从 initrd 到硬盘启动
- 修改 extlinux.conf,添加 root=/dev/sda rw init=/init
- 系统从硬盘分区启动,不再依赖 initrd 内存盘
- 重启后 /etc//home/ 等目录可写入
- 成功实现文件保存(touch /test.txt 重启后仍存在)
存储 引导
2026-07-24 Indev-0.1.7 启动状态检查 + 提示符优化
- 添加 [ OK ](绿色)和 [WARNING](红色)状态提示
- 检查:挂载 / 内核模块 / 内存 / 网络 / 自研工具
- 自动生成主机名 tsukine
- 提示符:root@tsukine:# / dmin@tsukine:$
UI Bug修复
2026-07-24 Indev-0.1.6 用户账户系统(登录)
- 配置 /etc/passwd/etc/shadow/etc/group
- 创建 dmin 用户(UID 1000,GID 1000)
- 集成 BusyBox login,启动后显示 login:
- busybox 设置 setuid root(chmod u+s
- 解决 login: can't set groups 问题
用户 Bug修复
2026-07-24 Indev-0.1.5 内核模块版本号修复
- 问题:insmodinvalid module format
- 原因:内核版本号带 git 哈希后缀(6.6.0-g5a768b526ec6),模块不匹配
- 解决:用 make LOCALVERSION= 重新编译,去掉哈希后缀
- 模块目录从 6.6.0-g5a.../ 变为 6.6.0/
内核 Bug修复
2026-07-23 Indev-0.1.4 nano 文本编辑器移植
- 静态编译 nano 8.3,不依赖外部库
- 配置:--enable-utf8 --disable-nls
- 成功运行在 Tsukine OS 中,支持语法高亮
工具 移植
2026-07-23 Indev-0.1.3 dash 替换 BusyBox shell
- 用 dash 替换 BusyBox 自带的 sh
- 静态编译 dash,放入 /bin/
- 软链接 /bin/sh -> /bin/dash
- 提示符从 /# 变为 ~#
Shell 重构
2026-07-23 Indev-0.1.2 网络工具补完:ping + iwr
- tsukine_ping:ICMP 测试,支持 -c 参数
- tsukine_iwr:HTTP 下载工具
- 所有命令添加软链接(taskmgrnetping 等)
网络 工具
2026-07-22 Indev-0.1.1 系统工具补完
- 添加 rebootshutdown 命令
- tsukine_net 改为守护进程,动态检测网卡
- tsukine_top 支持 -u(用户进程)和 -c(内核进程)过滤
工具 优化
2026-07-22 Indev-0.1.0 初始发布
- 第一个可用版本
- tsukine_top(任务管理器)
- tsukine_net(网络配置)
- tsukine_net_ui(网络监控)
- 基于 Linux 6.6 + BusyBox 1.36.1
发布

📂 技术决策记录

决策 理由 影响
使用 dash 而非 bash 更轻量(~100KB),符合 POSIX 标准,适合精简系统 系统体积保持小,但不支持 Bash 特有的扩展语法
自研 tknpkg 而非移植 dpkg 避免引入 glibc 依赖,保持系统独立 格式简单,但缺少成熟的依赖解析机制
静态编译所有工具 不依赖外部库,确保在精简 rootfs 中运行 工具体积增大(但仍在可接受范围)
BusyBox 作为基础工具集 提供 lspsmount 等命令,体积小 功能比 GNU Coreutils 少,但够用
不引入 systemd 体积大,依赖复杂,对于精简系统来说过重 需要自己维护 init 脚本
软链接替代命令重命名 保留原命令名称的同时提供简短别名 用户可以用 taskmgr 代替 tsukine_top

📂 已知问题与解决方案

问题 原因 解决方案 状态
/dev/null 不存在 devtmpfs 未挂载 /init 中添加 mount -t devtmpfs none /dev ✅ 已修复
模块版本号不匹配 内核编译时带 git 哈希后缀 make LOCALVERSION= 重新编译 ✅ 已修复
login: can't set groups busybox 未设置 setuid root chmod u+s /bin/busybox ✅ 已修复
镜像文件过大 编译产物未清理 使用 make distclean 后重新编译 ✅ 已修复
实体机网卡无法识别 网卡名不匹配(eth0 vs enp0s25) tsukine_net 动态检测网卡名 ✅ 已修复
图形界面 未开始开发 计划在 Alpha 阶段添加 🔄 计划中

📂 趣闻与备注

日期 内容
2026-07-22 两天内发布了 8 个版本(0.1.0 → 0.1.7),几乎每 2-3 小时一个版本
2026-07-23 tsukine_net 初始版本硬编码 eth0,导致实体机无法使用,后来改为动态检测
2026-07-24 尝试用 shadowlogin,但因动态库缺失失败,最终改用 BusyBox 的 login
2026-07-25 包管理工具 tknpkgtknpkkj 命名来自英语和日语的混合缩写

📂 待办事项(开发 TODO)

  • Infdev-0.2.4:实体机适配(UEFI/BIOS 引导,硬件驱动)
  • Alpha-0.3.0:图形界面基础(X11 + 窗口管理器)
  • 包管理:添加依赖解析支持
  • 网络:完善 DHCP 客户端集成
  • 文档:补充 UTAU 音乐制作工具的集成计划

首页

Clone this wiki locally