Files
LinehuandCursor 8554a82677 feat(panic): FUCK [panic] mode=strict|fallback + realtest image variant
- UTSM panic_full returns in fallback mode (logs [PANIC:FALLBACK] + code + hit
  count); panic_halt keeps always-halt sites (CPU exception, VMM-E11 LA57,
  VMM-E15 DSK jump, UTSM-E42 test hook). Call sites given safe continuations.
- Mode passed to DSK/FirstInit/login/desktop via DSK_BOOT_FLAG_PANIC_FALLBACK;
  DKM kernel_api.panic / kern.log.panic return to driver; ext4 fatal aborts the
  op via setjmp/longjmp and DSK falls back to FAT32 ESP.
- build.ps1/Makefile: dev=strict, release=fallback, new realtest (release
  options + strict); default -Variant all; serialized iso packing under -j.
- Fix '*/' inside comments (dkm.h, kernel_api.h, bus.c) that broke the build.
- Includes pending work: dkm_bus service bus, mt7920/wlan drivers, desktop
  files/startmenu/prank, pe-tools, diskinfo, docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-12 23:57:19 +08:00

113 lines
5.3 KiB
Plaintext

# Disk layout (CODE/linux/pack_system_image.sh):
# GPT p1 FAT32 ESP — /EFI /limine /boot /driver /system
# Limine 10 cannot read ext4; boot(): modules must stay on the ESP.
# GPT p2 ext4 — remaining SYSTEM/ (user/lib/bin/program + copies)
timeout: 0
serial: yes
verbose: yes
/UTSM boot
protocol: limine
kernel_path: boot():/boot/utsm.elf
module_path: boot():/driver/manifest.json
module_cmdline: dkm:manifest
module_path: boot():/driver/platform/timer.drv
module_cmdline: dkm:timer
module_path: boot():/driver/platform/apic.drv
module_cmdline: dkm:apic
module_path: boot():/driver/platform/acpi.drv
module_cmdline: dkm:acpi
module_path: boot():/driver/bus/pci.drv
module_cmdline: dkm:pci
module_path: boot():/driver/console/console_fb.drv
module_cmdline: dkm:console_fb
module_path: boot():/driver/block/ahci.drv
module_cmdline: dkm:ahci
module_path: boot():/driver/block/nvme.drv
module_cmdline: dkm:nvme
module_path: boot():/driver/block/ehci.drv
module_cmdline: dkm:ehci
module_path: boot():/driver/block/xhci.drv
module_cmdline: dkm:xhci
module_path: boot():/driver/fs/bootfs.drv
module_cmdline: dkm:bootfs
module_path: boot():/driver/fs/vfs.drv
module_cmdline: dkm:vfs
module_path: boot():/driver/fs/fat32.drv
module_cmdline: dkm:fat32
module_path: boot():/driver/fs/devfs.drv
module_cmdline: dkm:devfs
module_path: boot():/driver/net/e1000.drv
module_cmdline: dkm:e1000
module_path: boot():/driver/net/virtio_net.drv
module_cmdline: dkm:virtio_net
module_path: boot():/driver/net/ath9k.drv
module_cmdline: dkm:ath9k
module_path: boot():/driver/net/mt7920.drv
module_cmdline: dkm:mt7920
module_path: boot():/driver/fw/mediatek/MT7920PA.BIN
module_cmdline: fw:mt7920_patch
module_path: boot():/driver/fw/mediatek/MT7920RAM.BIN
module_cmdline: fw:mt7920_ram
module_path: boot():/driver/input/ps2kbd.drv
module_cmdline: dkm:ps2kbd
module_path: boot():/system/deshab64/deshab.elf
module_cmdline: dsk:main
module_path: boot():/driver/test.fat32
module_cmdline: dkm:test_fat32
# FUCK — 内核启动配置文件(INI 分区格式)
# UTSM 通过此 boot module 读取配置(cmdline="fuck:config")
# 文件在 ext4 数据分区;DSK 运行时仍可从 SATA FAT32 测试盘读同名路径
module_path: boot():/system/deshab64/FUCK
module_cmdline: fuck:config
# Linux 6.6 LTS guest kernel (UTSM+Linux dual-kernel Linux compat layer)
# Uncomment after building Linux via CODE/linux/build.sh (requires WSL/Linux).
#
# Boot flow with these modules:
# 1. Limine loads utsm.elf + all .drv modules + bzImage + initrd
# 2. UTSM boots, init VMM/EPT, self-test
# 3. UTSM linux_loader_init() finds bzImage module, parses + maps guest
# 4. UTSM ipc_shm_init() allocates 1MB IPC shared memory (EPT-mapped)
# 5. UTSM linux_launch() → vmlaunch → Linux boots → init starts daemon
# 6. Daemon sends EXEC_READY, then ioctl(PARK) → HLT → VM-Exit → park
# 7. UTSM linux_compat_init() marks Linux compat layer ready
# 8. UTSM loads DSK (deshab.elf) → shell.elf → `linux <prog>` command
# invokes linux_compat_service->exec() → vmresume → daemon runs prog
#
# Linux 兼容层模块(需先通过 WSL 运行 CODE/linux/build.sh 构建产物)
# build.sh 成功后会自动取消下面 4 行注释;若未构建 Linux 内核请保持注释状态
module_path: boot():/boot/linux-bzImage
module_cmdline: linux:bzImage
module_path: boot():/boot/linux-initrd.img
module_cmdline: linux:initrd
# Arch Linux rootfs (ext4) — exposed to Linux guest as virtio-blk /dev/vdb
# via memory-backed virtio-mmio backend (GPA 0xF4002000, IRQ7).
# initramfs init mounts this and switch_root's into Arch /sbin/init.
# Produced by CODE/linux/build_arch_rootfs.sh into SYSTEM/boot/.
# Packer only reads SYSTEM/; do not load these from /home or other paths.
module_path: boot():/boot/linux-rootfs.img
module_cmdline: linux:rootfs
# Persistent extra-rootfs stays on the ESP as a file. Do NOT load it as a
# Limine boot module: ~4GiB into RAM kills 6G WSL QEMU during
# "Loading module linux-extra-rootfs.img". virtio-blk /dev/vdc maps
# boot/linux-extra-rootfs.img through AHCI instead.
#module_path: boot():/boot/linux-extra-rootfs.img
#module_cmdline: linux:extra_rootfs
# OpenXJ380 第三内核(三内核架构路线 B:XJ380 作为第二 guest)。
# 把 OpenXJ380 构建产物 out/kernel.krl 复制为 SYSTEM/boot/xj380.krl 后
# 取消下面两行注释;UTSM 的 xj380_loader 会把它作为 VM guest 加载。
# 文件不存在时 Limine 会报 module 加载失败 —— 未构建前保持注释状态。
#module_path: boot():/boot/xj380.krl
#module_cmdline: xj380:kernel
# VSCode Phase 5: VSCode tarball(官方 VSCode-linux-x64 .tar.gz)—
# 由 lxc_vscode_install() 流式推入 guest 并解包到 /opt/vscode
# (overlay 持久化,二次启动自动跳过)。把 tarball 放到
# SYSTEM/boot/linux-vscode.tar.gz 后取消下面两行注释。
#module_path: boot():/boot/linux-vscode.tar.gz
#module_cmdline: linux:vscode