2026-07-29 10:26:25 +08:00
|
|
|
|
# DeshabOS安装Pacman包管理器
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
## 核心矛盾
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
pacman 安装的软件(如 `/usr/bin/firefox`)是 **Linux x86-64 动态链接 ELF**,依赖 glibc + Linux syscall ABI。Deshab 是 SAS-R0 单地址空间内核,没有 Linux syscall 层、没有动态链接器,**这些二进制在 Deshab 原生侧跑不起来**。
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
### pacman 依赖 vs Deshab 现状
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
| pacman 依赖 | Deshab 现状 |
|
|
|
|
|
|
|---|---|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| glibc + POSIX syscall | ❌ 无 POSIX 层,SAS-R0 |
|
|
|
|
|
|
| libalpm(动态链接 .so) | ❌ 无动态链接器 |
|
|
|
|
|
|
| libcurl(HTTP/HTTPS) | ❌ 网络栈未完成 |
|
|
|
|
|
|
| gpgme(签名校验) | ❌ 无加密库 |
|
|
|
|
|
|
| zlib/zstd/xz/bzip2 | ❌ 无压缩库 |
|
|
|
|
|
|
| 可写 Unix 文件层级 | ❌ FAT32 多数只读 |
|
|
|
|
|
|
| fork/exec 子进程 | ❌ shell 内建命令,无 exec/argv |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
### 正确理解:"WSL 互操作模式"
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
- Linux guest 内跑 Arch + pacman → 软件装在 Linux 的 /usr/bin
|
|
|
|
|
|
- Deshab shell/desktop 通过 IPC 委托 Linux 执行命令 → 结果显示回 Deshab
|
|
|
|
|
|
- **不是**把 Arch ELF 搬到 SYSTEM/bin
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
### 三种方案对比
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 方案 | 软件运行位置 | 可行性 |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|---|---|---|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| A: pacman 在 Linux guest 内自治 | Linux guest | ✅ 最简单 |
|
|
|
|
|
|
| B: 包文件物理写入 SYSTEM/bin | 想在 Deshab 原生跑 → ❌ | 不可行 |
|
|
|
|
|
|
| **C: SYSTEM/bin 放 stub,IPC 委托 Linux 执行** | Linux guest | ✅ WSL 互操作 |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
## 实现阶段(按顺序,缺一不可)
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 第一阶段:Linux guest 真正跑起来
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 编号 | 需实现 | 现状 | 证据文件 |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|---|---|---|---|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 1.1 | virtio-block 后端 | ❌ | `CODE/linux/configs/utsm_x86_64_defconfig:120-145` |
|
|
|
|
|
|
| 1.2 | virtio-net 后端 | ❌ | 同上 |
|
|
|
|
|
|
| 1.3 | initramfs/rootfs | ❌ 无用户态 | `CODE/UTSM/vmm/linux_loader.c:519-521` |
|
|
|
|
|
|
| 1.4 | EPT 动态页映射 | ❌ vmexit handler 只有 stub | `CODE/UTSM/vmm/vmexit.c:46-58` |
|
|
|
|
|
|
| 1.5 | 构建并测试 Linux guest | ⚠️ | `CODE/linux/README.md` |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
**完成标准**: QEMU → UTSM → Linux guest shell → `uname -a`
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 第二阶段:Linux guest 内装 Arch + pacman
|
|
|
|
|
|
|
|
|
|
|
|
| 编号 | 需实现 | 说明 |
|
|
|
|
|
|
|---|---|---|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 2.1 | Arch rootfs/bootstrap | 解压到 virtio-block 镜像 |
|
|
|
|
|
|
| 2.2 | pacman 可用 | 配置 mirrorlist |
|
|
|
|
|
|
| 2.3 | 网络可用(virtio-net) | 前提: 1.2 完成 |
|
|
|
|
|
|
| 2.4 | AUR helper(可选) | yay/paru |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
**完成标准**: `pacman -S neofetch && neofetch`
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 第三阶段:UTSM↔Linux 文件传输 IPC
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 编号 | 需实现 | 现状 | 证据 |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|---|---|---|---|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 3.1 | hypercall op: FILE_TRANSFER | ❌ 仅有9个op | `hypercall.c:202-234` |
|
|
|
|
|
|
| 3.2 | payload_pool 分块传输 | ⚠️ 1MB pool 未用 | `ipc_proto.h:30-36` |
|
|
|
|
|
|
| 3.3 | Linux 侧 utsm_hcall 扩展 | ❌ 无文件发送接口 | `utsm_hcall.c:45-84` |
|
|
|
|
|
|
| 3.4 | UTSM 侧 f32_write_root_file 接入 | ✅ 已有写入 | `dsk/main.c:150-175` |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
**完成标准**: `utsm-send /usr/bin/firefox /bin/firefox` → 写入 Deshab FAT32
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 第四阶段:Deshab shell 命令委托执行
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 编号 | 需实现 | 现状 | 证据 |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|---|---|---|---|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 4.1 | hypercall op: EXEC_FORWARD | ❌ | `hypercall.c` |
|
|
|
|
|
|
| 4.2 | Linux 进程执行 + stdout/stderr 回传 | ❌ | 需新增 |
|
|
|
|
|
|
| 4.3 | shell path_search_and_run 扩展 | ⚠️ 只能加载原生 PIE | `shell/main.c:1416-1460` |
|
|
|
|
|
|
| 4.4 | shell IPC 调用层 | ❌ | 需新增 |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
**完成标准**: shell 输入 `firefox` → Linux 执行 → 输出回显
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 第五阶段:desktop 集成(可选)
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
- 5.1: desktop 动态注册"Linux 命令"为应用图标(扩展 app_descriptor.linux_cmd)
|
|
|
|
|
|
- 5.2: 点击图标 → EXEC_FORWARD hypercall
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
## 最小可用路径
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
1. 第一阶段全部完成(Linux guest 启动到 shell)
|
|
|
|
|
|
2. 第二阶段 2.1-2.3 完成(Arch + pacman + 网络)
|
|
|
|
|
|
3. 第三阶段 3.1-3.4 完成(文件从 Linux 写入 Deshab FAT32)
|
|
|
|
|
|
4. 第四阶段 4.1-4.4 完成(shell 命令委托执行)
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
**当前最大瓶颈**: 第一阶段的 virtio 后端 + initramfs
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
## 系统现状检查
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
### Linux guest 方向
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| 检查项 | 状态 |
|
|
|
|
|
|
|---|---|
|
|
|
|
|
|
| Linux 内核源码 | ❌ 未克隆 |
|
|
|
|
|
|
| linux-bzImage | ❌ 未构建 |
|
|
|
|
|
|
| initramfs/rootfs | ❌ 不存在 |
|
|
|
|
|
|
| limine.conf 配置 | ⚠️ 已注释(正确) |
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
### 已知 Bug
|
2026-07-29 10:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
| 编号 | 严重度 | 问题 |
|
|
|
|
|
|
|---|---|---|
|
2026-07-31 13:53:49 +08:00
|
|
|
|
| BUG-001 | P2 | Files 窗口关闭按钮无法关闭 |
|
|
|
|
|
|
| BUG-002 | P2 | 开发者模式 shell 命令回车无反应 |
|
|
|
|
|
|
| BUG-003 | P2 | 桌面 shell 命令文字跑到下一行 |
|
|
|
|
|
|
| BUG-004 | P2 | Files 显示的不是 SYSTEM/user 目录 |
|
|
|
|
|
|
| BUG-005 | P2 | Files 没有文件夹图标 |
|
|
|
|
|
|
| BUG-006 | P2 | Files 缺少 ".." 返回上级 |
|
|
|
|
|
|
| BUG-007 | P3 | 桌面不需要重复显示终端和 CMD 图标 |
|
|
|
|
|
|
| BUG-008 | P3 | 打字机效果需要再快3倍 |
|