From 14e69f62f5ec2aedc3c9ba3fee43714b1974785b Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Wed, 14 Oct 2026 18:42:24 +0800 Subject: [PATCH] =?UTF-8?q?fix(vkernel):=20=E4=B8=8D=E5=86=8D=20unmount=20?= =?UTF-8?q?=E6=A0=B9=E6=96=87=E4=BB=B6=E7=B3=BB=E7=BB=9F=EF=BC=8Capp=20?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=9C=9F=E6=89=8D=E8=83=BD=E8=AF=BB=E7=9B=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - app 是 spawn 之后异步运行的,运行期仍要 fat32.open(load_so / 资产文件);原来在自动启动块后面立刻 fat32.unmount(),导致 app 第一次 LOAD_SO 就 "[so] failed to open file" - 该 unmount 原本只为防“破坏性 FAT32 测试”改坏 disk.img,而那些测试已删除,留着只剩切断 app 文件访问的副作用 - 卸载能力保留给非根挂载点(U 盘/多分区),将来配挂载点表 + 引用计数 --- VKernel/Kernel/main.vp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/VKernel/Kernel/main.vp b/VKernel/Kernel/main.vp index 2297c09..4feb5df 100644 --- a/VKernel/Kernel/main.vp +++ b/VKernel/Kernel/main.vp @@ -314,11 +314,11 @@ class ViperKernel: sched.Scheduler.enable() - # FAT32 destructive tests removed to prevent disk.img corruption - # (write/rename/delete/mkdir/rmdir permanently modify the disk image) - - fat32.unmount() - serial.puts("[fat32] unmounted\n") + # 破坏性 FAT32 测试已删除(write/rename/delete/mkdir/rmdir 会永久改坏 disk.img)。 + # **不 unmount 根文件系统**:app 是 spawn 之后异步运行的,运行期还要读盘 + # (load_so / 资产文件等),一旦卸载根 FS,它们的 fat32.open 会直接失败 + # (现场:app 第一次 LOAD_SO 得到 "[so] failed to open file")。 + # 卸载只应服务于非根挂载点(U 盘/多分区),并配挂载点表 + 引用计数。 else: serial.puts("[fat32] mount failed\n") else: